From 8a4d482469e2078cce3cf227c11be862e94b860d Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 12 四月 2024 20:25:24 +0800
Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java |   51 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
index 600cd12..9dedf44 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -135,7 +135,7 @@
                 ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
 
                 //灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue
-                if (!shuttleProtocol.getIdle()) {
+                if (deviceStatus == 1 || deviceStatus == 2 || deviceStatus == 5) {
                     shuttleProtocol.setPakMk(true);
                 }
 
@@ -228,25 +228,37 @@
             ArrayList<HashMap<String, Object>> modes = new ArrayList<>();
             //鑾峰彇鍒嗘璺緞
             ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(nodes);
-            for (ArrayList<NavigateNode> sectionNodes : data) {
+            for (int idx = 0; idx < data.size(); idx++) {
+                ArrayList<NavigateNode> sectionNodes = data.get(idx);
+                boolean isRemoveFooterNode = false;//鏄惁鍓旈櫎灏捐妭鐐�
+                if (idx != data.size() - 1) {
+                    isRemoveFooterNode = true;//鍓旈櫎灏捐妭鐐�
+                }
+
                 boolean flag = true;
                 int oper;
                 //寮�濮嬭矾寰�
-                NavigateNode startPath = nodes.get(0);
+                NavigateNode startPath = sectionNodes.get(0);
+                //缁撴潫璺緞
+                NavigateNode targetPath = sectionNodes.get(sectionNodes.size() - 1);
                 if (ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.LEFT
                         || ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.RIGHT) {
                     //姣嶈建鏂瑰悜
                     oper = 5;
-                }else {
+                } else {
                     //瀛愯建鏂瑰悜
                     oper = 6;
                 }
 
-                for (NavigateNode node : sectionNodes) {
+                for (int i = 0; i < sectionNodes.size(); i++) {
+                    if (isRemoveFooterNode && i == sectionNodes.size() - 1) {
+                        continue;
+                    }
+                    NavigateNode node = sectionNodes.get(i);
                     HashMap<String, Object> map = new HashMap<>();
-                    map.put("nodexX", node.getX());
-                    map.put("nodexY", node.getY());
-                    map.put("nodexZ", node.getZ());
+                    map.put("nodeX", node.getX());
+                    map.put("nodeY", node.getY());
+                    map.put("nodeZ", node.getZ());
                     if (flag) {
                         map.put("oper", oper);
                         flag = false;
@@ -260,7 +272,7 @@
             param.put("messageName", "runRoute");
             param.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
             param.put("deviceNo", device.getDeviceNo());
-            param.put("taskId", taskNo);
+            param.put("taskId", generateDeviceTaskNo(taskNo));
             param.put("nodeNum", nodes.size());
             param.put("modes", modes);
             String response = new HttpHandler.Builder()
@@ -389,7 +401,7 @@
                 return false;
             }
         }
-        if (this.shuttleProtocol.getIdle() == null
+        if (this.shuttleProtocol.getDeviceStatus() == null
                 || this.shuttleProtocol.getPakMk() == null
                 || this.shuttleProtocol.getErrorCode() == null
                 || this.shuttleProtocol.getProtocolStatus() == null
@@ -397,7 +409,7 @@
             return false;
         }
 
-        boolean res = this.shuttleProtocol.getIdle()
+        boolean res = (this.shuttleProtocol.getDeviceStatus() == 3 || this.shuttleProtocol.getDeviceStatus() == 11)
                 && this.shuttleProtocol.getPakMk()
                 && this.shuttleProtocol.getErrorCode().equals("0")
                 && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
@@ -407,7 +419,7 @@
 
     @Override
     public boolean isRequireCharge() {
-        if (this.shuttleProtocol.getIdle() == null
+        if (this.shuttleProtocol.getDeviceStatus() == null
                 || this.shuttleProtocol.getPakMk() == null
                 || this.shuttleProtocol.getErrorCode() == null
                 || this.shuttleProtocol.getProtocolStatus() == null
@@ -415,7 +427,7 @@
             return false;
         }
 
-        boolean res = this.shuttleProtocol.getIdle()
+        boolean res = (this.shuttleProtocol.getDeviceStatus() == 3)
                 && this.shuttleProtocol.getPakMk()
                 && this.shuttleProtocol.getErrorCode().equals("0")
                 && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
@@ -475,7 +487,7 @@
         ArrayList<NavigateNode> path = new ArrayList<>();
         if (shuttleProtocol.getTaskNo() != 0) {
             //瀛樺湪浠诲姟锛岃幏鍙栨寚浠�
-            Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_FLAG + shuttleProtocol.getTaskNo());
+            Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_WORK_FLAG + shuttleProtocol.getTaskNo());
             if (object != null) {
                 ShuttleRedisCommand redisCommand = JSON.parseObject(object.toString(), ShuttleRedisCommand.class);
                 List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰�
@@ -488,12 +500,21 @@
     }
 
     @Override
+    public int generateDeviceTaskNo(int taskNo) {
+        int no = taskNo % 255;
+        if (no <= 1) {
+            no = 2;
+        }
+        return no;
+    }
+
+    @Override
     public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "runOrder");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
         body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo()));
-        body.put("taskId", taskNo);
+        body.put("taskId", generateDeviceTaskNo(taskNo));
 
         LocService locService = SpringUtils.getBean(LocService.class);
         Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()

--
Gitblit v1.9.1