From 99573d3503e32befd853dda7cc0180e01a4c8597 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期日, 13 十月 2024 12:17:44 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java           |   14 ++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java                 |    8 ++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java        |    9 +++
 zy-asrs-flow/src/pages/device/shuttle/index.jsx                                          |    1 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java                |   58 ++++++++++---------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java      |   17 +++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java                        |    6 ++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java |   15 +++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java                      |   16 ++++-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java                 |    3 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java                  |    2 
 11 files changed, 117 insertions(+), 32 deletions(-)

diff --git a/zy-asrs-flow/src/pages/device/shuttle/index.jsx b/zy-asrs-flow/src/pages/device/shuttle/index.jsx
index fa2e8af..dea6fef 100644
--- a/zy-asrs-flow/src/pages/device/shuttle/index.jsx
+++ b/zy-asrs-flow/src/pages/device/shuttle/index.jsx
@@ -339,6 +339,7 @@
                                 <Button onClick={() => shuttleOperator('palletDown')}>鎵樼洏涓嬮檷</Button>
                                 <Button onClick={() => shuttleOperator('chargeOpen')}>鍏呯數寮�</Button>
                                 <Button onClick={() => shuttleOperator('chargeClose')}>鍏呯數鍏�</Button>
+                                <Button onClick={() => shuttleOperator('requestWaiting')}>鐢宠纭</Button>
                                 <Button onClick={() => shuttleOperator('reset')}>澶嶄綅</Button>
                             </div>
                         </Card>
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
index c588fe9..62f5e5e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
@@ -176,6 +176,23 @@
 
             shuttleThread.reset(null);
             return R.ok();
+        } else if (param.getShuttleTaskMode().equals("requestWaiting")) {
+            //鐢宠纭
+            Device device = deviceService.getOne(new LambdaQueryWrapper<Device>()
+                    .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
+                    .eq(Device::getStatus, 1)
+                    .eq(Device::getDeviceNo, shuttleNo));
+            if (device == null) {
+                return R.error("璁惧涓嶅瓨鍦�");
+            }
+
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+            if (shuttleThread == null) {
+                return R.error("璁惧绂荤嚎");
+            }
+
+            shuttleThread.requestWaiting();
+            return R.ok();
         }
 
         Task task = new Task();
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java
index 43b2288..54c919e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java
@@ -35,6 +35,9 @@
     //鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀炬彁鍗囨満锛岄粯璁や笉閲婃斁  1: 閲婃斁  0: 涓嶉噴鏀�
     private Integer releaseLift;
 
+    //鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀剧┛姊溅锛岄粯璁や笉閲婃斁  1: 閲婃斁  0: 涓嶉噴鏀�
+    private Integer releaseShuttle;
+
     public static MotionDto build(BuildSupport<MotionDto> support) {
         MotionDto dto = new MotionDto();
 
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
index 0a4cbf2..d63ab64 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
@@ -82,6 +82,12 @@
     private Integer releaseLift;
 
     /**
+     * 鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀剧┛姊溅锛岄粯璁や笉閲婃斁  1: 閲婃斁  0: 涓嶉噴鏀�
+     */
+    @ApiModelProperty(value= "鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀剧┛姊溅锛岄粯璁や笉閲婃斁  1: 閲婃斁  0: 涓嶉噴鏀�")
+    private Integer releaseShuttle;
+
+    /**
      * 浠诲姟绫诲瀷
      */
     @ApiModelProperty(value= "浠诲姟绫诲瀷")
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index 059562b..936f22f 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -539,6 +539,21 @@
                         MotionCtgType.SHUTTLE_PALLET_DOWN
                 ));
 
