Pu Zhibing
11 小时以前 c05a14bba4b86d83918d7cdc01635785bf5694c2
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 org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.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;
   }
   
@@ -619,7 +637,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());
@@ -685,21 +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);
            //推送状态给三方平台
            tcecClient.pushChargingGunStatus(chargingGun1.getId(), chargingGun1.getStatus());
            new Thread(new Runnable() {
               @Override
               public void run() {
                  //推送状态给三方平台
                  tcecClient.pushChargingGunStatus(chargingGun1.getFullNumber(), chargingGun1.getStatus());
               }
            }).start();
            
            //桩处于正常,桩所属的枪都处于非正常,修改桩状态为异常
            TChargingPile chargingPile = this.getById(chargingGun.getChargingPileId());
@@ -740,7 +759,6 @@
                  siteName = siteName.substring(0,10);
               }
               chargingPileNotificationService.saveData(4,faultMessage.getSiteId(),faultMessage.getChargingPileId(),site.getPhone(),"检测到"+siteName+"..."+chargingPile.getNumber()+"号桩设备离线,请及时查看处理!");
            }
         }
      }