From a16c9bebf9ab97e04afa67db1665549af86948fb Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 07 二月 2025 17:02:30 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java |   39 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 34 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 12d2fa6..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
@@ -11,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;
@@ -33,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;
 
@@ -41,6 +43,7 @@
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Objects;
+import java.util.Set;
 
 @Slf4j
 @Component
@@ -75,10 +78,6 @@
     private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
     @Resource
     private AccountingStrategyDetailClient accountingStrategyDetailClient;
-    @Resource
-    private ChargingGunClient chargingGunClient;
-    @Resource
-    private FaultMessageClient faultMessageClient;
     @Autowired
     private ChargingHandshakeService chargingHandshakeService;
     @Autowired
@@ -122,6 +121,9 @@
     
     @Resource
     private ChargingPileClient chargingPileClient;
+    
+    @Resource
+    private RedisTemplate redisTemplate;
     
     
     
@@ -340,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());
@@ -490,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