From fd90eaebe2d70d1f7cf7ee511f084e0b97fc16a2 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 06 二月 2025 17:08:12 +0800
Subject: [PATCH] 修改bug和对接测试iotd

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java |  104 ++++++++++++++++++++++-----------------------------
 1 files changed, 45 insertions(+), 59 deletions(-)

diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
index 2689841..f9346b3 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
@@ -1,9 +1,9 @@
 package com.ruoyi.integration.drainage;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.nacos.common.utils.JacksonUtils;
 import com.ruoyi.chargingPile.api.feignClient.*;
 import com.ruoyi.chargingPile.api.model.*;
-import com.ruoyi.chargingPile.api.vo.GetParkingRecord;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -20,7 +20,7 @@
 import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
 import com.ruoyi.other.api.domain.Operator;
 import com.ruoyi.other.api.feignClient.OperatorClient;
-import com.ruoyi.system.api.model.LoginUser;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -41,6 +41,7 @@
  * @author zhibing.pu
  * @Date 2025/1/21 17:52
  */
+@Slf4j
 @RestController
 @RequestMapping("/evcs/v1.0")
 public class TCECController {
@@ -68,9 +69,7 @@
 	
 	@Resource
 	private TokenUtil tokenUtil;
-	
-	private static Map<Long, Integer> map = new HashMap<>();
-	
+
 	@Resource
 	private ParkingLotClient parkingLotClient;
 	
@@ -91,22 +90,8 @@
 		baseResult.setMsg("成功");
 		baseResult.setOperatorID(baseRequest.getOperatorID());
 		Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
-		Integer integer = map.get(mapKey);
-		if(null == integer){
-			integer = 1;
-		}else{
-			integer++;
-		}
-		map.put(mapKey, integer);
 		baseResult.setTimeStamp(mapKey);
-		baseResult.setSeq(String.format("%04d", integer));
-		//清空小于当前时间的map中的无效数据
-		for (Long k : map.keySet()) {
-			if(k <= (mapKey - 10)){
-				map.remove(k);
-			}
-		}
-		
+		baseResult.setSeq("0001");
 		//校验token和签名
 		String operatorID = baseRequest.getOperatorID();
 		String sig = baseRequest.getSig();
@@ -127,7 +112,7 @@
 		}
 		//校验token
 		if(tokenCheck){
-			LoginUser loginUser = tokenUtil.getLoginUser(request);
+			Operator loginUser = tokenUtil.getLoginUser(request);
 			if(null == loginUser){
 				baseResult.setRet(4002);
 				baseResult.setMsg("身份校验失败,无效的token");
@@ -136,15 +121,15 @@
 		}
 		
 		Operator operator = r.getData();
+		baseResult.setOperator(operator);
 		baseRequest.setOperator(operator);
 		//校验签名
-		String sign = TCECUtil.buildSign(baseRequest);
+		String sign = TCECUtil.ourBuildSign(baseRequest);
 		if(!sign.equals(sig)){
 			baseResult.setRet(4001);
 			baseResult.setMsg("签名校验失败");
 			return baseResult;
 		}
-		baseResult.setOperator(operator);
 		return baseResult;
 	}
 	
@@ -170,7 +155,7 @@
 			queryTokenResult.setSuccStat(1);
 			queryTokenResult.setFailReason(1);
 			//参数加密
