Pu Zhibing
2025-02-13 ce3b68cce4b030e222448044adf7325d0c897376
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
@@ -32,9 +32,7 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
@@ -143,10 +141,13 @@
    */
   @PostMapping("/query_token")
   public BaseResult queryToken(@RequestBody BaseRequest baseRequest, HttpServletRequest request){
      log.info("三方平台获取token请求参数:" + JacksonUtils.toJson(baseRequest));
      BaseResult baseResult = requestCheck(false, baseRequest, request);
      if(0 != baseResult.getRet()){
         log.info("三方平台获取token响应Data:");
         baseResult.setData("");
         baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
         log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult));
         return baseResult;
      }
      QueryTokenResult queryTokenResult = new QueryTokenResult();
@@ -156,23 +157,28 @@
         queryTokenResult.setFailReason(1);
         //参数加密
         String jsonString = JacksonUtils.toJson(queryTokenResult);
         log.info("三方平台获取token响应Data:" + jsonString);
         String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
         baseResult.setData(encrypt);
         baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
         log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult));
         return baseResult;
      }
      
      //解密参数
      String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
      log.info("三方平台获取token请求Data:" + decrypt);
      QueryToken queryToken = JSON.parseObject(decrypt, QueryToken.class);
      if(!queryToken.getOperatorSecret().equals(operator.getOurOperatorSecret())){
         queryTokenResult.setSuccStat(1);
         queryTokenResult.setFailReason(2);
         //参数加密
         String jsonString = JacksonUtils.toJson(queryTokenResult);
         log.info("三方平台获取token响应Data:" + jsonString);
         String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
         baseResult.setData(encrypt);
         baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
         log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult));
         return baseResult;
      }
      
@@ -188,9 +194,11 @@
      queryTokenResult.setTokenAvailableTime(expires_in * 60);
      //参数加密
      String jsonString = JacksonUtils.toJson(queryTokenResult);
      log.info("三方平台获取token响应Data:" + jsonString);
      String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
      baseResult.setData(encrypt);
      baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
      log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult));
      return baseResult;
   }
   
@@ -204,16 +212,20 @@
    */
   @PostMapping("/query_stations_info")
   public BaseResult queryStationsInfo(@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();
@@ -232,9 +244,11 @@
      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;
   }
   
@@ -257,7 +271,7 @@
         stationInfo.setOperatorID("906171535");
         stationInfo.setEquipmentOwnerID("906171535");
         stationInfo.setStationName(datum.getName());
         stationInfo.setCountryCode(datum.getCountryCode());
         stationInfo.setCountryCode(StringUtils.isNotEmpty(datum.getCountryCode()) ? datum.getCountryCode() : "CN");
         stationInfo.setAreaCode(datum.getDistrictsCode());
         stationInfo.setAddress(datum.getAddress());
         stationInfo.setStationTel(datum.getPhone());
@@ -379,6 +393,7 @@
         
         //构建设备接口信息
         equipmentInfo.setConnectorInfos(buildConnectorInfos(tChargingPile.getId(), tChargingPile.getCode(), chargingGunList));
         equipmentInfo.setPower(tChargingPile.getRatedPower());
         equipmentInfos.add(equipmentInfo);
      }
      return equipmentInfos;
@@ -461,6 +476,9 @@
            connectorStatusInfo.setStatus(255);
            break;
      }
      ConnectorStatusInfo connectorStatusInfo1 = new ConnectorStatusInfo();
      BeanUtils.copyProperties(connectorStatusInfo, connectorStatusInfo1);
      connectorStatusInfo.setConnectorStatusInfo(connectorStatusInfo1);
      List<Operator> operators = operatorClient.getAllOperator().getData();
      for (Operator operator : operators) {
         TCECUtil.notificationStationStatus(operator, connectorStatusInfo);
@@ -476,15 +494,19 @@
    */
   @PostMapping("/query_station_status")
   public BaseResult queryStationStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){
      log.info("三方平台获取设备接口状态请求参数:" + JacksonUtils.toJson(baseRequest));
      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 queryStationsInfo = JSON.parseObject(decrypt, QueryStationStatus.class);
      List<Integer> collect = queryStationsInfo.getStationIDs().stream().map(Integer::valueOf).collect(Collectors.toList());
      List<Site> data = siteClient.getSiteByIds(collect).getData();
@@ -536,9 +558,11 @@
      result.setStationStatusInfos(StationStatusInfos);
      //参数加密
      String jsonString = JacksonUtils.toJson(result);
      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;
   }
   
