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 |   68 ++++++++++++++++++++--------------
 1 files changed, 40 insertions(+), 28 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 e3a1518..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;
@@ -29,6 +30,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @author Munch D. Luffy
@@ -131,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 -> {
@@ -163,45 +177,49 @@
                             //娌℃湁璺緞 杩涘叆搴撳尯绛涢�夌珯鐐�
                             List<String> targSiteArea = task.getTargSiteArea();
                             //鎻愬彇鍑烘墍鏈夌珯鐐�
-                            List<String> siteList = new ArrayList<>();
+//                            List<String> siteList = new ArrayList<>();
+                            ConcurrentHashMap<String,List<String>> siteList = new ConcurrentHashMap<>();
                             //绛涢�夊嚭瀛樺湪璺緞鐨勭珯鐐�
-                            List<String> siteListRoute = new ArrayList<>();
+                            List<String[]> siteListRoute = new ArrayList<>();
                             //绛涢�夊彲鏇挎崲閫夐」
                             List<String> siteListUp = new ArrayList<>();
                             if (targSiteArea != null && !targSiteArea.isEmpty()) {
                                 for (String areaId : targSiteArea) {
                                     BasStationArea basStationArea = basStationAreaService.getById(Long.parseLong(areaId));
-                                    if (basStationArea == null || basStationArea.getStationAlias() == null || basStationArea.getStationAlias().isEmpty()) {
+                                    if (basStationArea == null || basStationArea.getStationAliasStaNo() == null || basStationArea.getStationAliasStaNo().isEmpty()) {
                                         continue;
                                     }
-                                    siteList.addAll(basStationArea.getStationAlias());
+                                    siteList.put(basStationArea.getStationAreaId(), basStationArea.getStationAliasStaNo());
+//                                    siteList.addAll(basStationArea.getStationAlias());
                                 }
                                 if (!siteList.isEmpty()) {
                                     //鏌ヨ绔欑偣璺緞
-                                    for (String site : siteList) {
-                                        List<Long> routeGet = RouteWmsStepFlow.routeGet(stationList, sou, site);
-                                        if (routeGet!=null && !routeGet.isEmpty()){
-                                            siteListRoute.add(site);
+                                    for (ConcurrentHashMap.Entry<String, List<String>> entry : siteList.entrySet()) {
+                                        String stationAreaId = entry.getKey();          // 鑾峰彇String閿�
+                                        List<String> valueList = entry.getValue();  // 鑾峰彇瀵瑰簲鐨凩ist<String>
+                                        for (String value : valueList) {
+                                            List<Long> routeGet = RouteWmsStepFlow.routeGet(stationList, sou, value);
+                                            if (routeGet!=null && !routeGet.isEmpty()){
+                                                siteListRoute.add(new String[]{stationAreaId, value});
+                                            }
                                         }
                                     }
                                     Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc()));
                                     //鏌ヨ绔欑偣閰嶇疆
                                     if (!siteListRoute.isEmpty()) {
-                                        for (String site : siteListRoute) {
-                                            //鎷f枡鍑哄簱 -- 鐩樼偣鍑哄簱
-                                            DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
-                                                    .eq(DeviceSite::getSite, site)
-                                                    .eq(!Objects.isNull(loc.getChannel()),DeviceSite::getChannel, loc.getChannel())
-                                                    .eq(DeviceSite::getType, task.getTaskType()).last("limit 1"),false);
-                                            if (!Objects.isNull(deviceSite)) {
+                                        for (String[] siteArray : siteListRoute) {
+                                            //鍑哄簱璺緞鎺掓煡
+                                            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, site)
+                                                        .eq(BasStation::getStationName, siteArray[1])
                                                         .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                                                 );
                                                 if (Cools.isEmpty(basStation) || !basStation.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
                                                     continue;
                                                 }
-                                                task.setTargSite(site);
+                                                task.setTargSiteAreaNow(siteArray[0]);
+                                                task.setTargSite(siteArray[1]);
                                                 taskService.updateById(task);
                                                 break;
                                             }
@@ -210,7 +228,6 @@
                                 }
                             }
                         }
-
                     }
 //                    System.out.println("浠诲姟锛�"+task.getTaskCode()+"鏌ヨ姝ュ簭涓猴細"+longs);
                 }
@@ -226,7 +243,6 @@
 
 
     public boolean generateActualPath(Task task,TaskPathTemplateMerge taskPathTemplateMerge,boolean endSignUp) {
-        boolean actualPath = false;
         List<Integer> conditionExpression = taskPathTemplateMerge.getConditionExpression();
         Integer i = 0;//it椤哄簭
         Integer j = 0;//suT椤哄簭
@@ -341,17 +357,13 @@
             if (basStation == null){
                 return false;
             }
-            if (!basStation.getType().equals(0)){
+            if (!basStation.getType().equals(0) && !task.getTaskType().equals(TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)){
                 basStation.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
+                basStation.setBarcode(task.getBarcode());
                 basStationService.updateById(basStation);
             }
         }
-
-
-
         taskService.updateById(task);
-        return actualPath;
+        return true;
     }
-
-
 }

--
Gitblit v1.9.1