From a95c4e748b01da8bea6ba0f8e6af9c281bc582d7 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 29 七月 2025 09:22:13 +0800
Subject: [PATCH] 优化日志格式并增强库存查询逻辑在 CommonConveyorLineJob.cs和CommonConveyorLine_GWJob.cs文件中,修改了日志输出格式,添加了时间戳以提高可读性和可追溯性。部分代码中的ToJsonString()方法被替换为 Serialize()方法,以统一序列化方式。与此同时,在 Dt_TaskService.cs文件中增加了库存信息查询逻辑,以确保出库时能够正确处理库存条件,增强系统的健壮性。

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs |   57 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index 22294eb..6bd38fe 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1,10 +1,12 @@
 锘縰sing Mapster;
 using Masuit.Tools;
+using SixLabors.Fonts.Tables.AdvancedTypographic;
 using SqlSugar;
 using WIDESEA_Common.CustomModels;
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.MOM;
 using WIDESEA_DTO.WMS;
+using WIDESEA_Model.Models;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.Models;
 
@@ -1076,6 +1078,7 @@
         WebResponseContent content = new WebResponseContent();
         try
         {
+            LogFactory.GetLog($"鍖呰璇锋眰鍑哄簱浠诲姟").Info(true, $"銆愯姹傚弬鏁般�戯細銆恵JsonConvert.SerializeObject(json)}銆憑Environment.NewLine}{Environment.NewLine}");
             Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position && x.stationType == 12 && x.stationArea == "Call");
             if (station == null) { throw new Exception($"鏈壘鍒板寘瑁呯珯鍙颁俊鎭紝璇锋鏌ヤ紶鍏ュ弬鏁皗json.Position}"); }
 
@@ -1113,20 +1116,42 @@
             //    .FirstOrDefault();
             // 淇敼鍚庣殑鏌ヨ浠g爜
             #endregion
-            var stockInfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
-                                .Includes(x => x.LocationInfo)
-                                .Includes(x => x.StockInfoDetails)
-                                .Where(x => x.ProductionLine == station.productLine)
-                                .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true)
-                                // 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
-                                .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock)
-                                // 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
-                                .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
-                                .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
-                                .OrderBy(x => x.OutboundTime)
-                                .FirstAsync();
+            //var stockInfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
+            //                    .Includes(x => x.LocationInfo)
+            //                    .Includes(x => x.StockInfoDetails)
+            //                    .Where(x => x.ProductionLine == station.productLine)
+            //                    .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true)
+            //                    // 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
+            //                    .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock)
+            //                    // 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
+            //                    .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+            //                    .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
+            //                    .OrderBy(x => x.OutboundTime)
+            //                    .FirstAsync();
 
+            DtStockInfo stockInfo = null;
+            var stockInfoList = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
+                .Includes(x => x.LocationInfo)
+                .Where(x => x.ProductionLine == station.productLine
+                        && x.AreaCode == "CWSC3"
+                        && x.IsFull == true
+                        && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock)
+                .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+                .OrderBy(x => x.OutboundTime)
+                .ToListAsync();
 
+            foreach (var stock in stockInfoList)
+            {
+                var hasMatchingDetail = await _stockInfoRepository.Db.Queryable<DtStockInfoDetail>()
+                    .Where(d => d.StockId == stock.Id && materielCodes.Contains(d.MaterielCode))
+                    .AnyAsync();
+
+                if (hasMatchingDetail)
+                {
+                    stockInfo = stock;
+                    break;
+                }
+            }
             if (stockInfo == null) throw new Exception($"搴撳唴{station.productLine}鏃犳弧瓒虫潯浠剁殑搴撳瓨鍙嚭搴�");
 
             DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.AreaId == 5 && x.LocationCode == stockInfo.LocationCode);
@@ -1148,14 +1173,12 @@
                 SourceAddress = stockInfo.LocationCode,
                 TaskState = (int)TaskOutStatusEnum.OutNew,
                 TaskType = (int)TaskOutboundTypeEnum.Outbound,
-                TaskNum = await BaseDal.GetTaskNo(),
+                TaskNum = BaseDal.GetTaskNo().Result,
                 Creater = "System",
                 ProductionLine = stockInfo.ProductionLine,
                 ProcessCode = stockInfo.ProcessCode,
             };
-
             WMSTaskDTO taskDTO = CreateTaskDTO(task);
-
             int lastStatus = locationInfo.LocationStatus;
 
             BaseDal.AddData(task);
@@ -1166,11 +1189,15 @@
 
             _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(stockInfo.LocationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
 
+            LogFactory.GetLog($"鍖呰璇锋眰鍑哄簱浠诲姟").Info(true, $"銆愯繑鍥炲弬鏁般�戯細銆恵JsonConvert.SerializeObject(taskDTO)}銆憑Environment.NewLine}{Environment.NewLine}");
             return content.OK(data: taskDTO);
         }
         catch (Exception ex)
         {
             Console.WriteLine($"CW3鑷冲寘瑁呭嚭搴撳紓甯�:{ex.ToString()}");
+
+            LogFactory.GetLog($"鍖呰璇锋眰鍑哄簱浠诲姟").Info(true, $"銆愬紓甯搞�戯細銆恵ex.Message}銆憑Environment.NewLine}銆恵ex.StackTrace}銆憑Environment.NewLine}{Environment.NewLine}");
+
             return content.Error($"澶辫触锛歿ex.Message}");
         }
     }

--
Gitblit v1.9.3