From 2db17e312a9bf0cff60917104447260b86178ca2 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 23 四月 2026 08:40:38 +0800
Subject: [PATCH] Merge branch 'xiaoyang' into dev

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs |   59 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 48 insertions(+), 11 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
index c1f3ba9..2db6032 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
@@ -1,5 +1,6 @@
 锘縰sing Autofac;
 using Newtonsoft.Json;
+using Serilog;
 using System.Diagnostics.CodeAnalysis;
 using WIDESEA_Core;
 using WIDESEAWCS_Common.HttpEnum;
@@ -15,6 +16,7 @@
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks;
 
 namespace WIDESEAWCS_TaskInfoService.Flows
 {
@@ -29,6 +31,7 @@
         private readonly IRobotTaskService _robotTaskService;
         private readonly IComponentContext _componentContext;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ILogger _logger;
 
         /// <summary>
         /// 鍒濆鍖栧嚭搴撲换鍔℃祦绋嬫湇鍔°��
@@ -37,13 +40,14 @@
         /// <param name="httpClientHelper">WMS鎺ュ彛璋冪敤甯姪绫汇��</param>
         /// <param name="robotTaskService">鏈烘鎵嬩换鍔℃湇鍔°��</param>
         /// <param name="componentContext">Autofac缁勪欢涓婁笅鏂囷紙鐢ㄤ簬寤惰繜瑙f瀽ITaskService浠ラ伩鍏嶅惊鐜緷璧栵級銆�</param>
-        public OutboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper, IRobotTaskService robotTaskService, IComponentContext componentContext, IUnitOfWorkManage unitOfWorkManage)
+        public OutboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper, IRobotTaskService robotTaskService, IComponentContext componentContext, IUnitOfWorkManage unitOfWorkManage, ILogger logger)
         {
             _routerService = routerService;
             _httpClientHelper = httpClientHelper;
             _robotTaskService = robotTaskService;
             _componentContext = componentContext;
             _unitOfWorkManage = unitOfWorkManage;
+            _logger = logger;
         }
 
         /// <summary>
@@ -79,6 +83,7 @@
         /// <returns>鎺ㄨ繘缁撴灉銆�</returns>
         public WebResponseContent MoveToNextStatus([NotNull] Dt_Task task)
         {
+            WebResponseContent content = new WebResponseContent();
             if (task.TaskStatus >= (int)TaskOutStatusEnum.OutFinish)
                 return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskStatus}銆�");
 
@@ -88,12 +93,13 @@
 
             if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish && task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
             {
+                return WebResponseContent.Instance.OK();
                 return GetWMSOutboundTrayTask(task);
             }
 
             if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish && task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty)
             {
-                return _robotTaskService.GetWMSRobotTask(task);
+                 _robotTaskService.GetWMSRobotTask(task);
                 //if (!content.Status)
                 //{
                 //    return content;
@@ -148,14 +154,21 @@
         private WebResponseContent NotifyWMSOutboundFinish(Dt_Task task)
         {
             WebResponseContent content = new WebResponseContent();
+            string configKey = nameof(ConfigKey.OutboundFinishTaskAsync);
+            string requestParam = new StockInfoDTO { PalletCode = task.PalletCode, TaskNum = task.TaskNum }.ToJson();
+            DateTime startTime = DateTime.Now;
 
-            // 閫氱煡WMS鍑哄簱瀹屾垚骞惰幏鍙栬繑鍥炵粨鏋�
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.OutboundFinishTaskAsync),
-                new StockInfoDTO { PalletCode = task.PalletCode, TaskNum = task.TaskNum }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return content.Error($"閫氱煡WMS绯荤粺鍫嗗灈鏈哄嚭搴撳畬鎴愬け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
+
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
             // 澶勭悊WMS杩斿洖鐨勫叆搴撲换鍔★紙濡傛灉鏈夛級
             if (result.Data?.Data != null)
             {
@@ -195,13 +208,21 @@
         {
             int warehouseId = _robotTaskService.MapWarehouseIdConfigKey(task.TargetAddress);
             string sourceLineNo = _robotTaskService.ResolveRobotRuleValue(task.TargetAddress, "AddressSourceLineNoMap", task.TargetAddress);
+            string configKey = nameof(ConfigKey.GetOutBoundTrayTaskAsync);
+            string requestParam = new CreateTaskDto { WarehouseId = warehouseId, TargetAddress = sourceLineNo }.ToJson();
+            DateTime startTime = DateTime.Now;
 
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.GetOutBoundTrayTaskAsync),
-                new CreateTaskDto { WarehouseId = warehouseId, TargetAddress = sourceLineNo }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"鑾峰彇WMS绯荤粺绌烘墭鐩樺嚭搴撲换鍔″け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
+
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
 
             WMSTaskDTO? wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result.Data.Data?.ToString() ?? string.Empty);
             if (wMSTask == null)
@@ -217,13 +238,21 @@
         /// <returns>鍚屾缁撴灉銆�</returns>
         private WebResponseContent UpdateWMSTaskStatus(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.UpdateTaskByStatus);
+            string requestParam = new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.UpdateTaskByStatus),
-                new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"璋冪敤WMS鎺ュ彛鏇存柊浠诲姟鐘舵�佸け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
             return WebResponseContent.Instance.OK();
         }
 
@@ -234,13 +263,21 @@
         /// <returns>鍚屾缁撴灉銆�</returns>
         private WebResponseContent OutboundFinishTaskTray(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.OutboundFinishTaskTray);
+            string requestParam = new CreateTaskDto { PalletCode = task.PalletCode, SourceAddress = task.SourceAddress }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.OutboundFinishTaskTray),
-                new CreateTaskDto { PalletCode = task.PalletCode, SourceAddress = task.SourceAddress }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"璋冪敤WMS鎺ュ彛鏇存柊浠诲姟鐘舵�佸け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
             return WebResponseContent.Instance.OK();
         }
     }

--
Gitblit v1.9.3