@@ -552,16 +576,20 @@
    */
   @PostMapping("/query_station_stats")
   public BaseResult queryStationStats(@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);
      QueryStationStats queryStationStats = JSON.parseObject(decrypt, QueryStationStats.class);
      QueryStationStatsResult result = new QueryStationStatsResult();
      ChargingPercentProvinceDto dto = new ChargingPercentProvinceDto();
@@ -606,9 +634,11 @@
      result.setStationStats(stationStats);
      //参数加密
      String jsonString = JacksonUtils.toJson(result);
      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;
   }
   
@@ -619,22 +649,27 @@
    */
   @PostMapping("/query_equip_auth")
   public BaseResult queryEquipAuth(@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);
      QueryEquipAuth queryEquipAuth = JSON.parseObject(decrypt, QueryEquipAuth.class);
      String connectorID = queryEquipAuth.getConnectorID();
      TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData();
      if(null == tChargingGun){
         baseResult.setRet(4004);
         baseResult.setMsg("connectorID 参数无效");
         log.info("三方平台设备认证响应参数:" + JacksonUtils.toJson(baseResult));
         return baseResult;
      }
      QueryEquipAuthResult queryEquipAuthResult = new QueryEquipAuthResult();
@@ -673,9 +708,11 @@
      }
      //参数加密
      String jsonString = JacksonUtils.toJson(queryEquipAuthResult);
      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;
   }
   
@@ -687,16 +724,20 @@
    */
   @PostMapping("/query_equip_business_policy")
   public BaseResult queryEquipBusinessPolicy(@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);
      QueryEquipBusinessPolicy queryEquipBusinessPolicy = JSON.parseObject(decrypt, QueryEquipBusinessPolicy.class);
      
      //构建返回结果
@@ -712,9 +753,11 @@
         baseResult.setMsg("connectorID 参数无效");
         //参数加密
         String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult);
         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;
      }
      Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
@@ -729,9 +772,11 @@
         queryEquipBusinessPolicyResult.setSumPeriod(0);
         //参数加密
         String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult);
         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;
      }
      List<PolicyInfo> PolicyInfos = new ArrayList<>();
@@ -746,9 +791,11 @@
      queryEquipBusinessPolicyResult.setPolicyInfos(PolicyInfos);
      //参数加密
      String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult);
      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;
   }
   
@@ -802,16 +849,20 @@
    */
   @PostMapping("/query_start_charge")
   public BaseResult queryStartCharge(@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);
      QueryStartCharge queryStartCharge = JSON.parseObject(decrypt, QueryStartCharge.class);
      
      //构建返回结果
@@ -829,9 +880,11 @@
         result.setStartChargeSeqStat(5);
         //参数加密
         String jsonString = JacksonUtils.toJson(result);
         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;
      }
      //设备离线
@@ -841,9 +894,11 @@
         result.setStartChargeSeqStat(5);
         //参数加密
         String jsonString = JacksonUtils.toJson(result);
         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;
      }
      //调用充电接口
