From ae2e17d478f444a5c9c054dc13b83a0dbdd750bd Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期四, 30 六月 2022 11:35:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java |   61 ++++++++++++++++++++++--------
 1 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
index 42972c9..fce2d1b 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
@@ -3,7 +3,6 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.sandu.common.util.SpringContextHolder;
-import com.sandu.ximon.admin.config.RedisConfig;
 import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3CommonReportInnerFrame;
 import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3ErrorCodeReportInnerFrame;
 import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3HeartbeatReportInnerFrame;
@@ -27,6 +26,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -67,9 +67,8 @@
             if (netRequestFrame.isValidate()) {
                 //淇濆瓨鍏呯數妗╃‖浠朵俊鎭�
                 boolean b = SpringContextHolder.getBean(C3ChargingService.class).saveReporEquipment(deviceName, netRequestFrame.getMcuUdid(), netRequestFrame.getDestinationAddress());
-                //妫�鏌ユ槸鍚︽湁姝e湪杩涜鐨勮鍗�
-                //TODO
-
+                //妫�鏌ユ槸鍚︽湁姝e湪杩涜鐨勮鍗曪紝鏈夌殑璇濈户缁厖鐢�
+                SpringContextHolder.getBean(C3mOrderService.class).recoverContinueCharing(netRequestFrame.getDestinationAddress(), netRequestFrame.getMcuUdid());
                 if (!b) {
                     return;
                 }
@@ -82,6 +81,12 @@
 
             if (codeRequestFrame.isValidate()) {
                 if (deviceName != null) {
+                    C3mCharging c3mCharging = SpringContextHolder.getBean(C3ChargingService.class).
+                            getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getC3Mac, codeRequestFrame.getDestinationAddress()).last("limit 1"));
+                    if(c3mCharging == null){
+                        SpringContextHolder.getBean(C3ChargingService.class).saveReporEquipment(deviceName, codeRequestFrame.getMcuUdid(), codeRequestFrame.getDestinationAddress());
+                    }
+
                     //璁剧疆浜岀淮鐮�
                     Pole pole = SpringContextHolder.getBean(PoleService.class).getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getDeviceCode, deviceName));
                     if (pole != null) {
@@ -102,7 +107,9 @@
                         , heartbeatReportInnerFrame.getHeartBeatDataPackage().getC3Mac()
                         , heartbeatReportInnerFrame.getHeartBeatDataPackage().getStatusBit()
                         , heartbeatReportInnerFrame.getHeartBeatDataPackage().getDeviceTemperature());
-
+                //鏇存柊璁㈠崟鏁版嵁
+                SpringContextHolder.getBean(C3mOrderService.class).updateOrderStatusByHeartbeat(heartbeatReportInnerFrame.getHeartBeatDataPackage());
+                //瀛樼紦瀛�
                 RedisUtils.getBean().set(C3mRedisConstant.C3_STATUS.getCode() + heartbeatReportInnerFrame.getHeartBeatDataPackage().getC3Mac()
                         , heartbeatReportInnerFrame.getHeartBeatDataPackage(), 300L);
             }
@@ -119,7 +126,8 @@
                 LogUtils.error("{ 鍏呯數妗�(" + completeRequestFrame.getDestinationAddress() + ")鍏呯數缁撴潫涓婃姤璇诲彇蹇冭烦鍖呭け璐ワ紝璇锋鏌ュ厖鐢垫々鏄惁鍑虹幇鏁呴殰! }");
                 return;
             }
-            refund(aPackage);
+//            refund(aPackage);
+            orderProcess(aPackage.getC3Mac());
 
         } else if (C3ChargingEnum.CHARGE_STOP.getCode().equals(functionCode)) {
             A5C3CommonReportInnerFrame stopRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload());
@@ -130,32 +138,25 @@
                 LogUtils.error("{ 鍏呯數妗�(" + stopRequestFrame.getDestinationAddress() + ")鍏呯數缁撴潫涓婃姤璇诲彇蹇冭烦鍖呭け璐ワ紝璇锋鏌ュ厖鐢垫々鏄惁鍑虹幇鏁呴殰! }");
                 return;
             }
