From c05a14bba4b86d83918d7cdc01635785bf5694c2 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 03 六月 2025 00:26:08 +0800 Subject: [PATCH] 拆分mongodb查询服务 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 92 ++++++++++++++++++++++++++++----------------- 1 files changed, 57 insertions(+), 35 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 25a219e..2bfa42a 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; @@ -26,10 +27,7 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.integration.api.feignClient.IntegrationClient; -import com.ruoyi.integration.api.feignClient.IotInterfaceClient; -import com.ruoyi.integration.api.feignClient.SendMessageClient; -import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; +import com.ruoyi.integration.api.feignClient.*; import com.ruoyi.integration.api.model.QrCodeDelivery; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.vo.AddDevice; @@ -45,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 org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -71,6 +70,9 @@ private TChargingGunService chargingGunService; @Resource + private TCECClient tcecClient; + + @Resource private SysUserClient sysUserClient; @Resource @@ -95,7 +97,7 @@ private AppUserCarClient appUserCarClient; @Resource - private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; + private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private SysUserRoleClient sysUserRoleClient; @@ -104,7 +106,7 @@ private IotInterfaceClient iotInterfaceClient; @Resource - private RedisService redisService; + private RedisTemplate redisTemplate; @Resource private TFaultMessageService faultMessageService; @@ -200,6 +202,7 @@ return AjaxResult.error("华为创建设备失败"); } }else{ + log.error("华为创建设备失败" + JSON.toJSONString(deviceResp)); return AjaxResult.error("华为创建设备失败"); } }else{ @@ -322,6 +325,7 @@ qrCodeDelivery.setQr_code(code_prefix + chargingPile.getCode() + chargingGun.getCode()); sendMessageClient.qrCodeDelivery(qrCodeDelivery); } + tcecClient.superviseNotificationStationInfo(chargingPile.getSiteId()); return AjaxResult.success(); } @@ -385,33 +389,47 @@ @Override public List<TChargingPileVO> getChargingGunList(Integer siteId,Integer type) { - List<TChargingPileVO> chargingPileVOS = this.baseMapper.getChargingGunList(siteId); LambdaQueryWrapper<TChargingGun> wrapper = new LambdaQueryWrapper<>(); if(Objects.nonNull(type)){ wrapper.eq(TChargingGun::getChargeMode, type); } wrapper.eq(TChargingGun::getSiteId, siteId); List<TChargingGun> chargingGuns = chargingGunService.list(wrapper); - // 查询充电枪信息 - chargingPileVOS.forEach(item -> { - List<TChargingGun> chargingGunList = chargingGuns.stream().filter(gun -> gun.getChargingPileId().equals(item.getId())).collect(Collectors.toList()); - for (TChargingGun chargingGun : chargingGunList) { - if(chargingGun.getStatus().equals(4)){ - // 查询正在充电的单子的实时记录 - TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(chargingGun.getId()).getData(); - if(Objects.nonNull(chargingOrder)){ - UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); - chargingGun.setSoc(uploadRealTimeMonitoringData.getSoc()); - }else { + Set<Integer> collect = chargingGuns.stream().map(TChargingGun::getChargingPileId).collect(Collectors.toSet()); + List<TChargingPileVO> chargingPileVOS = new ArrayList<>(); + if(collect.size() > 0){ + List<TChargingPile> tChargingPiles = this.baseMapper.selectBatchIds(collect); + for (TChargingPile tChargingPile : tChargingPiles) { + TChargingPileVO vo = new TChargingPileVO(); + List<TChargingGun> chargingGunList = chargingGuns.stream().filter(gun -> gun.getChargingPileId().equals(tChargingPile.getId())).collect(Collectors.toList()); + for (TChargingGun chargingGun : chargingGunList) { + if(chargingGun.getStatus().equals(4)){ + // 查询正在充电的单子的实时记录 + TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(chargingGun.getId()).getData(); + if(Objects.nonNull(chargingOrder)){ + UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); + if(null != uploadRealTimeMonitoringData){ + chargingGun.setSoc(uploadRealTimeMonitoringData.getSoc()); + }else{ + chargingGun.setSoc(0); + } + }else { + chargingGun.setSoc(100); + } + } + if(chargingGun.getStatus().equals(5)){ chargingGun.setSoc(100); } } - if(chargingGun.getStatus().equals(5)){ - chargingGun.setSoc(100); - } + vo.setChargingGunList(chargingGunList); + vo.setId(tChargingPile.getId()); + vo.setCode(tChargingPile.getCode()); + vo.setName(tChargingPile.getName()); + vo.setNumber(tChargingPile.getNumber()); + chargingPileVOS.add(vo); + } - item.setChargingGunList(chargingGunList); - }); + } return chargingPileVOS; } @@ -486,12 +504,12 @@ chargeTrend.put("value", value1); chargeMonitoring.setChargeTrend(chargeTrend); - //每日利用率=当日充电度数/(总桩数量*桩总功率*24小时) + //每日利用率=当日充电度数/(桩总功率*24小时) List<TChargingPile> list = this.list(new LambdaQueryWrapper<TChargingPile>().in(TChargingPile::getSiteId, siteIds).eq(TChargingPile::getDelFlag, 0)); BigDecimal v = list.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(4, RoundingMode.HALF_EVEN); List<Double> data = chargingOrderAccountingStrategyClient.getDailyChargingDegree(6, siteIds).getData(); List<Double> value2 = new ArrayList<>(); - BigDecimal multiply = new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24)); + BigDecimal multiply = v.multiply(new BigDecimal(24)); for (Double datum : data) { if(list.size() == 0){ value2.add(0D); @@ -615,9 +633,11 @@ if(null != appUserCarId){ TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(appUserCarId)).getData().get(0); gunMonitoring.setLicensePlate(tAppUserCar.getLicensePlate()); + }else{ + 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()); @@ -683,19 +703,22 @@ */ @Override public void updateStatus() { - Map<String, Object> charging_gun_online = redisService.getCacheMap("charging_gun_online"); - Set<String> keySet = charging_gun_online.keySet(); - List<TChargingGun> list = new ArrayList<>(); - if(keySet.size() > 0){ - list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0).in(TChargingGun::getFullNumber, keySet)); - } + List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0)); for (TChargingGun chargingGun : list) { - Long time = (Long) charging_gun_online.get(chargingGun.getFullNumber()); - if(null != time && System.currentTimeMillis() - time > 60000){ + 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()); @@ -736,7 +759,6 @@ siteName = siteName.substring(0,10); } chargingPileNotificationService.saveData(4,faultMessage.getSiteId(),faultMessage.getChargingPileId(),site.getPhone(),"检测到"+siteName+"..."+chargingPile.getNumber()+"号桩设备离线,请及时查看处理!"); - } } } -- Gitblit v1.7.1