From 0b2869539598059704e1d208e2bcb18603b0fe0f Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 01 五月 2026 00:00:30 +0800
Subject: [PATCH] feat(出库时效): 添加出库时效配置功能

---
 Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs |   91 +++++++++++++++++++++++----------------------
 1 files changed, 47 insertions(+), 44 deletions(-)

diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs
index 20956e7..53cd86a 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs
@@ -1,6 +1,4 @@
-using Microsoft.AspNetCore.Http.HttpResults;
 using Newtonsoft.Json;
-using System.Diagnostics;
 using WIDESEA_Common.Constants;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.StockEnum;
@@ -122,7 +120,6 @@
         /// </summary>
         public async Task<WebResponseContent> InboundFinishTaskAsync(CreateTaskDto taskDto)
         {
-            var stopwatch = Stopwatch.StartNew();
             try
             {
                 var task = await BaseDal.QueryFirstAsync(s => s.PalletCode == taskDto.PalletCode);
@@ -144,8 +141,10 @@
                             Creater = StockConstants.SYSTEM_USER,
                             Details = null,
                             LocationCode = location.LocationCode,
-                            LocationId = location.Id
+                            LocationId = location.Id,
+                            OutboundDate = DateTime.Now
                         };
+                        location.LocationStatus = LocationStatusEnum.InStock.GetHashCode();
                         var updateLocationResult = await _locationInfoService.UpdateLocationInfoAsync(location);
                         var updateStockResult = await _stockInfoService.Repository.AddDataAsync(stockInfo);
                         return await CompleteTaskAsync(task, "鍏ュ簱瀹屾垚");
@@ -153,8 +152,6 @@
                 }
                 else
                 {
-
-
                     // 鍒ゆ柇鏄笉鏄瀬鍗峰簱浠诲姟
                     if (taskDto.WarehouseId == (int)WarehouseEnum.FJ1 || taskDto.WarehouseId == (int)WarehouseEnum.ZJ1)
                     {
@@ -166,10 +163,13 @@
                         WebResponseContent content = new WebResponseContent();
                         stockInfo.LocationCode = location.LocationCode;
                         stockInfo.LocationId = location.Id;
+                        stockInfo.WarehouseId = task.WarehouseId;
 
                         SetOutboundDateByRoadway(task, stockInfo);
 
                         stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.GetHashCode();
+
+                        stockInfo.CreateDate = DateTime.Now;
 
                         location.LocationStatus = LocationStatusEnum.InStock.GetHashCode();
 
@@ -179,41 +179,43 @@
                             return WebResponseContent.Instance.Error("浠诲姟瀹屾垚澶辫触");
 
                         // 鏍规嵁搴撳瓨Remark閫夋嫨闈欑疆璁惧锛屾煡MES鍔ㄦ�佸嚟璇�
-                        //string deviceName = stockInfo.Remark == "GW_1" ? "楂樻俯闈欑疆1"
-                        //    : stockInfo.Remark == "GW_2" ? "楂樻俯闈欑疆2"
-                        //    : "甯告俯闈欑疆1";
-                        //var mesConfig = _mesDeviceConfigService.GetByDeviceName(deviceName);
-                        //string equipmentCode = mesConfig?.EquipmentCode ?? StockConstants.MES_EQUIPMENT_CODE;
-                        //string resourceCode = mesConfig?.ResourceCode ?? StockConstants.MES_RESOURCE_CODE;
-                        //string token = mesConfig?.Token;
+                        string deviceName = stockInfo.Remark == "GW_1" ? "楂樻俯闈欑疆1"
+                            : stockInfo.Remark == "GW_2" ? "楂樻俯闈欑疆2"
+                            : "甯告俯闈欑疆1";
+                        var mesConfig = _mesDeviceConfigService.GetByDeviceName(deviceName);
+                        string equipmentCode = mesConfig?.EquipmentCode ?? StockConstants.MES_EQUIPMENT_CODE;
+                        string resourceCode = mesConfig?.ResourceCode ?? StockConstants.MES_RESOURCE_CODE;
+                        string token = mesConfig?.Token;
 
-                        // 璋冪敤MES鎵樼洏杩涚珯
-                        //var inboundRequest = new InboundInContainerRequest
-                        //{
-                        //    EquipmentCode = equipmentCode,
-                        //    ResourceCode = resourceCode,
-                        //    LocalTime = DateTime.Now,
-                        //    ContainerCode = taskDto.PalletCode
-                        //};
-                        //string requestJson = inboundRequest.ToJson();
-                        //var inboundResult = string.IsNullOrWhiteSpace(token)
-                        //    ? _mesService.InboundInContainer(inboundRequest)
-                        //    : _mesService.InboundInContainer(inboundRequest, token);
-                        //stopwatch.Stop();
-                        //await _mesLogService.LogAsync(new MesApiLogDto
-                        //{
-                        //    ApiType = "InboundInContainer",
-                        //    RequestJson = requestJson,
-                        //    ResponseJson = JsonConvert.SerializeObject(inboundResult),
-                        //    IsSuccess = inboundResult.IsSuccess,
-                        //    ErrorMessage = inboundResult.ErrorMessage,
-                        //    ElapsedMs = (int)stopwatch.ElapsedMilliseconds,
-                        //    Creator = "systeam"
-                        //});
-                        //if (inboundResult == null || inboundResult.Data == null || !inboundResult.Data.IsSuccess)
-                        //{
-                        //    return content.Error($"浠诲姟瀹屾垚澶辫触锛歁ES杩涚珯澶辫触: {inboundResult?.Data?.Msg ?? inboundResult?.ErrorMessage ?? "鏈煡閿欒"}");
-                        //}
+                        // 寮傛璋冪敤MES鎵樼洏杩涚珯锛屼笉闃诲涓婚�昏緫
+                        var inboundRequest = new InboundInContainerRequest
+                        {
+                            EquipmentCode = equipmentCode,
+                            ResourceCode = resourceCode,
+                            LocalTime = DateTime.Now,
+                            ContainerCode = taskDto.PalletCode,
+                        };
+                        string requestJson = inboundRequest.ToJson();
+                        var palletCode = taskDto.PalletCode;
+
+                        _mesUploadHelper.FireAndForget(
+                            palletCode,
+                            MesUploadStatusEnum.杩涚珯涓婁紶鎴愬姛,
+                            "InboundInContainer",
+                            requestJson,
+                            () =>
+                            {
+                                var result = string.IsNullOrWhiteSpace(token)
+                                    ? _mesService.InboundInContainer(inboundRequest)
+                                    : _mesService.InboundInContainer(inboundRequest, token);
+                                return (
+                                    result?.Data?.IsSuccess ?? false,
+                                    JsonConvert.SerializeObject(result),
+                                    result?.Data?.Msg ?? result?.ErrorMessage ?? "鏈煡閿欒",
+                                    _mesService.BuildConfig(token ?? string.Empty).ToJson()
+                                );
+                            });
+
                         return await CompleteTaskAsync(task, "鍏ュ簱瀹屾垚");
                     });
                 }