-            refund(aPackage);
+//            refund(aPackage);
 
         } else if (C3ChargingEnum.ERROR_CODE.getCode().equals(functionCode)) {
             A5C3ErrorCodeReportInnerFrame errorCodeRequestFrame = new A5C3ErrorCodeReportInnerFrame().transformFrame(frame.getPayload());
             log.info("C3鍏呯數妗╀笂鎶ュ鐞哶errorCodeRequestFrame");
             log.info(errorCodeRequestFrame.toString());
-            A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage aPackage = c3ChargingService.ReadTheHeartbeatPackage(errorCodeRequestFrame.getDestinationAddress());
-            if (aPackage == null) {
-                LogUtils.error("{ 鍏呯數妗�(" + errorCodeRequestFrame.getDestinationAddress() + ")鍏呯數缁撴潫涓婃姤璇诲彇蹇冭烦鍖呭け璐ワ紝璇锋鏌ュ厖鐢垫々鏄惁鍑虹幇鏁呴殰! }");
-                return;
-            }
-            refund(aPackage);
+            //鍏呯數缁撴潫  鏇存柊璁㈠崟鐘舵��
+
+//            refund(aPackage);
         } else if (C3ChargingEnum.StartCharging.getCode().equals(functionCode)) {
             log.info("蹇冭烦鍝嶅簲鈥斺�擟3鍏呯數妗╁紑濮嬪厖鐢�");
             A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(frame.getPayload());
             log.info("C3鍏呯數妗╀笂鎶ュ鐞哶heartbeatReportInnerFrame");
             log.info(operationReportInnerFrame.toString());
 
-//            if (operationReportInnerFrame.isValidate()) {
-//                SpringContextHolder.getBean(C3ChargingService.class).saveReportData(deviceName, operationReportInnerFrame.getHeartBeatDataPackage());
-//            }
         }
     }
 
     private void refund(A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage aPackage) {
-//    private void refund(A5C3CommonReportInnerFrame completeRequestFrame,String code){
         /**
          * 璇诲彇蹇冭烦鍖咃紝鍒ゆ柇鍓╀綑閲戦鍜屽凡鍏呯數閲忥紝缁熻鍒扮紦瀛樹腑姝e湪杩涜鐨勮鍗曘��
          */
@@ -222,4 +223,30 @@
 
     }
 
+    /**
+     * 璁㈠崟澶勭悊
+     *
+     * @param c3Mac
+     */
+    private void orderProcess(String c3Mac) {
+
+        //缁撴潫鍏呯數 鏇存敼璁㈠崟鐘舵��
+        C3mOrder lastOrderByC3Mac = SpringContextHolder.getBean(C3mOrderService.class).getLastOrderByC3Mac(c3Mac);
+        if (lastOrderByC3Mac != null) {
+            //璁剧疆璁㈠崟鐘舵�佷负宸插畬鎴�
+            lastOrderByC3Mac.setOrderStatus(OrderStatus.COMPLETE.getStatus());
+
+            BigDecimal actualChargingCapacity = BigDecimal.valueOf(lastOrderByC3Mac.getActualChargingCapacity());
+            BigDecimal actualChargingCapacityHide = BigDecimal.valueOf(lastOrderByC3Mac.getActualChargingCapacityHide());
+            //璁剧疆瀹為檯鍏呯數鐢甸噺
+            lastOrderByC3Mac.setActualChargingCapacity(actualChargingCapacity.add(actualChargingCapacityHide).doubleValue());
+            //璁剧疆璁㈠崟缁撴潫鏃堕棿
+            lastOrderByC3Mac.setStopChargingTimestamp(System.currentTimeMillis());
+            lastOrderByC3Mac.setActualChargingCapacity(0.00);
+            //璁剧疆璁㈠崟鐘舵�佷负鍏呯數缁撴潫
+            lastOrderByC3Mac.setChargingStates(1);
+            SpringContextHolder.getBean(C3mOrderService.class).updateById(lastOrderByC3Mac);
+        }
+    }
+
 }

--
Gitblit v1.9.3