From 4c77ac6367145e4740141e872e1cda1c16efa9b1 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 09 六月 2025 15:17:16 +0800 Subject: [PATCH] 优化功能及重复退款问题 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 120 +++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 67 insertions(+), 53 deletions(-) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 2bfa42a..954b3ca 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -43,6 +43,7 @@ import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -63,6 +64,7 @@ * @author xiaochen * @since 2024-08-06 */ +@Slf4j @Service public class TChargingPileServiceImpl extends ServiceImpl<TChargingPileMapper, TChargingPile> implements TChargingPileService { @@ -703,63 +705,75 @@ */ @Override public void updateStatus() { - List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0)); + //查询出redis集合汇总符合条件的数据 + Set keys = redisTemplate.opsForHash().keys("charging_gun_online"); + List<String> fullNumbers = new ArrayList<>(); + keys.forEach(key -> { + Long time = (Long) redisTemplate.opsForHash().get("charging_gun_online", key); + if(null != time && System.currentTimeMillis() - time > 300000){ + log.info("设备编号:{}已离线", key); + log.info("间隔时间", System.currentTimeMillis() - time); + fullNumbers.add(key.toString()); + } + }); + if(fullNumbers.size() == 0){ + return; + } + + //处理符合条件的数据,修改设备状态 + List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getFullNumber, fullNumbers).eq(TChargingGun::getDelFlag, 0)); for (TChargingGun chargingGun : list) { - Long time = (Long) redisTemplate.opsForHash().get("charging_gun_online", chargingGun.getFullNumber()); - //判断设备是否真的离线5分钟 - if(null != time && System.currentTimeMillis() - time > 300000){ - TChargingGun chargingGun1 = new TChargingGun(); - chargingGun1.setId(chargingGun.getId()); - chargingGun1.setStatus(1); - chargingGunService.updateById(chargingGun1); - new Thread(new Runnable() { - @Override - public void run() { - //推送状态给三方平台 - tcecClient.pushChargingGunStatus(chargingGun1.getFullNumber(), chargingGun1.getStatus()); - } - }).start(); - - //桩处于正常,桩所属的枪都处于非正常,修改桩状态为异常 - TChargingPile chargingPile = this.getById(chargingGun.getChargingPileId()); - List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)); - int size = list1.stream().filter(s -> s.getStatus() == 1 || s.getStatus() == 7).collect(Collectors.toList()).size(); - if(chargingPile.getStatus() == 1 && list1.size() == size){ - TChargingPile chargingPile1 = new TChargingPile(); - chargingPile1.setId(chargingGun.getChargingPileId()); - chargingPile1.setStatus(2); - this.updateById(chargingPile1); + TChargingGun chargingGun1 = new TChargingGun(); + chargingGun1.setId(chargingGun.getId()); + chargingGun1.setStatus(1); + chargingGunService.updateById(chargingGun1); + new Thread(new Runnable() { + @Override + public void run() { + //推送状态给三方平台 + tcecClient.pushChargingGunStatus(chargingGun1.getFullNumber(), chargingGun1.getStatus()); } + }).start(); + + //桩处于正常,桩所属的枪都处于非正常,修改桩状态为异常 + TChargingPile chargingPile = this.getById(chargingGun.getChargingPileId()); + List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)); + int size = list1.stream().filter(s -> s.getStatus() == 1 || s.getStatus() == 7).collect(Collectors.toList()).size(); + if(chargingPile.getStatus() == 1 && list1.size() == size){ + TChargingPile chargingPile1 = new TChargingPile(); + chargingPile1.setId(chargingGun.getChargingPileId()); + chargingPile1.setStatus(2); + this.updateById(chargingPile1); + } + + //添加记录 + TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingGun.getChargingPileId()) + .eq(TFaultMessage::getChargingGunId, chargingGun.getId()).eq(TFaultMessage::getStatus, 1).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime)); + if(null == faultMessage){ + faultMessage = new TFaultMessage(); + faultMessage.setSiteId(chargingGun.getSiteId()); + faultMessage.setChargingPileId(chargingGun.getChargingPileId()); + faultMessage.setChargingGunId(chargingGun.getId()); + faultMessage.setStatus(1); + faultMessage.setDownTime(LocalDateTime.now()); + faultMessage.setCreateTime(LocalDateTime.now()); + faultMessage.setDelFlag(false); + faultMessage.setContent("设备离线"); + faultMessageService.save(faultMessage); - //添加记录 - TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingGun.getChargingPileId()) - .eq(TFaultMessage::getChargingGunId, chargingGun.getId()).eq(TFaultMessage::getStatus, 1).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime)); - if(null == faultMessage){ - faultMessage = new TFaultMessage(); - faultMessage.setSiteId(chargingGun.getSiteId()); - faultMessage.setChargingPileId(chargingGun.getChargingPileId()); - faultMessage.setChargingGunId(chargingGun.getId()); - faultMessage.setStatus(1); - faultMessage.setDownTime(LocalDateTime.now()); - faultMessage.setCreateTime(LocalDateTime.now()); - faultMessage.setDelFlag(false); - faultMessage.setContent("设备离线"); - faultMessageService.save(faultMessage); - - // 发送故障短信 - Site site = siteService.getById(faultMessage.getSiteId()); - String siteName = site.getName(); - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setPhone(site.getPhone()); - sendMessageDTO.setSite(site.getName()); - sendMessageDTO.setChargeGun(chargingPile.getNumber() + ""); - sendMessageDTO.setType(3); - String result = appUserClient.sendMessage(sendMessageDTO).getData(); - if(siteName.length()>10){ - siteName = siteName.substring(0,10); - } - chargingPileNotificationService.saveData(4,faultMessage.getSiteId(),faultMessage.getChargingPileId(),site.getPhone(),"检测到"+siteName+"..."+chargingPile.getNumber()+"号桩设备离线,请及时查看处理!"); + // 发送故障短信 + Site site = siteService.getById(faultMessage.getSiteId()); + String siteName = site.getName(); + SendMessageDTO sendMessageDTO = new SendMessageDTO(); + sendMessageDTO.setPhone(site.getPhone()); + sendMessageDTO.setSite(site.getName()); + sendMessageDTO.setChargeGun(chargingPile.getNumber() + ""); + sendMessageDTO.setType(3); + String result = appUserClient.sendMessage(sendMessageDTO).getData(); + if(siteName.length()>10){ + siteName = siteName.substring(0,10); } + chargingPileNotificationService.saveData(4,faultMessage.getSiteId(),faultMessage.getChargingPileId(),site.getPhone(),"检测到"+siteName+"..."+chargingPile.getNumber()+"号桩设备离线,请及时查看处理!"); } } } -- Gitblit v1.7.1