@@ -231,14 +233,15 @@
         /// <param name="stockInfo">搴撳瓨淇℃伅</param>
         private void SetOutboundDateByRoadway(Dt_Task task, Dt_StockInfo stockInfo)
         {
+            var config = _outboundTimeOptions.CurrentValue;
             var now = DateTime.Now;
             if (task.Roadway.Contains("GW"))
             {
                 stockInfo.OutboundDate = string.IsNullOrEmpty(stockInfo.Remark)
-                    ? now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_GW1_FIRST)
+                    ? now.AddHours(config.Gw1FirstHours)
                     : stockInfo.Remark == StockRemarkConstants.GW1
-                        ? now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_GW1_SECOND)
-                        : now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_GW1_FIRST);
+                        ? now.AddHours(config.Gw1SecondHours)
+                        : now.AddHours(config.Gw1FirstHours);
 
                 stockInfo.Remark = string.IsNullOrEmpty(stockInfo.Remark)
                     ? StockRemarkConstants.GW1
@@ -248,7 +251,7 @@
             }
             else if (task.Roadway.Contains("CW"))
             {
-                stockInfo.OutboundDate = now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_CW1);
+                stockInfo.OutboundDate = now.AddHours(config.Cw1Hours);
                 if (stockInfo.Remark == StockRemarkConstants.GW2)
                     stockInfo.Remark = StockRemarkConstants.CW1;
             }

--
Gitblit v1.9.3