From 565f82be8402eb5a6e8a70347b119f937c0d0488 Mon Sep 17 00:00:00 2001
From: TQS <56479841@qq.com>
Date: 星期一, 17 四月 2023 09:10:45 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |   45 ++++++++++++++++++++++
 src/main/java/com/zy/core/thread/SteThread.java             |    6 ++-
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   28 +++++++++++--
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   13 +++++-
 4 files changed, 81 insertions(+), 11 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 61d1eba..5053466 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1090,14 +1090,27 @@
                         News.error("MainServiceImpl  1028琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�");
                         return false;
                     }
+
+                    //濡傛灉瀛樺湪鐩爣绔�300涓旀鍦ㄦ墽琛岀殑鎷f枡/鐩樼偣浠诲姟锛屽垯2鍙峰爢鍨涙満涓嶅厑璁稿仛鎷f枡/鐩樼偣鍑哄簱
+                    WrkMast one = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                            .eq("sta_no",300)
+                            .last(" and wrk_sts>11 and io_type in (103,107) "));
+                    if(!Cools.isEmpty(one)){
+                        News.error("MainServiceImpl  1099琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�");
+                        return false;
+                    }
                 }
 
                 if (wrkMast.getWrkSts() == 11 && wrkMast.getIoType() == 101){
                     Integer sour = wrkMast.getSourceStaNo();
                     List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType1(sour);
                     if (wrkMasts.size() > 0){
-                        News.error("MainServiceImpl  1028琛�"+"204瀛樺湪鍏ㄦ澘鍑哄簱涓揣鐗╋紝2鍙峰爢鍨涙満鏆傛椂绂佹鍏ㄦ澘鍑哄簱锛侊紒锛�");
-                        return false;
+                        for (WrkMast one : wrkMasts){
+                            if(one.getWrkNo().equals(wrkMast.getWrkNo())){
+                                News.error("MainServiceImpl  1028琛�"+"204瀛樺湪鍏ㄦ澘鍑哄簱涓揣鐗╋紝2鍙峰爢鍨涙満鏆傛椂绂佹鍏ㄦ澘鍑哄簱锛侊紒锛�");
+                                return false;
+                            }
+                        }
                     }
                 }
             }
@@ -1110,7 +1123,7 @@
                     .last(" and wrk_sts < 10"));
             if(one1 != null){
                 News.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo());
-                continue;
+                return false;
             }
 
             //鍔犲己鍒ゆ柇锛岀‘淇濆洜鍑哄簱瀵艰嚧鐨勭Щ搴撴暣濂椾换鍔″叏閮ㄧ粨鏉熷悗锛屾墠鑳芥墽琛屼笅涓�绗斿嚭搴撲换鍔°�傚彧鏈夊簱浣嶅畬鎴愮Щ搴撳洖鍘诲叏閮ㄤ换鍔″悗锛屾墠璁や负褰撶粍鍑哄簱浠诲姟瀹屾垚
@@ -1120,13 +1133,13 @@
                 if(one.getWrkSts() > 10 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getSourceLocNo())
                         || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getSourceLocNo())
                         || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getSourceLocNo()))){
-                    continue;
+                    return false;
                 }
                 //瀛樺湪绉诲簱浠诲姟锛屼笖鍦ㄧЩ鍥炰腑锛屼笖绉诲簱鐩爣搴撲綅涓庡緟鍑哄簱搴撲綅涓嶅湪鍚屼竴搴撲綅缁勶紝鏃惰烦鍑猴紝纭繚绉诲簱/鍑哄簱鍏ㄥ浠诲姟瀹屾垚鍚庯紝鍐嶆墽琛屼笅涓�绗�
                 if(one.getWrkSts() < 11  && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getLocNo())
                         || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getLocNo())
                         || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getLocNo()))){
-                    continue;
+                    return false;
                 }
             }
 
@@ -1655,6 +1668,11 @@
                             }
                         }
                         break;
+//                    } else {
+//                        LocMast curLoc = locMastService.selectById(locNo);
+//                        if(curLoc != null && curLoc.getLocSts().equals("O")){
+//
+//                        }
                     }
                 }
             }
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index d95b86c..a308273 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -228,6 +228,22 @@
             return false;
         }
 
