From 2fd4e8060dae7473dfb1fd5f02596653cfad2013 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期五, 06 三月 2026 08:47:04 +0800
Subject: [PATCH] 先关闭追加订单的判断

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java |  111 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 67 insertions(+), 44 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
index 8b3ec26..2be0b04 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
@@ -58,7 +58,7 @@
      * 鑷姩鐢熸垚搴撲綅鏄庣粏
      */
     @Transactional(rollbackFor = Exception.class)
-    @Scheduled(cron = "0/25 * * * * ?")
+//    @Scheduled(cron = "0/25 * * * * ?")
     public void insertRandomMats() {
         List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type));
         for (Loc loc : list) {
@@ -96,45 +96,55 @@
 //    }
 
     /**
-     * @author Ryan
-     * @date 2025/9/1
-     * @description: 鑷姩瀹屾垚鐩樼偣鍔熻兘
-     * @version 1.0
+     * 鑷姩瀹屾垚鐩樼偣/鎷f枡锛氱洏鐐瑰嚭搴撻�愭潯澶勭悊锛涙嫞鏂欏嚭搴撴寜绠辩爜鍒嗙粍锛屽悓涓�绠辩爜涓嬪叏閮ㄤ换鍔℃嫞瀹屾墠鎵e噺骞剁敓鎴愭嫞鏂欏叆搴擄紙涓嶱DA纭閫昏緫涓�鑷达級銆�
      */
-    @Scheduled(cron = "0/25 * * * * ?")
+//    @Scheduled(cron = "0/25 * * * * ?")
     @Transactional(rollbackFor = Exception.class)
     public void autoCheckComplete() {
-        //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
                 .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type,
                         TaskType.TASK_TYPE_PICK_IN.type,
                         TaskType.TASK_TYPE_PICK_AGAIN_OUT.type,
                         TaskType.TASK_TYPE_CHECK_IN.type)));
 
-        if (!tasks.isEmpty()) {
-            tasks.forEach(task -> {
-                if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) {
-                    if (task.getTaskStatus().equals(TaskStsType.COMPLETE_IN.id)) {
-
-                    }
-                } else {
-                    if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
-                        if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
-                                .eq(BasStation::getStationName, task.getTargSite())
-                                .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
-                            log.error("绔欑偣鐘舵�佷慨鏀瑰畬鎴愬け璐�,褰撳墠浠诲姟鐘舵�侊細", task.getTaskStatus());
-//                                throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
-                        }
-                        try {
-                            taskService.pickOrCheckTask(task.getId(), task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) ? Constants.TASK_TYPE_OUT_CHECK : "");
-
-                        } catch (Exception e) {
-                            log.error("error====>", e);
-                        }
-                    }
-                }
-            });
+        if (tasks.isEmpty()) {
+            return;
         }
+        // 鎷f枡鍑哄簱锛氭寜绠辩爜鍒嗙粍锛屼粎褰撹绠辩爜涓嬫墍鏈変换鍔¢兘鎷e畬鎵嶅鐞嗭紙鎵e噺骞剁敓鎴愭嫞鏂欏叆搴撴垨搴撳瓨鎵e畬涓嶇敓鎴愶級
+        Map<String, List<Task>> pickOutByBarcode = tasks.stream()
+                .filter(t -> TaskType.TASK_TYPE_PICK_AGAIN_OUT.type.equals(t.getTaskType()) && TaskStsType.WAVE_SEED.id.equals(t.getTaskStatus()))
+                .collect(Collectors.groupingBy(t -> t.getBarcode() != null ? t.getBarcode() : ""));
+        for (Map.Entry<String, List<Task>> e : pickOutByBarcode.entrySet()) {
+            if (e.getKey().isEmpty()) continue;
+            List<Task> barcodeTasks = e.getValue();
+            List<Long> taskIds = barcodeTasks.stream().map(Task::getId).collect(Collectors.toList());
+            List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, taskIds));
+            boolean allPicked = items.stream().allMatch(ti ->
+                    ti.getQty() != null && ti.getAnfme() != null && ti.getQty().compareTo(ti.getAnfme()) >= 0);
+            if (!allPicked) continue;
+            for (Task task : barcodeTasks) {
+                try {
+                    taskService.pickOrCheckTask(task.getId(), "");
+                } catch (Exception ex) {
+                    log.error("autoCheckComplete 鎷f枡鍑哄簱 taskId={} error", task.getId(), ex);
+                }
+            }
+        }
+        // 鐩樼偣鍑哄簱锛氶�愭潯澶勭悊锛堜笉鎸夌鐮佽仛鍚堬級
+        tasks.stream()
+                .filter(t -> TaskType.TASK_TYPE_CHECK_OUT.type.equals(t.getTaskType()) && TaskStsType.WAVE_SEED.id.equals(t.getTaskStatus()))
+                .forEach(task -> {
+                    if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
+                            .eq(BasStation::getStationName, task.getTargSite())
+                            .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
+                        log.error("绔欑偣鐘舵�佷慨鏀瑰畬鎴愬け璐�,褰撳墠浠诲姟鐘舵�侊細", task.getTaskStatus());
+                    }
+                    try {
+                        taskService.pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK);
+                    } catch (Exception e) {
+                        log.error("autoCheckComplete 鐩樼偣鍑哄簱 taskId={} error", task.getId(), e);
+                    }
+                });
     }
 
 
