From c904f735e0b8a488ef56744c08f8e10258639bce Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 05 六月 2025 15:54:58 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/RgvController.java |  342 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 333 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index 8a28213..59cb2d8 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -2,9 +2,11 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
 import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.enums.RgvStatusType;
+import com.zy.asrs.domain.param.CrnDemoParam;
 import com.zy.asrs.domain.param.CrnOperatorParam;
 import com.zy.asrs.domain.param.RgvOperatorParam;
 import com.zy.asrs.domain.vo.RgvMsgTableVo;
@@ -12,10 +14,12 @@
 import com.zy.asrs.entity.BasRgv;
 import com.zy.asrs.entity.BasRgvErr;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.WrkMastSta;
 import com.zy.asrs.mapper.BasRgvErrMapper;
 import com.zy.asrs.service.BasRgvService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.WrkMastStaService;
 import com.zy.asrs.service.impl.MainServiceImpl;
 import com.zy.core.CrnThread;
 import com.zy.core.RgvThread;
@@ -33,15 +37,19 @@
 import com.zy.core.model.protocol.CrnProtocol;
 import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.properties.SlaveProperties;
+import com.zy.core.properties.SystemProperties;
 import com.zy.core.thread.SiemensRgvThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * RGV鎺ュ彛
@@ -64,6 +72,278 @@
     private MainServiceImpl mainService;
     @Autowired
     private LocMastService locMastService;