-			String jsonString = JSON.toJSONString(queryTokenResult);
+			String jsonString = JacksonUtils.toJson(queryTokenResult);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -178,13 +163,13 @@
 		}
 		
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryToken queryToken = JSON.parseObject(decrypt, QueryToken.class);
-		if(!queryToken.getOperatorSecret().equals(operator.getOperatorSecret())){
+		if(!queryToken.getOperatorSecret().equals(operator.getOurOperatorSecret())){
 			queryTokenResult.setSuccStat(1);
 			queryTokenResult.setFailReason(2);
 			//参数加密
-			String jsonString = JSON.toJSONString(queryTokenResult);
+			String jsonString = JacksonUtils.toJson(queryTokenResult);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -195,13 +180,14 @@
 		Map<String, Object> token = tokenUtil.createToken(operator);
 		String access_token = token.get("access_token").toString();
 		Long expires_in = Long.valueOf(token.get("expires_in").toString());
-		
+
+		queryTokenResult.setOperatorID("906171535");
 		queryTokenResult.setSuccStat(0);
 		queryTokenResult.setFailReason(0);
 		queryTokenResult.setAccessToken(access_token);
 		queryTokenResult.setTokenAvailableTime(expires_in * 60);
 		//参数加密
-		String jsonString = JSON.toJSONString(queryTokenResult);
+		String jsonString = JacksonUtils.toJson(queryTokenResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -227,7 +213,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class);
 		Integer pageNo = queryStationsInfo.getPageNo();
 		Integer pageSize = queryStationsInfo.getPageSize();
@@ -245,7 +231,7 @@
 		queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue());
 		queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords()));
 		//参数加密
-		String jsonString = JSON.toJSONString(queryStationsInfoResult);
+		String jsonString = JacksonUtils.toJson(queryStationsInfoResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -268,8 +254,8 @@
 		for (Site datum : sites) {
 			StationInfo stationInfo = new StationInfo();
 			stationInfo.setStationID(datum.getId().toString());
-			stationInfo.setOperatorID("");
-			stationInfo.setEquipmentOwnerID("91510903906171535D");
+			stationInfo.setOperatorID("906171535");
+			stationInfo.setEquipmentOwnerID("906171535");
 			stationInfo.setStationName(datum.getName());
 			stationInfo.setCountryCode(datum.getCountryCode());
 			stationInfo.setAreaCode(datum.getDistrictsCode());
@@ -312,7 +298,7 @@
 			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(Arrays.asList(datum.getImgUrl().split(",")));
+			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());
@@ -498,7 +484,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		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();
@@ -549,7 +535,7 @@
 		}
 		result.setStationStatusInfos(StationStatusInfos);
 		//参数加密
-		String jsonString = JSON.toJSONString(result);
+		String jsonString = JacksonUtils.toJson(result);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -575,7 +561,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryStationStats queryStationStats = JSON.parseObject(decrypt, QueryStationStats.class);
 		QueryStationStatsResult result = new QueryStationStatsResult();
 		ChargingPercentProvinceDto dto = new ChargingPercentProvinceDto();
@@ -619,7 +605,7 @@
 		stationStats.setEquipmentStatsInfos(EquipmentStatsInfos);
 		result.setStationStats(stationStats);
 		//参数加密
-		String jsonString = JSON.toJSONString(result);
+		String jsonString = JacksonUtils.toJson(result);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -642,7 +628,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryEquipAuth queryEquipAuth = JSON.parseObject(decrypt, QueryEquipAuth.class);
 		String connectorID = queryEquipAuth.getConnectorID();
 		TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData();
@@ -686,7 +672,7 @@
 				break;
 		}
 		//参数加密
-		String jsonString = JSON.toJSONString(queryEquipAuthResult);
+		String jsonString = JacksonUtils.toJson(queryEquipAuthResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -710,7 +696,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryEquipBusinessPolicy queryEquipBusinessPolicy = JSON.parseObject(decrypt, QueryEquipBusinessPolicy.class);
 		
 		//构建返回结果
@@ -725,7 +711,7 @@
 			baseResult.setRet(4004);
 			baseResult.setMsg("connectorID 参数无效");
 			//参数加密
-			String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult);
+			String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -742,7 +728,7 @@
 			queryEquipBusinessPolicyResult.setFailReason(1);
 			queryEquipBusinessPolicyResult.setSumPeriod(0);
 			//参数加密
-			String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult);
+			String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -759,7 +745,7 @@
 		queryEquipBusinessPolicyResult.setSumPeriod(PolicyInfos.size());
 		queryEquipBusinessPolicyResult.setPolicyInfos(PolicyInfos);
 		//参数加密
-		String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult);
+		String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -825,7 +811,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryStartCharge queryStartCharge = JSON.parseObject(decrypt, QueryStartCharge.class);
 		
 		//构建返回结果
