From 976a9752aca2a0e04876a873c9fab343bcff45b7 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期五, 09 五月 2025 18:59:03 +0800
Subject: [PATCH] #

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

diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
new file mode 100644
index 0000000..e85e4de
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -0,0 +1,212 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.annotations.ManagerAuth;
+import com.core.common.R;
+import com.zy.asrs.entity.BasDevpPosition;
+import com.zy.asrs.service.BasDevpPositionService;
+import com.zy.core.cache.RgvStatusCache;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.cache.TaskProtocolCache;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.protocol.RgvProtocol;
+import com.zy.core.model.protocol.TaskProtocol;
+import com.zy.core.thread.RgvThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 杈撻�佽澶囨帴鍙�
+ * Created by vincent on 2020-06-01
+ */
+@RestController
+@RequestMapping("/rgv")
+public class RgvController {
+
+    @Autowired
+    private BasDevpPositionService basDevpPositionService;
+
+    @GetMapping("/status/all")
+    @ManagerAuth(memo = "鍏ㄩ儴淇℃伅")
+    public R allStatus(){
+        List<Map<String, Object>> res = new ArrayList<>();
+        ConcurrentHashMap<Integer, RgvProtocol> allRgvStatus = RgvStatusCache.getAllRgvStatus();
+        for (RgvProtocol rgvProtocol : allRgvStatus.values()){
+            Map<String, Object> map2 = new HashMap<>();
+            map2.put("rgvNo", rgvProtocol.getRgvNo());
+            map2.put("taskNo", rgvProtocol.getTaskNo());
+            map2.put("mode", rgvProtocol.getModeType().desc);
+            map2.put("status", rgvProtocol.getStatusType().desc);
+            map2.put("rgvPos", rgvProtocol.getRgvPos());
+            map2.put("rgvPosDestination", rgvProtocol.getRgvPosDestination());
+            map2.put("loaded", rgvProtocol.getLoaded().equals((short)-1)? "鏈煡":rgvProtocol.getLoaded()==1? "鏈夌墿":"鏃犵墿");
+            res.add(map2);
+        }
+        return R.ok().add(res);
+    }
+
+    @PostMapping("/task/cache/all")
+    @ManagerAuth(memo = "鍏ㄩ儴淇℃伅")
+    public R allTaskCache(@RequestParam(defaultValue = "0")  Integer rgvNo){
+        List<Map<String, Object>> res = new ArrayList<>();
+        try{
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+            TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+            ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+            for (TaskProtocol taskProtocol : allTaskProtocol.values()){
+                Map<String, Object> map2 = new HashMap<>();
+                map2.put("rgvNo", rgvNo);
+                map2.put("taskNo", taskProtocol.getTaskNo());
+                map2.put("targetPosition", taskProtocol.getTargetPosition());
+                map2.put("isRunning", taskProtocol.getIsRunning());
+                map2.put("taskStatus", taskProtocol.getTaskStatus());
+                map2.put("direction", taskProtocol.isDirection());
+                res.add(map2);
+            }
+        } catch (Exception e){
+//            return R.error("寮傚父"+e.getMessage());
+        }
+        return R.ok().add(res);
+    }
+
+    @PostMapping("/run/walk")//Take  Put  Walk
+    @ManagerAuth(memo = "灏忚溅琛岃蛋")
+    public R rgvRunWalk(@RequestParam(defaultValue = "0")  Integer rgvNo,
+                            @RequestParam(defaultValue = "0")  Integer taskNo,
+                            @RequestParam(defaultValue = "0")  Integer rgvStaNo,
+                            @RequestParam(defaultValue = "0")  Long rgvPosDestination
+    ) {
+        if (rgvNo==null || rgvNo==0){
+            return R.error("璇烽�夋嫨灏忚溅");
+        }
+        if (taskNo==null || taskNo==0){
+            return R.error("浣滀笟鍙疯濉啓");
+        }
+        if ((rgvStaNo == null || rgvStaNo == 0) && (rgvPosDestination==null || rgvPosDestination==0L)){
+            return R.error("鐩爣绔欑偣璇峰~鍐�");
+        }
+        if (rgvPosDestination == null || rgvPosDestination == 0){
+            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
+            rgvPosDestination = basDevpPosition.getPlcPosition();
+        }
+        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+        TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+        TaskProtocol issued = new TaskProtocol();
+
+        try {
+            ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+            if (allTaskProtocol.size() > 0) {
+                return R.error("瀛樺湪鎵ц涓换鍔★紝璇峰厛澶勭悊锛侊紒锛�");
+            }
+
+            //鎵ц
+            issued.setTaskNo(Long.valueOf(taskNo));
+            issued.setTaskStatus(1);
+            issued.setTaskNoDirection(issued.gettaskNoDirection$(issued.getTaskNo(), issued.getTaskStatus()));
+            issued.setTargetPosition(rgvPosDestination);
+            issued.setIsRunning(1);
+            issued.setDirection(true);
+
+            taskProtocolCache.updateTaskProtocol(issued);
+
+        } catch (Exception e) {
+            return R.error("浠诲姟鐢熸垚澶辫触"+e.getMessage());
+        }
+
+        return R.ok("浠诲姟鐢熸垚鎴愬姛");
+    }
+
+    @PostMapping("/run/put")//Take  Put  Walk
+    @ManagerAuth(memo = "灏忚溅鏀捐揣")
+    public R rgvPutWalk(@RequestParam(defaultValue = "0")  Integer rgvNo,
+                        @RequestParam(defaultValue = "0")  Integer taskNo,
+                        @RequestParam(defaultValue = "0")  Integer rgvStaNo,
+                        @RequestParam(defaultValue = "0")  Long rgvPosDestination
+    ) {
+        if (rgvNo==null || rgvNo==0){
+            return R.error("璇烽�夋嫨灏忚溅");
+        }
+        if (taskNo==null || taskNo==0){
+            return R.error("浣滀笟鍙疯濉啓");
+        }
+        if (rgvStaNo == null || rgvStaNo == 0){
+            return R.error("鐩爣绔欑偣璇峰~鍐�");
+        }
+        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+        TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+        TaskProtocol issuedPut = new TaskProtocol();
+
+        try {
+            ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+            if (allTaskProtocol.size() > 0) {
+                return R.error("瀛樺湪鎵ц涓换鍔★紝璇峰厛澶勭悊锛侊紒锛�");
+            }
+
+            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
+            //鎵ц
+            issuedPut.setTaskNo(Long.valueOf(taskNo));
+            issuedPut.setTaskStatus(3);
+            issuedPut.setTaskNoDirection(issuedPut.gettaskNoDirection$(issuedPut.getTaskNo(), issuedPut.getTaskStatus()));
+            issuedPut.setTargetPosition(basDevpPosition.getPlcPosition());
+            issuedPut.setIsRunning(1);
+            issuedPut.setDirection(basDevpPosition.getRgvSign()==1);
+
+            taskProtocolCache.updateTaskProtocol(issuedPut);
+        } catch (Exception e) {
+            return R.error("浠诲姟鐢熸垚澶辫触"+e.getMessage());
+        }
+
+        return R.ok("浠诲姟鐢熸垚鎴愬姛");
+    }
+
+    @PostMapping("/run/take")//Take  Put  Walk
+    @ManagerAuth(memo = "灏忚溅鍙栬揣")
+    public R rgvTakeWalk(@RequestParam(defaultValue = "0") Integer rgvNo,
+                        @RequestParam(defaultValue = "0") Integer taskNo,
+                        @RequestParam(defaultValue = "0") Integer rgvStaNo,
+                        @RequestParam(defaultValue = "0") Long rgvPosDestination
+    ) {
+        if (rgvNo==null || rgvNo==0){
+            return R.error("璇烽�夋嫨灏忚溅");
+        }
+        if (taskNo==null || taskNo==0){
+            return R.error("浣滀笟鍙疯濉啓");
+        }
+        if (rgvStaNo == null || rgvStaNo == 0){
+            return R.error("鐩爣绔欑偣璇峰~鍐�");
+        }
+        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+        TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+        TaskProtocol issuedTake = new TaskProtocol();
+        try {
+            ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+            if (allTaskProtocol.size() > 0) {
+                return R.error("瀛樺湪鎵ц涓换鍔★紝璇峰厛澶勭悊锛侊紒锛�");
+            }
+
+            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
+            //鎵ц
+            issuedTake.setTaskNo(Long.valueOf(taskNo));
+            issuedTake.setTaskStatus(2);
+            issuedTake.setTaskNoDirection(issuedTake.gettaskNoDirection$(issuedTake.getTaskNo(), issuedTake.getTaskStatus()));
+            issuedTake.setTargetPosition(basDevpPosition.getPlcPosition());
+            issuedTake.setIsRunning(1);
+            issuedTake.setDirection(basDevpPosition.getRgvSign()==1);
+
+            taskProtocolCache.updateTaskProtocol(issuedTake);
+        } catch (Exception e) {
+            return R.error("浠诲姟鐢熸垚澶辫触"+e.getMessage());
+        }
+
+        return R.ok("浠诲姟鐢熸垚鎴愬姛");
+    }
+}

--
Gitblit v1.9.1