From baf11d9f195732cfc0cc45a66b58ec2c1633cd4d Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 19 七月 2023 09:03:11 +0800
Subject: [PATCH] command write

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   97 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 74 insertions(+), 23 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 f9bc9dc..95b3269 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -797,7 +797,7 @@
                                     Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 
                                     //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
-                                    ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, endStartCode, 1400, 500);
+                                    ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, null, null, 500);
                                     commands.add(moveCommand);
 
                                     //鍒嗛厤鐩爣搴撲綅
@@ -822,7 +822,7 @@
                                 Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮�
                                 Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜
                                 //鑾峰彇鍛戒护
-                                ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500);
+                                ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1600, runDirection, null, null, 500);
                                 commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
 
                                 assignCommand.setCommands(commands);
@@ -849,7 +849,7 @@
 //                                    Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮�
 //                                    Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜
 //                                    //鑾峰彇鍛戒护
-//                                    ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500);
+//                                    ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1600, runDirection, startCode, 1600, 500);
 //                                    commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
 //                                }
 //                                assignCommand.setCommands(commands);
@@ -872,7 +872,7 @@
 //                                Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 //
 //                                //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
-//                                ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, endStartCode, 1400, 500);
+//                                ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, endStartCode, 1600, 500);
 //                                commands.add(moveCommand);
 //
 //                                //鍒嗛厤鐩爣搴撲綅
@@ -927,16 +927,31 @@
         for (ArrayList<NavigateNode> nodes : data) {
             //寮�濮嬭矾寰�
             NavigateNode startPath = nodes.get(0);
+
             //涓棿璺緞
-            NavigateNode middlePath = nodes.get(nodes.size() - 2);
+            NavigateNode middlePath = null;
+            //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+            Short middleCodeNum = null;
+            Integer middleToDistDistance = null;//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+            if (nodes.size() > 10) {//涓鐮佷紶鍊掓暟绗笁涓�
+                //涓棿璺緞
+                middlePath = nodes.get(nodes.size() - 3);
+                //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+                middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+            } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
+                //涓棿璺緞
+                middlePath = nodes.get(nodes.size() - 2);
+                //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+                middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+            }
+
             //鐩爣璺緞
             NavigateNode endPath = nodes.get(nodes.size() - 1);
             Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-            Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
             //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
             Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
-            //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
-            Short middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
             //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
             Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
             //鑾峰彇绉诲姩鍛戒护
@@ -982,17 +997,32 @@
             for (ArrayList<NavigateNode> nodes : data) {
                 //寮�濮嬭矾寰�
                 NavigateNode startPath = nodes.get(0);
+
                 //涓棿璺緞
-                NavigateNode middlePath = nodes.get(nodes.size() - 2);
+                NavigateNode middlePath = null;
+                //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+                Short middleCodeNum = null;
+                Integer middleToDistDistance = null;//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                if (nodes.size() > 10) {//涓鐮佷紶鍊掓暟绗笁涓�
+                    //涓棿璺緞
+                    middlePath = nodes.get(nodes.size() - 3);
+                    //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+                    middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
+                    middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
+                    //涓棿璺緞
+                    middlePath = nodes.get(nodes.size() - 2);
+                    //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+                    middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
+                    middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                }
+
                 //鐩爣璺緞
                 NavigateNode endPath = nodes.get(nodes.size() - 1);
                 Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-                Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
 
                 //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                 Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
-                //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
-                Short middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
                 //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                 Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
                 //鑾峰彇绉诲姩鍛戒护
@@ -1019,17 +1049,32 @@
         for (ArrayList<NavigateNode> nodes : data2) {
             //寮�濮嬭矾寰�
             NavigateNode startPath = nodes.get(0);
+
             //涓棿璺緞
-            NavigateNode middlePath = nodes.get(nodes.size() - 2);
+            NavigateNode middlePath = null;
+            //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+            Short middleCodeNum = null;
+            Integer middleToDistDistance = null;//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+            if (nodes.size() > 10) {//涓鐮佷紶鍊掓暟绗笁涓�
+                //涓棿璺緞
+                middlePath = nodes.get(nodes.size() - 3);
+                //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+                middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+            } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
+                //涓棿璺緞
+                middlePath = nodes.get(nodes.size() - 2);
+                //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+                middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+            }
+
             //鐩爣璺緞
             NavigateNode endPath = nodes.get(nodes.size() - 1);
             Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-            Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
 
             //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
             Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
-            //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
-            Short middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
             //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
             Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
             ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCodeNum, middleToDistDistance, runSpeed);
@@ -1217,7 +1262,7 @@
                             Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 
                             //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
-                            ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, endStartCode, 1400, 500);
+                            ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, null, null, 500);
                             commands.add(moveCommand);
 
                             //鐩爣搴撲綅
@@ -1258,7 +1303,7 @@
                         short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
                         Short distCode = commands.get(0).getStartCodeNum();//鐩爣浜岀淮鐮�
                         //鑾峰彇绉诲姩鍛戒护
-                        ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, commands.get(0).getRunDirection(), startCode, 1400, 500);
+                        ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1600, commands.get(0).getRunDirection(), null, null, 500);
                         commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
 
                         //鍒嗛厤鐩爣搴撲綅
@@ -1772,6 +1817,12 @@
 
                     //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀埌浣�
                     StaProtocol staProtocol = devpThread.getStation().get(Utils.levToOutInStaNo(wrkMastLocNoLey >= 2 ? wrkMastLocNoLey + 1 : wrkMastLocNoLey));//璧峰绔欑偣
+                    //鍒ゆ柇杈撻�佺珯鐐规槸鍚︽湁鐗╋紝鍙湁鏃犵墿鎯呭喌鎵嶈兘缁х画璋冨害鎻愬崌鏈�
+                    if (staProtocol.isLoading()) {
+                        //鏈夌墿绂佹璋冨害
+                        continue;
+                    }
+
                     if (liftLev != wrkMastLocNoLey && !staProtocol.isLiftArrival()) {
                         //鎻愬崌鏈轰笉鍦ㄥ伐浣滄。婧愬簱浣嶆ゼ灞傦紝璋冨害鎻愬崌鏈�
                         LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey);
@@ -2742,7 +2793,7 @@
                     shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
 
                     assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
-                    assignCommand.setTaskMode((short) 9);//鍏呯數
+                    assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍏呯數
                     assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
                     assignCommand.setCharge(true);//鍏呯數浠诲姟
 
@@ -2780,13 +2831,13 @@
                     Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 
                     //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
-                    ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, basDevpQrCode, 1400, 500);
+                    ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, basDevpQrCode, 1600, 500);
                     commands.add(moveCommand);
 
                     //鍒嗛厤鐩爣搴撲綅
                     shuttleProtocol.setLocNo(chargeLocNo);
                     assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
-                    assignCommand.setTaskMode((short) 9);//鍏呯數
+                    assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍏呯數
                     assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
                     assignCommand.setCharge(true);//鍏呯數浠诲姟
                     //鐩爣搴撲綅
@@ -2870,14 +2921,14 @@
                 Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮�
                 Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜
                 //鑾峰彇鍛戒护
-                ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500);
+                ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1600, runDirection, startCode, 1600, 500);
                 commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
 
                 //杩涜鍏呯數涓�
                 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
 
                 assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
-                assignCommand.setTaskMode((short) 9);//鍏呯數
+                assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍏呯數
                 assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
                 assignCommand.setCharge(true);//鍏呯數浠诲姟
 

--
Gitblit v1.9.1