From e89d0cdf971ecb56d4d323f17afff2e3e139a58d Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期二, 15 七月 2025 13:00:00 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |   37 ++++++++++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   68 ++++++++++++++++++++++
 src/main/java/com/zy/core/MainProcess.java                  |   54 +++++++++---------
 3 files changed, 132 insertions(+), 27 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 73e31c8..6f9f172 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -941,6 +941,41 @@
 
                 // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                 if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
+                    TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo());
+                    if (taskWrkNow3.getWrkSts() == 3){
+                        try{
+                            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                            CrnCommand crnCommand = new CrnCommand();
+                            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                            crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
+                            crnCommand.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());   // 婧愬簱浣嶅眰
+                            crnCommand.setDestinationPosX(Utils.getRowShort(taskWrkNow3.getTargetPoint()));     // 鐩爣搴撲綅鍒�
+                            int bay1 = Utils.getBayShort(taskWrkNow3.getTargetPoint()) + 1;
+                            crnCommand.setDestinationPosY((short)bay1);     // 鐩爣搴撲綅灞�
+                            crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrkNow3.getTargetPoint()));     // 鐩爣搴撲綅鎺�
+//                crnCommand.setCommand((short) 1);
+                            try{
+                                DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                                deviceErrorService.addDeviceError("CrnErr", slave.getId(), "宸烽亾鍙�"+crnCommand.getLaneNo()+";鍫嗗灈鏈哄懡浠ゅ湴鍧�琛ヤ竵閲嶆柊鍐欏叆:"+JSON.toJSONString(crnCommand.getNowTask()));
+                            } catch (Exception e2){
+                            }
+                            if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
+                                log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+                                devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
+
+                                throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                            }
+                        } catch (Exception eNow3){
+
+                        }
+                    }
+
                     devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�");
                     CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟");
                     continue;
@@ -1118,6 +1153,39 @@
 
                         // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                         if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
+
+                            TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo());
+                            if (taskWrkNow3.getWrkSts() == 12){
+                                try{
+                                    CrnCommand command = new CrnCommand();
+                                    command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                                    command.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈虹紪鍙�
+                                    command.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                                    command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                                    command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
+                                    command.setSourcePosX(Utils.getRowShort(taskWrkNow3.getStartPoint()));     // 婧愬簱浣嶆帓
+                                    int bayS = Utils.getBayShort(taskWrkNow3.getStartPoint()) + 1;
+                                    command.setSourcePosY((short)bayS);     // 婧愬簱浣嶅垪
+                                    command.setSourcePosZ(Utils.getLevShort(taskWrkNow3.getStartPoint()));     // 婧愬簱浣嶅眰
+                                    command.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
+                                    command.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
+                                    command.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+//                        command.setCommand((short) 1);
+                                    try{
+                                        DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                                        deviceErrorService.addDeviceError("CrnErr", slave.getId(), "宸烽亾鍙�"+command.getLaneNo()+";鍫嗗灈鏈哄懡浠ゅ湴鍧�琛ヤ竵閲嶆柊鍐欏叆:"+JSON.toJSONString(command.getNowTask()));
+                                    } catch (Exception e2){
+                                    }
+                                    if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) {
+                                        log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command));
+                                        devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                                        CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
+                                        throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                                    }
+                                } catch (Exception eNow3){
+
+                                }
+                            }
                             devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�");
                             CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟");
                             break;
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 91a1d16..948d3c9 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -22,7 +22,7 @@
     private MainServiceImpl mainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
