From 73ce8bebcc5d14f3fb62a19ee677abfcdfc776b4 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 19 七月 2025 16:17:51 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  169 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 86 insertions(+), 83 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 6811d6d..c5287f2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -196,7 +196,7 @@
             assignCommand.setAuto(true);//鑷姩妯″紡
 
             //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
             if (commands == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;
@@ -334,7 +334,7 @@
                 //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟
                 int lev = Utils.getLev(wrkMast.getSourceLocNo());
                 //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞�
-                int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev);
+                int shuttleCount = shuttleDispatchUtils.getShuttleEnableUseCountByLev(lev);
                 if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅
                     int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺
                     Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1));
@@ -393,7 +393,7 @@
             assignCommand.setAuto(true);//鑷姩妯″紡
 
             //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
             if (commands == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;
@@ -601,7 +601,7 @@
             assignCommand.setAuto(true);//鑷姩妯″紡
 
             //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
             if (commands == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;
@@ -762,9 +762,9 @@
             }
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev());
+            ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev());
             ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.addAll(liftCommands);
+            commands.add(liftCommand);
 
             //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
             LiftAssignCommand assignCommand = new LiftAssignCommand();
@@ -890,9 +890,9 @@
             }
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo());
+            ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo());
             ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.addAll(liftCommands);
+            commands.add(liftCommand);
 
             //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
             LiftAssignCommand assignCommand = new LiftAssignCommand();
@@ -924,6 +924,9 @@
             for (DeviceConfig device : forkliftList) {
                 //鑾峰彇鎻愬崌鏈轰俊鎭�
                 ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
+                if(forkLiftThread == null) {
+                    continue;
+                }
                 ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
                 if (forkLiftProtocol == null) {
                     continue;
@@ -1582,7 +1585,7 @@
             assignCommand.setAuto(true);//鑷姩妯″紡
 
             //璁$畻杩戠偣浣嶇疆
-            String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id, null, null, 1);
+            String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 1);
             if (endLocation == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹁繎鐐逛綅缃绠楀け璐�", wrkMast.getWrkNo());
                 return false;
@@ -1598,7 +1601,7 @@
             }
 
             //鑾峰彇灏忚溅鍒拌繎鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.getMapTypes(NavigationMapType.NORMAL, NavigationMapType.SHUTTLE), assignCommand, shuttleThread);
             if (commands == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;//璺緞瑙i攣澶辫触
@@ -1713,7 +1716,7 @@
             assignCommand.setAuto(true);//鑷姩妯″紡
 
             //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread);
             if (commands == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;//璺緞瑙i攣澶辫触
@@ -1775,9 +1778,9 @@
             }
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<ForkLiftCommand> liftCommands = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev());
+            ForkLiftCommand liftCommand = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev());
             ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.addAll(liftCommands);
+            commands.add(liftCommand);
 
             //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
             LiftAssignCommand assignCommand = new LiftAssignCommand();
@@ -1897,7 +1900,7 @@
             assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
 
             //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread);
             if (commands == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;//璺緞璁$畻澶辫触
@@ -1919,73 +1922,73 @@
 
     //鑷姩鍒囨崲鍑哄叆搴撴ā寮�
     public void autoSwitchForkLiftIOMode() {
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkliftList) {
-            Integer liftNo = device.getDeviceNo();
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-            if (forkLiftThread == null) {
-                continue;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                continue;
-            }
-
-            List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo);
-            if (liftAllStaNo.isEmpty()) {
-                continue;
-            }
-
-            List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo);
-            if (conveyorBindLiftAllStaNo.isEmpty()) {
-                continue;
-            }
-
-            //鑾峰彇鍏ュ簱浠诲姟
-            List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("sta_no", liftAllStaNo)
-                    .in("wrk_sts"
-                            , WrkStsType.NEW_INBOUND.sts
-                            , WrkStsType.INBOUND_DEVICE_RUN.sts
-                            , WrkStsType.INBOUND_LIFT_RUN.sts
-                            , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts
-                            , WrkStsType.INBOUND_SHUTTLE_RUN.sts
-                            , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts
-                    ));
-
-            //鑾峰彇鍑哄簱浠诲姟
-            List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("sta_no", conveyorBindLiftAllStaNo)
-                    .in("wrk_sts"
-                            , WrkStsType.NEW_OUTBOUND.sts
-                            , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
-                            , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
-                            , WrkStsType.OUTBOUND_LIFT_RUN.sts
-                            , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts
-                    ));
-
-            if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.NONE)) {
-                //鏈煡妯″紡
-                if (!inWrkMasts.isEmpty()) {
-                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
-                } else if (!outWrkMasts.isEmpty()) {
-                    forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT);
-                }else {
-                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
-                }
-            } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
-                //鍏ュ簱妯″紡
-                if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) {
-                    forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT);
-                }
-            } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
-                //鍑哄簱妯″紡
-                if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) {
-                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
-                }
-            }
-        }
+//        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+//                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
+//        for (DeviceConfig device : forkliftList) {
+//            Integer liftNo = device.getDeviceNo();
+//            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
+//            if (forkLiftThread == null) {
+//                continue;
+//            }
+//            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+//            if (forkLiftProtocol == null) {
+//                continue;
+//            }
+//
+//            List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo);
+//            if (liftAllStaNo.isEmpty()) {
+//                continue;
+//            }
+//
+//            List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo);
+//            if (conveyorBindLiftAllStaNo.isEmpty()) {
+//                continue;
+//            }
+//
+//            //鑾峰彇鍏ュ簱浠诲姟
+//            List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+//                    .in("sta_no", liftAllStaNo)
+//                    .in("wrk_sts"
+//                            , WrkStsType.NEW_INBOUND.sts
+//                            , WrkStsType.INBOUND_DEVICE_RUN.sts
+//                            , WrkStsType.INBOUND_LIFT_RUN.sts
+//                            , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts
+//                            , WrkStsType.INBOUND_SHUTTLE_RUN.sts
+//                            , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts
+//                    ));
+//
+//            //鑾峰彇鍑哄簱浠诲姟
+//            List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+//                    .in("sta_no", conveyorBindLiftAllStaNo)
+//                    .in("wrk_sts"
+//                            , WrkStsType.NEW_OUTBOUND.sts
+//                            , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
+//                            , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
+//                            , WrkStsType.OUTBOUND_LIFT_RUN.sts
+//                            , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts
+//                    ));
+//
+//            if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.NONE)) {
+//                //鏈煡妯″紡
+//                if (!inWrkMasts.isEmpty()) {
+//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
+//                } else if (!outWrkMasts.isEmpty()) {
+//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT);
+//                }else {
+//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
+//                }
+//            } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
+//                //鍏ュ簱妯″紡
+//                if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) {
+//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT);
+//                }
+//            } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
+//                //鍑哄簱妯″紡
+//                if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) {
+//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
+//                }
+//            }
+//        }
     }
 
     //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満
@@ -2056,9 +2059,9 @@
             int workNo = commonService.getWorkNo(WrkIoType.FORKLIFT_MOVE.id);//鑾峰彇浠诲姟鍙�
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<ForkLiftCommand> liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo()));
+            ForkLiftCommand liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo()));
             ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.addAll(liftCommand);
+            commands.add(liftCommand);
 
             //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
             LiftAssignCommand assignCommand = new LiftAssignCommand();

--
Gitblit v1.9.1