From 562fac9ce09621e86ab8707ff270b706576e9821 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期六, 12 七月 2025 09:01:23 +0800 Subject: [PATCH] 监管平台bug修改 --- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java | 9 ++ ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java | 181 +++++++++++++++++++++++++++++++++++++++++++++ ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java | 10 ++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java | 3 4 files changed, 202 insertions(+), 1 deletions(-) diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java index 14214bf..691ce6c 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java @@ -142,6 +142,9 @@ case SendTagConstant.END_CHARGE: EndChargeMessage endChargeMessage = JSON.parseObject(content.toJSONString(),EndChargeMessage.class); sendResult = enhanceProduce.endChargeMessage(endChargeMessage); + SendResult sendResultJianGuan = new SendResult(); + sendResultJianGuan = enhanceProduce.endChargeMessageJianGuan(endChargeMessage); + log.info("rocketmq消息下发结果:{}川逸充",sendResultJianGuan); // chargingMessage.setEndChargeMessage(endChargeMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java index 43f8fdf..fe8f6e8 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java @@ -26,7 +26,7 @@ private RocketMQEnhanceTemplate rocketMQEnhanceTemplate; private static final String TOPIC = "charge_"; - private static final String TOPIC_JIANGUAN = "jianguan_"; + private static final String TOPIC_JIANGUAN = "jianguan_message"; /** * 充电桩登录认证 @@ -59,6 +59,13 @@ message.setSource(SendTagConstant.END_CHARGE); return rocketMQEnhanceTemplate.send(TOPIC+SendTagConstant.END_CHARGE, SendTagConstant.END_CHARGE, message); } + public SendResult endChargeMessageJianGuan(EndChargeMessage message) { + // 设置业务key + message.setKey(UUID.randomUUID().toString()); + // 设置消息来源,便于查询 + message.setSource(SendTagConstant.END_CHARGE); + return rocketMQEnhanceTemplate.send(TOPIC_JIANGUAN, SendTagConstant.END_CHARGE, message); + } /** * 错误报文 */ diff --git a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java index 3d74e3e..2078d49 100644 --- a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java +++ b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java @@ -24,12 +24,15 @@ import com.ruoyi.integration.drainage.util.HMacMD5Util; import com.ruoyi.integration.drainage.util.SequenceGenerator; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; +import com.ruoyi.integration.rocket.model.EndChargeMessage; +import com.ruoyi.integration.rocket.produce.EnhanceProduce; import com.ruoyi.order.api.dto.ChargingStatisticeDTO; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.other.api.domain.Operator; import com.ruoyi.other.api.feignClient.OperatorClient; import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -53,4 +56,11 @@ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiIntegrationApplication.class) public class RuoYiIntegrationApplicationTests { + @Autowired + private EnhanceProduce enhanceProduce; + @Test + public void contextLoads() { + EndChargeMessage endChargeMessage = new EndChargeMessage(); + SendResult sendResult = enhanceProduce.endChargeMessageJianGuan(endChargeMessage); + } } diff --git a/ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java b/ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java new file mode 100644 index 0000000..53f82ef --- /dev/null +++ b/ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java @@ -0,0 +1,181 @@ +package com.ruoyi.jianguan; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.common.utils.JacksonUtils; +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.jianguan.model.BaseRequestJianGuan; +import com.ruoyi.jianguan.model.BaseResult; +import com.ruoyi.jianguan.model.NotificationStationStatusResult; +import com.ruoyi.jianguan.model.QueryTokenResult; +import com.ruoyi.jianguan.util.AESUtil; +import com.ruoyi.jianguan.util.AesEncryption; +import com.ruoyi.jianguan.util.HMacMD5Util; +import com.ruoyi.jianguan.util.SequenceGenerator; +import com.ruoyi.other.api.domain.Operator; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Slf4j +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiJianGuanApplication.class) +public class RuoYiJianGuanApplicationTests { + private static final String OperatorID = "906171535"; + private static final String OperatorSecret = "9jG8qysc5RxdbjvnvdmuRYQg6J82Fwj1"; + private static final String SigSecret = "RruzbZxnr74tqxe1"; + private static final String DataSecret = "3QJXn4MSj78zcpW1"; + private static final String DataSecretIV = "jhqj64V9gX8NHbu1"; + private final static String query_token = "/query_token"; + + private final static String url = "https://dataexchange.cdczpt.com/shevcs/v1"; + private final static String supervise_notification_equip_charge_status = "/notification_start_charge_result"; + + @Test + public void contextLoads() { + com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject(); + jsonObject.put("StartChargeSeq","CD34920250109232935330"); + jsonObject.put("ConnectorID","202412310000100101"); + jsonObject.put("StartChargeSeqStat",1); + + // 转化为yyyy-MM-dd HH:mm:ss格式字符串 + jsonObject.put("StartTime","2025-01-09 23:29:40"); + + HttpRequest post = HttpUtil.createPost(url+supervise_notification_equip_charge_status); + buildBody(post, jsonObject, new Operator()); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("推送三方平台充电开始状态失败:" + execute.body()); + } + log.info("推送三方平台设备状态响应:" + execute.body()); + BaseResult baseResult = JSON.parseObject(execute.body(), BaseResult.class); + Integer Ret = baseResult.getRet(); + if(0 != Ret){ + log.error("推送三方平台充电开始状态失败:" + baseResult.getMsg()); + + } + //解密参数 + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); + log.info("推送三方平台设备状态Data:" + decrypt); + NotificationStationStatusResult notificationStationStatusResult = JSON.parseObject(decrypt, NotificationStationStatusResult.class); + System.err.println(notificationStationStatusResult); + } + @Test + public void contextLoads1() { + com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject(); + jsonObject.put("StartChargeSeq","CD34920250109232935330"); + jsonObject.put("StartChargeSeqStat",4); + jsonObject.put("ConnectorID","202412310000100101"); + jsonObject.put("ConnectorStatus",2); + + jsonObject.put("CurrentA",83); + jsonObject.put("VoltageA",344); + jsonObject.put("StartTime","2025-01-09 23:29:40"); + + LocalDateTime now = LocalDateTime.now(); + // 转化为yyyy-MM-dd HH:mm:ss格式字符串 + jsonObject.put("EndTime",now.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + jsonObject.put("TotalPower",34.29); + jsonObject.put("TotalMoney",25.93); + + HttpRequest post = HttpUtil.createPost(url+supervise_notification_equip_charge_status); + buildBody(post, jsonObject, new Operator()); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("推送三方平台充电开始状态失败:" + execute.body()); + } + log.info("推送三方平台设备状态响应:" + execute.body()); + BaseResult baseResult = JSON.parseObject(execute.body(), BaseResult.class); + Integer Ret = baseResult.getRet(); + if(0 != Ret){ + log.error("推送三方平台充电开始状态失败:" + baseResult.getMsg()); + + } + //解密参数 + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); + log.info("推送三方平台设备状态Data:" + decrypt); + NotificationStationStatusResult notificationStationStatusResult = JSON.parseObject(decrypt, NotificationStationStatusResult.class); + System.err.println(notificationStationStatusResult); + } + /** + * 构建请求参数和消息头 + * @param post + * @param + */ + public void buildBody(HttpRequest post, com.alibaba.fastjson2.JSONObject o, Operator operator){ + Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + post.contentType("application/json;charset=utf-8"); + post.header("Authorization", "Bearer " + queryToken()); + BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); + baseRequest.setOperatorID("906171535"); + baseRequest.setTimeStamp(timeStamp+""); + baseRequest.setSeq("0001"); + + + String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,o.toJSONString()); +// String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); + + baseRequest.setData(encrypt); + baseRequest.setOperator(operator); + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + + String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", encrypt,nextSequence,SigSecret); +// String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + + baseRequest.setSig(hmacMD5); + String request_json = JacksonUtils.toJson(baseRequest); + post.body(request_json); + log.info("推送三方平台请求地址:" + post.getUrl()); + log.info("推送三方平台请求参数:" + request_json); + log.info("推送三方平台请求Data:" + o.toJSONString()); + } + public String queryToken(){ + HttpRequest post = HttpUtil.createPost(url + query_token); + JSONObject info = new JSONObject(); + info.put("OperatorID", "906171535"); + info.put("OperatorSecret", OperatorSecret); + Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + post.contentType("application/json;charset=utf-8"); + BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); + baseRequest.setOperatorID("906171535"); + baseRequest.setTimeStamp(timeStamp+""); + baseRequest.setSeq("0001"); + String jsonString = JacksonUtils.toJson(info); + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); + String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", data,nextSequence,SigSecret); + baseRequest.setData(data); + baseRequest.setSig(hmacMD5); + String request_json = JacksonUtils.toJson(baseRequest); + log.info("获取三方平台授权token请求地址:" + post.getUrl()); + log.info("获取三方平台授权token请求参数:" + request_json); + log.info("获取三方平台授权token请求Data:" + jsonString); + post.body(request_json); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("获取三方平台授权token失败:" + execute.body()); + return null; + } + log.info("获取三方平台授权token响应参数:" + execute.body()); + BaseResult baseResult = JSON.parseObject(execute.body(), BaseResult.class); + Integer Ret = baseResult.getRet(); + if(0 != Ret){ + log.error("获取三方平台授权token失败:" + baseResult.getMsg()); + return null; + } + //解密参数 + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); + log.info("获取三方平台授权token响应Data:" + decrypt); + QueryTokenResult queryTokenResult = JSON.parseObject(decrypt, QueryTokenResult.class); + String token = queryTokenResult.getAccessToken(); +// Long tokenAvailableTime = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) + queryTokenResult.getTokenAvailab + return token; + } +} -- Gitblit v1.7.1