@@ -851,7 +906,7 @@
      addTripartitePlatformOrder.setStartChargeSeq(queryStartCharge.getStartChargeSeq());
      addTripartitePlatformOrder.setChargingGunId(tChargingGun.getId());
      addTripartitePlatformOrder.setOperatorId(operator.getOperatorId());
      addTripartitePlatformOrder.setPaymentAmount(queryStartCharge.getChargingAmt());
      addTripartitePlatformOrder.setPaymentAmount(null == queryStartCharge.getChargingAmt() ? new BigDecimal(9999) : queryStartCharge.getChargingAmt());
      addTripartitePlatformOrder.setRechargePaymentType(0);
      addTripartitePlatformOrder.setPlateNum(queryStartCharge.getPlateNum());
      R order = chargingOrderClient.addTripartitePlatformOrder(addTripartitePlatformOrder);
@@ -862,9 +917,11 @@
         result.setStartChargeSeqStat(2);
         //参数加密
         String jsonString = JacksonUtils.toJson(result);
         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;
      }
      result.setStartChargeSeqStat(1);
@@ -872,9 +929,11 @@
      result.setFailReason(0);
      //参数加密
      String jsonString = JacksonUtils.toJson(result);
      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;
   }
   
@@ -919,6 +978,22 @@
            }
         });
      }
      //定义定时任务推送订单状态
      ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
      Runnable task = new Runnable() {
         @Override
         public void run() {
            TChargingOrder chargingOrder = chargingOrderClient.getChargingOrderByStartChargeSeq(result.getStartChargeSeq()).getData();
            if(null == chargingOrder || chargingOrder.getStatus() != 3){
               scheduler.shutdown();
               return;
            }
            notificationEquipChargeStatus(result.getStartChargeSeq(), operator.getId());
         }
      };
      //一分钟执行一次
      scheduler.scheduleAtFixedRate(task, 1, 1, TimeUnit.MINUTES);
      return R.ok();
   }
   
@@ -930,24 +1005,30 @@
    */
   @PostMapping("/query_equip_charge_status")
   public BaseResult queryEquipChargeStatus(@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);
      QueryEquipChargeStatus queryEquipChargeStatus = JSON.parseObject(decrypt, QueryEquipChargeStatus.class);
      //校验token和签名
      QueryEquipChargeStatusResult queryEquipChargeStatusResult = buildQueryEquipChargeStatusResult(queryEquipChargeStatus.getStartChargeSeq());
      //参数加密
      String jsonString = JacksonUtils.toJson(queryEquipChargeStatusResult);
      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;
   }
   
