充电站获取云端的策略信息
This commit is contained in:
parent
3692245745
commit
52c5533043
@ -82,7 +82,7 @@
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-crypto</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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)));
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -24,4 +24,6 @@ public interface BatteryStationCdStrategyService {
|
||||
|
||||
public Result<List<BatteryStationCdStrategyDetail>> listDetail(Integer strategyId);
|
||||
|
||||
public List<BatteryStationCdStrategy> chargeStationFindList(String stationCode);
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user