+    @Autowired
+    private WrkMastStaService wrkMastStaService;
+    int wrkNo = 9990;
+
+
+    @ManagerAuth(memo = "婕旂ず鍛戒护涓嬪彂")
+    @GetMapping("/rgvDemoTask")
+    public R rgvDemoTask(Integer rgvNo, Integer sta,Integer end){
+        wrkNo++;
+        RgvCommand command = new RgvCommand();
+        command.setRgvNo(rgvNo); // RGV缂栧彿
+        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1(wrkNo); // 宸ヤ綔鍙�
+        command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+        command.setSourceStaNo1(sta.shortValue()); // 婧愮珯
+        command.setDestinationStaNo1(end.shortValue());  // 鐩爣绔�
+//        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+//        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+//        command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
+//        command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
+        command.setCommand((short) 0);
+
+        return rgvControl(command)? R.ok(): R.error();
+    }
+
+    @ManagerAuth(memo = "瑙i攣灏忚溅")
+    @PostMapping("/lock")
+    public R lock(RgvOperatorParam param ){
+        SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, param.getRgvNo());
+        rgvThread.setPakMk(true);
+        return R.ok();
+    }
+
+    @GetMapping("/demo/status")
+    public R demoStatus(Integer rgvNo){
+        Map<String,Object> map = new HashMap<>();
+        if (Cools.isEmpty(rgvNo)){
+            map.put("demo","X");
+            map.put("rgvMode",0);
+            return R.ok().add(map);
+        }
+        String demo = "X";
+        Integer rgvMode = 0;
+//        List<Map<String, Object>> res = new ArrayList<>();
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvSlave.getId().equals(rgvNo)){
+               demo = rgvSlave.getDemo()?"Y":"N";
+               rgvSlave.setRgvMode(rgvProtocol.getMode().intValue());
+               rgvMode = rgvProtocol.getMode().intValue();
+            }
+        }
+        map.put("demo",demo);
+        map.put("rgvMode",rgvMode);
+        return R.ok().add(map);
+    }
+
+    @GetMapping("/demo/status/true")
+    public R demoStatusTrue(Integer rgvNo){
+        if (Cools.isEmpty(rgvNo)){
+            return R.error("璇烽�夋嫨rgv");
+        }
+//        List<Map<String, Object>> res = new ArrayList<>();
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            if (rgvSlave.getId().equals(rgvNo)){
+                rgvSlave.setDemo(true);
+            }
+        }
+        return R.ok();
+    }
+    @GetMapping("/demo/status/false")
+    public R demoStatusFalse(Integer rgvNo){
+        if (Cools.isEmpty(rgvNo)){
+            return R.error("璇烽�夋嫨rgv");
+        }
+//        List<Map<String, Object>> res = new ArrayList<>();
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            if (rgvSlave.getId().equals(rgvNo)){
+                rgvSlave.setDemo(false);
+            }
+        }
+        return R.ok();
+    }
+
+    @GetMapping("/demo/status/rgvStatus")
+    public R demoStatusTrue1(Integer rgvNo,Integer status){
+        if (Cools.isEmpty(rgvNo)){
+            return R.error("璇烽�夋嫨rgv");
+        }
+        if (Cools.isEmpty(status)){
+            return R.error("閫夋嫨鎸夐挳鏈夎");
+        }
+//        List<Map<String, Object>> res = new ArrayList<>();
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            // 鑾峰彇RGV淇℃伅
+            SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+            if (rgvThread == null) {
+                throw new CoolException("RGV涓嶅湪绾�");
+            }
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                throw new CoolException("RGV涓嶅湪绾�");
+            }
+            String DB = "";
+            if (rgvSlave.getId().equals(rgvNo)){
+               switch (status){
+                   case 5://寮哄埗鍚姩
+                       DB="4.4";
+                       break;
+//                   case 6://澶嶄綅淇″彿
+//                       DB="4.5";
+//                       break;
+                   case 7://鎶ヨ娑堥煶
+                       DB="4.6";
+                       break;
+                   case 8://鍚姩
+                       DB="4.7";
+                       break;
+                   case 9://鍋滄
+                       DB="5.0";
+                       break;
+                   case 10://鎬ュ仠
+                       DB="5.1";
+                       break;
+                   case 11://澶嶄綅鎸夐挳
+                       DB="5.2";
+                       break;
+                   case 12://鎵嬪姩
+                       DB="5.3";
+                       rgvSlave.setRgvMode(3);
+                       break;
+                   case 13://鎵嬪姩瀹氫綅
+                       DB="5.4";
+                       break;
+                   case 14://鍗曟満
+                       DB="5.5";
+                       rgvSlave.setRgvMode(2);
+                       break;
+                   case 15://鑱旀満
+                       DB="5.6";
+                       rgvSlave.setRgvMode(1);
+                       break;
+                   case 16://璐у弶瀹氫綅鍥炰腑
+                       DB="5.7";
+                       break;
+                   case 17://鎭㈠鑱旀満浠诲姟
+                       DB="6.0";
+                       break;
+                   case 18://娓呮鑱旀満浠诲姟
+                       DB="6.1";
+                       break;
+                   default:
+                       return R.error("鎸夐挳涓嶅瓨鍦紵锛燂紵锛燂紒锛侊紒");
+               }
+               if (MessageQueue.offer(SlaveType.Rgv, rgvNo, new Task(10, DB))) {
+                   return R.ok();
+               } else {
+                   return R.error("鍛戒护涓嬪彂澶辫触");
+               }
+            }
+
+        }
+        return R.ok();
+    }
+
+
+
+    @PostMapping("/demo/switch")
+    @ManagerAuth(memo = "RGV婕旂ず")
+    public R crnDemo(CrnDemoParam param) throws InterruptedException {
+        if (Cools.isEmpty(param.getCrnId())){
+            return R.error();
+        }
+        if (Cools.isEmpty(param.getPassword())){
+            return R.error("璇疯緭鍏ュ彛浠�");
+        }
+        if (!param.getPassword().equals(SystemProperties.WCS_PASSWORD)){
+            return R.error("鍙d护閿欒");
+        }
+        Thread.sleep(200L);
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            if (rgvSlave.getId().equals(param.getCrnId())) {
+                rgvSlave.setDemo(param.getOpt());
+            }
+        }
+//        mainService.crnDemoOfLocMove(param.getCrnId());
+        return R.ok();
+    }
+
+    @ManagerAuth(memo = "鍙栨斁璐�")
+    @PostMapping("/operator/put")
+    public R rgvFetchPut(RgvOperatorParam param){
+        wrkNo++;
+        RgvCommand command = new RgvCommand();
+        command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
+        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1(wrkNo); // 宸ヤ綔鍙�
+        command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+        command.setSourceStaNo1(param.getSourceRow().shortValue()); // 婧愮珯
+        command.setDestinationStaNo1(param.getSourceBay().shortValue());  // 鐩爣绔�
+//        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+//        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+//        command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
+//        command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
+        command.setCommand((short) 0);
+
+        return rgvControl(command)? R.ok(): R.error();
+    }
+
+
+    @ManagerAuth(memo = "鍙�")
+    @PostMapping("/operator/single/step/one/put")
+    public R rgvFetchSingleStepOnePut(RgvOperatorParam param){
+        return rgvFetchSingleStepPut(param,1)?R.ok():R.error();
+    }
+    @ManagerAuth(memo = "鏀�")
+    @PostMapping("/operator/single/step/two/put")
+    public R rgvFetchSingleStepTwoPut(RgvOperatorParam param){
+        return rgvFetchSingleStepPut(param,2)?R.ok():R.error();
+    }
+    @ManagerAuth(memo = "X杩愯")
+    @PostMapping("/operator/single/step/three/put")
+    public R rgvFetchSingleStepThreePut(RgvOperatorParam param){
+        return rgvFetchSingleStepPut(param,3)?R.ok():R.error();
+    }
+
+    @ManagerAuth(memo = "鍙栨斁")
+    @PostMapping("/operator/single/step/four/put")
+    public R rgvFetchSingleStepFourPut(RgvOperatorParam param){
+        return rgvFetchSingleStepPut(param,4)?R.ok():R.error();
+    }
+
+    public boolean rgvFetchSingleStepPut(RgvOperatorParam param ,Integer type){
+        wrkNo++;
+        RgvCommand command = new RgvCommand();
+        RgvTaskModeType fetchPut = RgvTaskModeType.NONE;
+        switch (type){
+            case 1:
+                fetchPut = RgvTaskModeType.FETCH;
+                param.setSourceBay(0);
+                break;
+            case 2:
+                fetchPut = RgvTaskModeType.PUT;
+                param.setSourceRow(0);
+                break;
+            case 3:
+                fetchPut = RgvTaskModeType.X_MOVE;
+                break;
+            case 4:
+                fetchPut = RgvTaskModeType.FETCH_PUT;
+                break;
+            default:
+                return false;
+        }
+        command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
+        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1(wrkNo); // 宸ヤ綔鍙�
+        command.setTaskMode1(fetchPut); // 浠诲姟妯″紡: 鍙栨斁璐�
+        command.setSourceStaNo1(param.getSourceRow().shortValue()); // 婧愮珯
+        command.setDestinationStaNo1(param.getSourceBay().shortValue());  // 鐩爣绔�
+//        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+//        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+//        command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
+//        command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
+        command.setCommand((short) 0);
+
+        return rgvControlD(command);
+    }
 
 
     @ManagerAuth(memo = "澶嶄綅")
