充电站获取云端的策略信息

This commit is contained in:
andy 2025-04-08 15:17:58 +08:00
parent 3692245745
commit 52c5533043
8 changed files with 241 additions and 3 deletions

View File

@ -82,7 +82,7 @@
<groupId>cn.hutool</groupId>
<artifactId>hutool-crypto</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -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<T> 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<T> success(T data){
this.code=SUCCESS;
this.msg="成功";
this.data=data;
return this;
}
public MqttResponse<T> error(String errorMessage){
this.code=ERROR;
this.msg=errorMessage;
return this;
}
public MqttResponse<T> paramsError(String errorMessage){
this.code=PARAMS_ERROR;
this.msg=errorMessage;
return this;
}
}

View File

@ -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)));
}
}

View File

@ -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<BatteryStationCdStrategy> list = batteryStationCdStrategyService.chargeStationFindList(stationCode);
log.info("StrategyMqttMessageRequestExchangeProcessorImpl-->>>>> 查询到的策略信息{}", JSONUtil.toJsonStr(list));
response = new MqttResponse<List<BatteryStationCdStrategy>>().success(list);
}
sendAESMessage(topic, header, RequestFunctionTypesEnum.FUN_STRATEGY_INFO, response);
}
}

View File

@ -24,4 +24,6 @@ public interface BatteryStationCdStrategyService {
public Result<List<BatteryStationCdStrategyDetail>> listDetail(Integer strategyId);
public List<BatteryStationCdStrategy> chargeStationFindList(String stationCode);
}

View File

@ -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<List<BatteryStationCdStrategyDetail>>().success(list);
}
@Override
public List<BatteryStationCdStrategy> chargeStationFindList(String stationCode) {
List<BatteryStationCdStrategy> list = strategyDao.listCdStrategy(stationCode, 1);
if (list.isEmpty()) {
return new ArrayList<>();
}
list.stream().forEach(data ->{
data.setDetailList(strategyDetailDao.selectList(new LambdaQueryWrapper<BatteryStationCdStrategyDetail>()
.eq(BatteryStationCdStrategyDetail::getStrategyId, data.getPkId())));
});
return list;
}
}

View File

@ -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> T getBean(Class<T> clazz) {
T b = null;
try {
b=getApplicationContext().getBean(clazz);
} catch (BeansException e) {
log.info(e.getMessage());
}
return b;
}
}

View File

@ -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