From 4d8bb57c9eb3fda399fd7b9e9de7ecbf754244f7 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期一, 20 五月 2024 08:53:26 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LocStsType.java               |   11 ++-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java                |   52 +++++++++--------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java      |    2 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java                 |   46 ++++++++++-----
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java                          |    1 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java              |    1 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java |   12 ++-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java                      |    4 +
 8 files changed, 79 insertions(+), 50 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
index fc14bc2..1f1c557 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
@@ -391,10 +391,28 @@
                 return;
             }
 
+            //鍒ゆ柇x杞磋揣浣嶆槸鍚︽斁婊�
+            boolean flag = true;
+            for (Loc loc : locService.list(new LambdaQueryWrapper<Loc>()
+                    .eq(Loc::getHostId, device.getHostId())
+                    .eq(Loc::getRow, xCurrent)
+                    .ge(Loc::getBay, shuttleProtocol.getYStart())
+                    .le(Loc::getBay, shuttleProtocol.getYTarget()))) {
+                if (loc.getLocSts() != LocStsType.F.val()) {
+                    flag = false;//鏈弧
+                    break;
+                }
+            }
+            if (flag) {
+                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+                return;
+            }
+
             //鎼滅储鏈夎揣搴撲綅
             List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>()
                     .eq(Loc::getLocSts, LocStsType.F.val())
                     .eq(Loc::getHostId, device.getHostId())
+                    .notIn(Loc::getRow, xCurrent)
                     .eq(Loc::getStatus, 1));
             if (list.isEmpty()) {
                 return;
@@ -402,30 +420,28 @@
 
             Loc start = list.get(0);
 
-            Integer yCurrent = shuttleProtocol.getYCurrent();
-            String locNo = Utils.getLocNo(xCurrent, yCurrent, lev);
-            Loc target = locService.getOne(new LambdaQueryWrapper<Loc>()
-                    .eq(Loc::getLocNo, locNo)
+            List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>()
                     .eq(Loc::getHostId, device.getHostId())
-                    .eq(Loc::getStatus, 1));
-            if (target == null) {
-                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+                    .eq(Loc::getStatus, 1)
+                    .eq(Loc::getLocSts, LocStsType.O.val())
+                    .eq(Loc::getRow, xCurrent)
+                    .orderByDesc(Loc::getBay)
+                    .orderByAsc(Loc::getRow));
+            if (locList.isEmpty()) {
                 return;
             }
 
-            if (target.getLocSts() != LocStsType.O.val()) {
-                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+            Loc target = locList.get(0);
+            if (target == null) {
                 return;
             }
 
             //璋冨害鍘荤洰鏍囦綅缃�
-            if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) {
-                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃
-            } else {
+            if (!shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) {
                 Task task = shuttleDispatcher.generateManuaTakeMoveTask(device, start.getLocNo(), target.getLocNo());
-                if(task != null) {//璋冨害鎴愬姛
-                    shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
-                }
+//                if(task != null) {//璋冨害鎴愬姛
+//                    shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+//                }
             }
         }
     }
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 7b00292..39d86d7 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
@@ -193,7 +193,7 @@
         task.setMemo("manual");
         task.setShuttleNo(param.getShuttleNo());
 
