From cc885fe7e9629fa922a369c3938a748ec7f7e246 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期六, 14 六月 2025 16:32:38 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/enums/RgvStatusType.java          |    1 
 src/main/java/com/zy/core/thread/RgvThread.java             |   92 ++++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   13 +++++-
 3 files changed, 104 insertions(+), 2 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 a1d5b62..665ecb5 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -515,7 +515,7 @@
                     log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
                     continue;
                 }
-                if (rgvProtocol.getStatusType() == RgvStatusType.WAITING) {
+                if (rgvProtocol.getStatusType() == RgvStatusType.WAITING || rgvProtocol.getStatusType() == RgvStatusType.WAITING101) {
                     log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}", rgvProtocol.getRgvNo(), rgvProtocol.getStatusType(), rgvProtocol);
                 }
                 // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
@@ -576,6 +576,15 @@
                         }
                     } catch (Exception e){}
                     wrkMastService.updateById(wrkMast);
+                } else if (rgvProtocol.getStatusType() == RgvStatusType.WAITING101
+                        && rgvProtocol.getModeType() == RgvModeType.AUTO
+                        && rgvProtocol.getTaskNo1() != 0
+                ){
+                    boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+                    if (!rgvComplete) {
+                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+                        break;
+                    }
                 }
             } catch (Exception e) {
                 log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�" + e);
@@ -613,7 +622,7 @@
                     rgvCommand.setDestinationStaNo1((short)-1);   //宸ヤ綅1鐩爣绔欑偣
                     rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
                     rgvCommand.setRgvSome((short) 1);
-                    if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) {
+                    if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) {
                         //
                         log.error("RGV鍙栨秷鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
                         wrkMast.setLogErrTime(new Date());
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index 588185c..a2413db 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -16,6 +16,7 @@
     CANCEL(12, "绛夊緟鍙栨秷","#95A5A6"),
     WALK(20, "璧拌","#F1C40F"),
     WAITING(100, "浠诲姟鎵ц瀹屾垚绛夊緟纭","#AED6F1"),
+    WAITING101(101, "浠诲姟鎵ц瀹屾垚绛夊緟纭","#AED6F1"),
     SOS110(110, "鎶ヨ","#E74C3C"),
     SOS(999, "鏈煡","#FF0000")
     ;
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 9ddd128..3d1e4f3 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -127,6 +127,12 @@
                         rgvOpt(command);
                         write3(command);
                         break;
+                    //宸ヤ綅1鍐欏叆鍙栨秷鏁版嵁
+                    case 4:
+                        RgvCommand command4 = (RgvCommand) task.getData();
+                        rgvOpt(command4);
+                        write4(command4);
+                        break;
                     // 婕父
                     case 5:
                         Long aLong = (Long) task.getData();
@@ -216,6 +222,30 @@
         rgvProtocol.setxDistance((short) 0);
         rgvProtocol.setxDuration((short) 0);
     }
+
+//    /**
+//     * 鍒濆鍖朢GV鐘舵��
+//     */
+//    private void initRgv() {
+//        if (null == rgvProtocol) {
+//            rgvProtocol = new RgvProtocol();
+//        }
+//        rgvProtocol.setRgvNo(slave.getId());
+//        rgvProtocol.setMode((short) 3);
+//        rgvProtocol.setStatus((short)0);
+//        rgvProtocol.setTaskNo1((short)0);
+//        rgvProtocol.setStatus1((short)0);
+//        rgvProtocol.setLoaded1((short)0);
+//        rgvProtocol.setWalkPos((short)0);
+//        rgvProtocol.setRgvPos(slave.getId()*100000L);
+//        rgvProtocol.setTaskNo2((short)0);
+//        rgvProtocol.setStatus2((short)0);
+//        rgvProtocol.setLoaded2((short)0);
+//        rgvProtocol.setAlarm((short)0);
+//        rgvProtocol.setxSpeed((short) 0);
+//        rgvProtocol.setxDistance((short) 0);
+//        rgvProtocol.setxDuration((short) 0);
+//    }
 
     @Override
     public boolean connect() {
@@ -398,6 +428,68 @@
             return false;
         }
     }
+    private boolean write4(RgvCommand command) throws InterruptedException {
+        if (null == command) {
+            log.error("RGV鍐欏叆鍛戒护涓虹┖");
+            return false;
+        }
+
+//        siemensNet.Write("DB24.10.0", false);
+//        siemensNet.Write("DB24.10.1", false);
+
+        command.setRgvNo(slave.getId());
+        short[] array = new short[5];
+        array[0] = command.getRgvNo().shortValue();
+        array[1] = command.getSourceStaNo1();
+        array[2] = command.getDestinationStaNo1();
+        array[3] = command.getTaskMode1();//浠诲姟妯″紡
+        array[4] = command.getTaskNo1();
+
+
+
+        OperateResult result = siemensNet.Write("DB24.0", array);
+//
+//        if (command.getAckFinish1().equals((short)0)) {
+////            Thread.sleep(100L);
+////            siemensNet.Write("DB24.10.7", command.getRgvSome() == 1);
+////            Thread.sleep(20L);
+////            result = siemensNet.Write("DB24.10.0", true);
+//        } else {
+//            siemensNet.Write("DB24.10.1", true);
+//        }
+
+        try {
+            // 鏃ュ織璁板綍
+            BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
+            BasRgvOpt basRgvOpt = new BasRgvOpt(
+                    command.getTaskNo1().intValue(),
+                    command.getTaskNo2().intValue(),
+                    command.getRgvNo(),
+                    new Date(),
+                    command.getTaskModeType1().toString(),
+                    command.getSourceStaNo1().intValue(),
+                    command.getDestinationStaNo1().intValue(),
+                    command.getSourceStaNo2().intValue(),
+                    command.getDestinationStaNo2().intValue(),
+                    null,
+                    new Date(),
+                    null
+            );
+            bean.insert(basRgvOpt);
+        } catch (Exception ignore) {}
+
+        if (result != null && result.IsSuccess) {
+//            Thread.sleep(200);
+//            this.readStatus();
+            log.info("RGV 宸ヤ綅1鍙栨秷鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command));
+            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 宸ヤ綅1鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(command)));
+            return true;
+        } else {
+            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc宸ヤ綅1鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+            log.error("鍐欏叆RGV plc宸ヤ綅1鍙栨秷鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            return false;
+        }
+    }
 
     /**
      * 瀹屾垚

--
Gitblit v1.9.1