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