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 |   49 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 45 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 ffa09ea..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,8 +81,40 @@
                     {
                         LocationType = 3;
                     }
-                    Roadway = _locationInfoService.AccessingTunnel(dt_Warehouse.WarehouseId, LocationType);
-                    if (Roadway == "0") return apiResponse.Error($"WMS鏈兘鏌ヨ閬撳搴斿贩閬撶紪鍙凤紝浠撳簱缂栫爜锛歿mES_In.warehouseNo}");
+
+                    // 鏌ヨ姣忎釜宸烽亾鍙风殑浠诲姟鏁伴噺
+                    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绔欏彴淇℃伅
                     Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(Roadway);
                     NextAddress = _Roadwayinfo.InStationCode;
@@ -112,7 +149,6 @@
                 task.Grade = 1;
                 task.Creater = "MES";
                 task.CreateDate = DateTime.Now;
-
                 int taskid=BaseDal.AddData(task);
 
                 //鍒涘缓浠诲姟鍚庯紝鍒ゆ柇鏄惁鏄骇绾垮洖搴撶殑浠诲姟
@@ -136,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);
                         //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
@@ -360,7 +397,11 @@
             {
                 if (string.IsNullOrWhiteSpace(mES_In.transNo)) return apiResponse.Error("鍗曟嵁缂栧彿涓嶈兘涓虹┖");
                 Dt_Task dt_Task = BaseDal.QueryData(x => x.TaskNum == mES_In.transNo).FirstOrDefault();
-                if (dt_Task == null) return apiResponse.Error($"WMS鏈兘鏌ユ壘閬撳搴斿崟鎹换鍔★紝鏉$爜锛歿mES_In.transNo}");
+                if (dt_Task == null) {
+                    WriteLog.Write_Log("MES_浠诲姟鍙栨秷鎺ュ彛", $"浠诲姟鍙栨秷鎺ュ彛", "鎴愬姛", $"鍗曟嵁缂栧彿锛歿mES_In.transNo}锛屾敞鎰忥紒锛乄MS鏈兘鏌ユ壘閬撳搴斿崟鎹换鍔�");
+                    return apiResponse.OK();
+                    //return apiResponse.Error($"WMS鏈兘鏌ユ壘閬撳搴斿崟鎹换鍔★紝鏉$爜锛歿mES_In.transNo}");
+                } 
                 if(dt_Task.TaskStatus== (int)InTaskStatusEnum.InNew)
                 {
                     BaseDal.DeleteData(dt_Task);

--
Gitblit v1.9.3