From d08aab9abf24fd6319a2d54d9c252745f111f275 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期五, 26 八月 2022 15:14:22 +0800
Subject: [PATCH] 充电桩FIX

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java |   97 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 75 insertions(+), 22 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
index 4d4b7fe..e8ab57f 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
@@ -1,6 +1,5 @@
 package com.sandu.ximon.admin.service;
 
-import cn.hutool.core.collection.ListUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.sandu.common.domain.CommonPage;
@@ -30,6 +29,7 @@
 import com.sandu.ximon.dao.enums.OrderStatus;
 import com.sandu.ximon.dao.mapper.C3mChargingMapper;
 import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -47,7 +47,7 @@
 @Slf4j
 @AllArgsConstructor
 public class C3ChargingService extends BaseServiceImpl<C3mChargingMapper, C3mCharging> {
-    private C3mChargingMapper c3mChargingMapper;
+    private final C3mChargingMapper c3mChargingMapper;
     private final C3mChargingChargeService c3mChargingChargeService;
     private final PoleBindingService bindingService;
     private final PoleService poleService;
@@ -74,6 +74,7 @@
      *
      * @return 鏄惁鎴愬姛
      */
+    @SneakyThrows
     public boolean saveReporEquipment(String deviceName, String mcuUdid, String c3Mac) {
         C3mCharging one = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, mcuUdid));
         boolean flag;
@@ -96,23 +97,28 @@
         String date = new SimpleDateFormat("yyMMddHHmmss").format(new Date());
         String s = SetCalendar(c3Mac, Integer.parseInt(date.substring(0, 2)), Integer.parseInt(date.substring(2, 4)),
                 Integer.parseInt(date.substring(4, 6)), Integer.parseInt(date.substring(6, 8)),
-                Integer.parseInt(date.substring(8, 10)), Integer.parseInt(date.substring(10, 12)));
+                Integer.parseInt(date.substring(8, 10)), Integer.parseInt(date.substring(10, 12)), true);
         if (!"鎿嶄綔鎴愬姛".equals(s)) {
             LogUtils.error("鍙戦�佽缃瓹3鏃堕棿鍚屾澶辫触!");
             return false;
         }
         System.out.println("鍚屾鏃堕棿鎴崇粨鏉�");
 
+        Thread.sleep(1000);
+
         //璁剧疆璐圭巼
         System.out.println("璁剧疆璐圭巼寮�濮�");
         C3mCharging c3mCharging1 = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, mcuUdid));
         List<C3mChargingCharge> list = c3mChargingChargeService.list(Wrappers.lambdaQuery(C3mChargingCharge.class).eq(C3mChargingCharge::getC3Id, c3mCharging1.getC3Id()));