-        if (param.getShuttleTaskMode().equals("taskMove")) {
+        if (param.getShuttleTaskMode().equals("takeMove")) {
             task.setRecordLoc("Y");//璁板綍搴撳瓨淇℃伅
         }
         boolean result = taskService.save(task);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java
index f7591fb..4c1da09 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java
@@ -190,7 +190,6 @@
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
     @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
-    @TableLogic
     private Integer deleted;
 
     /**
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 493ca83..1bcdc9e 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
@@ -992,18 +992,20 @@
         // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鐩爣灞�
         if (Utils.getLev(shuttleLocNo) == Utils.getLev(locNo)) {
 
-            // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅
-            motionList.addAll(kernelService.shuttleMove(
-                    MotionDto.build((dto -> {
-                        dto.setShuttleNo(shuttleDevice.getId().intValue());
-                        dto.setLocNo(shuttleLocNo);
-                    })),
-                    MotionDto.build((dto -> {
-                        dto.setShuttleNo(shuttleDevice.getId().intValue());
-                        dto.setLocNo(locNo);
-                    })),
-                    MotionCtgType.SHUTTLE_MOVE
-            ));
+            if (!shuttleLocNo.equals(locNo)) {//灏忚溅涓嶅湪鐩爣搴撲綅
+                // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅
+                motionList.addAll(kernelService.shuttleMove(
+                        MotionDto.build((dto -> {
+                            dto.setShuttleNo(shuttleDevice.getId().intValue());
+                            dto.setLocNo(shuttleLocNo);
+                        })),
+                        MotionDto.build((dto -> {
+                            dto.setShuttleNo(shuttleDevice.getId().intValue());
+                            dto.setLocNo(locNo);
+                        })),
+                        MotionCtgType.SHUTTLE_MOVE
+                ));
+            }
 
         } else {
             //灏忚溅璺ㄥ眰
@@ -1198,18 +1200,20 @@
             // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鐩爣灞�
             if (Utils.getLev(shuttleLocNo) == Utils.getLev(targetLoc)) {
 
-                // 绌挎杞﹁蛋琛岃嚦婧愬簱浣�
-                motionList.addAll(kernelService.shuttleMove(
-                        MotionDto.build((dto -> {
-                            dto.setShuttleNo(device.getId().intValue());
-                            dto.setLocNo(shuttleLocNo);
-                        })),
-                        MotionDto.build((dto -> {
-                            dto.setShuttleNo(device.getId().intValue());
-                            dto.setLocNo(sourceLoc);
-                        })),
-                        MotionCtgType.SHUTTLE_MOVE
-                ));
+                if (!shuttleLocNo.equals(sourceLoc)) {//灏忚溅涓嶅湪鐩爣搴撲綅
+                    // 绌挎杞﹁蛋琛岃嚦婧愬簱浣�
+                    motionList.addAll(kernelService.shuttleMove(
+                            MotionDto.build((dto -> {
+                                dto.setShuttleNo(device.getId().intValue());
+                                dto.setLocNo(shuttleLocNo);
+                            })),
+                            MotionDto.build((dto -> {
+                                dto.setShuttleNo(device.getId().intValue());
+                                dto.setLocNo(sourceLoc);
+                            })),
+                            MotionCtgType.SHUTTLE_MOVE
+                    ));
+                }
 
                 //鎵樼洏椤跺崌
                 motionList.add(Motion.build(motion -> {
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 a8913bd..62e16cb 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
@@ -285,11 +285,13 @@
 
         //鍏呯數浠诲姟
         if (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl())).equals(MotionCtgType.SHUTTLE_CHARGE_ON)) {
-            // 澶嶄綅绌挎杞�
-            shuttleThread.setSyncTaskNo(0);
-            shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-            shuttleThread.setPakMk(true);
-            return true;
+            if (shuttleProtocol.getHasCharge() || shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.CHARGING_WAITING)) {
+                // 澶嶄綅绌挎杞�
+                shuttleThread.setSyncTaskNo(0);
+                shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+                shuttleThread.setPakMk(true);
+                return true;
+            }
         }
 
         if (!shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.WAITING)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LocStsType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LocStsType.java
index 09412a5..6eb1116 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LocStsType.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LocStsType.java
@@ -7,10 +7,13 @@
 
 public enum LocStsType {
 
-    D,
-    F,
-    O,
-    X,
+    D,//绌烘澘
+    F,//鍦ㄥ簱
+    O,//绌哄簱
+    X,//绂佺敤
+    E,//涓嶅彲鏀捐揣閫氶亾
+    W,//姣嶈建閬�
+    C,//鍏呯數妗�
     ;
 
     LocStsType() {
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 cf5f724..0b065ac 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
@@ -55,6 +55,10 @@
     //鏇存柊搴撳瓨淇℃伅
     @Transactional
     public void updateRecordLoc(Task task) {
+        if (task.getRecordLoc() == null) {
+            return;
+        }
+
         if (task.getRecordLoc().equals("Y")) {//璁板綍搴撳瓨淇℃伅
             //婧愬簱浣� => 绌哄簱
             //鐩爣搴撲綅 => 鍦ㄥ簱
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
index 93b8596..991898e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -235,6 +235,7 @@
         task.setMemo("manual");
         task.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
         task.setRecordLoc("Y");//璁板綍搴撳瓨淇℃伅
+        task.setHostId(device.getHostId());
 
         // generate motion list
         List<Motion> motionList = analyzeService.generateShuttleManualMotion(task);

--
Gitblit v1.9.1