From 7c6cdf5ddbedecceba6af05fc8d0163fba7ecc74 Mon Sep 17 00:00:00 2001
From: yiwenpeng <ywp303@163.com>
Date: Wed, 28 Aug 2024 11:41:36 +0800
Subject: [PATCH] feat:自动出库的出库逻辑由上一条单据尾状态等于拣货完成(任务全部出库完成)后,才执行下一条,改为所有单据状态为【已自动出库】或【自动执行中】的单据下的所有出库任务,大于等于到达拣选台后就可以执行下一条了。(限制仅限于单据下的立库任务)

---
 src/main/java/com/huaheng/api/wcs/controller/ArrivedNoticeController.java |  4 ++++
 src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java                 | 32 ++++++++++++++++++++++----------
 2 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/huaheng/api/wcs/controller/ArrivedNoticeController.java b/src/main/java/com/huaheng/api/wcs/controller/ArrivedNoticeController.java
index 9f87c87..6b6a24f 100644
--- a/src/main/java/com/huaheng/api/wcs/controller/ArrivedNoticeController.java
+++ b/src/main/java/com/huaheng/api/wcs/controller/ArrivedNoticeController.java
@@ -63,6 +63,10 @@ public class ArrivedNoticeController extends BaseController {
                 return AjaxResult.success("状态已经是到达站台了,不要重复更新");
             }
             taskHeader.setStatus(QuantityConstant.TASK_STATUS_ARRIVED_STATION);
+            taskDetailService.findByTaskId(Integer.valueOf(taskNo)).forEach(e -> {
+                e.setStatus(QuantityConstant.TASK_STATUS_ARRIVED_STATION);
+                taskDetailService.updateById(e);
+            });
         } else {
             return AjaxResult.error("没有找到任务taskNo:" + taskNo);
         }
diff --git a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
index 606a7b3..ec5f9b4 100644
--- a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
+++ b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
@@ -180,16 +180,7 @@ public class RyTask extends BaseController {
      * 自动出库,自动出库单据间隔从定时任务那边配置
      */
     public void autoShipment() {
-        //如果上一条出库单未完成,就不执行下一条
-        ShipmentHeader header = shipmentHeaderService.getOne(new LambdaQueryWrapper<ShipmentHeader>()
-                .eq(ShipmentHeader::getDeleted, 0)
-                .in(ShipmentHeader::getAutoShipmentStatus, 2, 3)
-                .last("ORDER BY requestedStartDate asc,id asc limit 1"));
-        if (header != null) {
-            if (header.getLastStatus() < QuantityConstant.SHIPMENT_HEADER_COMPLETED) {//尾状态小于拣货完成(出库单未完成),就不继续走了
-                return;
-            }
-        }
+
         //039一厂设备立库、042二厂设备立库优先出库,requestedStartDate升序排序,如果没有就按照created升序
         List<ShipmentHeader> shipmentHeaders = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
                 .eq(ShipmentHeader::getDeleted, 0)
@@ -201,6 +192,27 @@ public class RyTask extends BaseController {
             return;
         }
 
+
+        //如果有任务状态小于到达拣选台,就不继续走了
+        List<ShipmentHeader> shipmentHeaderList = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
+                .eq(ShipmentHeader::getDeleted, 0)
+                .ne(ShipmentHeader::getLastStatus, 500)
+                .in(ShipmentHeader::getAutoShipmentStatus, 2, 3)
+                .last("ORDER BY requestedStartDate asc,id asc"));
+
+        if (!shipmentHeaderList.isEmpty()) {
+            for (ShipmentHeader shipmentHeader : shipmentHeaderList) {
+                List<TaskDetail> list = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>()
+                        .lt(TaskDetail::getStatus, 50) //状态小于到达拣选台
+                        .eq(TaskDetail::getFlat, 0)
+                        .eq(TaskDetail::getBillCode, shipmentHeader.getCode()));
+                if (!list.isEmpty()) {
+                    return;
+                }
+            }
+        }
+
+
         // 查找039一厂设备立库或042二厂设备立库的出库单
         ShipmentHeader priorityHeader = shipmentHeaders.stream().filter(h -> "039".equals(h.getWarehouse()) || "042".equals(h.getWarehouse())).findFirst().orElse(null);
         if (priorityHeader == null) {
--
libgit2 0.22.2