-//    private Thread thread2;
+    private Thread thread2;
 
     /**
      * =====>>  寮�濮嬪伐浣�
@@ -41,14 +41,10 @@
                     mainService.generateStoreWrkFile(); // 缁勬墭
 //                    mainService.generateStoreWrkFileIsEmptyMk(); // 缁勬墭  绌烘墭
                     mainService.generateStoreWrkFileWalk(); // wms鍏ュ簱浠诲姟涓嬪彂
-                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
-                    mainService.crnStnToOutStn();
                     // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
                     mainService.crnIoExecute();
                     // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
                     mainService.storeFinished();
-                    // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
-                    mainService.recCrnErr();
                     // 浠诲姟涓嬪彂
                     mainService.taskStart();
                     // 鍑哄簱  ===>>  鍫嗗灈鏈�10鍒嗛挓鏃犱换鍔″垯鍥炲埌婧愮偣
@@ -60,33 +56,37 @@
         });
         thread.start();
 
-//        thread2 = new Thread(() -> {
-//            while (!Thread.currentThread().isInterrupted()) {
-//                try {
-//                    // 闂撮殧
-//                    Thread.sleep(200);
-//                    // 绯荤粺杩愯鐘舵�佸垽鏂�
-//                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
-//                        continue;
-//                    }
-//                    // 杈撻�佺嚎寮傚父淇℃伅璁板綍
-////                    mainService.recDevErr();
-//                    // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
-////                    mainService.ledExecute(9);
-//                    // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
-////                    mainService.ledReset(10);
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                }
-//            }
-//        });
-//        thread2.start();
+        thread2 = new Thread(() -> {
+            while (!Thread.currentThread().isInterrupted()) {
+                try {
+                    // 闂撮殧
+                    Thread.sleep(200);
+                    // 绯荤粺杩愯鐘舵�佸垽鏂�
+                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+                        continue;
+                    }
+                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
+                    mainService.crnStnToOutStn();
+                    // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
+                    mainService.recCrnErr();
+                    // 杈撻�佺嚎寮傚父淇℃伅璁板綍
+//                    mainService.recDevErr();
+                    // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
+//                    mainService.ledExecute(9);
+                    // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+//                    mainService.ledReset(10);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+        thread2.start();
     }
 
     @PreDestroy
     public void shutDown(){
         if (thread != null) thread.interrupt();
-//        if (thread2 != null) thread2.interrupt();
+        if (thread2 != null) thread2.interrupt();
     }
 
 }
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 6d4d560..527d5e1 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -292,6 +292,43 @@
 //        } catch (Exception e3){
 //        }
 //        convertRow(command);
+        if (command.getAckFinish() == 0){
+            try{
+                Thread.sleep(100L);
+                OperateResultExOne<byte[]> resultReadNOW = siemensNet.Read("DB100.0", (short) 20);
+                if (resultReadNOW.IsSuccess) {
+                    CrnCommand one = new CrnCommand();
+                    one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 2));
+                    one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 4));
+                    one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 6));
+                    one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 8));
+                    one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 10));
+                    one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 12));
+                    one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 14));
+                    one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultReadNOW.Content, 16));
+                    if (one.getTaskNo()>0
+                            || one.getTaskMode()>0
+                            || one.getSourcePosX()!=0
+                            || one.getSourcePosY()!=0
+                            || one.getSourcePosZ()!=0
+                            || one.getDestinationPosX()!=0
+                            || one.getDestinationPosY()!=0
+                            || one.getDestinationPosZ()!=0
+                    ){
+                        try{
+                            DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                            deviceErrorService.addDeviceError("CrnErr", slave.getId(), "宸烽亾鍙�"+command.getLaneNo()+";鍫嗗灈鏈哄懡浠ゅ湴鍧�琛ヤ竵閲嶆柊鍐欏叆鍙栨秷锛寃cs涓嬪彂鍦板潃瀛樺湪鏁版嵁:"+JSON.toJSONString(command.getNowTask()));
+                        } catch (Exception e2){
+                        }
+                        return true;
+                    }
+                }
+            } catch (Exception eNow){
+
+            }
+        }
+
+
         command.setCrnNo(slave.getId());
         short[] array = new short[10];
         array[0] = command.getAckFinish();

--
Gitblit v1.9.1