@@ -1016,7 +1097,7 @@
      queryEquipChargeStatusResult.setVoltageA(chargingOrder.getVoltage());
      queryEquipChargeStatusResult.setSoc(chargingOrder.getTotalElectricity());
      queryEquipChargeStatusResult.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      queryEquipChargeStatusResult.setEndTime((null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      queryEquipChargeStatusResult.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      queryEquipChargeStatusResult.setTotalPower(chargingOrder.getElectricity());
      queryEquipChargeStatusResult.setElecMoney(chargingOrder.getTotalElectricity());
      queryEquipChargeStatusResult.setSeviceMoney(chargingOrder.getServiceCharge());
@@ -1027,7 +1108,7 @@
      List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
      
      LocalDateTime startTime = chargingOrder.getStartTime();
      LocalDateTime endTime = chargingOrder.getEndTime();
      LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime();
      String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
      String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
      for (TChargingOrderAccountingStrategy datum : data) {
@@ -1063,7 +1144,7 @@
    * @return
    */
   @PostMapping("/notificationEquipChargeStatus")
   public R notificationEquipChargeStatus(@RequestParam("startChargeSeq") String startChargeSeq, @RequestParam("operatorId") Integer operatorId){
   public R notificationEquipChargeStatus(@RequestParam(value = "startChargeSeq") String startChargeSeq, @RequestParam(value = "operatorId") Integer operatorId){
      QueryEquipChargeStatusResult queryEquipChargeStatusResult = buildQueryEquipChargeStatusResult(startChargeSeq);
      Operator operator = operatorClient.getOperatorById(operatorId).getData();
      NotificationEquipChargeStatusResult notificationEquipChargeStatusResult = TCECUtil.notificationEquipChargeStatus(operator, queryEquipChargeStatusResult);
@@ -1105,16 +1186,20 @@
    */
   @PostMapping("/query_stop_charge")
   public BaseResult queryStopCharge(@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);
      QueryStopCharge queryStopCharge = JSON.parseObject(decrypt, QueryStopCharge.class);
      QueryStopChargeResult queryStopChargeResult = new QueryStopChargeResult();
      queryStopChargeResult.setStartChargeSeq(queryStopCharge.getStartChargeSeq());
@@ -1129,16 +1214,20 @@
         queryStopChargeResult.setFailReason(3);
         //参数加密
         String jsonString = JacksonUtils.toJson(queryStopChargeResult);
         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;
      }
      //参数加密
      String jsonString = JacksonUtils.toJson(queryStopChargeResult);
      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;
   }
   
@@ -1250,7 +1339,7 @@
      }
      notificationChargeOrderInfo.setConnectorID(chargingOrder.getChargingGunId().toString());
      notificationChargeOrderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      notificationChargeOrderInfo.setEndTime((null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      notificationChargeOrderInfo.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      notificationChargeOrderInfo.setTotalPower(chargingOrder.getElectricity());
      notificationChargeOrderInfo.setTotalElecMoney(chargingOrder.getTotalElectricity());
      notificationChargeOrderInfo.setTotalSeviceMoney(chargingOrder.getServiceCharge());
@@ -1282,7 +1371,7 @@
      List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
      
      LocalDateTime startTime = chargingOrder.getStartTime();
      LocalDateTime endTime = chargingOrder.getEndTime();
      LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime();
      String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
      String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
      for (TChargingOrderAccountingStrategy datum : data) {
@@ -1313,34 +1402,43 @@
   
   
   /**
    * 二维码查询抢号(快电)
    * 二维码查询枪号(快电)
    * @param baseRequest
    * @param request
    * @return
    */
   @PostMapping("/query_terminal_code")
   public BaseResult queryTerminalCode(@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);
      QueryTerminalCode queryTerminalCode = JSON.parseObject(decrypt, QueryTerminalCode.class);
      String qrCode = queryTerminalCode.getQRCode();
      String substring = qrCode.substring(qrCode.indexOf("=") + 1);
      TChargingGun chargingGun = chargingGunClient.getChargingGunByFullNumber(substring).getData();
      QueryTerminalCodeResult queryTerminalCodeResult = new QueryTerminalCodeResult();
      queryTerminalCodeResult.setTerminalCode(substring);
      if(null != chargingGun){
         queryTerminalCodeResult.setTerminalCode(chargingGun.getId().toString());
      }
      
      //参数加密
      String jsonString = JacksonUtils.toJson(queryTerminalCodeResult);
      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;
   }
   
@@ -1394,24 +1492,30 @@
    */
   @PostMapping("/query_charge_order_info")
   public BaseResult queryChargeOrderInfo(@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);
      QueryChargeOrderInfo queryChargeOrderInfo = JSON.parseObject(decrypt, QueryChargeOrderInfo.class);
      //构建返回结果
      QueryChargeOrderInfoResult result = buildQueryChargeOrderInfoResult(queryChargeOrderInfo);
      //参数加密
      String jsonString = JacksonUtils.toJson(result);
      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;
   }
   
@@ -1436,7 +1540,7 @@
         orderInfo.setStartChargeSeq(chargingOrder.getStartChargeSeq());
         orderInfo.setConnectorID(chargingOrder.getChargingGunId().toString());
         orderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         orderInfo.setEndTime((null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         orderInfo.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         orderInfo.setTotalPower(chargingOrder.getTotalElectricity());
         orderInfo.setTotalElecMoney(chargingOrder.getElectrovalence());
         orderInfo.setTotalSeviceMoney(chargingOrder.getServiceCharge());
@@ -1461,7 +1565,7 @@
         List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
         
         LocalDateTime startTime = chargingOrder.getStartTime();
         LocalDateTime endTime = chargingOrder.getEndTime();
         LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime();
         String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         for (TChargingOrderAccountingStrategy datum : data) {