From 9de6c7c6d835ba5161d64114d154bfc7676244a1 Mon Sep 17 00:00:00 2001
From: 陈勇 <竞男@ASUNA>
Date: 星期一, 06 四月 2026 12:44:43 +0800
Subject: [PATCH] 同步

---
 项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestInboundRoadWayNo.cs |   42 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 34 insertions(+), 8 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestInboundRoadWayNo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestInboundRoadWayNo.cs"
index bbb4868..d1f14f2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestInboundRoadWayNo.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestInboundRoadWayNo.cs"
@@ -6,6 +6,7 @@
 using System.Security.Cryptography;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common;
 using WIDESEA_Core;
 using WIDESEA_Core.Enums;
 using WIDESEA_DTO;
@@ -28,6 +29,16 @@
             WebResponseContent response = new WebResponseContent();
             try
             {
+                //濡備换鍔″凡瀛樺湪鍒� 杩斿洖姝や换鍔�
+                var checkTask = _taskRepository.QueryFirst(x => x.PalletCode == json.PalletCode && x.PVI == json.PVI);
+                if (checkTask != null)
+                {
+                    return response.OK("鐢宠鍏ュ簱鎴愬姛", data: checkTask);
+                }
+
+                var carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode);
+                if (carInfo == null) throw new Exception("鏈煡杞﹁韩淇℃伅,鏃犳硶鍏ュ簱");
+
                 //灞忚斀MES
                 if (json.Position == "EL01RB")
                 {
@@ -40,9 +51,7 @@
                     TZPassZZ(json);
                 }
 
-                var carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode);
-
-                if (carInfo == null) throw new Exception("鏈煡杞﹁韩淇℃伅,鏃犳硶鍏ュ簱");
+           
                 //{
                 //    Dt_CarBodyInfo _CarBodyInfo = new Dt_CarBodyInfo  //娴嬭瘯
                 //    {
@@ -63,27 +72,43 @@
                     roadWays = _roadWayRepository.QueryData(x => x.WirteCar == 2);
                 }
 
-                var maxGroup = _locationRepository.QueryData(x => (x.LocationType == carInfo.CarType || x.LocationType == 3) && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
+                //var locations = _locationRepository.QueryData(x => (x.LocationType == carInfo.CarType || x.LocationType == 3) && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable);
+
+                var maxGroup = _locationRepository.QueryData(x => x.LocationType == carInfo.CarType && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
                                 .GroupBy(x => x.RoadwayNo)
                                 .OrderByDescending(g => g.Count()) // 鏍规嵁姣忎釜缁勭殑鍏冪礌鏁伴噺鎺掑簭
                                 .ToList(); // 鍙栧嚭鏁伴噺鏈�澶氱殑缁�
 
+                if (maxGroup.Count == 0)
+                {
+                    maxGroup = _locationRepository.QueryData(x => x.LocationType == (int)BodyType.Empty && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
+                   .GroupBy(x => x.RoadwayNo)
+                   .OrderByDescending(g => g.Count()) // 鏍规嵁姣忎釜缁勭殑鍏冪礌鏁伴噺鎺掑簭
+                   .ToList(); // 鍙栧嚭鏁伴噺鏈�澶氱殑缁�
+                }
+
+                if (maxGroup.Count == 0) return response.Error(12, "鏃犲彲鐢ㄥ簱浣�");
+
                 Dictionary<string, int> result = new Dictionary<string, int>();
                 foreach (var item in maxGroup)
                 {
-                    var number = _taskRepository.QueryData(x => x.TargetAddress == item.Key).Count();
+                    var number = _taskRepository.QueryData(x => x.RoadwayNo == item.Key && x.CarType == carInfo.CarType && (x.TaskType == (int)TaskInboundTypeEnum.Inbound || x.TaskType == (int)TaskInboundTypeEnum.InTray)).Count();
+                    if (item.Count() - number <= 0)
+                    {
+                        continue;
+                    }
                     result.Add(item.Key, item.Count() - number);
                 }
 
                 string maxRoadwayNo = result.OrderByDescending(x => x.Value).FirstOrDefault().Key; // 鏁伴噺鏈�澶氱殑缁勭殑Key
 
-                var stationList = _stationManagerRepository.QueryData(x => x.RoadwayNo == maxRoadwayNo && x.stationArea == json.area && x.stationType == 1);
+                var stationList = _stationManagerRepository.QueryData(x => x.RoadwayNo == maxRoadwayNo && x.stationArea == json.area && x.stationType == 1 && x.stationStatus == "1");
 
                 Dt_StationManager station = null;
 
                 if (stationList.Count > 1)
                 {
-                    var task = _taskRepository.QueryData(x => x.Roadway == stationList.FirstOrDefault().Roadway).OrderByDescending(x => x.CreateDate).FirstOrDefault();
+                    var task = _taskRepository.QueryData(x => x.Roadway == stationList.FirstOrDefault().Roadway && x.TaskType == (int)TaskInboundTypeEnum.Inbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                     if (task != null) station = stationList.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != task.CurrentAddress).FirstOrDefault();
                     else station = stationList.FirstOrDefault();
                 }
@@ -114,7 +139,8 @@
                     TaskNum = _taskRepository.GetTaskNo().Result,
                     Creater = "Systeam",
                     PVI = json.PVI,
-
+                    CarType = carInfo.CarType,
+                    RoadwayNo = station.RoadwayNo
                 };
                 _unitOfWorkManage.BeginTran();
 

--
Gitblit v1.9.3