@@ -842,7 +828,7 @@
 			result.setFailReason(1);
 			result.setStartChargeSeqStat(5);
 			//参数加密
-			String jsonString = JSON.toJSONString(result);
+			String jsonString = JacksonUtils.toJson(result);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -854,7 +840,7 @@
 			result.setFailReason(2);
 			result.setStartChargeSeqStat(5);
 			//参数加密
-			String jsonString = JSON.toJSONString(result);
+			String jsonString = JacksonUtils.toJson(result);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -875,7 +861,7 @@
 			result.setFailReason(1);
 			result.setStartChargeSeqStat(2);
 			//参数加密
-			String jsonString = JSON.toJSONString(result);
+			String jsonString = JacksonUtils.toJson(result);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -885,7 +871,7 @@
 		result.setSuccStat(0);
 		result.setFailReason(0);
 		//参数加密
-		String jsonString = JSON.toJSONString(result);
+		String jsonString = JacksonUtils.toJson(result);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -953,12 +939,12 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryEquipChargeStatus queryEquipChargeStatus = JSON.parseObject(decrypt, QueryEquipChargeStatus.class);
 		//校验token和签名
 		QueryEquipChargeStatusResult queryEquipChargeStatusResult = buildQueryEquipChargeStatusResult(queryEquipChargeStatus.getStartChargeSeq());
 		//参数加密
-		String jsonString = JSON.toJSONString(queryEquipChargeStatusResult);
+		String jsonString = JacksonUtils.toJson(queryEquipChargeStatusResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -1128,7 +1114,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryStopCharge queryStopCharge = JSON.parseObject(decrypt, QueryStopCharge.class);
 		QueryStopChargeResult queryStopChargeResult = new QueryStopChargeResult();
 		queryStopChargeResult.setStartChargeSeq(queryStopCharge.getStartChargeSeq());
@@ -1142,14 +1128,14 @@
 			queryStopChargeResult.setSuccStat(1);
 			queryStopChargeResult.setFailReason(3);
 			//参数加密
-			String jsonString = JSON.toJSONString(queryStopChargeResult);
+			String jsonString = JacksonUtils.toJson(queryStopChargeResult);
 			String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 			baseResult.setData(encrypt);
 			baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
 			return baseResult;
 		}
 		//参数加密
-		String jsonString = JSON.toJSONString(queryStopChargeResult);
+		String jsonString = JacksonUtils.toJson(queryStopChargeResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -1343,7 +1329,7 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryTerminalCode queryTerminalCode = JSON.parseObject(decrypt, QueryTerminalCode.class);
 		String qrCode = queryTerminalCode.getQRCode();
 		String substring = qrCode.substring(qrCode.indexOf("=") + 1);
@@ -1351,7 +1337,7 @@
 		queryTerminalCodeResult.setTerminalCode(substring);
 		
 		//参数加密
-		String jsonString = JSON.toJSONString(queryTerminalCodeResult);
+		String jsonString = JacksonUtils.toJson(queryTerminalCodeResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
@@ -1392,7 +1378,7 @@
 			//待处理相关业务逻辑
 		}
 		//参数加密
-		String jsonString = JSON.toJSONString(notificationChargeCarnumResult);
+		String jsonString = JacksonUtils.toJson(notificationChargeCarnumResult);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getDataSecret(), operator.getDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.buildSign(baseResult));
@@ -1417,12 +1403,12 @@
 		}
 		Operator operator = baseResult.getOperator();
 		//解密参数
-		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv());
+		String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		QueryChargeOrderInfo queryChargeOrderInfo = JSON.parseObject(decrypt, QueryChargeOrderInfo.class);
 		//构建返回结果
 		QueryChargeOrderInfoResult result = buildQueryChargeOrderInfoResult(queryChargeOrderInfo);
 		//参数加密
-		String jsonString = JSON.toJSONString(result);
+		String jsonString = JacksonUtils.toJson(result);
 		String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv());
 		baseResult.setData(encrypt);
 		baseResult.setSig(TCECUtil.ourBuildSign(baseResult));

--
Gitblit v1.7.1