From 26526de10d49c3422a6d6c2d55fe5a2997786ad9 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 21 七月 2025 13:58:37 +0800 Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 129 ++++++++++++++++++++++++------------------ 1 files changed, 73 insertions(+), 56 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 0d43f0f..6522019 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 @@ -19,6 +19,7 @@ import com.ruoyi.chargingPile.dto.GetChargingGunMonitoring; import com.ruoyi.chargingPile.mapper.TChargingPileMapper; import com.ruoyi.chargingPile.service.*; +import com.ruoyi.chargingPile.util.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -42,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; @@ -62,6 +64,7 @@ * @author xiaochen * @since 2024-08-06 */ +@Slf4j @Service public class TChargingPileServiceImpl extends ServiceImpl<TChargingPileMapper, TChargingPile> implements TChargingPileService { @@ -96,7 +99,7 @@ private AppUserCarClient appUserCarClient; @Resource - private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; + private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private SysUserRoleClient sysUserRoleClient; @@ -322,6 +325,8 @@ qrCodeDelivery.setPrefix_length(code_prefix.length()); qrCodeDelivery.setCode_prefix(code_prefix); qrCodeDelivery.setQr_code(code_prefix + chargingPile.getCode() + chargingGun.getCode()); + qrCodeDelivery.setCreate_time(new Date()); + qrCodeDelivery.setLast_time(new Date()); sendMessageClient.qrCodeDelivery(qrCodeDelivery); } tcecClient.superviseNotificationStationInfo(chargingPile.getSiteId()); @@ -406,7 +411,7 @@ // 查询正在充电的单子的实时记录 TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(chargingGun.getId()).getData(); if(Objects.nonNull(chargingOrder)){ - UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); + UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); if(null != uploadRealTimeMonitoringData){ chargingGun.setSoc(uploadRealTimeMonitoringData.getSoc()); }else{ @@ -636,7 +641,7 @@ gunMonitoring.setLicensePlate(chargingOrder.getPlateNum()); } - UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); + UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); gunMonitoring.setChargingRatio(BigDecimal.valueOf(data.getSoc())); gunMonitoring.setElectricQuantity(data.getCharging_degree().toString()); gunMonitoring.setSoc(data.getSoc().toString()); @@ -702,63 +707,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()); - //判断设备是否真的离线3分钟(2分钟+代码中的60秒间隔处理存储) - if(null != time && System.currentTimeMillis() - time > 180000){ - 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