-        if (list.size() == 0) {//璐圭巼琛ㄤ腑娌℃湁姝ゅ厖鐢垫々鏁版嵁鏃�  娣诲姞榛樿璐圭巼
+        if (list == null && list.size() == 0) {//璐圭巼琛ㄤ腑娌℃湁姝ゅ厖鐢垫々鏁版嵁鏃�  娣诲姞榛樿璐圭巼
             c3mChargingChargeService.initCharge((c3mCharging1.getC3Id()).intValue());
         }
-        String rateState = setRate(c3Mac, list);
+        String rateState = setRate(c3Mac, list, true);
         System.out.println("璁剧疆璐圭巼缁撴灉锛�" + rateState);
         System.out.println("璁剧疆璐圭巼缁撴潫");
+
+        Thread.sleep(1000);
+
 
         /**  璺冲寘鏃堕棿鍚屾
          * 璁剧疆鏃堕棿瑙勫垯锛氬厖鐢垫椂涓�1鍊嶏紝闈炲厖鐢电姸鎬佷负1.5鍊嶆椂闂�
@@ -121,18 +127,19 @@
         Set<String> keys = RedisUtils.getBean().keys(C3mRedisConstant.C3_STATUS.getCode() + "*");
 
         C3mRedisConfig.reFlushTime(keys.size());
-        String time1 = SetHeartbeatPacketTimeCharging(c3Mac, C3mRedisConfig.parseInt(C3mRedisConfig.HEART_BEAT_TIME) * 2, false);
+        String time1 = SetHeartbeatPacketTimeCharging(c3Mac, C3mRedisConfig.parseInt(C3mRedisConfig.HEART_BEAT_TIME) * 2, false, true);
         LogUtils.error("C3绌洪棽蹇冭烦鍖呮椂闂村悓姝ュ搷搴旂粨鏋滐細" + time1);
-        String time2 = SetHeartbeatPacketTimeCharging(c3Mac, C3mRedisConfig.parseInt(C3mRedisConfig.HEART_BEAT_TIME), true);
+        String time2 = SetHeartbeatPacketTimeCharging(c3Mac, C3mRedisConfig.parseInt(C3mRedisConfig.HEART_BEAT_TIME), true, true);
         LogUtils.error("C3鍏呯數鏃跺績璺冲寘鏃堕棿鍚屾鍝嶅簲缁撴灉锛�" + time2);
         System.out.println("璁剧疆蹇冭烦鍖呴棿闅旀椂闂寸粨鏉�");
 
+        Thread.sleep(1000);
 
         /**
          * 鑾峰彇蹇冭烦鍖咃紝鍒ゆ柇鍦ㄧ嚎
          */
         System.out.println("鑾峰彇蹇冭烦鍖呭紑濮�");
-        A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage aPackage = ReadTheHeartbeatPackage(c3Mac);
+        A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage aPackage = ReadTheHeartbeatPackage(c3Mac, true);
         if (aPackage == null) {
             LogUtils.error("璇诲彇蹇冭烦鍖呬负绌�");
             return false;
@@ -144,12 +151,19 @@
                 C3mRedisConfig.OUTLINE_TIME
         );
         System.out.println("鑾峰彇蹇冭烦鍖呯粨鏉�");
+        Thread.sleep(1000);
+
+        /**
+         * 鏄惁鏈夎繘琛屼腑鐨勪釜璁㈠崟
+         */
+        SpringContextHolder.getBean(C3mOrderService.class).stopCharingOrder( aPackage);
+
 
         /**
          * finally銆佸悓姝ョ粨鏉�
          */
         System.out.println("鍚屾缁撴潫  寮�濮�");
-        String end = EndOfTheSynchronization(c3Mac);
+        String end = EndOfTheSynchronization(c3Mac, true);
         if (!"鎿嶄綔鎴愬姛".equals(end)) {
             LogUtils.error("C3鍚屾缁撴潫鍝嶅簲缁撴灉" + end);
             return false;
@@ -214,6 +228,8 @@
         int faultNumber = 0;
         //绛夊緟鎺ュ叆鏁伴噺
         int waitConnectNumber = 0;
+        //鍏呯數涓暟閲�
+        int chargingNumber = 0;
 
         for (C3ChargingBo one : c3ChargingBoList) {
             String s = RedisUtils.getBean().get(C3mRedisConstant.C3_STATUS.getCode() + one.getC3Mac());
@@ -228,6 +244,7 @@
                             break;
                         //2.鍏呯數涓�
                         case 2:
+                            chargingNumber++;
                             onlineNumber = onlineNumber + 1;
                             break;
                         //3.鍏呯數涓柇锛岀瓑寰呮湇鍔″櫒纭
@@ -269,6 +286,7 @@
         map.put("offlineNumber", offlineNumber);
         map.put("faultNumber", faultNumber);
         map.put("waitConnectNumber", waitConnectNumber);
+        map.put("chargingNumber", chargingNumber);
 
         return map;
     }
@@ -311,13 +329,13 @@
         if (one == null) {
             throw new BusinessException("鍏呯數妗╀俊鎭笉瀛樺湪锛�");
         }
-        A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage beatDataPackage = ReadTheHeartbeatPackage(one.getC3Mac());
+        A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage beatDataPackage = ReadTheHeartbeatPackage(one.getC3Mac(), false);
         if (beatDataPackage != null) {
             //鍏呯數妗㊣D
             chargingDto.setC3Id(one.getC3Id());
             //C3Mac
             chargingDto.setC3Mac(one.getC3Mac());
-            //鍦ㄧ嚎鐘舵��
+            //鍦ㄧ嚎鐘舵�� 1.绌洪棽 2.鍏呯數涓� 3.鍏呯數涓柇锛岀瓑寰呮湇鍔″櫒纭 4.鍏呯數缁撴潫锛岀瓑寰呮湇鍔″櫒纭 5.鏈夋晠闅� 6.涓庡厖鐢垫々瀵规帴涓�
             chargingDto.setStatusBit(Integer.valueOf(beatDataPackage.getStatusBit()));
             //鐢靛帇
             chargingDto.setGridVoltage(beatDataPackage.getGridVoltage());
@@ -329,6 +347,10 @@
             chargingDto.setPoleId(pole.getId());
             //璐圭巼
             BigDecimal bigDecimal = SpringContextHolder.getBean(C3mChargingChargeService.class).getchargeDecimalByC3id(one.getC3Id());
+            //宸插厖鐢甸噺
+            chargingDto.setChargedCapacity(beatDataPackage.getChargedCapacity());
+            //鍏呯數鏃堕暱
+            chargingDto.setAlreadyChargingTime(beatDataPackage.getAlreadyChargingTime());
             chargingDto.setRate(bigDecimal);
         }
 
@@ -442,7 +464,7 @@
         if (order == null) {
             throw new BusinessException("鍏呯數妗╂病鏈夎繘琛屼腑鐨勮鍗�");
         }
-        if (!openId.equals(order.getOrderId())) {
+        if (!openId.equals(order.getUserCode())) {
             throw new BusinessException("涓嶈兘鎿嶄綔涓嶅睘浜庢偍鐨勮鍗�");
         }
 
@@ -491,8 +513,9 @@
      * 鍚屾缁撴潫
      *
      * @param c3Mac
+     * @param resendFlag 閲嶅彂鏍囧織
      */
-    public String EndOfTheSynchronization(String c3Mac) {
+    public String EndOfTheSynchronization(String c3Mac, boolean resendFlag) {
         C3EndOfTheSynchronizationReqInnerFrame c3EndOfTheSynchronizationReqInnerFrame =
                 new C3EndOfTheSynchronizationReqInnerFrame(c3Mac);
 
@@ -503,7 +526,12 @@
         if (c3mCharging == null) {
             throw new BusinessException("C3鍏呯數妗╃‖浠秏cu_udid涓嶅瓨鍦�");
         }
-        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        CommonFrame commonFrame;
+        if (resendFlag) {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame, true);
+        } else {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        }
         StoreOperationRecordsUtils.storeInnerFrameData(c3Mac, "C3甯�-鍚屾缁撴潫", a5Frame, commonFrame);
 
 
@@ -706,8 +734,9 @@
      * 璇诲績璺冲寘
      *
      * @param c3Mac
+     * @param resendFlag 閲嶅彂鏍囧織
      */
-    public A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage ReadTheHeartbeatPackage(String c3Mac) {
+    public A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage ReadTheHeartbeatPackage(String c3Mac, boolean resendFlag) {
         C3ReadTheHeartbeatPackageReqInnerFrame readTheHeartbeatPackageReqInnerFrame =
                 new C3ReadTheHeartbeatPackageReqInnerFrame(c3Mac);
 
@@ -718,7 +747,12 @@
         if (c3mCharging == null) {
             throw new BusinessException("C3鍏呯數妗╃‖浠秏cu_udid涓嶅瓨鍦�");
         }
-        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        CommonFrame commonFrame;
+        if (resendFlag) {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame, true);
+        } else {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        }
         StoreOperationRecordsUtils.storeInnerFrameData(c3Mac, "C3甯�-璇诲彇蹇冭烦鍖�", a5Frame, commonFrame);
 
 
@@ -737,9 +771,10 @@
      *
      * @param c3Mac
      * @param setTime
+     * @param resndFlag 閲嶅彂鏍囧織
      * @return
      */
-    public String SetHeartbeatPacketTimeCharging(String c3Mac, int setTime, boolean flag) {
+    public String SetHeartbeatPacketTimeCharging(String c3Mac, int setTime, boolean flag, boolean resndFlag) {
         if (setTime <= 0) {
             throw new BusinessException("璁剧疆鐨勫績璺冲寘闂撮殧鏃堕棿閿欒锛�");
         }
@@ -753,7 +788,12 @@
         if (c3mCharging == null) {
             throw new BusinessException("C3鍏呯數妗╃‖浠秏cu_udid涓嶅瓨鍦�");
         }
-        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        CommonFrame commonFrame;
+        if (resndFlag) {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame, true);
+        } else {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        }
         StoreOperationRecordsUtils.storeInnerFrameData(c3Mac, "C3甯�-璁剧疆蹇冭烦鍖呴棿闅旀椂闂�", a5Frame, commonFrame);
 
 
@@ -853,9 +893,10 @@
      * 璁剧疆鏃ュ巻锛堝悓蹇冭烦鍖呬腑鐨�6瀛楄妭鏃ユ湡鏃堕棿锛�
      *
      * @param c3Mac
+     * @param resendFlag 鏄惁闇�瑕侀噸鍙戞爣蹇�
      * @return
      */
-    public String SetCalendar(String c3Mac, int year, int month, int day, int hour, int min, int sec) {
+    public String SetCalendar(String c3Mac, int year, int month, int day, int hour, int min, int sec, boolean resendFlag) {
 
 
         C3SetCalendarReqInnerFrame setCalendarReqInnerFrame =
@@ -868,7 +909,14 @@
         if (c3mCharging == null) {
             throw new BusinessException("C3鍏呯數妗╃‖浠秏cu_udid涓嶅瓨鍦�");
         }
-        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        CommonFrame commonFrame;
+        if (resendFlag) {
+            //闇�瑕侀噸鍙�
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame, true);
+        } else {
+            //涓嶉渶瑕侀噸鍙�
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        }
         StoreOperationRecordsUtils.storeInnerFrameData(c3Mac, "C3甯�-璁剧疆鏃ュ巻", a5Frame, commonFrame);
 
         System.out.println(commonFrame + "            -----commonFrame");
@@ -888,7 +936,7 @@
      * @param list
      * @return
      */
-    public String setRate(String c3Mac, List<C3mChargingCharge> list) {
+    public String setRate(String c3Mac, List<C3mChargingCharge> list, boolean resendFlag) {
         if (StringUtil.strIsNullOrEmpty(c3Mac)) {
             throw new BusinessException("C3Mac鍦板潃涓嶈兘涓虹┖锛�");
         }
@@ -903,7 +951,12 @@
         if (c3mCharging == null) {
             throw new BusinessException("C3鍏呯數妗╃‖浠秏cu_udid涓嶅瓨鍦�");
         }
-        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        CommonFrame commonFrame;
+        if (resendFlag) {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame, true);
+        } else {
+            commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
+        }
         StoreOperationRecordsUtils.storeInnerFrameData(c3Mac, "C3甯�-璁剧疆璐圭巼", a5Frame, commonFrame);
         System.out.println(commonFrame + "            -----commonFrame");
 

--
Gitblit v1.9.3