From 2f43bdfc075ca68ae0359e83d504fb04e4b74c2e Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 三月 2026 15:22:31 +0800
Subject: [PATCH] 空板自动出库定时任务

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 7ebc3ce..fc24fa7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -682,6 +682,11 @@
         String curLoc;
         if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
             curLoc = task.getTargLoc();
+        } else if (task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
+            curLoc = task.getTargLoc();
+            if (StringUtils.isBlank(curLoc)) {
+                return task;
+            }
         } else {
             curLoc = task.getOrgLoc();
         }
@@ -1984,9 +1989,30 @@
                     rcsApi != null ? rcsApi.getPort() : "null");
             return;
         }
-        
+        // 鍚屾枡绠卞彿瑙勫垯锛�101 浠诲姟鎵�鍦ㄦ枡绠卞彿涓嬭嫢宸插瓨鍦� 196/198/199/200 浠诲姟锛屽垯涓嶅悜 RCS 鍙戦�佽 101 浠诲姟锛�/api/open/bus/submit锛�
+        List<Integer> higherStatuses = Arrays.asList(TaskStsType.AWAIT.id, TaskStsType.COMPLETE_OUT.id, TaskStsType.WAVE_SEED.id, TaskStsType.UPDATED_OUT.id);
+        List<Task> higherTasks = this.list(new LambdaQueryWrapper<Task>()
+                .in(Task::getTaskStatus, higherStatuses)
+                .isNotNull(Task::getBarcode)
+                .ne(Task::getBarcode, ""));
+        Set<String> barcodesWithHigher = higherTasks.stream().map(Task::getBarcode).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
+        List<Task> toSend = tasks.stream()
+                .filter(t -> {
+                    if (TaskStsType.GENERATE_OUT.id.equals(t.getTaskStatus()) && StringUtils.isNotBlank(t.getBarcode()) && barcodesWithHigher.contains(t.getBarcode())) {
+                        log.debug("鍚屾枡绠卞彿{}涓嬪凡瀛樺湪196/198/199/200浠诲姟锛岃烦杩�101浠诲姟涓嬪彂锛歵askId={}", t.getBarcode(), t.getId());
+                        return false;
+                    }
+                    return true;
+                })
+                .collect(Collectors.toList());
+        if (toSend.isEmpty()) {
+            log.debug("杩囨护鍚庢棤寰呬笅鍙戜换鍔�");
+            return;
+        }
+        tasks = toSend;
+
         String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask;
-        
+
         for (Task task : tasks) {
             WcsTaskParams taskParams = new WcsTaskParams();
             List<TaskItemParam> items = new ArrayList<>();
@@ -2400,6 +2426,20 @@
         }
 
         List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
+        // 绌烘澘鍏ュ簱鏃犱换鍔℃槑缁嗭紝浠呮洿鏂板簱浣嶄负绌烘澘(D)銆佷换鍔$姸鎬佷负搴撳瓨鏇存柊瀹屾垚
+        if (TaskType.TASK_TYPE_EMPITY_IN.type.equals(task.getTaskType())) {
+            if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
+                    .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type)
+                    .set(Loc::getUpdateBy, loginUserId)
+                    .set(Loc::getUpdateTime, new Date()))) {
+                throw new CoolException("绌烘澘鍏ュ簱搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+            if (!this.update(new LambdaUpdateWrapper<Task>().eq(Task::getId, task.getId()).set(Task::getTaskStatus, TaskStsType.UPDATED_IN.id))) {
+                throw new CoolException("绌烘澘鍏ュ簱浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+            reportInOutResultToCloud(task, loc, Collections.emptyList(), null, true);
+            return;
+        }
         if (taskItems.isEmpty()) {
             throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
         }

--
Gitblit v1.9.1