From 5005f4916ae1240cf4cd91bb4ed82be43598f568 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期二, 10 六月 2025 20:10:32 +0800
Subject: [PATCH] 自动充放电自动化流程

---
 src/main/resources/mapper/BattWarehouseMapper.xml        |   32 +++++++
 src/main/java/com/whyc/service/BattWarehouseService.java |   42 +++++++++-
 src/main/java/com/whyc/mapper/BattWarehouseMapper.java   |    5 +
 src/main/java/com/whyc/schedule/WmsTaskSchedule.java     |  134 +++++++++++++++++++++++++++++++--
 4 files changed, 198 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/whyc/mapper/BattWarehouseMapper.java b/src/main/java/com/whyc/mapper/BattWarehouseMapper.java
index 83b9a45..2ca31cf 100644
--- a/src/main/java/com/whyc/mapper/BattWarehouseMapper.java
+++ b/src/main/java/com/whyc/mapper/BattWarehouseMapper.java
@@ -5,6 +5,9 @@
 import java.util.List;
 
 public interface BattWarehouseMapper extends CustomMapper<BattWarehouse> {
-    void updateBatchById(List<BattWarehouse> list);
+    void updateActivateBatchById(List<BattWarehouse> list);
 
+    void updateChargeBatchById(List<BattWarehouse> list);
+
+    void updateDischargeBatchById(List<BattWarehouse> list);
 }
diff --git a/src/main/java/com/whyc/schedule/WmsTaskSchedule.java b/src/main/java/com/whyc/schedule/WmsTaskSchedule.java
index 634fbb9..e4be4b4 100644
--- a/src/main/java/com/whyc/schedule/WmsTaskSchedule.java
+++ b/src/main/java/com/whyc/schedule/WmsTaskSchedule.java
@@ -41,7 +41,11 @@
     @Autowired
     private WmsService wmsService;
 
