From b0b5deb5825684bca5b3fa7c2ab59f60ce0e799f Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期二, 07 四月 2026 16:36:57 +0800
Subject: [PATCH] fix: 修复移库任务号重复问题,优化策略优先处理正常任务,避免任务堵塞

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs |   42 ++++++++++++++++++++++++++++++++++++++----
 1 files changed, 38 insertions(+), 4 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
index dd49d44..b2f563c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
@@ -59,6 +59,11 @@
                 int LocationType = 1;
                 string Roadway = "0";
 
+                if(mES_In.startPosition == "1206")
+                {
+                    mES_In.startPosition = "1205";
+                }
+
                 string SourceAddress = mES_In.startPosition;
                 string TargetAddress = "";
                 string CurrentAddress = mES_In.startPosition;
@@ -76,9 +81,38 @@
                     {
                         LocationType = 3;
                     }
-                    var a = BaseDal.QueryData(x => x.WarehouseId == WarehouseId && x.PalletType == LocationType.ToString());
-                    var taskCount = BaseDal.QueryData(x => x.WarehouseId == WarehouseId && x.PalletType == LocationType.ToString()).Count();
-                    Roadway = _locationInfoService.AccessingTunnel(dt_Warehouse.WarehouseId, LocationType, taskCount);
+
+                    // 鏌ヨ姣忎釜宸烽亾鍙风殑浠诲姟鏁伴噺
+                    List<RoadwayTaskCount> roadwayTaskCounts;
+
+                    // 鏍规嵁 WarehouseId 鑾峰彇瀵瑰簲鐨勫贩閬撳垪琛�
+                    var roadwayList = WarehouseId == 1
+                        ? new[] { "1", "2" }
+                        : new[] { "3", "4", "5" };
+
+                    // 鏌ヨ鏁版嵁搴撲腑鐨勫疄闄呮暟鎹�
+                    var queryData = BaseDal.QueryData(x => x.WarehouseId == WarehouseId && x.PalletType == (LocationType.ToString() == "3" ? "1" : LocationType.ToString()))
+                        .GroupBy(x => x.Roadway)
+                        .Select(g => new RoadwayTaskCount
+                        {
+                            Roadway = g.Key,
+                            TaskCount = g.Count()
+                        })
+                        .ToList();
+
+                    // 鍚堝苟鎵�鏈夐渶瑕佺殑宸烽亾锛岀‘淇濇瘡涓贩閬撻兘鏈夊搴旂殑 TaskCount
+                    roadwayTaskCounts = roadwayList
+                        .Select(roadway => new RoadwayTaskCount
+                        {
+                            Roadway = roadway,
+                            TaskCount = queryData.FirstOrDefault(x => x.Roadway == roadway)?.TaskCount ?? 0
+                        })
+                        .ToList();
+
+                    //var taskCount = BaseDal.QueryData(x => x.WarehouseId == WarehouseId && x.PalletType == LocationType.ToString()).Count();
+
+                    Roadway = _locationInfoService.AccessingTunnel(dt_Warehouse.WarehouseId, LocationType, roadwayTaskCounts);
+
                     //if (Roadway == "0") return apiResponse.Error($"WMS鏈兘鏌ヨ閬撳搴斿贩閬撶紪鍙凤紝浠撳簱缂栫爜锛歿mES_In.warehouseNo}");
                     if (Roadway == "0") return apiResponse.Error($"褰撳墠浠撳簱宸茬粡婊★細{mES_In.warehouseNo}");
                     //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
@@ -115,7 +149,6 @@
                 task.Grade = 1;
                 task.Creater = "MES";
                 task.CreateDate = DateTime.Now;
-
                 int taskid=BaseDal.AddData(task);
 
                 //鍒涘缓浠诲姟鍚庯紝鍒ゆ柇鏄惁鏄骇绾垮洖搴撶殑浠诲姟
@@ -139,6 +172,7 @@
                     {
                         Dt_Task deltaskin = BaseDal.QueryData(x => x.TaskId == taskid).FirstOrDefault();
                         deltaskin.TaskStatus = (int)InTaskStatusEnum.PLC_InExecuting;
+                        deltaskin.Dispatchertime = DateTime.Now;
                         string Result = MesInTaskStatusEnum.Start.GetDescription();
                         BaseDal.UpdateData(deltaskin);
                         //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�

--
Gitblit v1.9.3