无关风月
2025-02-07 a16c9bebf9ab97e04afa67db1665549af86948fb
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);
                }
            }
        }
    }
}