From 024504a3933e8f2f86e80383e61fa574524a0d28 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 三月 2026 16:39:52 +0800
Subject: [PATCH]  logo修改 +入库完成校验

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/MaterialAutoSchedules.java |   61 +++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 2 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/MaterialAutoSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/MaterialAutoSchedules.java
index 8ed7634..48ae660 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/MaterialAutoSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/MaterialAutoSchedules.java
@@ -3,11 +3,14 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
 import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams;
 import com.vincent.rsf.server.manager.controller.params.PakinItem;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
 import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.common.constant.Constants;
 import com.vincent.rsf.server.manager.enums.AsnExceStatus;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.manager.enums.OrderType;
 import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.manager.enums.TaskStsType;
@@ -31,10 +34,11 @@
 import java.util.stream.Collectors;
 
 /**
- * 鎸囧畾鐗╂枡鑷姩鍖栧畾鏃朵换鍔★細鍙厤缃墿鏂欑紪鐮佸悗锛�
+ * 鎸囧畾鐗╂枡/绌烘澘鑷姩鍖栧畾鏃朵换鍔★細鍙厤缃悗
  * 1锛夋湁搴撳瓨鏃惰嚜鍔ㄧ敓鎴愬叏鐗堝嚭搴撳崟锛�
  * 2锛夎鐗╂枡鍑哄簱鍗曡嚜鍔ㄤ笅鍙戜换鍔★紱
- * 3锛塕CS 鍏ュ簱閫氱煡鏃讹紙鍙�夛級鑷姩缁勬墭锛屾暟閲忓彲閰嶇疆銆�
+ * 3锛塕CS 鍏ュ簱閫氱煡鏃讹紙鍙�夛級鑷姩缁勬墭锛屾暟閲忓彲閰嶇疆锛�
+ * 4锛夌┖鏉�(D)搴撲綅瀹氭椂鑷姩鐢熸垚绌烘澘鍑哄簱浠诲姟骞朵笅鍙� RCS锛圓UTO_EMPTY_OUT_ENABLED锛夈��
  */
 @Slf4j
 @Component
@@ -229,6 +233,59 @@
     }
 
     /**
+     * 瀹氭椂浠诲姟锛氱┖鏉垮簱瀛樿嚜鍔ㄥ嚭搴擄紙姣� 2 鍒嗛挓锛�
+     * 閰嶇疆锛欰UTO_EMPTY_OUT_ENABLED=true 鏃讹紝鎵弿绌烘澘(D)搴撲綅锛岀敓鎴愮┖鏉垮嚭搴撲换鍔″苟涓嬪彂 RCS锛屾祦绋嬩笌 AUTO_FULL_OUT 瀵瑰簲瀹氭椂浠诲姟涓�鑷淬��
+     */
+    @Scheduled(cron = "0 0/2 * * * ?")
+    @Transactional(rollbackFor = Exception.class)
+    public void autoEmptyOutTask() {
+        Config enabledConfig = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_EMPTY_OUT_ENABLED));
+        if (enabledConfig == null || !Boolean.parseBoolean(enabledConfig.getVal())) {
+            return;
+        }
+        List<Loc> emptyLocs = locService.list(new LambdaQueryWrapper<Loc>()
+                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type));
+        if (emptyLocs.isEmpty()) {
+            return;
+        }
+        List<Task> existingEmptyOut = taskService.list(new LambdaQueryWrapper<Task>()
+                .eq(Task::getTaskType, TaskType.TASK_TYPE_EMPITY_OUT.type)
+                .lt(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id));
+        Set<String> locCodesInProgress = existingEmptyOut.stream()
+                .map(Task::getOrgLoc).filter(Objects::nonNull).collect(Collectors.toSet());
+        List<Task> created = new ArrayList<>();
+        for (Loc loc : emptyLocs) {
+            if (locCodesInProgress.contains(loc.getCode())) {
+                continue;
+            }
+            try {
+                LocToTaskParams params = new LocToTaskParams();
+                params.setType(Constants.TASK_TYPE_OUT_STOCK_EMPTY)
+                        .setOrgLoc(loc.getCode())
+                        .setSiteNo(DEFAULT_SITE_NO);
+                Task task = locItemService.generateTaskEmpty(params, SYSTEM_USER_ID);
+                created.add(task);
+                locCodesInProgress.add(loc.getCode());
+            } catch (Exception e) {
+                log.warn("[鑷姩绌烘澘鍑哄簱] 搴撲綅 {} 鐢熸垚浠诲姟澶辫触: {}", loc.getCode(), e.getMessage());
+            }
+        }
+        if (!created.isEmpty()) {
+            List<Task> toPublish = created.stream()
+                    .filter(t -> TaskStsType.GENERATE_OUT.id.equals(t.getTaskStatus()))
+                    .collect(Collectors.toList());
+            if (!toPublish.isEmpty()) {
+                try {
+                    taskService.pubTaskToWcs(toPublish);
+                    log.info("[鑷姩绌烘澘鍑哄簱] 宸茬敓鎴愬苟涓嬪彂 {} 涓┖鏉垮嚭搴撲换鍔�", toPublish.size());
+                } catch (Exception e) {
+                    log.error("[鑷姩绌烘澘鍑哄簱] 涓嬪彂 RCS 澶辫触", e);
+                }
+            }
+        }
+    }
+
+    /**
      * 瀹氭椂浠诲姟锛氶厤缃墿鏂欏嚭搴撲换鍔″湪 RCS 鍥炶皟涓� 199锛堝緟纭锛夊悗鑷姩鎷h揣瀹屾垚锛屾棤闇� PDA 蹇�熸嫞璐х‘璁ゅ嵆鍙洿鏂板簱瀛樸��
      * 閰嶇疆锛欰UTO_FULL_OUT_MATNR_CODE锛堢墿鏂欑紪鐮侊紝閰嶇疆浜嗗垯瀵硅鐗╂枡鐢熸晥锛�
      */

--
Gitblit v1.9.1