From 0275498af38bc1c8fbc5bfea54f3cce3550fd6ab Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 11 二月 2025 09:57:54 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into 1.1

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java |   41 ++++++++++++++++++++++++++++++++++++-----
 1 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
index 8861cff..4124ed6 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
@@ -1,6 +1,7 @@
 package com.ruoyi.integration.rocket.produce;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
@@ -10,6 +11,7 @@
 import com.ruoyi.chargingPile.api.model.TFaultMessage;
 import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode;
 import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.integration.api.model.*;
 import com.ruoyi.integration.iotda.constant.SendTagConstant;
 import com.ruoyi.integration.iotda.enums.ServiceIdMenu;
@@ -32,6 +34,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.annotation.StreamListener;
 import org.springframework.cloud.stream.messaging.Sink;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 
@@ -40,6 +43,7 @@
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Objects;
+import java.util.Set;
 
 @Slf4j
 @Component
@@ -74,10 +78,6 @@
     private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
     @Resource
     private AccountingStrategyDetailClient accountingStrategyDetailClient;
-    @Resource
-    private ChargingGunClient chargingGunClient;
-    @Resource
-    private FaultMessageClient faultMessageClient;
     @Autowired
     private ChargingHandshakeService chargingHandshakeService;
     @Autowired
@@ -121,6 +121,9 @@
     
     @Resource
     private ChargingPileClient chargingPileClient;
+    
+    @Resource
+    private RedisTemplate redisTemplate;
     
     
     
@@ -325,6 +328,7 @@
             case SendTagConstant.TRANSACTION_RECORD:
                 TransactionRecordMessage transactionRecordMessage = message.getTransactionRecordMessage();
                 log.info("交易记录-业务消息处理:{}",transactionRecordMessage);
+                transactionRecordMessage.setResult(JSONObject.toJSONString(message));
                 // 持久化消息
                 TransactionRecord transactionRecord = new TransactionRecord();
                 BeanUtils.copyProperties(transactionRecordMessage,transactionRecord);
@@ -338,7 +342,13 @@
                 //计算费用
                 TransactionRecordMessageVO vo = new TransactionRecordMessageVO();
                 BeanUtils.copyProperties(transactionRecordMessage,vo);
-                chargingOrderClient.endChargeBillingCharge(vo);
+                int code = chargingOrderClient.endChargeBillingCharge(vo).getCode();
+                if(200 != code){
+                    //失败后添加到队列中继续处理数据
+                    redisTemplate.opsForSet().add(SendTagConstant.TRANSACTION_RECORD, transactionRecordMessage.getTransaction_serial_number());
+                }
+    
+    
                 // 添加实时上传记录结束记录
                 // 查询mogondb上一条数据
                 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(transactionRecordMessage.getTransaction_serial_number());
@@ -488,4 +498,25 @@
     public void onMessage(ChargingMessage message) {
         super.dispatchMessage(message);
     }
+    
+    
+    /**
+     * 处理未正常完成费用计算的订单
+     */
+    public void transactionRecord(){
+        Set<String> members = redisTemplate.opsForSet().members(SendTagConstant.TRANSACTION_RECORD);
+        for (String member : members) {
+            TransactionRecord transactionRecord = transactionRecordService.findOne(member);
+            if(null == transactionRecord){
+                redisTemplate.opsForSet().remove(SendTagConstant.TRANSACTION_RECORD, member);
+            }else{
+                TransactionRecordMessageVO vo = new TransactionRecordMessageVO();
+                BeanUtils.copyProperties(transactionRecord, vo);
+                int code = chargingOrderClient.endChargeBillingCharge(vo).getCode();
+                if(200 == code){
+                    redisTemplate.opsForSet().remove(SendTagConstant.TRANSACTION_RECORD, member);
+                }
+            }
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.7.1