package com.ruoyi.demo.service.impl; import cn.hutool.core.lang.Dict; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ruoyi.demo.entity.*; import com.ruoyi.demo.entity.bo.PlanBo; import com.ruoyi.demo.entity.bo.StatisticsAddBo; import com.ruoyi.demo.entity.vo.PlanHomeVo; import com.ruoyi.demo.entity.vo.ScanListVo; import com.ruoyi.demo.mapper.*; import com.ruoyi.demo.service.StatisticsService; import com.ruoyi.demo.utils.SignUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service @Transactional public class StatisticsServiceImpl implements StatisticsService { @Autowired StatisticsMapper statisticsMapper; @Autowired DlUserMapper dlUserMapper; @Autowired AppMapper appMapper; @Autowired EquipmentMapper equipmentMapper; @Autowired PlanMapper planMapper; @Override public PageInfo> getScanList(PlanBo bo) { PageHelper.startPage(bo.getPageNum(),bo.getPageSize(),true); QueryWrapper queryWrapper = new QueryWrapper<>(); if (bo.getStartTime() != null) queryWrapper.apply("`time` >= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')",bo.getStartTime()); if (bo.getEndTime() != null) queryWrapper.apply("`time` <= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')",bo.getEndTime()); List list = statisticsMapper.selectList(queryWrapper); List vos = new ArrayList<>(); for (Statistics statistics : list){ vos.add(new ScanListVo(statistics)); } return new PageInfo(vos); } @Override public PlanHomeVo getScanTotal() { PlanHomeVo vo = new PlanHomeVo(); vo.setTotal(statisticsMapper.selectTotal()); vo.setTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai"))); return vo; } @Override public String getSign(StatisticsAddBo bo) { QueryWrapper appQueryWrapper = new QueryWrapper<>(); appQueryWrapper.eq("appkey",bo.getAppkey()); App app = appMapper.selectOne(appQueryWrapper); if (app == null) return "error"; Map params = Dict.create() .set("appkey",bo.getAppkey()) .set("equipmentCode",bo.getEquipmentCode()) .set("planId",bo.getPlanId()) .set("time",bo.getTime()) .set("userId",bo.getUserId()) .set("userName",bo.getUserName()) .set("userTelephone",bo.getUserTelephone()) .set("sign",bo.getSign()); return SignUtil.sign(params,app.getAppSecret()); } // 添加扫码行为记录 @Override public int add(StatisticsAddBo bo) { QueryWrapper appQueryWrapper = new QueryWrapper<>(); appQueryWrapper.eq("appkey",bo.getAppkey()); App app = appMapper.selectOne(appQueryWrapper); if (app == null) return -1; Map params = Dict.create() .set("appkey",bo.getAppkey()) .set("equipmentCode",bo.getEquipmentCode()) .set("planId",bo.getPlanId()) .set("time",bo.getTime()) .set("userId",bo.getUserId()) .set("userName",bo.getUserName()) .set("userTelephone",bo.getUserTelephone()) .set("sign",bo.getSign()); if (!SignUtil.verify(params,app.getAppSecret())) return -3; // 验证通过后,如果用户不存在,则添加用户;否则更新用户信息 QueryWrapper planQueryWrapper = new QueryWrapper<>(); planQueryWrapper.eq("plan_id",bo.getPlanId()); Plan plan = planMapper.selectOne(planQueryWrapper); QueryWrapper equipmentQueryWrapper = new QueryWrapper<>(); equipmentQueryWrapper.eq("equipment_code",bo.getEquipmentCode()); Equipment equipment = equipmentMapper.selectOne(equipmentQueryWrapper); QueryWrapper userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.eq("user_id",bo.getUserId()); DlUser user = dlUserMapper.selectOne(userQueryWrapper); if (user == null) dlUserMapper.insert(new DlUser(bo,equipment)); else{ user.setEndEquipmentId(equipment.getEquipmentId()); user.setEndEquipmentName(equipment.getEquipmentName()); user.setEndEquipmentCode(equipment.getEquipmentCode()); user.setEndTime(bo.getTime()); dlUserMapper.update(user,userQueryWrapper); } // 添加扫码行为记录 return statisticsMapper.insert(new Statistics(bo,plan,equipment)); } }