+                // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅
+                motionList.addAll(kernelService.shuttleMove(
+                        MotionDto.build((dto -> {
+                            dto.setShuttleNo(shuttleDevice.getId().intValue());
+                            dto.setLocNo(standbyLocNoFrom);
+                        })),
+                        MotionDto.build((dto -> {
+                            dto.setShuttleNo(shuttleDevice.getId().intValue());
+                            dto.setLocNo(shuttleFromLiftStandbyLoc);
+                            dto.setSync(0);//寮傛鎵ц
+                            dto.setReleaseShuttle(1);//鎵ц瀹屾垚鍚庨噴鏀惧皬杞�
+                        })),
+                        MotionCtgType.SHUTTLE_MOVE
+                ));
+
                 // 鎻愬崌鏈鸿浇璐хЩ鍔�
                 motionList.addAll(kernelService.liftMoveGoods(
                         MotionDto.build((dto -> {
@@ -551,22 +566,8 @@
                             dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞�
                             dto.setStaNo(31001);//鍑哄簱绔欑偣
                             dto.setDevpNo(basConveyorStaOrigin.getConveyorDeviceId().intValue());
-                            dto.setSync(0);//寮傛鎵ц
                             dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満
                         }))
-                ));
-
-                // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅
-                motionList.addAll(kernelService.shuttleMove(
-                        MotionDto.build((dto -> {
-                            dto.setShuttleNo(shuttleDevice.getId().intValue());
-                            dto.setLocNo(standbyLocNoFrom);
-                        })),
-                        MotionDto.build((dto -> {
-                            dto.setShuttleNo(shuttleDevice.getId().intValue());
-                            dto.setLocNo(shuttleFromLiftStandbyLoc);
-                        })),
-                        MotionCtgType.SHUTTLE_MOVE
                 ));
 
                 // 杈撻�佺嚎杩愯緭鑷冲嚭搴撳彛
@@ -747,6 +748,21 @@
                         MotionCtgType.SHUTTLE_PALLET_DOWN
                 ));
 
+                // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅
+                motionList.addAll(kernelService.shuttleMove(
+                        MotionDto.build((dto -> {
+                            dto.setShuttleNo(shuttleDevice.getId().intValue());
+                            dto.setLocNo(standbyLocNoFrom);
+                        })),
+                        MotionDto.build((dto -> {
+                            dto.setShuttleNo(shuttleDevice.getId().intValue());
+                            dto.setLocNo(shuttleFromLiftStandbyLoc);
+                            dto.setSync(0);//寮傛鎵ц
+                            dto.setReleaseShuttle(1);//鎵ц瀹屾垚鍚庨噴鏀剧┛姊溅
+                        })),
+                        MotionCtgType.SHUTTLE_MOVE
+                ));
+
                 // 鎻愬崌鏈鸿浇璐хЩ鍔�
                 motionList.addAll(kernelService.liftMoveGoods(
                         MotionDto.build((dto -> {
@@ -758,23 +774,9 @@
                             dto.setLiftNo(transferLiftDevice.getId().intValue());
                             dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞�
                             dto.setStaNo(31001);//鍑哄簱绔欑偣
-                            dto.setSync(0);//寮傛鎵ц
                             dto.setDevpNo(basConveyorStaOrigin.getConveyorDeviceId().intValue());
                             dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満
                         }))
-                ));
-
-                // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅
-                motionList.addAll(kernelService.shuttleMove(
-                        MotionDto.build((dto -> {
-                            dto.setShuttleNo(shuttleDevice.getId().intValue());
-                            dto.setLocNo(standbyLocNoFrom);
-                        })),
-                        MotionDto.build((dto -> {
-                            dto.setShuttleNo(shuttleDevice.getId().intValue());
-                            dto.setLocNo(shuttleFromLiftStandbyLoc);
-                        })),
-                        MotionCtgType.SHUTTLE_MOVE
                 ));
 
                 // 杈撻�佺嚎杩愯緭鑷冲嚭搴撳彛
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
index 3b3b015..1cb5283 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
@@ -302,6 +302,14 @@
                     break;
             }
 
+            if (target.getSync() != null) {
+                motion.setSync(target.getSync());
+            }
+
+            if (target.getReleaseShuttle() != null) {
+                motion.setReleaseShuttle(target.getReleaseShuttle());
+            }
+
         }));
 
         return motionList;
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index 54f1ab3..d0725bc 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -9,6 +9,7 @@
 import com.zy.asrs.wcs.core.action.ShuttleAction;
 import com.zy.asrs.wcs.core.entity.BasShuttle;
 import com.zy.asrs.wcs.core.entity.Loc;
+import com.zy.asrs.wcs.core.entity.Task;
 import com.zy.asrs.wcs.core.model.NavigateNode;
 import com.zy.asrs.wcs.core.model.command.*;
 import com.zy.asrs.wcs.core.model.enums.*;
@@ -282,6 +283,11 @@
             return false;
         }
 
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, motion.getTaskNo()));
+        if (task == null) {
+            return false;
+        }
+
         LiftThread liftThread = null;
         LiftProtocol liftProtocol = null;
 
