From 683c33e759814cd3176a46dd9b1809e5fcb91ce3 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 14 三月 2023 16:09:29 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java  |   32 +++++++++++++++++++++-----------
 src/main/java/com/zy/asrs/controller/CrnController.java |   15 +++++++++++++++
 2 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java
index 332b43c..2d23c46 100644
--- a/src/main/java/com/zy/asrs/controller/CrnController.java
+++ b/src/main/java/com/zy/asrs/controller/CrnController.java
@@ -379,6 +379,21 @@
     @ManagerAuth(memo = "浠诲姟瀹屾垚")
     @PostMapping("/operator/taskComplete")
     public R crnTaskComplete(CrnOperatorParam param){
+
+        // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+        CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, param.getCrnNo());
+        if (crnThread == null) {
+            return R.error();
+        }
+        CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+        if (crnProtocol == null) {
+            return R.error();
+        }
+
+        //鍫嗗灈鏈虹姸鎬佷笉鏄瓑寰匴CS纭鏃讹紝涓嶈兘涓嬪彂纭浣�
+        if (!crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.WAITING)){
+            return R.error("鍫嗗灈鏈轰笉鏄瓑寰匴CS纭鐘舵��");
+        }
         CrnCommand command = new CrnCommand();
         command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
         command.setTaskNo((short) 0); // 宸ヤ綔鍙�
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 0385170..8b6f94c 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -261,25 +261,35 @@
         do {
             result = siemensNet.Write("DB100.0", array);
             if(result.IsSuccess){
+                //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
                 Thread.sleep(200);
-                OperateResultExOne<byte[]> readResult = siemensNet.Read("DB100.0", (short) 20);
-                if(readResult.IsSuccess){
-                    short ackFinish = siemensNet.getByteTransform().TransInt16(readResult.Content, 0);
-                    short taskNo = siemensNet.getByteTransform().TransInt16(readResult.Content, 2);
-                    if(command.getTaskNo().equals(taskNo) && command.getAckFinish().equals(ackFinish)){
+                OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+                if (resultRead.IsSuccess) {
+                    CrnCommand one = new CrnCommand();
+                    one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+                    one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+                    one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+                    one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+                    one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
+                    one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
+                    one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
+                    one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
+                    if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode())
+                            || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY())
+                            || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX())
+                            || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ())
+                    ){
+                        News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+                    }else{
                         //浠诲姟鍛戒护鍐欏叆鎴愬姛
                         log.info("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屽苟涓斿洖璇绘垚鍔熴�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(command), writeCount);
                         break;
-                    } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
-                        writeCount++;
-                        log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屼絾鏄鍙栦换鍔″�间笉涓�鑷淬�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(command), writeCount);
                     }
-                } else {
+                }else {
                     writeCount++;
                     log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(command), writeCount);
                 }
-            }
-            else {
+            } else {
                 writeCount++;
                 log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(command), writeCount);
             }

--
Gitblit v1.9.1