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