@@ -165,15 +445,29 @@
             if (rgvProtocol == null) {
                 continue;
             }
+            if (rgvProtocol.getTaskNo1() != 0){
+                WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
+                        .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts, create_time as createTime")
+                        .eq("wrk_No", rgvProtocol.getTaskNo1())
+
+                        .orderBy("create_time", false)
+
+                );
+                if (!Cools.isEmpty(wrkMastSta)){
+                    vo.setWrkSts(wrkMastSta.getWrkSts());
+                }
+            }
             vo.setStatusType(rgvProtocol.modeType.desc);   //  妯″紡鐘舵��
-            vo.setStatus(rgvProtocol.getStatusType().desc);     //  鐘舵��
+            vo.setStatus(rgvProtocol.getStatusType1().desc);     //  鐘舵��
             vo.setWorkNo1(rgvProtocol.getTaskNo1());  //  宸ヤ綅1浠诲姟鍙�
-            vo.setRgvPos(rgvProtocol.getRgvPos());
+            vo.setRgvPos(rgvProtocol.getCode());
             vo.setPakMk(rgvThread.isPakMk()?"鏃犻攣":"閿佸畾");
             vo.setWalkPos(rgvProtocol.getAlarm() == 0?"姝e父":"鎶ヨ");
             vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
-            vo.setStaNo(rgvProtocol.getSouSta().intValue());
-            vo.setSourceStaNo(rgvProtocol.getEndSta().intValue());
+            vo.setList32(rgvProtocol.getList32());
+            vo.setList33(rgvProtocol.getList33());
+            vo.setList34(rgvProtocol.getList34());
+            vo.setList35(rgvProtocol.getList35());
             if (rgvProtocol.getAlarm() > 0) {
                 BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
                 vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName());
@@ -247,8 +541,8 @@
     public R rgvTaskComplete(RgvOperatorParam param){
         RgvCommand command = new RgvCommand();
         command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 1);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+        command.setTaskNo1( 0); // 宸ヤ綔鍙�
         command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
         command.setSourceStaNo1((short) 0); // 婧愮珯
         command.setDestinationStaNo1((short) 0);  // 鐩爣绔�
@@ -270,8 +564,8 @@
         }
         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.NONE); // 浠诲姟妯″紡
         command.setSourceStaNo1((short) 0); // 婧愮珯
         command.setDestinationStaNo1((short) 0);  // 鐩爣绔�
@@ -306,7 +600,7 @@
                 RgvCommand Command = new RgvCommand();
                 Command.setRgvNo(rgv.getId()); // RGV缂栧彿
                 Command.setTaskMode1(RgvTaskModeType.NONE);
-                Command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                Command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
                 Command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
                 Command.setCommand((short) 0);  // 浠诲姟瀹屾垚纭浣�
                 // 寤舵椂鍙戦��
@@ -347,4 +641,34 @@
         return false;
     }
 
+    private boolean rgvControlD(RgvCommand command){
+        if (command.getRgvNo() == null) {
+            throw new CoolException("璇烽�夋嫨RGV");
+        }
+        for (RgvSlave rgv : slaveProperties.getRgv()) {
+            // 鑾峰彇RGV淇℃伅
+            if (command.getRgvNo().equals(rgv.getId())) {
+//                SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+//                if (rgvThread == null) {
+//                    throw new CoolException("RGV涓嶅湪绾�");
+//                }
+//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+//                if (rgvProtocol == null) {
+//                    throw new CoolException("RGV涓嶅湪绾�");
+//                }
+                try{
+                    if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(11, command))) {
+                        return true;
+                    } else {
+                        throw new CoolException("鍛戒护涓嬪彂澶辫触");
+                    }
+                }catch (Exception e){
+                    log.error("鍗曟浠诲姟涓嬪彂澶辫触锛屽紓甯革細"+e);
+                    throw new CoolException("鍛戒护涓嬪彂澶辫触");
+                }
+            }
+        }
+        return false;
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.1