From 85c4410b0948799a93f19f345b4ed18c253c89f3 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 03 九月 2024 10:26:33 +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/listener/UploadRealTimeMonitoringDataMessageListener.java |   36 ++++++++++++++++++++++++++++++------
 1 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
index f28993e..dc6342c 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
@@ -1,11 +1,14 @@
 package com.ruoyi.integration.rocket.listener;
 
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.integration.api.model.Online;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
 import com.ruoyi.integration.rocket.model.UploadRealTimeMonitoringDataMessage;
 import com.ruoyi.integration.rocket.util.EnhanceMessageHandler;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -15,6 +18,9 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Objects;
 
 @Slf4j
 @Component
@@ -31,12 +37,10 @@
     
     @Resource
     private ChargingOrderClient chargingOrderClient;
-    
-    
-    
-    
-    
-    
+    @Resource
+    private AccountingStrategyDetailClient accountingStrategyDetailClient;
+
+
     @Override
     protected void handleMessage(UploadRealTimeMonitoringDataMessage message) throws Exception {
         // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试
@@ -44,11 +48,31 @@
         // 持久化消息
         UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData();
         BeanUtils.copyProperties(message,uploadRealTimeMonitoringData);
+        // 查询mogondb上一条数据
+        UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(message.getTransaction_serial_number());
+        // 查询订单
+        TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData();
+        // 查询当前时间段的计费策略
+        TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData();
+        uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence());
+        uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge());
+        if (Objects.nonNull(data)) {
+            uploadRealTimeMonitoringData.setLast_time(data.getLast_time());
+            uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount().divide(data.getPaid_amount()));
+            uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree().divide(data.getCharging_degree()));
+            uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
+        }else {
+            log.info("首次上传实时监测数据");
+            uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount());
+            uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree());
+            uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
+        }
         uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
         // 业务处理
         UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery();
         BeanUtils.copyProperties(uploadRealTimeMonitoringData, query);
         chargingOrderClient.chargeMonitoring(query);
+
     }
 
     @Override

--
Gitblit v1.7.1