xuhy
2025-03-25 934b22c18f4ab1a2c2da409886aa13dbaa9ce836
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
@@ -25,12 +25,14 @@
import com.ruoyi.other.api.feignClient.SystemConfigurationClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -83,7 +85,7 @@
   @Resource
   private SystemConfigurationClient systemConfigurationClient;
   
   private final static String operatorId = "906171535";
   
   /**
    * 请求校验
@@ -244,7 +246,7 @@
      if(null == pageSize){
         pageSize = 10;
      }
      PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize);
      PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, new ArrayList<>());
      List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData();
      QueryStationsInfoResult queryStationsInfoResult = new QueryStationsInfoResult();
      queryStationsInfoResult.setPageNo(pageNo);
@@ -276,6 +278,45 @@
      List<StationInfo> StationInfos = new ArrayList<>();
      for (Site datum : sites) {
         StationInfo stationInfo = new StationInfo();
         stationInfo.setAreaCodeCountryside(datum.getAreaCodeCountryside());
         stationInfo.setStationClassification(datum.getStationClassification());
         stationInfo.setGeneralApplicationType(datum.getGeneralApplicationType());
         if (org.springframework.util.StringUtils.hasLength(datum.getSwapMatchCars())){
            stationInfo.setSwapMatchCars(Arrays.asList(datum.getSwapMatchCars().split(",")));
         }
         stationInfo.setBusineHours(datum.getStartServiceTime());
         stationInfo.setRoundTheClock(datum.getRoundTheClock());
         stationInfo.setParkType(datum.getParkType());
         stationInfo.setElectricityFee("{"+datum.getElectricityFee()+"}");
         stationInfo.setServiceFee("{"+datum.getServiceFee()+"}");
         stationInfo.setParkFee("{\"rules\":"+datum.getParkFee()+","+"\"freeDuration\":"+datum.getParkFeeFree()+"}");
         stationInfo.setElectricityType(datum.getElectricityType());
         stationInfo.setBusinessExpandType(datum.getBusinessExpandType());
         stationInfo.setCapacity(datum.getCapacity());
         stationInfo.setRatedPower(datum.getRatedPower());
         stationInfo.setPeriodFee(datum.getPeriodFee());
         stationInfo.setOfficialRunTime(datum.getOfficialRunTime());
         stationInfo.setStationOrientation(datum.getStationOrientation());
         stationInfo.setStationArea(datum.getStationArea());
         stationInfo.setHavePerson(datum.getHavePerson());
         stationInfo.setVideoMonitor(datum.getVideoMonitor());
         if (StringUtils.isNotEmpty(datum.getSupportingFacilities())){
            String[] split = datum.getSupportingFacilities().split(",");
            List<Integer> collect = Arrays.stream(split).map(Integer::parseInt).collect(Collectors.toList());
            stationInfo.setSupportingFacilities(collect);
         }
         stationInfo.setPrinterFlag(datum.getPrinterFlag());
         stationInfo.setBarrierFlag(datum.getBarrierFlag());
         stationInfo.setParkingLockFlag(datum.getParkingLockFlag());
         stationInfo.setEquipmentOwnerName(datum.getEquipmentOwnerName());
         stationInfo.setResidentNo(datum.getResidentNo());
         stationInfo.setSupplyType(datum.getSupplyType());
         stationInfo.setWattHourMeterNo(datum.getWattHourMeterNo());
         BigDecimal forwardPower = datum.getForwardPower();
         if (forwardPower!=null){
            stationInfo.setForwardPower(forwardPower.setScale(4, BigDecimal.ROUND_HALF_UP).toString());
         }
         stationInfo.setRecordUniqueNo(datum.getRecordUniqueNo());
         stationInfo.setStationID(datum.getId().toString());
         stationInfo.setOperatorID("906171535");
         stationInfo.setEquipmentOwnerID("906171535");
@@ -324,7 +365,7 @@
         stationInfo.setPictures(StringUtils.isNotEmpty(datum.getImgUrl()) ? Arrays.asList(datum.getImgUrl().split(",")) : new ArrayList<>());
         stationInfo.setSiteGuide(datum.getGuide());
         stationInfo.setMatchCars(datum.getVehicleDescription());
         stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime());
//         stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime());
         stationInfo.setElectricityFee(datum.getRateDescription());
         //添加停车费信息
         Optional<TParkingLot> first = parkingLots.stream().filter(s -> s.getSiteId().equals(datum.getId())).findFirst();
@@ -332,7 +373,6 @@
            TParkingLot tParkingLot = first.get();
            buildPlaceHolder(tParkingLot, stationInfo);
         }
         //构建充电设备信息数据
         stationInfo.setEquipmentInfos(buildEquipmentInfo(datum.getId(), tChargingPiles, chargingGunList));
         StationInfos.add(stationInfo);
@@ -379,6 +419,8 @@
         equipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode());
         equipmentInfo.setManufacturerName(tChargingPile.getManufacturer());
         equipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType());
         equipmentInfo.setEquipmentUniqueNumber(tChargingPile.getEquipmentUniqueNumber());
         equipmentInfo.setEquipmentClassification(tChargingPile.getEquipmentClassification());
         if(null != tChargingPile.getProductionDate()){
            equipmentInfo.setProductionDate(tChargingPile.getProductionDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         }
@@ -397,6 +439,12 @@
               break;
            case 4:
               equipmentInfo.setEquipmentType(EquipmentTypeEnum.WIRELESS_DEVICE.getType());
               break;
            case 5:
               equipmentInfo.setEquipmentType(EquipmentTypeEnum.ORDER.getType());
               break;
            case 6:
               equipmentInfo.setEquipmentType(EquipmentTypeEnum.V2G.getType());
               break;
         }
         
@@ -421,6 +469,14 @@
         ConnectorInfo connectorInfo = new ConnectorInfo();
         connectorInfo.setConnectorID(chargingGun.getFullNumber());
         connectorInfo.setConnectorName(chargingGun.getName());
         connectorInfo.setEquipmentClassification(chargingGun.getEquipmentClassification());
         connectorInfo.setConstantVoltageLowerLimits(chargingGun.getConstantVoltageLowerLimits());
         connectorInfo.setConstantVoltageUpperLimits(chargingGun.getConstantVoltageUpperLimits());
         connectorInfo.setConstantCurrentLowerLimits(chargingGun.getConstantCurrentLowerLimits());
         connectorInfo.setConstantCurrentUpperLimits(chargingGun.getConstantCurrentUpperLimits());
         connectorInfo.setAuxPower(chargingGun.getAuxPower());
         connectorInfo.setOpreateStatus(chargingGun.getOpreateStatus());
         connectorInfo.setOpreateHours(chargingGun.getOpreateHours());
         switch (chargingGun.getType()){
            case 0:
               connectorInfo.setConnectorType(ConnectorTypeEnum.OTHER.getType());
@@ -441,8 +497,6 @@
               connectorInfo.setConnectorType(ConnectorTypeEnum.WIRELESS_CHARGING_STAND.getType());
               break;
         }
         connectorInfo.setVoltageUpperLimits(chargingGun.getUpperRatedVoltage().intValue());
         connectorInfo.setVoltageLowerLimits(chargingGun.getLowerLimitOfRatedVoltage().intValue());
         connectorInfo.setCurrent(chargingGun.getRatedCurrent().intValue());
         connectorInfo.setPower(chargingGun.getRatedPower());
         connectorInfo.setParkNo(chargingGun.getParkingNumber());
@@ -1633,4 +1687,572 @@
      queryChargeOrderInfoResult.setOrderInfos(orderInfos);
      return queryChargeOrderInfoResult;
   }
   /*********************数据监管平台接口*********************/
   /**
    * 查询运营商信息
    * @param baseRequest
    * @param request
    * @return
    */
   @PostMapping("/supervise_query_operator_info")
   public BaseResult superviseQueryOperatorInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){
      log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest));
      //校验token和签名
      BaseResult baseResult = requestCheck(true, baseRequest, request);
      if(0 != baseResult.getRet()){
         log.info("监管平台查询充电站信息响应Data:");
         baseResult.setData("");
         baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
         log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult));
         return baseResult;
      }
      Operator operator = baseResult.getOperator();
      //解密参数
      String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
      log.info("监管平台查询充电站信息请求Data:" + decrypt);
      SuperviseQueryOperatorInfo superviseQueryOperatorInfo = JSON.parseObject(decrypt, SuperviseQueryOperatorInfo.class);
      Integer pageNo = superviseQueryOperatorInfo.getPageNo();
      Integer pageSize = superviseQueryOperatorInfo.getPageSize();
      if(null == pageNo){
         pageNo = 1;
      }
      if(null == pageSize){
         pageSize = 50;
      }
      String operatorTel = systemConfigurationClient.getServerPhone().getData();
      SuperviseQueryOperatorInfoResultPage superviseQueryOperatorInfoResultPage = new SuperviseQueryOperatorInfoResultPage();
      superviseQueryOperatorInfoResultPage.setPageNo(1);
      superviseQueryOperatorInfoResultPage.setPageCount(1);
      superviseQueryOperatorInfoResultPage.setItemSize(1);
      SuperviseQueryOperatorInfoResult superviseQueryOperatorInfoResult = new SuperviseQueryOperatorInfoResult();
      superviseQueryOperatorInfoResult.setOperatorID("906171535");
      superviseQueryOperatorInfoResult.setOperatorUSCID("91510903906171535D");
      superviseQueryOperatorInfoResult.setOperatorName("四川明星新能源科技有限公司");
      superviseQueryOperatorInfoResult.setOperatorTel1(operatorTel);
      List<SuperviseQueryOperatorInfoResult> superviseQueryOperatorInfoResults = new ArrayList<>();
      superviseQueryOperatorInfoResults.add(superviseQueryOperatorInfoResult);
      // 将superviseQueryOperatorInfoResults转化为json数组
      superviseQueryOperatorInfoResultPage.setOperatorInfos(superviseQueryOperatorInfoResults);
      String jsonString = JacksonUtils.toJson(superviseQueryOperatorInfoResultPage);
      //参数加密
      log.info("监管平台查询充电站信息响应Data:" + jsonString);
      String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
      baseResult.setData(encrypt);
      baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
      log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult));
      return baseResult;
   }
   /**
    * 查询充电站信息
    * @param baseRequest
    * @param request
    * @return
    */
   @PostMapping("/supervise_query_stations_info")
   public BaseResult superviseQueryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){
      log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest));
      //校验token和签名
      BaseResult baseResult = requestCheck(true, baseRequest, request);
      if(0 != baseResult.getRet()){
         log.info("监管平台查询充电站信息响应Data:");
         baseResult.setData("");
         baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
         log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult));
         return baseResult;
      }
      Operator operator = baseResult.getOperator();
      //解密参数
      String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
      log.info("监管平台查询充电站信息请求Data:" + decrypt);
      QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class);
      Integer pageNo = queryStationsInfo.getPageNo();
      Integer pageSize = queryStationsInfo.getPageSize();
      List<String> stationIDs = queryStationsInfo.getStationIDs();
      if(null == pageNo){
         pageNo = 1;
      }
      if(null == pageSize){
         pageSize = 50;
      }
      PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, stationIDs);
      List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData();
      QueryStationsInfoResult queryStationsInfoResult = new QueryStationsInfoResult();
      queryStationsInfoResult.setPageNo(pageNo);
      queryStationsInfoResult.setPageCount((0 == (siteListPaging.getTotal() % pageSize) ? 0 : 1) + Double.valueOf(siteListPaging.getTotal() / pageSize).intValue());
      queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue());
      queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords()));
      //参数加密
      String jsonString = JacksonUtils.toJson(queryStationsInfoResult);
      log.info("监管平台查询充电站信息响应Data:" + jsonString);
      String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
      baseResult.setData(encrypt);
      baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
      log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult));
      return baseResult;
   }
   /**
    * 查询充换电站状态信息
    * @param baseRequest
    * @param request
    * @return
    */
   @PostMapping("/supervise_query_station_status")
   public BaseResult superviseQueryStationStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){
      log.info("监管平台查询充换电站状态信息请求参数:" + JacksonUtils.toJson(baseRequest));
      //校验token和签名
      BaseResult baseResult = requestCheck(true, baseRequest, request);
      if(0 != baseResult.getRet()){
         log.info("监管平台查询充换电站状态信息响应Data:");
         baseResult.setData("");
         baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
         log.info("监管平台查询充换电站状态信息响应参数:" + JacksonUtils.toJson(baseResult));
         return baseResult;
      }
      Operator operator = baseResult.getOperator();
      //解密参数
      String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
      log.info("监管平台查询充换电站状态信息请求Data:" + decrypt);
      QueryStationStatus queryStationStatus = JSON.parseObject(decrypt, QueryStationStatus.class);
      List<String> stationIDs = queryStationStatus.getStationIDs();
      String operatorID = queryStationStatus.getOperatorID();
      List<Integer> stationIDList = new ArrayList<>();
      for (String stationID : stationIDs) {
         stationIDList.add(Integer.valueOf(stationID));
      }
      QueryStationStatusResult queryStationStatusResult = new QueryStationStatusResult();
      List<StationStatusInfo> stationStatusInfos = new ArrayList<>();
      // 查询站点下的桩信息状态
      List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(stationIDList).getData();
      if(!CollectionUtils.isEmpty(chargingPiles)){
         List<Integer> pileIds = chargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList());
         List<TChargingGun> chargingGuns = chargingGunClient.getChargingGunByChargingPileIds(pileIds).getData();
         if(!CollectionUtils.isEmpty(chargingGuns)){
            for (Integer stationID : stationIDList) {
               StationStatusInfo stationStatusInfo = new StationStatusInfo();
               stationStatusInfo.setOperatorID(operatorID);
               stationStatusInfo.setEquipmentOwnerID("999999999");
               stationStatusInfo.setStationID(String.valueOf(stationID));
               List<ConnectorStatusInfo> connectorStatusInfos = new ArrayList<>();
               for (TChargingGun chargingGun : chargingGuns) {
                  ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
                  connectorStatusInfo.setOperatorID(operatorId);
                  connectorStatusInfo.setEquipmentOwnerID("999999999");
                  connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId()));
                  connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId()));
                  connectorStatusInfo.setConnectorID(chargingGun.getFullNumber());
                  connectorStatusInfo.setEquipmentClassification(1);
                  switch (chargingGun.getStatus()){
                     case 1:
                        connectorStatusInfo.setStatus(0);
                        break;
                     case 2:
                        connectorStatusInfo.setStatus(1);
                        break;
                     case 3:
                        connectorStatusInfo.setStatus(2);
                        break;
                     case 4:
                        connectorStatusInfo.setStatus(3);
                        break;
                     case 5:
                        connectorStatusInfo.setStatus(3);
                        break;
                     case 6:
                        connectorStatusInfo.setStatus(4);
                        break;
                     case 7:
                        connectorStatusInfo.setStatus(255);
                        break;
                  }
                  connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                  connectorStatusInfos.add(connectorStatusInfo);
               }
               stationStatusInfo.setConnectorStatusInfos(connectorStatusInfos);
               stationStatusInfos.add(stationStatusInfo);
            }
         }
         queryStationStatusResult.setStationStatusInfos(stationStatusInfos);
      }
      //参数加密
      String jsonString = JacksonUtils.toJson(queryStationStatusResult);
      log.info("监管平台查询充电站信息响应Data:" + jsonString);
      String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
      baseResult.setData(encrypt);
      baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
      log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult));
      return baseResult;
   }
   /**
    * 推送充电设备接口状态信息
    * @param chargingGun
    * @return
    */
   public R pushSuperviseNotificationStationStatus(TChargingGun chargingGun){
      ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
      connectorStatusInfo.setOperatorID(operatorId);
      connectorStatusInfo.setEquipmentOwnerID("999999999");
      connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId()));
      connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId()));
      connectorStatusInfo.setConnectorID(chargingGun.getFullNumber());
      connectorStatusInfo.setEquipmentClassification(1);
      switch (chargingGun.getStatus()){
         case 1:
            connectorStatusInfo.setStatus(0);
            break;
         case 2:
            connectorStatusInfo.setStatus(1);
            break;
         case 3:
            connectorStatusInfo.setStatus(2);
            break;
         case 4:
            connectorStatusInfo.setStatus(3);
            break;
         case 5:
            connectorStatusInfo.setStatus(3);
            break;
         case 6:
            connectorStatusInfo.setStatus(4);
            break;
         case 7:
            connectorStatusInfo.setStatus(255);
            break;
      }
      connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
      List<Operator> operators = operatorClient.getAllOperator().getData();
      for (Operator operator : operators) {
         TCECSuperviseUtil.notificationStationStatus(operator, connectorStatusInfo);
      }
      return R.ok();
   }
   /**
    * 推送充电状态信息
    * @param chargingOrder
    * @return
    */
   public R pushSuperviseNotificationEquipChargeStatus(TChargingOrder chargingOrder){
      SupEquipChargeStatus supEquipChargeStatus = new SupEquipChargeStatus();
      supEquipChargeStatus.setOperatorID(operatorId);
      supEquipChargeStatus.setEquipmentOwnerID("999999999");
      supEquipChargeStatus.setStationID(String.valueOf(chargingOrder.getSiteId()));
      supEquipChargeStatus.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId()));
      supEquipChargeStatus.setOrderNo(operatorId+chargingOrder.getCode());
      switch (chargingOrder.getStatus()){
         case 2:
            supEquipChargeStatus.setConnectorStatus(1);
            break;
         case 3:
            supEquipChargeStatus.setConnectorStatus(2);
            break;
         case 4:
            supEquipChargeStatus.setConnectorStatus(3);
            break;
         case 5:
            supEquipChargeStatus.setConnectorStatus(4);
            break;
      }
      TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
      supEquipChargeStatus.setConnectorID(chargingGun.getFullNumber());
      supEquipChargeStatus.setEquipmentClassification(1);
      supEquipChargeStatus.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
      switch (chargingGun.getStatus()){
         case 1:
            supEquipChargeStatus.setConnectorStatus(0);
            break;
         case 2:
            supEquipChargeStatus.setConnectorStatus(1);
            break;
         case 3:
            supEquipChargeStatus.setConnectorStatus(2);
            break;
         case 4:
            supEquipChargeStatus.setConnectorStatus(3);
            break;
         case 5:
            supEquipChargeStatus.setConnectorStatus(3);
            break;
         case 6:
            supEquipChargeStatus.setConnectorStatus(4);
            break;
         case 7:
            supEquipChargeStatus.setConnectorStatus(255);
            break;
      }
      supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent());
      supEquipChargeStatus.setSOC(new BigDecimal(chargingOrder.getEndSoc()));
      supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : "");
      supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
      supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence());
      List<Operator> operators = operatorClient.getAllOperator().getData();
      for (Operator operator : operators) {
         TCECSuperviseUtil.notificationSupEquipChargeStatus(operator, supEquipChargeStatus);
      }
      return R.ok();
   }
   /**
    * 推送充电订单信息
    * @param chargingOrder
    * @return
    */
   public R pushSuperviseNotificationChargeOrderInfo(TChargingOrder chargingOrder){
      SupChargeOrderInfo supChargeOrderInfo = new SupChargeOrderInfo();
      supChargeOrderInfo.setOperatorID(operatorId);
      supChargeOrderInfo.setEquipmentOwnerID("999999999");
      supChargeOrderInfo.setStationID(String.valueOf(chargingOrder.getSiteId()));
      supChargeOrderInfo.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId()));
      supChargeOrderInfo.setOrderNo(operatorId+chargingOrder.getCode());
      TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
      supChargeOrderInfo.setConnectorID(chargingGun.getFullNumber());
      supChargeOrderInfo.setEquipmentClassification(1);
      supChargeOrderInfo.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
      supChargeOrderInfo.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : "");
      supChargeOrderInfo.setEndTime(chargingOrder.getEndTime() != null ? chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : "");
      supChargeOrderInfo.setTotalPower(chargingOrder.getElectrovalence());
      supChargeOrderInfo.setTotalElecMoney(chargingOrder.getElectrovalence());
      supChargeOrderInfo.setTotalServiceMoney(chargingOrder.getServiceCharge());
      supChargeOrderInfo.setTotalMoney(chargingOrder.getOrderAmount());
      switch (chargingOrder.getEndMode()){
         case 0:
            supChargeOrderInfo.setStopReason(5);
            supChargeOrderInfo.setStopDesc("异常终止");
            break;
         case 1:
            supChargeOrderInfo.setStopReason(0);
            supChargeOrderInfo.setStopDesc("用户手动停止充电");
            break;
         case 2:
            supChargeOrderInfo.setStopReason(1);
            supChargeOrderInfo.setStopDesc("客户归属地运营商平台停止充电");
            break;
         case 3:
            supChargeOrderInfo.setStopReason(1);
            supChargeOrderInfo.setStopDesc("费用不足中止");
            break;
      }
      List<Operator> operators = operatorClient.getAllOperator().getData();
      for (Operator operator : operators) {
         TCECSuperviseUtil.notificationChargeOrderInfo(operator, supChargeOrderInfo);
      }
      return R.ok();
   }
   /**
    * 推送充换电站信息
    * @param site
    * @return
    */
   @PostMapping("/supervise_notification_station_info")
   public BaseResult superviseNotificationStationInfo(@RequestBody Site site){
      BaseResult baseResult = new BaseResult();
      return baseResult;
   }
