diff --git a/base-commons/common-core/pom.xml b/base-commons/common-core/pom.xml
index afb78a4..e62e974 100644
--- a/base-commons/common-core/pom.xml
+++ b/base-commons/common-core/pom.xml
@@ -71,6 +71,12 @@
org.slf4j
slf4j-api
+
+ com.alibaba
+ fastjson
+ 1.2.58
+ compile
+
diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java
index de507f3..1aa9354 100644
--- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java
+++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java
@@ -1,19 +1,15 @@
package com.evotech.hd.common.core.entity.cloud;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.evotech.hd.common.core.entity.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
import java.io.Serializable;
import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
/**
* @author zrb
* @since 2024-12-11
@@ -35,6 +31,7 @@ public class OrderSwapBatteryStep extends BaseEntity implements Serializable {
private String stepName;
@Schema(description = "步骤时间")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+ @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date stepTime;
}
diff --git a/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java
index 6d02222..f417b87 100644
--- a/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java
+++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java
@@ -26,12 +26,8 @@ public class InsertAndUpdateMybatisHandler implements MetaObjectHandler {
public void insertFill(MetaObject metaObject) {
try {
AuthUser user = RedisPermissionUtils.getUser();
- if(BeanUtil.isEmpty(user)){
- log.info("当前操作位登录, 无需执行");
- return;
- }
if(BeanUtil.isNotEmpty(metaObject)){
- mySetFieldValByName("creater",user.getUid(),metaObject);
+ mySetFieldValByName("creater",(BeanUtil.isEmpty(user) ? "system" : user.getUid()),metaObject);
mySetFieldValByName("ctime",new Date(),metaObject);
}
} catch (Exception e) {
@@ -52,12 +48,8 @@ public class InsertAndUpdateMybatisHandler implements MetaObjectHandler {
public void updateFill(MetaObject metaObject) {
try {
AuthUser user = RedisPermissionUtils.getUser();
- if(BeanUtil.isEmpty(user)){
- log.info("当前操作未登录, 无需执行");
- return;
- }
if(BeanUtil.isNotEmpty(metaObject)){
- mySetFieldValByName("updater",user.getUid(),metaObject);
+ mySetFieldValByName("updater",(BeanUtil.isEmpty(user) ? "system" : user.getUid()),metaObject);
mySetFieldValByName("uptime",new Date(),metaObject);
}
} catch (Exception e) {
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java
index 50c3435..4a45a77 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java
@@ -107,7 +107,7 @@ public class MqttEventSwapCompleteExchangeProcessorImpl implements MqttStrategyE
orderService.updateById(order);
//修改订单状态及金额
alterOrderStatus(order, statusData);
- //记录换电步骤
+ //记录电池信息 or 记录最后的换电步骤
alterSwapBatteryStep(orderStatus, statusData, order);
}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatteryInfoExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatteryInfoExchangeProcessorImpl.java
index 6a826e2..628789e 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatteryInfoExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatteryInfoExchangeProcessorImpl.java
@@ -1,69 +1,69 @@
-package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.request;
-
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-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.battery.BatteryData;
-import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatteryInfoReq;
-import com.evotech.hd.cloud.service.BatteryStationDcService;
-import com.evotech.hd.common.core.constant.HDConstant;
-import com.evotech.hd.common.core.entity.cloud.BatteryStationDc;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 站端请求电池数据
- *
- * @ClassName:MqttRequestBatteryInfoExchangeProcessorImpl
- * @date: 2025年05月19日 17:41
- * @author: andy.shi
- * @contact: 17330188597
- * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
- */
-@Service
-@Slf4j
-public class MqttRequestBatteryInfoExchangeProcessorImpl implements MqttStrategyRequestExchangeProcessor {
-
- @Resource
- BatteryStationDcService batteryStationDcService;
-
- @Override
- public boolean accept(String functionName) {
- return RequestFunctionTypesEnum.FUN_BATTERYINFO.getFunction().equals(functionName);
- }
-
- @Override
- public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
- BatteryInfoReq batteryInfoReq = JSONUtil.toBean(dataBody, BatteryInfoReq.class);
- String batCode = batteryInfoReq.getBatCode();
- //直接默认为错误
- MqttResponse> response = new MqttResponse>().createError(batteryInfoReq.getBatteryInfoRequestId());
-
- List list = Collections.emptyList();
- if(org.apache.commons.lang3.StringUtils.isNotEmpty(batCode)){
- list.addAll(batteryStationDcService.list(new LambdaQueryWrapper().eq(BatteryStationDc::getBatCode, batCode).eq(BatteryStationDc::getDelFlag, HDConstant.DELETE_NO)));
- }else{
- //如果没有电池编号, 则以当前站的电池数据为准
- list.addAll(batteryStationDcService.listByStationCode(topic.getStationCode()));
- }
- if(com.evotech.hd.common.core.utils.Collections.isNotEmpty(list)){
- response.setCode(MqttResponse.PUBLIC_SUCCESS);
- response.setData(list.stream().map(x -> new BatteryData(x.getBatCode(), x.getProductionDate(), x.getRegistrationDate())).collect(Collectors.toList()));
- }else {
- response.setMsg("未查询到电池信息");
- }
-
- logger.info("\r\n站端请求电池数据: MqttRequestBatteryInfoExchangeProcessorImpl =====>>>message:{}", response.getMsg());
- sendAESMessage(topic, header, RequestFunctionTypesEnum.FUN_BATTERYINFO, response);
- }
-
-}
+//package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.request;
+//
+//import cn.hutool.json.JSONObject;
+//import cn.hutool.json.JSONUtil;
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//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.battery.BatteryData;
+//import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatteryInfoReq;
+//import com.evotech.hd.cloud.service.BatteryStationDcService;
+//import com.evotech.hd.common.core.constant.HDConstant;
+//import com.evotech.hd.common.core.entity.cloud.BatteryStationDc;
+//import jakarta.annotation.Resource;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.stereotype.Service;
+//
+//import java.util.Collections;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * 站端请求电池数据
+// *
+// * @ClassName:MqttRequestBatteryInfoExchangeProcessorImpl
+// * @date: 2025年05月19日 17:41
+// * @author: andy.shi
+// * @contact: 17330188597
+// * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+// */
+//@Service
+//@Slf4j
+//public class MqttRequestBatteryInfoExchangeProcessorImpl implements MqttStrategyRequestExchangeProcessor {
+//
+// @Resource
+// BatteryStationDcService batteryStationDcService;
+//
+// @Override
+// public boolean accept(String functionName) {
+// return RequestFunctionTypesEnum.FUN_BATTERYINFO.getFunction().equals(functionName);
+// }
+//
+// @Override
+// public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
+// BatteryInfoReq batteryInfoReq = JSONUtil.toBean(dataBody, BatteryInfoReq.class);
+// String batCode = batteryInfoReq.getBatCode();
+// //直接默认为错误
+// MqttResponse> response = new MqttResponse>().createError(batteryInfoReq.getBatteryInfoRequestId());
+//
+// List list = Collections.emptyList();
+// if(org.apache.commons.lang3.StringUtils.isNotEmpty(batCode)){
+// list.addAll(batteryStationDcService.list(new LambdaQueryWrapper().eq(BatteryStationDc::getBatCode, batCode).eq(BatteryStationDc::getDelFlag, HDConstant.DELETE_NO)));
+// }else{
+// //如果没有电池编号, 则以当前站的电池数据为准
+// list.addAll(batteryStationDcService.listByStationCode(topic.getStationCode()));
+// }
+// if(com.evotech.hd.common.core.utils.Collections.isNotEmpty(list)){
+// response.setCode(MqttResponse.PUBLIC_SUCCESS);
+// response.setData(list.stream().map(x -> new BatteryData(x.getBatCode(), x.getProductionDate(), x.getRegistrationDate())).collect(Collectors.toList()));
+// }else {
+// response.setMsg("未查询到电池信息");
+// }
+//
+// logger.info("\r\n站端请求电池数据: MqttRequestBatteryInfoExchangeProcessorImpl =====>>>message:{}", response.getMsg());
+// sendAESMessage(topic, header, RequestFunctionTypesEnum.FUN_BATTERYINFO, response);
+// }
+//
+//}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatterySwapExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatterySwapExchangeProcessorImpl.java
index 5993ff5..8119f01 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatterySwapExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestBatterySwapExchangeProcessorImpl.java
@@ -23,7 +23,7 @@ import org.springframework.stereotype.Service;
import java.util.Date;
/**
- * 站端回复开始换电通知信息类
+ * 换电信息--站端回复开始换电通知信息类
*
* @ClassName:MqttRequestBatterySwapExchangeProcessorImpl
* @date: 2025年06月20日 11:29
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCancelOrderExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCancelOrderExchangeProcessorImpl.java
index d4b35bf..2a33ab1 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCancelOrderExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCancelOrderExchangeProcessorImpl.java
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
/**
- * 取消订单请求类
+ * 取消订单--取消订单请求类
* @ClassName:MqttRequestCancelOrderExchangeProcessorImpl
* @date: 2025年05月19日 14:51
* @author: andy.shi
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCarInfoExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCarInfoExchangeProcessorImpl.java
index 819217c..914c198 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCarInfoExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestCarInfoExchangeProcessorImpl.java
@@ -1,73 +1,73 @@
-package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.request;
-
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.evotech.hd.cloud.dao.VehicleWechatUserRelationDao;
-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.carinfo.CarInfoReq;
-import com.evotech.hd.cloud.mqtt.message.dto.newer.req.carinfo.VehicleData;
-import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 站端请求车辆信息
- * @ClassName:MqttRequestCarInfoExchangeProcessorImpl
- * @date: 2025年06月19日 11:21
- * @author: andy.shi
- * @contact: 17330188597
- * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
- */
-@Service
-@Slf4j
-public class MqttRequestCarInfoExchangeProcessorImpl implements MqttStrategyRequestExchangeProcessor {
-
- @Resource
- private VehicleWechatUserRelationDao vehicleWechatUserRelationDao;
-
- @Override
- public boolean accept(String functionName) {
- return RequestFunctionTypesEnum.FUN_CARINFO.getFunction().equals(functionName);
- }
-
- @Override
- public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
- CarInfoReq carInfoReq = JSONUtil.toBean(dataBody, CarInfoReq.class);
- //直接默认为错误
- MqttResponse> response = new MqttResponse>().createError(carInfoReq.getCarInfoRequestId());
- String plateNum = carInfoReq.getPlateNum();
- if(StringUtils.isEmpty(plateNum)){
- response.setMsg("没有车牌号参数");
- }else{
- List list = vehicleWechatUserRelationDao.selectList(new LambdaQueryWrapper().eq( VehicleWechatUserRelation::getPlateNum, plateNum));
- if(com.evotech.hd.common.core.utils.Collections.isNotEmpty(list)){
- response.setCode(MqttResponse.PUBLIC_SUCCESS);
- response.setData(list.stream().map(x->convertVehicleData(x)).collect(Collectors.toList()));
- }else {
- response.setMsg("未查询到车辆信息");
- }
- }
-
- logger.info("\r\n站端请求车辆信息: MqttRequestCarInfoExchangeProcessorImpl =====>>>message:{}", response.getMsg());
- sendAESMessage(topic, header, RequestFunctionTypesEnum.FUN_CARINFO, response);
- }
-
-
- public static VehicleData convertVehicleData(VehicleWechatUserRelation data){
- VehicleData vd = new VehicleData();
- BeanUtils.copyProperties(data, vd);
- return vd;
- }
-
-
-}
+//package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.request;
+//
+//import cn.hutool.json.JSONObject;
+//import cn.hutool.json.JSONUtil;
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.evotech.hd.cloud.dao.VehicleWechatUserRelationDao;
+//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.carinfo.CarInfoReq;
+//import com.evotech.hd.cloud.mqtt.message.dto.newer.req.carinfo.VehicleData;
+//import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation;
+//import jakarta.annotation.Resource;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.commons.lang3.StringUtils;
+//import org.springframework.beans.BeanUtils;
+//import org.springframework.stereotype.Service;
+//
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * 站端请求车辆信息
+// * @ClassName:MqttRequestCarInfoExchangeProcessorImpl
+// * @date: 2025年06月19日 11:21
+// * @author: andy.shi
+// * @contact: 17330188597
+// * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+// */
+//@Service
+//@Slf4j
+//public class MqttRequestCarInfoExchangeProcessorImpl implements MqttStrategyRequestExchangeProcessor {
+//
+// @Resource
+// private VehicleWechatUserRelationDao vehicleWechatUserRelationDao;
+//
+// @Override
+// public boolean accept(String functionName) {
+// return RequestFunctionTypesEnum.FUN_CARINFO.getFunction().equals(functionName);
+// }
+//
+// @Override
+// public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
+// CarInfoReq carInfoReq = JSONUtil.toBean(dataBody, CarInfoReq.class);
+// //直接默认为错误
+// MqttResponse> response = new MqttResponse>().createError(carInfoReq.getCarInfoRequestId());
+// String plateNum = carInfoReq.getPlateNum();
+// if(StringUtils.isEmpty(plateNum)){
+// response.setMsg("没有车牌号参数");
+// }else{
+// List list = vehicleWechatUserRelationDao.selectList(new LambdaQueryWrapper().eq( VehicleWechatUserRelation::getPlateNum, plateNum));
+// if(com.evotech.hd.common.core.utils.Collections.isNotEmpty(list)){
+// response.setCode(MqttResponse.PUBLIC_SUCCESS);
+// response.setData(list.stream().map(x->convertVehicleData(x)).collect(Collectors.toList()));
+// }else {
+// response.setMsg("未查询到车辆信息");
+// }
+// }
+//
+// logger.info("\r\n站端请求车辆信息: MqttRequestCarInfoExchangeProcessorImpl =====>>>message:{}", response.getMsg());
+// sendAESMessage(topic, header, RequestFunctionTypesEnum.FUN_CARINFO, response);
+// }
+//
+//
+// public static VehicleData convertVehicleData(VehicleWechatUserRelation data){
+// VehicleData vd = new VehicleData();
+// BeanUtils.copyProperties(data, vd);
+// return vd;
+// }
+//
+//
+//}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPreOrderExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPreOrderExchangeProcessorImpl.java
index ba3d63a..b7215e7 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPreOrderExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPreOrderExchangeProcessorImpl.java
@@ -19,7 +19,7 @@ import org.springframework.stereotype.Service;
import java.util.stream.Stream;
/**
- * 站端请求创建预约单类
+ * 预约订单--站端请求创建预约单类
*
* @ClassName:MqttRequestPreOrderExchangeProcessorImpl
* @date: 2025年05月19日 17:41
@@ -42,7 +42,7 @@ public class MqttRequestPreOrderExchangeProcessorImpl implements MqttStrategyReq
@Override
public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
OrderSwapBatteryPre orderSwapBatteryPre = JSONUtil.toBean(dataBody, OrderSwapBatteryPre.class);
- MqttResponse response = new MqttResponse().createError(orderSwapBatteryPre.getSourceId());
+ MqttResponse response = new MqttResponse().error("");
// 1. 基础字段校验
if (validateRequiredFields(orderSwapBatteryPre)) {
response.setMsg("预约信息不完整");
@@ -55,6 +55,7 @@ public class MqttRequestPreOrderExchangeProcessorImpl implements MqttStrategyReq
// 创建预约单信息
orderSwapBatteryPre.setUcode(wechatUser.getWuid());
orderSwapBatteryPre.setSource(3);
+ orderSwapBatteryPre.setStationCode(topic.getStationCode());
Result integerResult = orderSwapBatteryPreService.addOrderSwapBatteryPre(orderSwapBatteryPre);
//检查结果
if (integerResult.getData()){
@@ -85,12 +86,12 @@ public class MqttRequestPreOrderExchangeProcessorImpl implements MqttStrategyReq
return Stream.of(
order.getPlateNum(),
order.getPhone(),
- order.getStationCode(),
- order.getStationName(),
- order.getUname(),
- order.getSwapDay(),
- order.getSwapDuration(),
- order.getReservationTime()
+// order.getStationCode(),
+// order.getStationName(),
+ order.getUname()
+// order.getSwapDay(),
+// order.getSwapDuration(),
+// order.getReservationTime()
).anyMatch(StrUtil::isBlankIfStr);
}
}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPushCarInfoExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPushCarInfoExchangeProcessorImpl.java
index f9e570c..162659d 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPushCarInfoExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestPushCarInfoExchangeProcessorImpl.java
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
/**
- * 接收站端推送的车牌照, 创建车辆信息和预约单
+ * 初始化车辆和预约单--接收站端推送的车牌照, 创建车辆信息和预约单
*
* @ClassName:MqttRequestPushCarCreateMakeAppointmentExchangeProcessorImpl
* @date: 2025年04月30日 15:34
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestQueryOrderExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestQueryOrderExchangeProcessorImpl.java
index e88c404..a95ca1c 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestQueryOrderExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestQueryOrderExchangeProcessorImpl.java
@@ -20,6 +20,7 @@ import com.evotech.hd.common.core.entity.order.Order;
import com.evotech.hd.common.core.enums.CodeMsg;
import com.evotech.hd.common.core.enums.OrderStatusEnums;
import com.evotech.hd.common.core.enums.SwapBatteryStepEnum;
+import com.evotech.hd.common.core.utils.Collections;
import com.evotech.hd.common.redis.utils.RedisServiceUtils;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -30,7 +31,7 @@ import org.springframework.stereotype.Service;
import java.util.Date;
/**
- * 站端根据车牌号查询订单
+ * 查询订单--站端根据车牌号查询订单
*
* @ClassName:MqttRequestQueryOrderExchangeProcessorImpl
* @date: 2025年05月19日 17:41
@@ -72,7 +73,7 @@ public class MqttRequestQueryOrderExchangeProcessorImpl implements MqttStrategyR
.eq(Order::getPlateNum, orderSwapBatteryPre.getPlateNum())
.eq(Order::getStationCode, orderSwapBatteryPre.getStationCode())
.eq(Order::getOrderPreId, orderSwapBatteryPre.getPkId())
- .eq(Order::getStatus, OrderStatusEnums.CREATE.getCode()));
+ .in(Order::getStatus, Collections.asList(OrderStatusEnums.CREATE.getCode(), OrderStatusEnums.SWAP.getCode())));
if (ObjectUtils.isNotEmpty(order)) {
response.setCode(MqttResponse.PUBLIC_SUCCESS);
}else{
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestStrategyExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestStrategyExchangeProcessorImpl.java
index 4a2f465..922d0fa 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestStrategyExchangeProcessorImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/request/MqttRequestStrategyExchangeProcessorImpl.java
@@ -16,7 +16,7 @@ import org.springframework.util.StringUtils;
import java.util.List;
/**
- * Mqtt查询充电策略
+ * 查询充电策略--Mqtt查询充电策略
* @ClassName:StrategyMqttMessageRequestExchangeProcessorImpl
* @date: 2025年04月08日 11:36
* @author: andy.shi
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateOrderStatusDataExchangeProcessor.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateOrderStatusDataExchangeProcessor.java
index 62d21fa..fc4c172 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateOrderStatusDataExchangeProcessor.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateOrderStatusDataExchangeProcessor.java
@@ -1,42 +1,42 @@
-package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.state;
-
-import cn.hutool.json.JSONObject;
-import com.evotech.hd.cloud.dao.OrderSwapBatteryStepDao;
-import com.evotech.hd.cloud.mqtt.enums.StateFunctionTypesEnum;
-import com.evotech.hd.cloud.mqtt.message.MessageTopic;
-import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
-import com.evotech.hd.cloud.utils.components.HDStepDictComponent;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/**
- * 站端反馈订单状态
- *
- * @ClassName:MqttStateSwapStepDataExchangeProcessor
- * @date: 2025年04月29日 13:26
- * @author: andy.shi
- * @contact: 17330188597
- * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
- */
-@Slf4j
-@Service
-public class MqttStateOrderStatusDataExchangeProcessor implements MqttStrategyStateExchangeProcessor {
-
- @Resource
- private HDStepDictComponent hdStepDictComponent;
- @Resource
- private OrderSwapBatteryStepDao orderSwapBatteryStepDao;
-
- @Override
- public boolean accept(String functionName) {
- return StateFunctionTypesEnum.FUN_ORDERSTATUS.getFunction().equals(functionName);
- }
-
- @Override
- public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
-// OrderStatus orderStatus = JSONUtil.toBean(dataBody, OrderStatus.class);
-// OrderStatusData statusData = JSONUtil.toBean(dataBody.getJSONObject("statusData"), OrderStatusData.class);
- log.info("\r\n=====>>>站端反馈订单状态--MQTT收到消息主题:{},换电步骤名称:{}",topic, dataBody.toString());
- }
-}
+//package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.state;
+//
+//import cn.hutool.json.JSONObject;
+//import com.evotech.hd.cloud.dao.OrderSwapBatteryStepDao;
+//import com.evotech.hd.cloud.mqtt.enums.StateFunctionTypesEnum;
+//import com.evotech.hd.cloud.mqtt.message.MessageTopic;
+//import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
+//import com.evotech.hd.cloud.utils.components.HDStepDictComponent;
+//import jakarta.annotation.Resource;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.stereotype.Service;
+//
+///**
+// * 站端反馈订单状态
+// *
+// * @ClassName:MqttStateSwapStepDataExchangeProcessor
+// * @date: 2025年04月29日 13:26
+// * @author: andy.shi
+// * @contact: 17330188597
+// * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+// */
+//@Slf4j
+//@Service
+//public class MqttStateOrderStatusDataExchangeProcessor implements MqttStrategyStateExchangeProcessor {
+//
+// @Resource
+// private HDStepDictComponent hdStepDictComponent;
+// @Resource
+// private OrderSwapBatteryStepDao orderSwapBatteryStepDao;
+//
+// @Override
+// public boolean accept(String functionName) {
+// return StateFunctionTypesEnum.FUN_ORDERSTATUS.getFunction().equals(functionName);
+// }
+//
+// @Override
+// public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
+//// OrderStatus orderStatus = JSONUtil.toBean(dataBody, OrderStatus.class);
+//// OrderStatusData statusData = JSONUtil.toBean(dataBody.getJSONObject("statusData"), OrderStatusData.class);
+// log.info("\r\n=====>>>站端反馈订单状态--MQTT收到消息主题:{},换电步骤名称:{}",topic, dataBody.toString());
+// }
+//}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateSwapStepDataExchangeProcessor.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateSwapStepDataExchangeProcessor.java
index 47f774d..a78be7c 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateSwapStepDataExchangeProcessor.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/state/MqttStateSwapStepDataExchangeProcessor.java
@@ -50,16 +50,11 @@ public class MqttStateSwapStepDataExchangeProcessor implements MqttStrategyState
public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
SwapStep swapStep = JSONUtil.toBean(dataBody, SwapStep.class);
// 记录换电步骤
-// OrderSwapBatteryStep step = new OrderSwapBatteryStep();
-// BeanUtils.copyProperties(swapStep, step);
-// step.setCtime(new Date());
-// step.setCreater("SYS");
-// step.setStepName(hdStepDictComponent.hdStepDictName(step.getStep()));
log.info("\r\n=====>>>站端反馈换电步骤--MQTT收到消息主题:{},换电步骤名称:{}",topic, hdStepDictComponent.hdStepDictName(swapStep.getStep()));
if(orderSwapBatteryStepService.addOrderSwapBatteryStepBySwapComplete(swapStep.getOrderNo(), swapStep.getStep(), swapStep.getStepTime())){
Order order = orderService.getOne(new LambdaQueryWrapper().eq(Order::getOrderNo, swapStep.getOrderNo()).eq(Order::getDelFlag, HDConstant.DELETE_NO));
//发送通知到指定客户端
- wechatService.sendClientMessage(order.getPreWechatId(), JSON.toJSONString(orderSwapBatteryStepService.list(new LambdaQueryWrapper().eq(OrderSwapBatteryStep::getOrderNo, order.getOrderNo()).orderByAsc(OrderSwapBatteryStep::getStepTime))));
+ wechatService.sendClientMessage(order.getPreWechatId(), JSON.toJSONString(orderSwapBatteryStepService.list(new LambdaQueryWrapper().eq(OrderSwapBatteryStep::getOrderNo, order.getOrderNo()).orderByAsc(OrderSwapBatteryStep::getStep))));
}
}
}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java
index d34278e..daa97f2 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java
@@ -201,7 +201,8 @@ public class OrderServiceImpl extends ServiceImpl implements Or
order.setPlateNum(orderSwapBatteryPre.getPlateNum());
order.setOrderTime(new Date());
order.setOrderType(HDConstant.OrderConstant.ORDER_TYPE_SWAP);
- order.setStatus(OrderStatusEnums.CREATE.getCode());
+ //站端不会推送换电中事件, 所以根据预约单创建订单, 即为换电中
+ order.setStatus(OrderStatusEnums.SWAP.getCode());
order.setStationCode(orderSwapBatteryPre.getStationCode());
order.setStationName(orderSwapBatteryPre.getStationName());
order.setDelFlag(HDConstant.DELETE_NO);
diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/Dao/LogWebSocketDao.java b/wechat-server/src/main/java/com/evotech/hd/wechat/Dao/LogWebSocketDao.java
new file mode 100644
index 0000000..2f2d101
--- /dev/null
+++ b/wechat-server/src/main/java/com/evotech/hd/wechat/Dao/LogWebSocketDao.java
@@ -0,0 +1,16 @@
+package com.evotech.hd.wechat.Dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.evotech.hd.wechat.websocket.entity.LogWebSocket;
+
+/**
+ * 接口
+ *
+ * @ClassName:LogWebSocketDao
+ * @date: 2025年07月25日 8:45
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+public interface LogWebSocketDao extends BaseMapper {
+}
diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/Dao/OnlineWebSocketUserDao.java b/wechat-server/src/main/java/com/evotech/hd/wechat/Dao/OnlineWebSocketUserDao.java
new file mode 100644
index 0000000..8fdeed6
--- /dev/null
+++ b/wechat-server/src/main/java/com/evotech/hd/wechat/Dao/OnlineWebSocketUserDao.java
@@ -0,0 +1,16 @@
+package com.evotech.hd.wechat.Dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.evotech.hd.wechat.websocket.entity.OnlineWebSocketUser;
+
+/**
+ * 接口
+ *
+ * @ClassName:LogWebSocketDao
+ * @date: 2025年07月25日 8:45
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+public interface OnlineWebSocketUserDao extends BaseMapper {
+}
diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketService.java
index c32b0d9..93206d0 100644
--- a/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketService.java
+++ b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketService.java
@@ -1,5 +1,9 @@
package com.evotech.hd.wechat.websocket.controller;
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.evotech.hd.wechat.Dao.OnlineWebSocketUserDao;
+import com.evotech.hd.wechat.websocket.entity.OnlineWebSocketUser;
import jakarta.websocket.OnClose;
import jakarta.websocket.OnError;
import jakarta.websocket.OnOpen;
@@ -9,6 +13,8 @@ import jakarta.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
+import java.util.Date;
+
/**
* websocket服务类
@@ -28,6 +34,7 @@ import org.springframework.stereotype.Component;
public class WebSocketService {
+
/**
* 建立连接
*
@@ -38,6 +45,12 @@ public class WebSocketService {
public void openConnection(Session session, @PathParam(value = "wechatId") String wechatId) {
WebSocketUtils.SESSION_POOLS.put(wechatId, session);
WebSocketUtils.onlineNum.incrementAndGet();
+ try {
+ SpringUtil.getBean(OnlineWebSocketUserDao.class).insert(new OnlineWebSocketUser(new Date(), wechatId));
+ } catch (Exception e) {
+ log.error("记录连接用户出现错误"+e.getMessage());
+ e.printStackTrace();
+ }
log.info(wechatId + "建立连接! 当前连接数为: {}", WebSocketUtils.onlineNum);
}
@@ -50,6 +63,12 @@ public class WebSocketService {
public void closeConnection(@PathParam(value = "wechatId") String wechatId) {
WebSocketUtils.SESSION_POOLS.remove(wechatId);
int cnt = WebSocketUtils.onlineNum.decrementAndGet();
+ try {
+ SpringUtil.getBean(OnlineWebSocketUserDao.class).delete(new LambdaQueryWrapper().eq(OnlineWebSocketUser::getWechatId, wechatId));
+ } catch (Exception e) {
+ log.error("删除连接用户出现错误"+e.getMessage());
+ e.printStackTrace();
+ }
log.info(wechatId + "断开连接, 当前连接数为:{}", cnt);
}
diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketUtils.java b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketUtils.java
index 7f603bc..a51156e 100644
--- a/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketUtils.java
+++ b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/controller/WebSocketUtils.java
@@ -1,5 +1,8 @@
package com.evotech.hd.wechat.websocket.controller;
+import cn.hutool.extra.spring.SpringUtil;
+import com.evotech.hd.wechat.Dao.LogWebSocketDao;
+import com.evotech.hd.wechat.websocket.entity.LogWebSocket;
import jakarta.websocket.Session;
import lombok.extern.slf4j.Slf4j;
@@ -54,6 +57,12 @@ public class WebSocketUtils {
*/
public static void sendMessage(String wechatId , String message){
try {
+ //记录日志
+ try {
+ SpringUtil.getBean(LogWebSocketDao.class).insert(new LogWebSocket(wechatId, message));
+ } catch (Exception e) {
+ log.error("日志记录错误"+e.getMessage());
+ }
sendMessage(WebSocketUtils.SESSION_POOLS.get(wechatId), message);
} catch (IOException e) {
log.error("信息推送失败, 用户的微信ID: {}, 推送消息是: {}, 异常原因是:{}", wechatId, message, e.getMessage());
diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/entity/LogWebSocket.java b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/entity/LogWebSocket.java
new file mode 100644
index 0000000..b56d67b
--- /dev/null
+++ b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/entity/LogWebSocket.java
@@ -0,0 +1,33 @@
+package com.evotech.hd.wechat.websocket.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.evotech.hd.common.core.entity.IdEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 类
+ *
+ * @ClassName:LogWebSocket
+ * @date: 2025年07月25日 8:37
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+@Data
+@TableName(value = "yt_t_log_web_socket", schema = "hd_wechat")
+public class LogWebSocket extends IdEntity implements Serializable {
+
+ String clientWechatId;
+
+ String sendInfo;
+
+ public LogWebSocket() {
+ }
+
+ public LogWebSocket(String clientWechatId, String sendInfo) {
+ this.clientWechatId = clientWechatId;
+ this.sendInfo = sendInfo;
+ }
+}
diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/entity/OnlineWebSocketUser.java b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/entity/OnlineWebSocketUser.java
new file mode 100644
index 0000000..034b5ad
--- /dev/null
+++ b/wechat-server/src/main/java/com/evotech/hd/wechat/websocket/entity/OnlineWebSocketUser.java
@@ -0,0 +1,33 @@
+package com.evotech.hd.wechat.websocket.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.evotech.hd.common.core.entity.IdEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 类
+ *
+ * @ClassName:OnlineWebSocketUser
+ * @date: 2025年07月25日 8:42
+ * @author: andy.shi
+ * @contact: 17330188597
+ * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
+ */
+@Data
+@TableName(value = "yt_t_online_web_socket_user", schema = "hd_wechat")
+public class OnlineWebSocketUser extends IdEntity implements Serializable {
+ String wechatId;
+ //链接时间
+ Date linkDate;
+
+ public OnlineWebSocketUser() {
+ }
+
+ public OnlineWebSocketUser(Date linkDate, String wechatId) {
+ this.linkDate = linkDate;
+ this.wechatId = wechatId;
+ }
+}