From ad16e8351b0ece14ac2c1672dea69b08ef079e88 Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期三, 15 一月 2025 18:19:03 +0800
Subject: [PATCH] 优化代码并更新配置文件

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs |   49 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 78d25a5..54cb5c1 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,4 +1,5 @@
-锘縰sing Mapster;
+锘縰sing Autofac.Core;
+using Mapster;
 using Masuit.Tools;
 using System.Text.RegularExpressions;
 using WIDESEA_Core.Const;
@@ -258,7 +259,7 @@
                         ParameterDesc = parameterInfo.Description,
                         ParameterResult  = "OK", //isNG.ToString(),
                         TargetValue = parameterInfo.TargetValue,
-                        LowerLomit = parameterInfo.LowerSpecificationsLimit,
+                        LowerLimit = parameterInfo.LowerSpecificationsLimit,
                         UpperLimit = parameterInfo.UpperSpecificationsLimit,
                         DefectCode = defectCode,
                         UOMCode = parameterInfo.UOMCode,
@@ -992,12 +993,19 @@
 
             if (result.SerialNos.Count <= 0)
             {
-                return await RequestTrayInTaskAsync(input);
+                var config = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStacker, SysConfigConst.InboundIsEmpty);
+                var strings = config.ConfigValue.Split(',').ToList();
+                if (strings.Contains(input.Position))
+                {
+                    // todo閫佽嚦NG鍙�
+                    ConsoleHelper.WriteErrorLine($"褰撳墠浣嶇疆涓嶈兘鍏ョ┖鎵樼洏");
+                    return content.Error("褰撳墠浣嶇疆涓嶈兘鍏ョ┖鎵樼洏");
+                }
+                else
+                    return await RequestTrayInTaskAsync(input);
             }
             else
             {
-
-
                 // 澶勭悊寮傚父鐢佃姱鎯呭喌
                 var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
                 if (serialNosError.Count > 0)
@@ -1152,7 +1160,7 @@
             // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅
             DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound
                 ? areaCode != "CWSC1" ? await QueryStockInfoForRealTrayAsync(areaCode, areaCodes, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine)
-                : await QueryStockInfoForEmptyTrayAsync(areaCode);
+                : await QueryStockInfoForEmptyTrayAsync(areaCode, position);
 
             if (stockInfo == null)
             {
@@ -1192,6 +1200,7 @@
         {
             // 璁板綍寮傚父淇℃伅骞舵姏鍑�
             LogFactory.GetLog("璇锋眰鎵樼洏浠诲姟").Error(true, ex);
+            ConsoleHelper.WriteErrorLine("璇锋眰绌�/瀹炴墭鐩樹换鍔�" + ex.Message);
             return content.Error(ex.Message);
         }
     }
@@ -1231,12 +1240,19 @@
             return null;
         }
 
+        var devices = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
+            .Where(x => x.DeviceStatus == "1")
+            .Where(x => x.DeviceRemark == "1")
+            .ToList();
+        var deviceCode = devices.Select(x => x.DeviceCode).ToList();
+
         var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
             .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
             .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails
             .Where(x => areaCodes.Contains(x.AreaCode) && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
             .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
             .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && areaId.Contains(x.LocationInfo.AreaId) && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
+            .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
             .OrderBy(x => x.OutboundTime) // 鎺掑簭
             .FirstAsync(); // 鑾峰彇绗竴涓厓绱�
 
@@ -1249,9 +1265,23 @@
     /// <summary>
     /// 鏌ヨ绌虹洏搴撳瓨淇℃伅
     /// </summary>
-    private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode)
+    private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode,string position)
     {
         var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
+
+        ConsoleHelper.WriteColorLine(position + "..." + areaCode, ConsoleColor.Magenta);
+        var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == position && x.stationType == 17);
+
+        ConsoleHelper.WriteColorLine(station.Roadway, ConsoleColor.Magenta);
+        var stackers = station.Roadway.Split(',').ToList();
+
+
+        var devices = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
+            .Where(x => x.DeviceStatus == "1")
+            .Where(x => stackers.Contains(x.DeviceCode))
+            .ToList();
+
+        var deviceCode = devices.Select(x => x.DeviceCode).ToList();
 
         var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
             .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
@@ -1259,6 +1289,7 @@
             .Where(x => x.AreaCode == areaCode && x.IsFull == false)
             .Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�"))
             .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
+            .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
             .OrderBy(x => x.CreateDate) // 鎺掑簭
             .FirstAsync(); // 杞崲涓哄垪琛�
 
@@ -1274,7 +1305,7 @@
     {
         return new Dt_Task
         {
-            Grade = tag == 104 ? 2 : 1,
+            Grade = tag == 104 ? (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC") ? 1 : 2) : (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC") ? 2 : 1),
             Roadway = stockInfo.LocationInfo.RoadwayNo,
             TargetAddress = position,
             Dispatchertime = DateTime.Now,
@@ -2417,7 +2448,7 @@
                         ParameterDesc = parameterInfo.Description,
                         ParameterResult  = "OK",
                         TargetValue = parameterInfo.TargetValue,
-                        LowerLomit = parameterInfo.LowerSpecificationsLimit,
+                        LowerLimit = parameterInfo.LowerSpecificationsLimit,
                         UpperLimit = parameterInfo.UpperSpecificationsLimit,
                         DefectCode = defectCode,
                     }

--
Gitblit v1.9.3