From d835d1b51f832889929cdf69010034a30ef44d02 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 17 十月 2024 13:57:29 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java |   68 +++++++++++++++++++++-------------
 1 files changed, 42 insertions(+), 26 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index e0f0670..1c69d07 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -84,6 +84,8 @@
     private BasLedService basLedService;
     @Autowired
     private DeviceBarcodeService deviceBarcodeService;
+    @Autowired
+    private ShuttleChargeStaService shuttleChargeStaService;
 
     /**
      * 缁勬墭
@@ -544,7 +546,7 @@
 //                staProtocol1 = staProtocol1.clone();
             }
 
-            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+            // 鍒ゆ柇鍑哄簱绔欑姸鎬�
             if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
 //                if (!(staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0 && staProtocol1.isOutEnable())) {
 //                    continue;
@@ -668,20 +670,19 @@
             String currentLocNo = shuttleProtocol.getCurrentLocNo();
             int lev = Utils.getLev(currentLocNo);//鑾峰彇灏忚溅妤煎眰
             //鎼滅储灏忚溅褰撳墠妤煎眰鍏呯數妗�
-            ArrayList<Loc> allChargeLoc = new ArrayList<>();
-            List<Loc> list1 = locService.list(new LambdaQueryWrapper<Loc>()
-                    .eq(Loc::getLocSts, LocStsType.C.val())
-                    .eq(Loc::getStatus, 1)
-                    .eq(Loc::getLev, lev));
+            ArrayList<ShuttleChargeSta> allChargeLoc = new ArrayList<>();
+
+            List<ShuttleChargeSta> list1 = shuttleChargeStaService.list(new LambdaQueryWrapper<ShuttleChargeSta>()
+                    .eq(ShuttleChargeSta::getDeviceLev, lev)
+                    .eq(ShuttleChargeSta::getStatus, 1));
             if (!list1.isEmpty()) {
                 allChargeLoc.addAll(list1);
             }
 
             //鎼滅储鍏朵粬妤煎眰鍏呯數妗�
-            List<Loc> list2 = locService.list(new LambdaQueryWrapper<Loc>()
-                    .eq(Loc::getLocSts, LocStsType.C.val())
-                    .eq(Loc::getStatus, 1)
-                    .notIn(Loc::getLev, lev));
+            List<ShuttleChargeSta> list2 = shuttleChargeStaService.list(new LambdaQueryWrapper<ShuttleChargeSta>()
+                    .notIn(ShuttleChargeSta::getDeviceLev, lev)
+                    .eq(ShuttleChargeSta::getStatus, 1));
             if (!list2.isEmpty()) {
                 allChargeLoc.addAll(list2);
             }
@@ -692,24 +693,34 @@
             }
 
             //閫夋嫨绌洪棽鍏呯數妗�
-            Loc chargeLoc = null;
-            for (Loc loc : allChargeLoc) {
+            ShuttleChargeSta chargeSta = null;
+            for (ShuttleChargeSta shuttleChargeSta : allChargeLoc) {
                 // 鍒ゆ柇鍏呯數浣嶆槸鍚﹁鍗犵敤(杞﹁締浣嶇疆)
-                if (Utils.hasShuttleInLoc(loc.getLocNo(), device.getId())) {
+                if (Utils.hasShuttleInLoc(shuttleChargeSta.getDeviceLoc(), device.getId())) {
                     continue;
                 }
 
                 // 鐩樼偣鍏呯數浣嶆槸鍚﹀瓨鍦ㄤ换鍔℃。
-                List<Task> tasks = taskService.hasChargeInLoc(loc.getLocNo());
+                List<Task> tasks = taskService.hasChargeInLoc(shuttleChargeSta.getDeviceLoc());
                 if (!tasks.isEmpty()) {
                     continue;
                 }
 
-                chargeLoc = loc;
+                Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
+                        .eq(Loc::getLocNo, shuttleChargeSta.getDeviceLoc()));
+                if (loc == null) {
+                    continue;
+                }
+
+                if (!loc.getLocSts().equals(LocStsType.C.val())) {
+                    continue;//搴撲綅涓嶆槸鍏呯數妗�
+                }
+
+                chargeSta = shuttleChargeSta;
                 break;
             }
 
-            if (chargeLoc == null) {
+            if (chargeSta == null) {
                 continue;//鏈壘鍒板厖鐢垫々
             }
 
@@ -730,7 +741,7 @@
                 continue;
             }
 
-            String chargeLocNo = chargeLoc.getLocNo();
+            String chargeLocNo = chargeSta.getDeviceLoc();
             Task task = new Task();
             task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
             task.setTaskNo(String.valueOf(Utils.getTaskNo("CHARGE")));
@@ -770,14 +781,6 @@
      * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 婊$數鍚庡洖鍒板緟鏈轰綅
      */
     public synchronized void loopShuttleToStandbyCauseCharge() {
-        Integer enoughPower = 90;
-        Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>()
-                .eq(Dict::getFlag, "chargeMaxValue")
-                .eq(Dict::getStatus, 1));
-        if (dict != null) {
-            enoughPower = Integer.parseInt(dict.getValue());
-        }
-
         //鑾峰彇杩佺Щ浠诲姟绫诲瀷
         TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                 .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MOVE))
@@ -823,8 +826,21 @@
                 continue;
             }
 
+            ShuttleChargeSta chargeSta = shuttleChargeStaService.getOne(new LambdaQueryWrapper<ShuttleChargeSta>()
+                    .eq(ShuttleChargeSta::getDeviceLoc, chargeTask.getDestLoc())
+                    .eq(ShuttleChargeSta::getStatus, 1));
+            if (chargeSta == null) {
+                continue;//鍏呯數妗╀笉瀛樺湪锛屽紓甯�
+            }
+
+            String standbyLoc = chargeSta.getStandbyLoc();
+            if (standbyLoc == null) {
+                continue;//閬胯浣嶇疆鏁版嵁涓嶅瓨鍦�
+            }
+            List<String> availableLoc = JSON.parseArray(standbyLoc, String.class);
+
             //鑾峰彇閬胯浣嶇疆
-            String standByLocNo = shuttleDispatcher.searchStandByLocNo(Integer.valueOf(device.getDeviceNo()), device.getHostId(), shuttleThread.getStatus().getCurrentLocNo());
+            String standByLocNo = shuttleDispatcher.searchAvailableLocNo(Integer.valueOf(device.getDeviceNo()), device.getHostId(), shuttleThread.getStatus().getCurrentLocNo(), availableLoc);
 
             Task task = new Task();
             task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));

--
Gitblit v1.9.1