From 52c55330438818ba36a76450e3c9edf3461bd078 Mon Sep 17 00:00:00 2001
From: andy <1042025947@qq.com>
Date: Tue, 8 Apr 2025 15:17:58 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=85=E7=94=B5=E7=AB=99=E8=8E=B7=E5=8F=96?=
=?UTF-8?q?=E4=BA=91=E7=AB=AF=E7=9A=84=E7=AD=96=E7=95=A5=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-manage-server/pom.xml | 2 +-
.../message/dto/newer/req/MqttResponse.java | 53 +++++++++++++++++++
.../MqttMessageRequestExchangeProcessor.java | 49 +++++++++++++++++
...ttMessageRequestExchangeProcessorImpl.java | 53 +++++++++++++++++++
.../BatteryStationCdStrategyService.java | 2 +
.../BatteryStationCdStrategyServiceImpl.java | 15 ++++++
.../evotech/hd/cloud/utils/SpringUtil.java | 51 ++++++++++++++++++
.../com/evotech/hd/cloud/AddTestData.java | 19 ++++++-
8 files changed, 241 insertions(+), 3 deletions(-)
create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/MqttResponse.java
create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java
create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/impl/StrategyMqttMessageRequestExchangeProcessorImpl.java
create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java
diff --git a/cloud-manage-server/pom.xml b/cloud-manage-server/pom.xml
index 04bbc8e..d8cae23 100644
--- a/cloud-manage-server/pom.xml
+++ b/cloud-manage-server/pom.xml
@@ -82,7 +82,7 @@
cn.hutool
hutool-crypto
-
+
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/MqttResponse.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/MqttResponse.java
new file mode 100644
index 0000000..20864fb
--- /dev/null
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/MqttResponse.java
@@ -0,0 +1,53 @@
+package com.evotech.hd.cloud.mqtt.message.dto.newer.req;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @desc:
+ * @ClassName:MqttResponse
+ * @date: 2025年04月08日 12:44
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+@Data
+public class MqttResponse implements Serializable {
+
+ private Integer code;
+
+ private String msg;
+
+ private T data;
+
+
+ static final Integer SUCCESS = 1;
+
+ static final Integer ERROR = 0;
+
+ static final Integer PARAMS_ERROR = 2;
+
+ public MqttResponse() {
+ }
+
+ public MqttResponse success(T data){
+ this.code=SUCCESS;
+ this.msg="成功";
+ this.data=data;
+ return this;
+ }
+
+ public MqttResponse error(String errorMessage){
+ this.code=ERROR;
+ this.msg=errorMessage;
+ return this;
+ }
+
+ public MqttResponse paramsError(String errorMessage){
+ this.code=PARAMS_ERROR;
+ this.msg=errorMessage;
+ return this;
+ }
+
+}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java
new file mode 100644
index 0000000..b5d44e2
--- /dev/null
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java
@@ -0,0 +1,49 @@
+package com.evotech.hd.cloud.mqtt.message.processor;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONConfig;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum;
+import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum;
+import com.evotech.hd.cloud.mqtt.message.MessageTopic;
+import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
+import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse;
+import com.evotech.hd.cloud.mqtt.message.dto.newer.req.order.CancelOrderReq;
+import com.evotech.hd.cloud.mqtt.message.handle.MessageUtilService;
+import com.evotech.hd.cloud.utils.SpringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Date;
+
+
+/**
+ * @desc: 处理mqtt请求接口
+ * @ClassName:MqttMessageRequestExchangeProcessor
+ * @date: 2025年04月08日 11:28
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+
+public interface MqttMessageRequestExchangeProcessor {
+
+ Logger logger = LoggerFactory.getLogger(MqttMessageRequestExchangeProcessor.class);
+
+ boolean accept(String functionName);
+
+ void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody);
+
+ default void sendAESMessage(MessageTopic topic, MqttMessageHeader header, RequestFunctionTypesEnum typesEnum, MqttResponse response){
+ MessageUtilService messageUtilService = SpringUtil.getBean(MessageUtilService.class);
+ // 发送
+ topic.setDataDirection("M2S");
+ topic.setMessageType(MqttMessageTypeEnum.RESPONSE.getType());
+ header.setFunction(typesEnum.getReFunction());
+ header.setTimeStamp(DateUtil.format(new Date(), DatePattern.NORM_DATETIME_FORMATTER));
+ logger.info("\r\n=====>>>站端取消订单--MQTT发送到消息主题:{},头部信息:{},message:{}", topic,header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
+ messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
+ }
+}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/impl/StrategyMqttMessageRequestExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/impl/StrategyMqttMessageRequestExchangeProcessorImpl.java
new file mode 100644
index 0000000..9cd31fa
--- /dev/null
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/impl/StrategyMqttMessageRequestExchangeProcessorImpl.java
@@ -0,0 +1,53 @@
+package com.evotech.hd.cloud.mqtt.message.processor.impl;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum;
+import com.evotech.hd.cloud.mqtt.message.MessageTopic;
+import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
+import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse;
+import com.evotech.hd.cloud.mqtt.message.processor.MqttMessageRequestExchangeProcessor;
+import com.evotech.hd.cloud.service.BatteryStationCdStrategyService;
+import com.evotech.hd.common.core.entity.cloud.BatteryStationCdStrategy;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+/**
+ * Mqtt查询充电策略
+ * @ClassName:StrategyMqttMessageRequestExchangeProcessorImpl
+ * @date: 2025年04月08日 11:36
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+@Slf4j
+@Service
+public class StrategyMqttMessageRequestExchangeProcessorImpl implements MqttMessageRequestExchangeProcessor {
+ @Resource
+ BatteryStationCdStrategyService batteryStationCdStrategyService;
+
+ @Override
+ public boolean accept(String functionName) {
+ return RequestFunctionTypesEnum.FUN_STRATEGY_INFO.getReFunction().equals(functionName);
+ }
+
+ @Override
+ public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
+ log.info("StrategyMqttMessageRequestExchangeProcessorImpl-->>>>> 请求参数{}", JSONUtil.toJsonStr(dataBody));
+ MqttResponse response = null;
+ String stationCode = dataBody.getStr("stationCode");
+ if(StringUtils.isEmpty(stationCode)){
+ log.error("StrategyMqttMessageRequestExchangeProcessorImpl-->>>>> stationCode is null");
+ response = new MqttResponse<>().paramsError("stationCode is null");
+ }else{
+ List list = batteryStationCdStrategyService.chargeStationFindList(stationCode);
+ log.info("StrategyMqttMessageRequestExchangeProcessorImpl-->>>>> 查询到的策略信息{}", JSONUtil.toJsonStr(list));
+ response = new MqttResponse>().success(list);
+ }
+ sendAESMessage(topic, header, RequestFunctionTypesEnum.FUN_STRATEGY_INFO, response);
+ }
+}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationCdStrategyService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationCdStrategyService.java
index 7ac5403..7e9a5db 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationCdStrategyService.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationCdStrategyService.java
@@ -24,4 +24,6 @@ public interface BatteryStationCdStrategyService {
public Result> listDetail(Integer strategyId);
+ public List chargeStationFindList(String stationCode);
+
}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationCdStrategyServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationCdStrategyServiceImpl.java
index e408b87..e1a2487 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationCdStrategyServiceImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationCdStrategyServiceImpl.java
@@ -1,8 +1,10 @@
package com.evotech.hd.cloud.service.impl;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -106,4 +108,17 @@ public class BatteryStationCdStrategyServiceImpl implements BatteryStationCdStra
return new Result>().success(list);
}
+ @Override
+ public List chargeStationFindList(String stationCode) {
+ List list = strategyDao.listCdStrategy(stationCode, 1);
+ if (list.isEmpty()) {
+ return new ArrayList<>();
+ }
+ list.stream().forEach(data ->{
+ data.setDetailList(strategyDetailDao.selectList(new LambdaQueryWrapper()
+ .eq(BatteryStationCdStrategyDetail::getStrategyId, data.getPkId())));
+ });
+ return list;
+ }
+
}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java
new file mode 100644
index 0000000..1deb3f3
--- /dev/null
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java
@@ -0,0 +1,51 @@
+package com.evotech.hd.cloud.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * @desc:
+ * @ClassName:SpringUtil
+ * @date: 2025年04月08日 12:33
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+@Slf4j
+@Component
+public class SpringUtil implements ApplicationContextAware {
+
+ private static ApplicationContext applicationContext = null;
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ setGlobalApplicationContext(applicationContext);
+ }
+
+ private synchronized static void setGlobalApplicationContext(ApplicationContext applicationContext) {
+ if(SpringUtil.applicationContext == null){
+ SpringUtil.applicationContext = applicationContext;
+ }
+ }
+
+ public static ApplicationContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ public static Object getBean(String name) {
+ return getApplicationContext().getBean(name);
+ }
+
+ public static T getBean(Class clazz) {
+ T b = null;
+ try {
+ b=getApplicationContext().getBean(clazz);
+ } catch (BeansException e) {
+ log.info(e.getMessage());
+ }
+ return b;
+ }
+
+}
diff --git a/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java b/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java
index 6463f91..4c017f0 100644
--- a/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java
+++ b/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java
@@ -6,6 +6,11 @@ import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
+
+import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum;
+import com.evotech.hd.cloud.mqtt.message.MessageTopic;
+import com.evotech.hd.cloud.mqtt.message.handle.RequestMessageService;
+import com.evotech.hd.cloud.service.BatteryStationCdStrategyService;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@@ -70,7 +75,7 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import jakarta.annotation.Resource;
-@SpringBootTest
+@SpringBootTest(classes = CloudManageServerApplication.class)
public class AddTestData {
@Resource
@@ -121,7 +126,17 @@ public class AddTestData {
private MqttClient testClient;
-
+
+
+ @Resource
+ private BatteryStationCdStrategyService batteryStationCdStrategyService;
+
+ @Test
+ void strategyFind(){
+ System.out.println(batteryStationCdStrategyService.chargeStationFindList("123456"));
+ }
+
+
// @Test