+        //涓嬪彂鍓嶅厠闅嗕竴浠�
+        CrnCommand crnCommand = new CrnCommand();
+        crnCommand.setCrnNo(command.getCrnNo());
+        crnCommand.setAckFinish(command.getAckFinish());
+        crnCommand.setTaskNo(command.getTaskNo());
+        crnCommand.setTaskMode(command.getTaskMode());
+        crnCommand.setSourcePosX(command.getSourcePosX());
+        crnCommand.setSourcePosY(command.getSourcePosY());
+        crnCommand.setSourcePosZ(command.getSourcePosZ());
+        crnCommand.setDestinationPosX(command.getDestinationPosX());
+        crnCommand.setDestinationPosY(command.getDestinationPosY());
+        crnCommand.setDestinationPosZ(command.getDestinationPosZ());
+        crnCommand.setSourceStaNo(command.getSourceStaNo());
+        crnCommand.setDestinationStaNo(command.getDestinationStaNo());
+        crnCommand.setCommand(command.getCommand());
+
 //        convertRow(command);
         command.setCrnNo(slave.getId());
         short[] array = new short[10];
@@ -242,6 +258,14 @@
         array[8] = command.getDestinationPosZ();
         array[9] = command.getCommand();
         OperateResult result = siemensNet.Write("DB100.0", array);
+
+        if(!result.IsSuccess){
+            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
+            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
+            Thread.sleep(100);
+            readStatus();
+            return false;
+        }
 
         //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
         Thread.sleep(200);
@@ -262,6 +286,13 @@
                 || command.getDestinationPosY()!=one.getDestinationPosY() || command.getDestinationPosZ()!=one.getDestinationPosZ()
             ){
                 News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+                News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
+                MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
+                Thread.sleep(100);
+                readStatus();
+                return false;
+            }else{
+                News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
             }
         }
 
@@ -270,7 +301,19 @@
                 short commandFinish = 1;
                 Thread.sleep(300);
                 News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鎴愬姛锛屽紑濮嬪啓纭浣峓id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
-                result = siemensNet.Write("DB100.18", commandFinish);
+                Integer counts = 0;
+                while(true) {
+                    result = siemensNet.Write("DB100.18", commandFinish);
+                    if(result.IsSuccess){
+                        break;
+                    } else {
+                        counts++;
+                        if(counts>5){
+                            break;
+                        }
+                    }
+                    Thread.sleep(300);
+                }
             }
         }
 
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a31efdc..0f9a869 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -238,16 +238,23 @@
         }
         int index = staNos.indexOf(staProtocol.getSiteId());
         OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-        Thread.sleep(500);
+        if(!write.IsSuccess){
+            News.error("鍐欏叆杈撻�佺嚎ID澶辫触,閲嶆柊娣诲姞浠诲姟鍒伴槦鍒椼�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
+            return;
+        }
+        Thread.sleep(200);
         OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
 
         if (!write.IsSuccess || !write1.IsSuccess) {
+            MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            News.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
             staProtocol = station.get(staProtocol.getSiteId());
             if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
                 staProtocol.setPakMk(true);
             }
-            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
-            News.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
         } else {
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
             News.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java
index 42f7440..aa39f1a 100644
--- a/src/main/java/com/zy/core/thread/SteThread.java
+++ b/src/main/java/com/zy/core/thread/SteThread.java
@@ -67,6 +67,8 @@
                     // 鍐欏叆鏁版嵁
                     case 2:
                         write((SteCommand) task.getData());
+                        Thread.sleep(200);
+                        readStatus();
                         break;
                     default:
                         break;
@@ -235,8 +237,8 @@
         // 寮�濮嬩换鍔�
         if (!command.getComplete()) {
             //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣�
-            siemensS7Net.Write("V2000.0", false);
-            siemensS7Net.Write("V2000.1", false);
+            OperateResult result01 = siemensS7Net.Write("V2000.0", false);
+            OperateResult result02 = siemensS7Net.Write("V2000.1", false);
             // 1.浠诲姟鍙�
             OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue());
             try {

--
Gitblit v1.9.1