Pu Zhibing
2024-10-12 1e7bea1cfadbbbc95b0c0697b13aa9050cf02dc7
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -23,12 +23,18 @@
import com.ruoyi.chargingPile.service.ISiteService;
import com.ruoyi.chargingPile.service.TChargingGunService;
import com.ruoyi.chargingPile.service.TChargingPileService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.IotInterfaceClient;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.api.vo.AddDevice;
import com.ruoyi.integration.api.vo.AddDeviceResp;
import com.ruoyi.integration.api.vo.DeleteDeviceResp;
import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.model.TChargingOrder;
@@ -93,6 +99,12 @@
   @Resource
   private SysUserRoleClient sysUserRoleClient;
   
   @Resource
   private IotInterfaceClient iotInterfaceClient;
   @Resource
   private RedisService redisService;
   
   
   
@@ -151,7 +163,20 @@
      if(count > 0){
         return AjaxResult.error("设备编号已存在");
      }
      this.save(chargingPile);
      //调用华为Iot创建设备
      AddDevice addDevice = new AddDevice();
      addDevice.setProductId("66da68d21837002b28b34ec0");
      addDevice.setNodeId(chargingPile.getCode());
      addDevice.setDeviceName(chargingPile.getName());
      addDevice.setDescription(chargingPile.getNumber().toString());
      AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData();
      if(null != deviceResp){
         int httpStatusCode = deviceResp.getHttpStatusCode();
         if(httpStatusCode == 201){
            chargingPile.setIotdDeviceId(deviceResp.getDeviceId());
            this.save(chargingPile);
         }
      }
      return AjaxResult.success();
   }
   
@@ -227,14 +252,20 @@
   @Override
   public AjaxResult delChargingPile(Integer[] ids) {
      //检查是否有关联数据
      //接口
      long count = chargingGunService.count(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, Arrays.asList(ids)).eq(TChargingGun::getDelFlag, 0));
      long count = chargingGunService.count(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getChargingPileId, Arrays.asList(ids))
            .eq(TChargingGun::getDelFlag, 0));
      if(count > 0){
         return AjaxResult.error("该充电桩有关联的接口数据,删除失败!");
         return AjaxResult.error("该充电桩已添加接口,不可删除。");
      }
      for (Integer id : ids) {
         TChargingPile chargingPile = this.getById(id);
         this.removeById(chargingPile);
         //调用华为Iot删除设备
         if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){
            DeleteDeviceResp deviceResp = iotInterfaceClient.deleteDevice(chargingPile.getIotdDeviceId()).getData();
            if(null != deviceResp && deviceResp.getHttpStatusCode() == 201){
               this.removeById(chargingPile);
            }
         }
      }
      return AjaxResult.success();
   }
@@ -517,4 +548,26 @@
      }
      return pageInfo.setRecords(chargingGunMonitoring);
   }
   /**
    * 定时任务修改充电桩状态
    */
   @Override
   public void updateStatus() {
      List<TChargingPile> list = this.list(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getDelFlag, 0));
      List<TChargingPile> datas = new ArrayList();
      Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_pile_online");
      for (TChargingPile chargingPile : list) {
         Long time = (Long) charging_pile_online.get(chargingPile.getCode());
         if(null != time && System.currentTimeMillis() - time > 60000){
            chargingPile.setStatus(2);
            datas.add(chargingPile);
         }
      }
      if(datas.size() > 0){
         this.updateBatchById(datas);
      }
   }
}