@@ -294,6 +300,15 @@
                 if (!shuttleProtocol.getCurrentLocNo().equals(motion.getTarget())) {
                     return false;
                 }
+
+                if (Optional.ofNullable(motion.getReleaseShuttle()).orElse(0) == 1) {//閲婃斁绌挎杞�
+                    task.setShuttleNo(0);
+                    task.setUpdateTime(new Date());
+                    if (!taskService.updateById(task)) {
+                        return false;
+                    }
+                }
+
                 break;
             case SHUTTLE_MOVE_TO_LIFT:
                 liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java
index 27f19dd..b8d5959 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java
@@ -8,6 +8,8 @@
 import com.zy.asrs.wcs.core.model.enums.LocStsType;
 import com.zy.asrs.wcs.core.model.enums.TaskStsType;
 import com.zy.asrs.wcs.core.service.*;
+import com.zy.asrs.wcs.system.entity.Dict;
+import com.zy.asrs.wcs.system.service.DictService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -30,6 +32,8 @@
     private MotionLogService motionLogService;
     @Autowired
     private LocService locService;
+    @Autowired
+    private DictService dictService;
 
     @Scheduled(cron = "0/1 * * * * ? ")
     @Transactional
@@ -41,14 +45,18 @@
         taskSts.add(TaskStsType.COMPLETE_MOVE.sts);
         taskSts.add(TaskStsType.COMPLETE_MANUAL.sts);
 
+        Dict reportWms = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "reportWms"));
+
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
                 .eq(Task::getStatus, 1)
                 .in(Task::getTaskSts, taskSts));
         for (Task task : tasks) {
-            if(task.getTaskSts().equals(TaskStsType.COMPLETE_INBOUND.sts) || task.getTaskSts().equals(TaskStsType.COMPLETE_OUTBOUND.sts)){
-                boolean httpRequest = doHttpRequest(task, "127.0.0.1:8080", "/wms/open/asrs//wrkMast/finish/v1");
-                if (!httpRequest) {
-                    return;
+            if (reportWms != null && reportWms.getFlag().equals("true")) {
+                if(task.getTaskSts().equals(TaskStsType.COMPLETE_INBOUND.sts) || task.getTaskSts().equals(TaskStsType.COMPLETE_OUTBOUND.sts)){
+                    boolean httpRequest = doHttpRequest(task, "127.0.0.1:8080", "/wms/open/asrs//wrkMast/finish/v1");
+                    if (!httpRequest) {
+                        return;
+                    }
                 }
             }
 
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
index b93fe2d..d99c109 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
@@ -57,6 +57,8 @@
 
     boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable);
 
+    boolean requestWaiting();
+
     //***************鑾峰彇鍛戒护*****************
 
     ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes);//鑾峰彇绉诲姩鍛戒护
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
index 854bed1..705c89c 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
@@ -173,6 +173,7 @@
         BasShuttle basShuttle = shuttleService.getOne(new LambdaQueryWrapper<BasShuttle>()
                 .eq(BasShuttle::getShuttleNo, device.getDeviceNo())
                 .eq(BasShuttle::getHostId, device.getHostId()));
+
         if (basShuttle == null) {
             basShuttle = new BasShuttle();
             //鍥涘悜绌挎杞﹀彿
@@ -182,6 +183,10 @@
             basShuttle.setHostId(device.getHostId());
             basShuttle.setDeviceId(device.getId().intValue());
             shuttleService.save(basShuttle);
+        }else {
+            Integer shuttleId = basShuttle.getId();
+            basShuttle = new BasShuttle();
+            basShuttle.setId(shuttleId);
         }
         //浠诲姟鍙�
         basShuttle.setTaskNo(shuttleProtocol.getTaskNo().intValue());
@@ -791,6 +796,15 @@
     }
 
     @Override
+    public boolean requestWaiting() {
+        if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) {
+            this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
     public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) {
         NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
         NyShuttleHttpCommand httpStandard = getHttpStandard(Integer.parseInt(device.getDeviceNo()), taskNo);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
index 65ca812..cfd9ac3 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -690,6 +690,15 @@
     }
 
     @Override
+    public boolean requestWaiting() {
+        if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) {
+            this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
     public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "runOrder");

--
Gitblit v1.9.1