From 3cf23392ce90c0a99835afe2db3a81206e093819 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期四, 25 九月 2025 10:02:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jshdwcs' into jshdwcs

---
 src/main/java/com/zy/asrs/controller/RgvController.java |  144 ++++++++++++++++++++++++++++++------------------
 1 files changed, 90 insertions(+), 54 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index bb6cee0..085fc48 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -5,6 +5,7 @@
 import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.enums.RgvStatusType;
+import com.zy.asrs.domain.param.CrnOperatorParam;
 import com.zy.asrs.domain.param.RgvOperatorParam;
 import com.zy.asrs.domain.vo.RgvMsgTableVo;
 import com.zy.asrs.domain.vo.RgvStateTableVo;
@@ -34,8 +35,10 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * RGV鎺ュ彛
@@ -59,44 +62,75 @@
     @Autowired
     private LocMastService locMastService;
 
+    @ManagerAuth(memo = "瑙i攣灏忚溅")
+    @PostMapping("/lock")
+    public R lock(CrnOperatorParam param){
+        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, param.getRgvNo());
+        rgvThread.setPakMk(true);
+        return R.ok();
+    }
+
     @PostMapping("/table/rgv/state")
     @ManagerAuth(memo = "RGV淇℃伅琛�")
-    public R rgvStateTable(){
+    public R rgvStateTable() {
         List<RgvStateTableVo> list = new ArrayList<>();
         List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
+
         for (BasRgv basRgv : rgvs) {
-            // 琛ㄦ牸琛�
             RgvStateTableVo vo = new RgvStateTableVo();
             vo.setRgvNo(basRgv.getRgvNo());   //  RGV鍙�
             list.add(vo);
+
             // 鑾峰彇RGV淇℃伅
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
-            if (rgvThread == null) {
-                continue;
-            }
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                continue;
-            }
-            vo.setStatusType(rgvProtocol.modeType.desc);   //  妯″紡鐘舵��
-            vo.setStatus(rgvProtocol.getStatusType().desc);     //  鐘舵��
-            vo.setWorkNo1(rgvProtocol.getTaskNo1());  //  宸ヤ綅1浠诲姟鍙�
-            vo.setStatus1(rgvProtocol.getStatusType1().desc);  // 宸ヤ綅1鐘舵��
-            vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿");  // 宸ヤ綅1鏈夌墿
-            vo.setRgvPos(rgvProtocol.getRgvPos());
-            vo.setWalkPos(rgvProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�");
-            vo.setWorkNo2(rgvProtocol.getTaskNo2());  //  宸ヤ綅2浠诲姟鍙�
-            vo.setStatus2(rgvProtocol.getStatusType2().desc);  // 宸ヤ綅2鐘舵��
-            vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿");  // 宸ヤ綅2鏈夌墿
+            if (rgvThread == null) continue;
 
-            vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
-            if (rgvProtocol.getAlarm() > 0) {
-                BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
-                vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) continue;
+
+            vo.setStatusType(rgvProtocol.modeType.desc);   // 妯″紡鐘舵��
+//            vo.setStatus(rgvProtocol.getMode().desc); // 鐘舵��
+            vo.setWorkNo1(rgvProtocol.getTaskNo1());      // 宸ヤ綅1浠诲姟鍙�
+            vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵��
+            vo.setLoading1(rgvProtocol.getLoaded1() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅1鏈夌墿
+            vo.setRgvPos(rgvProtocol.getRgvPos());
+            vo.setRgvPos1(rgvProtocol.getRgvPosI());
+            vo.setWalkPos(Objects.equals(rgvProtocol.getWalkPos(), 1) ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅");
+            vo.setPakMk(rgvThread.isPakMk() ? "鏃犻攣" : "閿佸畾");
+            vo.setWorkNo2(rgvProtocol.getTaskNo2());      // 宸ヤ綅2浠诲姟鍙�
+            vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵��
+            vo.setLoading2(rgvProtocol.getLoaded2() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅2鏈夌墿
+
+            // --- 閬嶅巻 errX 瀛楁鐢熸垚 warnCode 鍜� alarm ---
+            List<String> alarms = new ArrayList<>();
+            List<String> warnCodes = new ArrayList<>();
+            Field[] fields = rgvProtocol.getClass().getDeclaredFields();
+            for (Field field : fields) {
+                if (field.getName().startsWith("err") && field.getType().equals(Boolean.class)) {
+                    field.setAccessible(true);
+                    try {
+                        Boolean value = (Boolean) field.get(rgvProtocol);
+                        if (Boolean.TRUE.equals(value)) {
+                            String numPart = field.getName().substring(3);
+                            int errId = Integer.parseInt(numPart);
+                            warnCodes.add(String.valueOf(errId));
+
+                            BasRgvErr rgvErr = basRgvErrMapper.selectById(errId);
+                            alarms.add(rgvErr == null ? "鏈煡寮傚父(" + errId + ")" : rgvErr.getErrName());
+                        }
+                    } catch (IllegalAccessException e) {
+                        e.printStackTrace();
+                    }
+                }
             }
+
+            vo.setWarnCode(String.join(",", warnCodes));
+            vo.setAlarm(alarms.isEmpty() ? "" : String.join("锛�", alarms));
         }
+
         return R.ok().add(list);
     }
+
 
     @PostMapping("/table/rgv/msg")
     @ManagerAuth(memo = "RGV鏁版嵁琛�")
@@ -160,17 +194,17 @@
     public R rgvFetchPut(RgvOperatorParam param){
         RgvCommand command = new RgvCommand();
         command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1(0); // 宸ヤ綔鍙�
         command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
         command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
         command.setDestinationStaNo1(param.getStaNo1());  // 鐩爣绔�
-        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo2(0); // 宸ヤ綔鍙�
         command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
         command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
         command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
-        command.setCommand((short) 0);
+        command.setCommand(true);
 
         return rgvControl(command)? R.ok(): R.error();
     }
@@ -180,17 +214,17 @@
     public R rgvFetch(RgvOperatorParam param){
         RgvCommand command = new RgvCommand();
         command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1(0); // 宸ヤ綔鍙�
         command.setTaskMode1(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栬揣
         command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
         command.setDestinationStaNo1(param.getStaNo1());  // 鐩爣绔�
-        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+        command.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo2( 0); // 宸ヤ綔鍙�
+        command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐�
         command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
         command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
-        command.setCommand((short) 0);
+        command.setCommand(true);
 
         return rgvControl(command)? R.ok(): R.error();
     }
@@ -200,37 +234,39 @@
     public R rgvPut(RgvOperatorParam param){
         RgvCommand command = new RgvCommand();
         command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1(0); // 宸ヤ綔鍙�
         command.setTaskMode1(RgvTaskModeType.PUT); // 浠诲姟妯″紡: 鏀捐揣
         command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
         command.setDestinationStaNo1(param.getStaNo1());  // 鐩爣绔�
-        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo2( 0); // 宸ヤ綔鍙�
         command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
         command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
         command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
-        command.setCommand((short) 0);
+        command.setCommand(true);
 
         return rgvControl(command)? R.ok(): R.error();
     }
+
+
 
     @ManagerAuth(memo = "浠诲姟瀹屾垚")
     @PostMapping("/operator/taskComplete")
     public R rgvTaskComplete(RgvOperatorParam param){
         RgvCommand command = new RgvCommand();
         command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 1);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish1(true);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1(0); // 宸ヤ綔鍙�
         command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
         command.setSourceStaNo1((short) 0); // 婧愮珯
         command.setDestinationStaNo1((short) 0);  // 鐩爣绔�
-        command.setAckFinish2((short) 1);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish2(true);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo2( 0); // 宸ヤ綔鍙�
         command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
         command.setSourceStaNo2((short) 0); // 婧愮珯
         command.setDestinationStaNo2((short) 0);  // 鐩爣绔�
-        command.setCommand((short) 0);
+        command.setCommand(true);
 
         return rgvControl(command)? R.ok(): R.error();
     }
@@ -243,17 +279,17 @@
         }
         RgvCommand command = new RgvCommand();
         command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish1(true);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1( 0); // 宸ヤ綔鍙�
         command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
         command.setSourceStaNo1((short) 0); // 婧愮珯
         command.setDestinationStaNo1((short) 0);  // 鐩爣绔�
-        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish2(true);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo2(0); // 宸ヤ綔鍙�
         command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
         command.setSourceStaNo2((short) 0); // 婧愮珯
         command.setDestinationStaNo2((short) 0);  // 鐩爣绔�
-        command.setCommand((short) 0);
+        command.setCommand(true);
 
         return rgvControl(command)? R.ok(): R.error();
     }
@@ -279,12 +315,12 @@
                 RgvCommand Command = new RgvCommand();
                 Command.setRgvNo(rgv.getId()); // RGV缂栧彿
                 Command.setTaskMode1(RgvTaskModeType.NONE);
-                Command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                Command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                Command.setCommand((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                Command.setAckFinish1(true);  // 浠诲姟瀹屾垚纭浣�
+                Command.setAckFinish2(true);  // 浠诲姟瀹屾垚纭浣�
+                Command.setCommand(true);  // 浠诲姟瀹屾垚纭浣�
                 // 寤舵椂鍙戦��
                 Thread.sleep(1000L);
-                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, Command))) {
+                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) {
                     return R.ok();
                 } else {
                     throw new CoolException("鍛戒护涓嬪彂澶辫触");
@@ -310,7 +346,7 @@
                 if (rgvProtocol == null) {
                     throw new CoolException("RGV涓嶅湪绾�");
                 }
-                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, command))) {
+                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) {
                     return true;
                 } else {
                     throw new CoolException("鍛戒护涓嬪彂澶辫触");

--
Gitblit v1.9.1