From e711c834aec2293c53b07efe53e81e3573c289b6 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 01 四月 2026 11:42:44 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java |   25 +++++++++++++++++--------
 1 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
index d73e80d..9b14e17 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
@@ -13,6 +13,7 @@
 import com.vincent.rsf.server.manager.service.impl.BasStationAreaServiceImpl;
 import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
 import com.vincent.rsf.server.manager.service.impl.DeviceSiteServiceImpl;
+import com.vincent.rsf.server.manager.utils.WarehouseLocationRetrievalUtil;
 import com.vincent.rsf.server.system.constant.GlobalConfigCode;
 import com.vincent.rsf.server.system.entity.*;
 import com.vincent.rsf.server.system.service.ConfigService;
@@ -132,9 +133,21 @@
                 Loc loc2 = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc()));
                 sou = loc2.getAreaId().toString();
             }
-            List<TaskPathTemplateMerge> taskPathTemplateMergeList = taskPathTemplateMergeService.list(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getSourceType, sou).eq(TaskPathTemplateMerge::getTargetType, end));
+            BasContainer containerByBarcode = new WarehouseLocationRetrievalUtil().getContainerByBarcode(task.getBarcode());
+            List<TaskPathTemplateMerge> taskPathTemplateMergeList = taskPathTemplateMergeService.list(
+                    new LambdaQueryWrapper<TaskPathTemplateMerge>()
+                            .eq(TaskPathTemplateMerge::getSourceType, sou)
+                            .eq(TaskPathTemplateMerge::getTargetType, end)
+                            .apply("container_type != '[]'")  // 涓嶆槸绌烘暟缁�
+                            .apply("JSON_CONTAINS(container_type, {0}) = 1", containerByBarcode.getContainerType().toString())
+            );
             if (Objects.isNull(taskPathTemplateMergeList) || taskPathTemplateMergeList.isEmpty() || !endSign) {
-                List<TaskPathTemplateMerge> list = taskPathTemplateMergeService.list(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getStepSize,1));
+                List<TaskPathTemplateMerge> list = taskPathTemplateMergeService.list(
+                        new LambdaQueryWrapper<TaskPathTemplateMerge>()
+                                .eq(TaskPathTemplateMerge::getStepSize,1)
+                                .apply("container_type != '[]'")  // 涓嶆槸绌烘暟缁�
+                                .apply("JSON_CONTAINS(container_type, {0}) = 1", containerByBarcode.getContainerType().toString())
+                );
                 if (!Cools.isEmpty(list)) {
                     List<String[]> stationList = new ArrayList<>();
                     list.forEach(taskPathTemplate -> {
@@ -196,11 +209,8 @@
                                     if (!siteListRoute.isEmpty()) {
                                         for (String[] siteArray : siteListRoute) {
                                             //鍑哄簱璺緞鎺掓煡
-                                            DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
-                                                    .eq(DeviceSite::getSite, siteArray[1])
-                                                    .eq(!Objects.isNull(loc.getChannel()),DeviceSite::getChannel, loc.getChannel())
-                                                    .eq(DeviceSite::getType, task.getTaskType()).last("limit 1"),false);
-                                            if (!Objects.isNull(deviceSite)) {
+                                            boolean available = new WarehouseLocationRetrievalUtil().queryPathIsItAvailableOutArea(loc.getAreaId().toString(), siteArray[1], loc.getBarcode(),"out");
+                                            if (available) {
                                                 BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                                                         .eq(BasStation::getStationName, siteArray[1])
                                                         .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
@@ -218,7 +228,6 @@
                                 }
                             }
                         }
-
                     }
 //                    System.out.println("浠诲姟锛�"+task.getTaskCode()+"鏌ヨ姝ュ簭涓猴細"+longs);
                 }

--
Gitblit v1.9.1