From 682413a01effa5ae936e418fecdfd72f670d09ab Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期六, 11 四月 2026 17:14:32 +0800
Subject: [PATCH] feat(出库任务): 实现高温2号出库到CWSC1时自动创建入库任务

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs |   42 ++++++++++++++++++--
 Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_WCS.cs                  |   48 ++++++++++++++++-------
 2 files changed, 70 insertions(+), 20 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
index 0aa7b14..b6d645d 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
@@ -5,9 +5,11 @@
 using WIDESEA_Core;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_DTO;
 using WIDESEAWCS_DTO.Stock;
 using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.DTO;
@@ -25,6 +27,8 @@
         private readonly IRouterService _routerService;
         private readonly HttpClientHelper _httpClientHelper;
         private readonly IRobotTaskService _robotTaskService;
+        private readonly ITaskService _taskService;
+        private readonly ITaskRepository _taskRepository;
 
         /// <summary>
         /// 鍒濆鍖栧嚭搴撲换鍔℃祦绋嬫湇鍔°��
@@ -32,11 +36,15 @@
         /// <param name="routerService">璺敱鏈嶅姟銆�</param>
         /// <param name="httpClientHelper">WMS鎺ュ彛璋冪敤甯姪绫汇��</param>
         /// <param name="robotTaskService">鏈烘鎵嬩换鍔℃湇鍔°��</param>
-        public OutboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper, IRobotTaskService robotTaskService)
+        /// <param name="taskService">浠诲姟鏈嶅姟锛堢敤浜庢帴鏀跺叆搴撲换鍔★級銆�</param>
+        /// <param name="taskRepository">浠诲姟浠撳偍锛堢敤浜庡垹闄ゅ嚭搴撲换鍔★級銆�</param>
+        public OutboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper, IRobotTaskService robotTaskService, ITaskService taskService, ITaskRepository taskRepository)
         {
             _routerService = routerService;
             _httpClientHelper = httpClientHelper;
             _robotTaskService = robotTaskService;
+            _taskService = taskService;
+            _taskRepository = taskRepository;
         }
 
         /// <summary>
@@ -122,13 +130,37 @@
             task.ModifyDate = DateTime.Now;
             task.Modifier = "System";
 
-            content = NotifyWMSOutboundFinish(task);
-            if (!content.Status)
+            // 閫氱煡WMS鍑哄簱瀹屾垚骞惰幏鍙栬繑鍥炵粨鏋�
+            var result = _httpClientHelper.Post<WebResponseContent>(
+                nameof(ConfigKey.OutboundFinishTaskAsync),
+                new StockInfoDTO { PalletCode = task.PalletCode, TaskNum = task.TaskNum }.ToJson());
+
+            if (!result.IsSuccess || !result.Data.Status)
             {
-                return content;
+                return content.Error($"閫氱煡WMS绯荤粺鍫嗗灈鏈哄嚭搴撳畬鎴愬け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
             }
 
-            return content.Error($"閫氱煡WMS绯荤粺鍫嗗灈鏈哄嚭搴撳畬鎴愭垚鍔�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�");
+            // 澶勭悊WMS杩斿洖鐨勫叆搴撲换鍔★紙濡傛灉鏈夛級
+            if (result.Data?.Data != null)
+            {
+                var inboundTaskJson = result.Data.Data.ToString();
+                var inboundTaskDto = JsonConvert.DeserializeObject<WMSTaskDTO>(inboundTaskJson);
+
+                if (inboundTaskDto != null)
+                {
+                    // 鍏堝垹闄ゆ湰鍦板嚭搴撲换鍔★紝閬垮厤鎵樼洏鍙峰敮涓�閿啿绐�
+                    _taskRepository.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
+
+                    // 璋冪敤ReceiveWMSTask鍒涘缓鏈湴鍏ュ簱浠诲姟
+                    var receiveResult = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { inboundTaskDto });
+                    if (!receiveResult.Status)
+                    {
+                        return content.Error($"鍒涘缓鏈湴鍏ュ簱浠诲姟澶辫触: {receiveResult.Message}");
+                    }
+                }
+            }
+
+            return content.OK($"閫氱煡WMS绯荤粺鍫嗗灈鏈哄嚭搴撳畬鎴愭垚鍔�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�");
         }
 
         /// <summary>
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_WCS.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_WCS.cs
index d4fde20..9aa52de 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_WCS.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_WCS.cs
@@ -302,22 +302,40 @@
                     if (!updateLocationResult || !updateStockResult)
                         return WebResponseContent.Instance.Error("浠诲姟瀹屾垚澶辫触");
 
-                    // 璋冪敤MES鎵樼洏鍑虹珯
-                    //var outboundRequest = new OutboundInContainerRequest
-                    //{
-                    //    EquipmentCode = "STK-GROUP-001",
-                    //    ResourceCode = "STK-GROUP-001",
-                    //    LocalTime = DateTime.Now,
-                    //    ContainerCode = taskDto.PalletCode,
-                    //    ParamList = new List<ParamItem>()
-                    //};
-                    //var outboundResult = _mesService.OutboundInContainer(outboundRequest);
-                    //if (outboundResult == null || outboundResult.Data == null || !outboundResult.Data.IsSuccess)
-                    //{
-                    //    return content.Error($"浠诲姟瀹屾垚澶辫触锛歁ES鍑虹珯澶辫触: {outboundResult?.Data?.Msg ?? outboundResult?.ErrorMessage ?? "鏈煡閿欒"}");
-                    //}
+                    // 楂樻俯2鍙峰嚭搴撳埌CWSC1鏃讹紝鑷姩鍒涘缓鍏ュ簱浠诲姟鍒板父娓�1鍙峰贩閬�
+                    WMSTaskDTO? inboundTaskDto = null;
+                    if (task.TargetAddress == TaskAddressConstants.GW2_ADDRESS)
+                    {
+                        var inboundTask = new Dt_Task
+                        {
+                            TaskNum = await BaseDal.GetTaskNo(),
+                            PalletCode = task.PalletCode,
+                            PalletType = task.PalletType,
+                            Roadway = "CW1",
+                            TaskType = TaskInboundTypeEnum.Inbound.GetHashCode(),
+                            TaskStatus = TaskInStatusEnum.InNew.GetHashCode(),
+                            SourceAddress = task.TargetAddress,
+                            TargetAddress = task.TargetAddress,
+                            CurrentAddress = task.TargetAddress,
+                            NextAddress = task.TargetAddress,
+                            WarehouseId = (int)WarehouseEnum.CW1,
+                            Grade = 1,
+                            Creater = "system_auto"
+                        };
+                        await Repository.AddDataAsync(inboundTask);
+                        inboundTaskDto = _mapper.Map<WMSTaskDTO>(inboundTask);
+                    }
 
-                    return await CompleteTaskAsync(task, "鍑哄簱瀹屾垚");
+                    var completeResult = await CompleteTaskAsync(task, "鍑哄簱瀹屾垚");
+                    if (!completeResult.Status)
+                        return completeResult;
+
+                    // 杩斿洖鍏ュ簱浠诲姟淇℃伅锛堝鏋滄湁锛�
+                    if (inboundTaskDto != null)
+                    {
+                        return content.OK("鍑哄簱瀹屾垚锛屽凡鍒涘缓鍏ュ簱浠诲姟", inboundTaskDto);
+                    }
+                    return content.OK("鍑哄簱瀹屾垚");
                 });
             }
             catch (Exception ex)

--
Gitblit v1.9.3