-    /**姣忓ぉ鏃╀笂9鐐规墽琛屼竴娆�*/
+    /**
+     * 浠撳偍搴撴墍鏈夌數姹犵殑娲诲寲浠诲姟,浠诲姟涔嬪墠杩樻鏌ュ苟鍔犲叆 涔嬪墠鏈斁鍏ヤ粨鍌ㄥ簱琛ㄤ腑鐨勫崟浣�
+     * 娲诲寲鍛ㄦ湡: 鍦ㄥ弬鏁拌〃閲岃缃�
+     * 姣忓ぉ鏃╀笂9鐐规墽琛屼竴娆�
+     * */
     //@Scheduled(cron= "0 0 9 * * ?")
     public void checkAndActivate() {
         //鏌ヨ鏁版嵁搴撹褰曠殑浠撳簱鍐呮墍鏈夌殑鐢垫睜
@@ -61,6 +65,8 @@
                     battWarehouse.setMonId(Integer.valueOf(item.getPalletCode()));
                     battWarehouse.setStorageTime(now);
                     battWarehouse.setOnPlan(0);
+                    battWarehouse.setChargeOnPlan(0);
+                    battWarehouse.setDischargeOnPlan(0);
                     String volStr = item.getV().replace("v", "");
                     int vol = Integer.parseInt(volStr);
                     battWarehouse.setVol(vol);
@@ -76,8 +82,8 @@
 
         //鏌ヨ闇�瑕佹椿鍖栫殑鐢垫睜鍒楄〃
         List<BattWarehouse> list = battWarehouseService.getActivateList();
-        //閫氳繃鐢靛帇杩涜鍒嗙粍list
-        Map<Integer, List<BattWarehouse>> mapToActivate = list.stream().collect(Collectors.groupingBy(BattWarehouse::getVol));
+        /*//閫氳繃鐢靛帇杩涜鍒嗙粍list
+        Map<Integer, List<BattWarehouse>> mapToActivate = list.stream().filter(item->item.getVol() == 2).collect(Collectors.groupingBy(BattWarehouse::getVol));
         Set<Integer> volSet = mapToActivate.keySet();
         //姘歌繙鍙涓�绫荤數鍘嬭繘琛屾椿鍖栦换鍔′笅鍙�!!!鍥犱负杩炵画涓嬪彂娲诲寲,鍚庣画鐨勪細澶辫触
         Integer vol;
@@ -88,7 +94,14 @@
         }else{
             //鏈缁堟
             return;
+        }*/
+        if(list.size() == 0){
+            //娌℃湁闇�瑕佹椿鍖栫殑鐢垫睜
+            return;
         }
+        int vol =2;
+        String[] activateParameterStr = null;
+        list = list.stream().filter(item -> item.getVol() == 2).collect(Collectors.toList());
         //鏌ヨ鏄惁瀛樺湪姝e湪杩涜鐨勪换鍔�
         List<Task> ongoingList = taskService.getOngoingList();
         if (ongoingList.size() == 0) {
@@ -116,25 +129,26 @@
             //   cCap: 10,      // 棰勫厖瀹归噺0.1AH-闇�瑕佹牴鎹閲忓疄闄呰缃� 绛変簬瀹為檯瀹归噺
             //   tTimes: 1,    // 鍏呮斁娆℃暟
             //   standTime: 1,   // 闈欑疆鏃堕棿
-            //   startType: 1,   // 娴嬭瘯璧风偣-榛樿鍏呯數
+            //   startType: 1,   // 娴嬭瘯璧风偣-榛樿鍏呯數. 娴嬭瘯璧风偣:0鏀剧數,1鍏呯數
             //}
             if(vol == 2) {
                 activateParameterStr = new String[]{
                         "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
                 };
             }
-            //TODO 6V寰呮彁渚�
+            //鏆備笉鑰冭檻6V鍜�12V,鍙瓨鍦�2V
+            /*//6V寰呮彁渚�
             else if(vol==6){
                 activateParameterStr = new String[]{
                         "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
                 };
             }
-            //TODO 12V寰呮彁渚�
+            //12V寰呮彁渚�
             else if(vol==12){
                 activateParameterStr = new String[]{
                         "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
                 };
-            }
+            }*/
             List<String> activateParameter = Arrays.asList(activateParameterStr);
             wmsPalletDto.setActivateParameter(activateParameter);
             Response response = wmsService.sendTask(wmsPalletDto);
@@ -149,7 +163,111 @@
                         item.setTaskNo(taskNoList.get(i));
                     }
                     //鎵归噺鏇存柊BattWarehouse
-                    battWarehouseService.updateBatchById(list);
+                    battWarehouseService.updateActivateBatchById(list);
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 浠撳偍搴撴墍鏈夌數姹犵殑鍏呯數浠诲姟
+     * 鍏呯數鍛ㄦ湡:1涓湀
+     * 浼犲叆鐨勬椿鍖栧弬鏁�:cTime=0,startType=1
+     * 姣忓ぉ鏃╀笂10鐐规墽琛屼竴娆�
+     * */
+    //@Scheduled(cron= "0 0 10 * * ?")
+    public void checkAndCharge() {
+        //鏌ヨ闇�瑕佸厖鐢电殑鐢垫睜鍒楄〃
+        List<BattWarehouse> list = battWarehouseService.getChargeList();
+        list = list.stream().filter(item -> item.getVol() == 2).collect(Collectors.toList());
+        if(list.size() == 0){
+            //娌℃湁闇�瑕佸厖鐢电殑鐢垫睜
+            return;
+        }
+
+        //鏌ヨ鏄惁瀛樺湪姝e湪杩涜鐨勪换鍔�
+        List<Task> ongoingList = taskService.getOngoingList();
+        if (ongoingList.size() == 0) {
+            //娌℃湁姝e湪杩涜鐨勬椿鍖栦换鍔�,鍒欎笅鍙戞椿鍖栦换鍔�
+            WmsPalletDto wmsPalletDto = new WmsPalletDto();
+            wmsPalletDto.setDes(3);
+            List<String> pallets = list.stream().map(item -> String.valueOf(item.getMonId())).collect(Collectors.toList());
+            //pallets浠嶭ist绫诲瀷杞琇inkedList绫诲瀷
+            LinkedList<String> palletsLinked = new LinkedList<>(pallets);
+            wmsPalletDto.setPallets(palletsLinked);
+            //娲诲寲鍙傛暟璁剧疆
+            String[] activateParameterStr = new String[]{
+                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "0", "1", "1"
+                };
+
+            List<String> activateParameter = Arrays.asList(activateParameterStr);
+            wmsPalletDto.setActivateParameter(activateParameter);
+            Response response = wmsService.sendTask(wmsPalletDto);
+            if (response.getCode() == 1) {
+                WmsResponse responseInside = (WmsResponse) response.getData();
+                if(responseInside.getCode() == 0){//涓嬪彂鎴愬姛
+                    LinkedList<String> taskNoList = responseInside.getTask_no();
+                    //杩涜鏍囧織浣嶅拰浠诲姟缂栧彿鐨勬洿鏂�
+                    for (int i = 0; i < taskNoList.size(); i++) {
+                        BattWarehouse item = list.get(i);
+                        item.setChargeOnPlan(1);
+                        item.setChargeTaskNo(taskNoList.get(i));
+                    }
+                    //鎵归噺鏇存柊BattWarehouse
+                    battWarehouseService.updateChargeBatchById(list);
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 浠撳偍搴撴墍鏈夌數姹犵殑鏀剧數浠诲姟
+     * 鏀剧數鍛ㄦ湡:2涓湀
+     * 浼犲叆鐨勬椿鍖栧弬鏁�:cTime=0,startType=0
+     * 姣忓ぉ鏃╀笂11鐐规墽琛屼竴娆�
+     * */
+    //@Scheduled(cron= "0 0 11 * * ?")
+    public void checkAndDischarge() {
+        //鏌ヨ闇�瑕佹斁鐢电殑鐢垫睜鍒楄〃
+        List<BattWarehouse> list = battWarehouseService.getDischargeList();
+        list = list.stream().filter(item -> item.getVol() == 2).collect(Collectors.toList());
+        if(list.size() == 0){
+            //娌℃湁闇�瑕佹斁鐢电殑鐢垫睜
+            return;
+        }
+
+        //鏌ヨ鏄惁瀛樺湪姝e湪杩涜鐨勪换鍔�
+        List<Task> ongoingList = taskService.getOngoingList();
+        if (ongoingList.size() == 0) {
+            //娌℃湁姝e湪杩涜鐨勬椿鍖栦换鍔�,鍒欎笅鍙戞椿鍖栦换鍔�
+            WmsPalletDto wmsPalletDto = new WmsPalletDto();
+            wmsPalletDto.setDes(3);
+            List<String> pallets = list.stream().map(item -> String.valueOf(item.getMonId())).collect(Collectors.toList());
+            //pallets浠嶭ist绫诲瀷杞琇inkedList绫诲瀷
+            LinkedList<String> palletsLinked = new LinkedList<>(pallets);
+            wmsPalletDto.setPallets(palletsLinked);
+            //娲诲寲鍙傛暟璁剧疆
+            String[] activateParameterStr = new String[]{
+                    "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "0", "1", "0"
+            };
+
+            List<String> activateParameter = Arrays.asList(activateParameterStr);
+            wmsPalletDto.setActivateParameter(activateParameter);
+            Response response = wmsService.sendTask(wmsPalletDto);
+            if (response.getCode() == 1) {
+                WmsResponse responseInside = (WmsResponse) response.getData();
+                if(responseInside.getCode() == 0){//涓嬪彂鎴愬姛
+                    LinkedList<String> taskNoList = responseInside.getTask_no();
+                    //杩涜鏍囧織浣嶅拰浠诲姟缂栧彿鐨勬洿鏂�
+                    for (int i = 0; i < taskNoList.size(); i++) {
+                        BattWarehouse item = list.get(i);
+                        item.setDischargeOnPlan(1);
+                        item.setDischargeTaskNo(taskNoList.get(i));
+                    }
+                    //鎵归噺鏇存柊BattWarehouse
+                    battWarehouseService.updateDischargeBatchById(list);
                 }
             }
         }
diff --git a/src/main/java/com/whyc/service/BattWarehouseService.java b/src/main/java/com/whyc/service/BattWarehouseService.java
index 47f566b..f35bfab 100644
--- a/src/main/java/com/whyc/service/BattWarehouseService.java
+++ b/src/main/java/com/whyc/service/BattWarehouseService.java
@@ -34,12 +34,36 @@
         PageParam param = pageParamService.getActivatePeriod();
         Integer period = param.getValue();
         Calendar calendar = Calendar.getInstance();
-        calendar.add(Calendar.DATE,-period);
+        calendar.add(Calendar.DAY_OF_MONTH,-period);
 
         QueryWrapper<BattWarehouse> query = Wrappers.query();
         query.eq("on_plan",0);
-        //涓烘椿鍖栬繃 鎴栬�� 娲诲寲鏃堕棿瓒呰繃娲诲寲鍛ㄦ湡
-        query.isNull("activate_time").or().le("activate_time",calendar);
+        //鏈椿鍖栬繃 鎴栬�� 娲诲寲鏃堕棿瓒呰繃娲诲寲鍛ㄦ湡
+        query.isNull("activate_time").or().le("activate_time",calendar.getTime());
+        return mapper.selectList(query);
+    }
+
+    public List<BattWarehouse> getChargeList() {
+        Integer period = 1;
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.MONTH,-period);
+
+        QueryWrapper<BattWarehouse> query = Wrappers.query();
+        query.eq("charge_on_plan",0);
+        //鏈厖鐢佃繃 鎴栬�� 鍏呯數鏃堕棿瓒呰繃鍏呯數鍛ㄦ湡
+        query.isNull("charge_time").or().le("charge_time",calendar.getTime());
+        return mapper.selectList(query);
+    }
+
+    public List<BattWarehouse> getDischargeList() {
+        Integer period = 2;
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.MONTH,-period);
+
+        QueryWrapper<BattWarehouse> query = Wrappers.query();
+        query.eq("discharge_on_plan",0);
+        //鏈斁鐢佃繃 鎴栬�� 鏀剧數鏃堕棿瓒呰繃鏀剧數鍛ㄦ湡
+        query.isNull("discharge_time").or().le("discharge_time",calendar.getTime());
         return mapper.selectList(query);
     }
 
@@ -51,8 +75,16 @@
         mapper.insertBatchSomeColumn(listNew);
     }
 
-    public void updateBatchById(List<BattWarehouse> list) {
-        mapper.updateBatchById(list);
+    public void updateActivateBatchById(List<BattWarehouse> list) {
+        mapper.updateActivateBatchById(list);
+    }
+
+    public void updateChargeBatchById(List<BattWarehouse> list) {
+        mapper.updateChargeBatchById(list);
+    }
+
+    public void updateDischargeBatchById(List<BattWarehouse> list) {
+        mapper.updateDischargeBatchById(list);
     }
 
     public BattWarehouse getByTaskNo(String taskNo) {
diff --git a/src/main/resources/mapper/BattWarehouseMapper.xml b/src/main/resources/mapper/BattWarehouseMapper.xml
index 8d45cc9..4bd1737 100644
--- a/src/main/resources/mapper/BattWarehouseMapper.xml
+++ b/src/main/resources/mapper/BattWarehouseMapper.xml
@@ -3,7 +3,7 @@
 <mapper namespace="com.whyc.mapper.BattWarehouseMapper" >
 
 
-    <update id="updateBatchById">
+    <update id="updateActivateBatchById">
         <foreach collection="list" item="item" index="index" separator=";">
             update tb_batt_warehouse
             <set>
@@ -17,4 +17,34 @@
             where id = #{item.id}
         </foreach>
     </update>
+
+    <update id="updateChargeBatchById">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update tb_batt_warehouse
+            <set>
+                <if test="item.chargeTaskNo != null">
+                    charge_task_no = #{item.chargeTaskNo},
+                </if>
+                <if test="item.chargeOnPlan != null">
+                    charge_on_plan = #{item.chargeOnPlan},
+                </if>
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
+
+    <update id="updateDischargeBatchById">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update tb_batt_warehouse
+            <set>
+                <if test="item.dischargeTaskNo != null">
+                    discharge_task_no = #{item.dischargeTaskNo},
+                </if>
+                <if test="item.dischargeOnPlan != null">
+                    discharge_on_plan = #{item.dischargeOnPlan},
+                </if>
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1