From ad5fef776eb9d66a0fcfc2ddf89698c5642e0eec Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期五, 06 三月 2026 08:36:24 +0800
Subject: [PATCH] 增加一个定时任务。如果拣货出库过程中,相同料箱号,存在(199 ,200)的任务 并且同时存在 101,196的任务 则101和196的任务会 自动变成199
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 371527f..9368e62 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -286,6 +286,28 @@
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 = taskService.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());
+ final Set<String> skipBarcodes = barcodesWithHigher;
+ List<Task> toPublish = tasks.stream()
+ .filter(t -> {
+ if (TaskStsType.GENERATE_OUT.id.equals(t.getTaskStatus()) && StringUtils.isNotBlank(t.getBarcode()) && skipBarcodes.contains(t.getBarcode())) {
+ log.debug("鍚屾枡绠卞彿{}涓嬪凡瀛樺湪196/198/199/200浠诲姟锛岃烦杩�101浠诲姟涓嬪彂锛歵askId={}", t.getBarcode(), t.getId());
+ return false;
+ }
+ return true;
+ })
+ .collect(Collectors.toList());
+ if (toPublish.isEmpty()) {
+ log.debug("杩囨护鍚庢棤寰呬笅鍙戜换鍔★紝瀹氭椂浠诲姟缁撴潫");
+ return;
+ }
+ tasks = toPublish;
// for (Task task : tasks) {
// /**绉诲簱涓嶅仛绔欑偣鎿嶄綔*/
// if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
@@ -304,6 +326,41 @@
}
/**
+ * 鎷h揣鍑哄簱鍚屾枡绠卞彿鐘舵�佸悓姝ワ細鐩稿悓鏂欑鍙蜂笅鑻ュ悓鏃跺瓨鍦�(199銆�200)浠诲姟涓�(101銆�196)浠诲姟锛屽垯灏� 101銆�196 鑷姩鏇存柊涓� 199銆�
+ * 鎵ц鍛ㄦ湡涓庝换鍔′笅鍙戜竴鑷达紝渚夸簬鍦ㄤ笅鍙戝墠瀹屾垚鐘舵�佸悓姝ャ��
+ */
+ @Scheduled(cron = "0/35 * * * * ? ")
+ @Transactional(rollbackFor = Exception.class)
+ public void syncBarcodeTaskStatusTo199() {
+ List<Integer> statuses = Arrays.asList(TaskStsType.GENERATE_OUT.id, TaskStsType.AWAIT.id, TaskStsType.WAVE_SEED.id, TaskStsType.UPDATED_OUT.id);
+ List<Task> candidates = taskService.list(new LambdaQueryWrapper<Task>()
+ .in(Task::getTaskStatus, statuses)
+ .isNotNull(Task::getBarcode)
+ .ne(Task::getBarcode, ""));
+ if (candidates.isEmpty()) return;
+ Map<String, Set<Integer>> statusByBarcode = new HashMap<>();
+ for (Task t : candidates) {
+ statusByBarcode.computeIfAbsent(t.getBarcode(), k -> new HashSet<>()).add(t.getTaskStatus());
+ }
+ List<Integer> to199 = Arrays.asList(TaskStsType.GENERATE_OUT.id, TaskStsType.AWAIT.id);
+ List<Integer> has199Or200 = Arrays.asList(TaskStsType.WAVE_SEED.id, TaskStsType.UPDATED_OUT.id);
+ for (Map.Entry<String, Set<Integer>> e : statusByBarcode.entrySet()) {
+ Set<Integer> set = e.getValue();
+ boolean hasHigh = set.stream().anyMatch(has199Or200::contains);
+ boolean hasLow = set.stream().anyMatch(to199::contains);
+ if (!hasHigh || !hasLow) continue;
+ String barcode = e.getKey();
+ boolean updated = taskService.update(new LambdaUpdateWrapper<Task>()
+ .eq(Task::getBarcode, barcode)
+ .in(Task::getTaskStatus, to199)
+ .set(Task::getTaskStatus, TaskStsType.WAVE_SEED.id));
+ if (updated) {
+ log.info("鍚屾枡绠卞彿{}涓嬪瓨鍦�199/200涓斿瓨鍦�101/196锛屽凡灏�101/196浠诲姟鑷姩鏇存柊涓�199", barcode);
+ }
+ }
+ }
+
+ /**
* @author Ryan
* @date 2025/9/4
* @description: 鍏夌數绔欑偣浠诲姟涓嬪彂
--
Gitblit v1.9.1