StatisticsServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package com.ruoyi.demo.service.impl;
  2. import cn.hutool.core.lang.Dict;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.github.pagehelper.PageHelper;
  5. import com.github.pagehelper.PageInfo;
  6. import com.ruoyi.demo.entity.*;
  7. import com.ruoyi.demo.entity.bo.PlanBo;
  8. import com.ruoyi.demo.entity.bo.StatisticsAddBo;
  9. import com.ruoyi.demo.entity.vo.PlanHomeVo;
  10. import com.ruoyi.demo.entity.vo.ScanListVo;
  11. import com.ruoyi.demo.mapper.*;
  12. import com.ruoyi.demo.service.StatisticsService;
  13. import com.ruoyi.demo.utils.SignUtil;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.time.LocalDateTime;
  18. import java.time.ZoneId;
  19. import java.time.format.DateTimeFormatter;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. import java.util.Map;
  23. @Service
  24. @Transactional
  25. public class StatisticsServiceImpl implements StatisticsService {
  26. @Autowired
  27. StatisticsMapper statisticsMapper;
  28. @Autowired
  29. DlUserMapper dlUserMapper;
  30. @Autowired
  31. AppMapper appMapper;
  32. @Autowired
  33. EquipmentMapper equipmentMapper;
  34. @Autowired
  35. PlanMapper planMapper;
  36. @Override
  37. public PageInfo<List<ScanListVo>> getScanList(PlanBo bo) {
  38. PageHelper.startPage(bo.getPageNum(),bo.getPageSize(),true);
  39. QueryWrapper<Statistics> queryWrapper = new QueryWrapper<>();
  40. if (bo.getStartTime() != null)
  41. queryWrapper.apply("`time` >= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')",bo.getStartTime());
  42. if (bo.getEndTime() != null)
  43. queryWrapper.apply("`time` <= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')",bo.getEndTime());
  44. List<Statistics> list = statisticsMapper.selectList(queryWrapper);
  45. List<ScanListVo> vos = new ArrayList<>();
  46. for (Statistics statistics : list){
  47. vos.add(new ScanListVo(statistics));
  48. }
  49. return new PageInfo(vos);
  50. }
  51. @Override
  52. public PlanHomeVo getScanTotal() {
  53. PlanHomeVo vo = new PlanHomeVo();
  54. vo.setTotal(statisticsMapper.selectTotal());
  55. vo.setTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
  56. return vo;
  57. }
  58. @Override
  59. public String getSign(StatisticsAddBo bo) {
  60. QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
  61. appQueryWrapper.eq("appkey",bo.getAppkey());
  62. App app = appMapper.selectOne(appQueryWrapper);
  63. if (app == null)
  64. return "error";
  65. Map<String,Object> params = Dict.create()
  66. .set("appkey",bo.getAppkey())
  67. .set("equipmentCode",bo.getEquipmentCode())
  68. .set("planId",bo.getPlanId())
  69. .set("time",bo.getTime())
  70. .set("userId",bo.getUserId())
  71. .set("userName",bo.getUserName())
  72. .set("userTelephone",bo.getUserTelephone())
  73. .set("sign",bo.getSign());
  74. return SignUtil.sign(params,app.getAppSecret());
  75. }
  76. // 添加扫码行为记录
  77. @Override
  78. public int add(StatisticsAddBo bo) {
  79. QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
  80. appQueryWrapper.eq("appkey",bo.getAppkey());
  81. App app = appMapper.selectOne(appQueryWrapper);
  82. if (app == null)
  83. return -1;
  84. Map<String,Object> params = Dict.create()
  85. .set("appkey",bo.getAppkey())
  86. .set("equipmentCode",bo.getEquipmentCode())
  87. .set("planId",bo.getPlanId())
  88. .set("time",bo.getTime())
  89. .set("userId",bo.getUserId())
  90. .set("userName",bo.getUserName())
  91. .set("userTelephone",bo.getUserTelephone())
  92. .set("sign",bo.getSign());
  93. if (!SignUtil.verify(params,app.getAppSecret()))
  94. return -3;
  95. // 验证通过后,如果用户不存在,则添加用户;否则更新用户信息
  96. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  97. planQueryWrapper.eq("plan_id",bo.getPlanId());
  98. Plan plan = planMapper.selectOne(planQueryWrapper);
  99. QueryWrapper<Equipment> equipmentQueryWrapper = new QueryWrapper<>();
  100. equipmentQueryWrapper.eq("equipment_code",bo.getEquipmentCode());
  101. Equipment equipment = equipmentMapper.selectOne(equipmentQueryWrapper);
  102. QueryWrapper<DlUser> userQueryWrapper = new QueryWrapper<>();
  103. userQueryWrapper.eq("user_id",bo.getUserId());
  104. DlUser user = dlUserMapper.selectOne(userQueryWrapper);
  105. if (user == null)
  106. dlUserMapper.insert(new DlUser(bo,equipment));
  107. else{
  108. user.setEndEquipmentId(equipment.getEquipmentId());
  109. user.setEndEquipmentName(equipment.getEquipmentName());
  110. user.setEndEquipmentCode(equipment.getEquipmentCode());
  111. user.setEndTime(bo.getTime());
  112. dlUserMapper.update(user,userQueryWrapper);
  113. }
  114. // 添加扫码行为记录
  115. return statisticsMapper.insert(new Statistics(bo,plan,equipment));
  116. }
  117. }