//
//
//   /**
//    * 构建站点数据
//    * @param sites
//    * @return
//    */
//   public List<StationInfo> superviseBuildSite(List<TParkingLot> parkingLots, List<Site> sites){
//      List<Integer> siteIds = sites.stream().map(Site::getId).collect(Collectors.toList());
//      List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData();
//      List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList());
//      List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData();
//      String serviceTel = systemConfigurationClient.getServerPhone().getData();
//      List<StationInfo> StationInfos = new ArrayList<>();
//      for (Site datum : sites) {
//         StationInfo stationInfo = new StationInfo();
//         stationInfo.setStationID(datum.getId().toString());
//         stationInfo.setStationUniqueNumber(datum.getDistrictsCode() + "906171535" + datum.getId());
//         stationInfo.setOperatorID("906171535");
//         stationInfo.setEquipmentOwnerID("906171535");
//         stationInfo.setStationName(datum.getName());
//         stationInfo.setCountryCode(StringUtils.isNotEmpty(datum.getCountryCode()) ? datum.getCountryCode() : "CN");
//         stationInfo.setAreaCode(datum.getDistrictsCode());
//         stationInfo.setAreaCodeCountryside();
//         stationInfo.setAddress(datum.getAddress());
//         stationInfo.setStationTel(datum.getPhone());
//         stationInfo.setServiceTel(serviceTel);
//         switch (datum.getSiteType()){
//            case 0:
//               stationInfo.setStationType(StationTypeEnum.OTHER.getType());
//               break;
//            case 1:
//               stationInfo.setStationType(StationTypeEnum.PUBLIC.getType());
//               break;
//            case 2:
//               stationInfo.setStationType(StationTypeEnum.PERSONAGE.getType());
//               break;
//            case 3:
//               stationInfo.setStationType(StationTypeEnum.BUS_SPECIFIC.getType());
//               break;
//            case 4:
//               stationInfo.setStationType(StationTypeEnum.SANITATION_SPECIFIC.getType());
//               break;
//            case 5:
//               stationInfo.setStationType(StationTypeEnum.LOGISTICS_SPECIFIC.getType());
//               break;
//            case 6:
//               stationInfo.setStationType(StationTypeEnum.TEXT_SPECIFIC.getType());
//               break;
//         }
//         if(datum.getStatus() == 1){
//            stationInfo.setStationStatus(StationStatusEnum.NORMAL_USE.getStatus());
//         }
//         if(datum.getStatus() == 2){
//            stationInfo.setStationStatus(StationStatusEnum.MAINTAIN.getStatus());
//         }
//         if(datum.getStatus() == 3){
//            stationInfo.setStationStatus(StationStatusEnum.OFF_LINE.getStatus());
//         }
//         stationInfo.setParkNums(datum.getParkingSpace());
//         stationInfo.setStationLat(new BigDecimal(datum.getLat()).setScale(6, RoundingMode.DOWN));
//         stationInfo.setStationLng(new BigDecimal(datum.getLon()).setScale(6, RoundingMode.DOWN));
//         stationInfo.setConstruction(datum.getConstructionSite() == 0 ? ConstructionEnum.OTHER.getType() : datum.getConstructionSite());
//         stationInfo.setPictures(StringUtils.isNotEmpty(datum.getImgUrl()) ? Arrays.asList(datum.getImgUrl().split(",")) : new ArrayList<>());
//         stationInfo.setSiteGuide(datum.getGuide());
//         stationInfo.setMatchCars(datum.getVehicleDescription());
//         stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime());
//         stationInfo.setElectricityFee(datum.getRateDescription());
//         //添加停车费信息
//         Optional<TParkingLot> first = parkingLots.stream().filter(s -> s.getSiteId().equals(datum.getId())).findFirst();
//         if(first.isPresent()){
//            TParkingLot tParkingLot = first.get();
//            superviseBuildPlaceHolder(tParkingLot, stationInfo);
//         }
//
//         //构建充电设备信息数据
//         stationInfo.setEquipmentInfos(superviseBuildEquipmentInfo(datum.getId(), tChargingPiles, chargingGunList));
//         StationInfos.add(stationInfo);
//
//      }
//      return StationInfos;
//   }
//
//
//   /**
//    * 构建停车费信息
//    * @param tParkingLot
//    * @param stationInfo
//    */
//   public void superviseBuildPlaceHolder(TParkingLot tParkingLot, StationInfo stationInfo){
//      stationInfo.setOvertimeFee(tParkingLot.getName() + "停车费");
//      PlaceHolder placeHolder = new PlaceHolder();
//      placeHolder.setFreeTime(tParkingLot.getChargeFreeDuration());
//      placeHolder.setMaxFee(tParkingLot.getChargeCapping());
//      List<PlaceHolderPrice> PlaceHolderPrices = new ArrayList<>();
//      PlaceHolderPrice placeHolderPrice = new PlaceHolderPrice();
//      placeHolderPrice.setStartTime("00:00");
//      placeHolderPrice.setEndTime("23:59");
//      placeHolderPrice.setPrice(tParkingLot.getChargeRate());
//      PlaceHolderPrices.add(placeHolderPrice);
//      placeHolder.setPlaceHolderPrices(PlaceHolderPrices);
//      stationInfo.setPlaceHolder(placeHolder);
//   }
//
//
//
//
//   /**
//    * 构建桩数据
//    * @param tChargingPiles
//    * @return
//    */
//   public List<EquipmentInfo> superviseBuildEquipmentInfo(Integer siteId, List<TChargingPile> tChargingPiles, List<TChargingGun> chargingGunList){
//      List<EquipmentInfo> equipmentInfos = new ArrayList<>();
//      List<TChargingPile> collect = tChargingPiles.stream().filter(s -> s.getSiteId().equals(siteId)).collect(Collectors.toList());
//      for (TChargingPile tChargingPile : collect) {
//         EquipmentInfo equipmentInfo = new EquipmentInfo();
//         equipmentInfo.setEquipmentID(tChargingPile.getId().toString());
//         equipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode());
//         equipmentInfo.setManufacturerName(tChargingPile.getManufacturer());
//         equipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType());
//         if(null != tChargingPile.getProductionDate()){
//            equipmentInfo.setProductionDate(tChargingPile.getProductionDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
//         }
//         switch (tChargingPile.getType()){
//            case 0:
//               equipmentInfo.setEquipmentType(EquipmentTypeEnum.OTHER.getType());
//               break;
//            case 1:
//               equipmentInfo.setEquipmentType(EquipmentTypeEnum.DIRECT_CURRENT.getType());
//               break;
//            case 2:
//               equipmentInfo.setEquipmentType(EquipmentTypeEnum.ALTERNATING_CURRENT.getType());
//               break;
//            case 3:
//               equipmentInfo.setEquipmentType(EquipmentTypeEnum.ALTERNATING_DIRECT.getType());
//               break;
//            case 4:
//               equipmentInfo.setEquipmentType(EquipmentTypeEnum.WIRELESS_DEVICE.getType());
//               break;
//         }
//
//         //构建设备接口信息
//         equipmentInfo.setConnectorInfos(superviseBuildConnectorInfos(tChargingPile.getId(), tChargingPile.getCode(), chargingGunList));
//         equipmentInfo.setPower(tChargingPile.getRatedPower());
//         equipmentInfos.add(equipmentInfo);
//      }
//      return equipmentInfos;
//   }
//
//
//   /**
//    * 构建接口数据
//    * @param chargingGunList
//    * @return
//    */
//   public List<ConnectorInfo> superviseBuildConnectorInfos(Integer chargingPileId, String code, List<TChargingGun> chargingGunList){
//      List<ConnectorInfo> connectorInfos = new ArrayList<>();
//      List<TChargingGun> collect = chargingGunList.stream().filter(s -> s.getChargingPileId().equals(chargingPileId)).collect(Collectors.toList());
//      for (TChargingGun chargingGun : collect) {
//         ConnectorInfo connectorInfo = new ConnectorInfo();
//         connectorInfo.setConnectorID(chargingGun.getFullNumber());
//         connectorInfo.setConnectorName(chargingGun.getName());
//         switch (chargingGun.getType()){
//            case 0:
//               connectorInfo.setConnectorType(ConnectorTypeEnum.OTHER.getType());
//               break;
//            case 1:
//               connectorInfo.setConnectorType(ConnectorTypeEnum.HOUSEHOLD_SOCKET.getType());
//               break;
//            case 2:
//               connectorInfo.setConnectorType(ConnectorTypeEnum.AC_SOCKET.getType());
//               break;
//            case 3:
//               connectorInfo.setConnectorType(ConnectorTypeEnum.AC_INTERFACE_PLUG.getType());
//               break;
//            case 4:
//               connectorInfo.setConnectorType(ConnectorTypeEnum.DC_INTERFACE_GUN_HEAD.getType());
//               break;
//            case 5:
//               connectorInfo.setConnectorType(ConnectorTypeEnum.WIRELESS_CHARGING_STAND.getType());
//               break;
//         }
//         connectorInfo.setVoltageUpperLimits(chargingGun.getUpperRatedVoltage().intValue());
//         connectorInfo.setVoltageLowerLimits(chargingGun.getLowerLimitOfRatedVoltage().intValue());
//         connectorInfo.setCurrent(chargingGun.getRatedCurrent().intValue());
//         connectorInfo.setPower(chargingGun.getRatedPower());
//         connectorInfo.setParkNo(chargingGun.getParkingNumber());
//         connectorInfo.setNationalStandard(Integer.valueOf(chargingGun.getNationalStandard()));
//         connectorInfo.setQRCode("https://mxcd.zhinenganguan.com?No=" + code + chargingGun.getCode());
//         connectorInfos.add(connectorInfo);
//      }
//      return connectorInfos;
//   }
}