@@ -168,27 +178,35 @@
         if (Cools.isEmpty(autoRunArea)) {
             return;
         }
+        List<Integer> array = new ArrayList<>();
+        List<String> list = new ArrayList<>();
         for (char c : autoRunArea.toCharArray()) {
             switch (c) {
                 case '1':
-                    this.autoRun(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST, StaGroupConstant.FAR_RIGHT_STA_ROW_LIST);
+                    array.addAll(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.FAR_RIGHT_STA_ROW_LIST);
                     break;
                 case '2':
-                    this.autoRun(LocGroupConstant.RIGHT_LOC_ROW_LIST, StaGroupConstant.RIGHT_STA_ROW_LIST);
+                    array.addAll(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.RIGHT_STA_ROW_LIST);
                     break;
                 case '3':
-                    this.autoRun(LocGroupConstant.MIDDLE_LOC_ROW_LIST, StaGroupConstant.MIDDLE_STA_ROW_LIST);
+                    array.addAll(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.MIDDLE_STA_ROW_LIST);
                     break;
                 case '4':
-                    this.autoRun(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST);
+                    array.addAll(LocGroupConstant.LEFT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.LEFT_STA_ROW_LIST);
                     break;
                 case '5':
-                    this.autoRun(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST);
+                    array.addAll(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.FAR_LEFT_STA_ROW_LIST);
                     break;
                 default:
                     break;
             }
         }
+        this.autoRun(array, list);
     }
 
     private void autoRun(List<Integer> locGroupList, List<String> staGroupList) {
@@ -290,31 +308,37 @@
         if (Cools.isEmpty(autoRunArea)) {
             return;
         }
+        List<Integer> array = new ArrayList<>();
+        List<String> list = new ArrayList<>();
         for (char c : autoRunArea.toCharArray()) {
             switch (c) {
                 case '1':
-                    xx(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+                    array.addAll(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.FAR_RIGHT_STA_ROW_LIST);
                     break;
                 case '2':
-                    xx(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+                    array.addAll(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.RIGHT_STA_ROW_LIST);
                     break;
                 case '3':
-                    xx(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+                    array.addAll(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.MIDDLE_STA_ROW_LIST);
                     break;
                 case '4':
-                    xx(LocGroupConstant.LEFT_LOC_ROW_LIST);
+                    array.addAll(LocGroupConstant.LEFT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.LEFT_STA_ROW_LIST);
                     break;
                 case '5':
-                    xx(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+                    array.addAll(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+                    list.addAll(StaGroupConstant.FAR_LEFT_STA_ROW_LIST);
                     break;
                 default:
                     break;
             }
         }
-
+        xx(array);
 
     }
-
 
     private void xx(List<Integer> locGroupList) {
         Integer startRow = Collections.min(locGroupList);
@@ -322,8 +346,7 @@
 
         String memo = "DEMO_LOC_" + startRow + "-" + endRow;
 
-
-        Integer maxThread = 40;
+        Integer maxThread = 30;
         Config confNum = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_MOVE_THEAD_MAX));
         if (!Objects.isNull(confNum)) {
             maxThread = Integer.valueOf(confNum.getVal());

--
Gitblit v1.9.1