diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java
index a78b6e4fd..055d75f75 100644
--- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java
+++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java
@@ -842,6 +842,15 @@ public class OrderService {
MemberVO memberVO = memberService.getMemberInfoByMemberId(orderBasicInfo.getMemberId());
vo.setMemberInfo(memberVO);
+ try {
+ // 因为原来的数据在redis中是永久保存,所以这里做下查询详情的时候,发现已经是完成的订单,redis数据存到表中
+ if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
+ // 如果是已完成的订单,把redis中的实时数据存到表中
+ orderBasicInfoService.realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
+ }
+ } catch (Exception e) {
+ log.error("后管查询订单详情时把redis中的实时数据存到表发生异常", e);
+ }
return vo;
}
@@ -934,10 +943,17 @@ public class OrderService {
UniAppOrderVO.BillingDetails billingDetails = new UniAppOrderVO.BillingDetails();
BeanUtils.copyBeanProp(billingDetails, orderDetail);
vo.setBillingDetails(billingDetails);
-
// orderDetail.getSharpElectricityPrice()
+ }
-
+ try {
+ // 因为原来的数据在redis中是永久保存,所以这里做下查询详情的时候,发现已经是完成的订单,redis数据存到表中
+ if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
+ // 如果是已完成的订单,把redis中的实时数据存到表中
+ orderBasicInfoService.realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
+ }
+ } catch (Exception e) {
+ log.error("后管查询订单详情时把redis中的实时数据存到表发生异常", e);
}
return vo;
}
diff --git a/jsowell-pile/pom.xml b/jsowell-pile/pom.xml
index 161983f02..bc0cace92 100644
--- a/jsowell-pile/pom.xml
+++ b/jsowell-pile/pom.xml
@@ -77,6 +77,11 @@
com.fasterxml.jackson.dataformat
jackson-dataformat-avro
+
+
+ com.alibaba.fastjson2
+ fastjson2
+
diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java
index 473b8554c..34afc2aa4 100644
--- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java
+++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java
@@ -119,6 +119,8 @@ public interface IOrderBasicInfoService {
List getListByMemberIdAndOrderStatus(String memberId, List orderStatusList, LocalDateTime dateTime);
+ void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode);
+
void updateElecAmount();
/**
diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
index 4a4361ce7..e36696ce6 100644
--- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
+++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
@@ -706,7 +706,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* 从redis中取出实时记录保存到表中
* 当订单完成的时候调用
*/
- private void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode) {
+ @Override
+ public void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode) {
if (StringUtils.isBlank(transactionCode)) {
return;
}
@@ -1060,6 +1061,15 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
RealTimeMonitorData data = JSONObject.parseObject((String) o, RealTimeMonitorData.class);
resultList.add(data);
}
+ } else {
+ logger.debug("redis中没有实时数据了,去数据库查");
+ // redis中为空,去查库
+ OrderMonitorData orderMonitorData = orderMonitorDataService.selectByTransactionCode(transactionCode);
+ if (orderMonitorData != null) {
+ String monitorData = orderMonitorData.getMonitorData();
+ List dataList = JSON.parseArray(monitorData, RealTimeMonitorData.class);
+ resultList.addAll(dataList);
+ }
}
return resultList;
}