From 960b33fa24c47a330e51a2c24859d681ae62caeb Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 16 四月 2026 10:09:49 +0800
Subject: [PATCH] 重构任务与库存模型,增强日志管理与区域接口

---
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs |   98 +++++++++++++++++++++++--------------------------
 1 files changed, 46 insertions(+), 52 deletions(-)

diff --git a/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
index f374b24..8cc3db1 100644
--- a/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -3,6 +3,7 @@
 using LogLibrary.Log;
 using Mapster;
 using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Database;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 using SqlSugar;
 using System.Diagnostics.CodeAnalysis;
@@ -13,6 +14,7 @@
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_DTO.MES;
@@ -25,6 +27,7 @@
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DeviceBase;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Repository;
 using WIDESEAWCS_QuartzJob.Service;
@@ -83,33 +86,28 @@
         }
 
         /// <summary>
-        /// 鎺ユ敹MES浠诲姟
+        /// 鎺ユ敹WMS浠诲姟
         /// </summary>
         /// <param name="taskDTOs"></param>
         /// <returns></returns>
-        public WebResponseContent ReceiveMESTask([NotNull] MESTaskDTO taskDTOs)
+        public WebResponseContent ReceiveWMSTask([NotNull] WMSTaskDTO taskDTOs)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
-                if (BaseDal.QueryFirst(x => x.TaskNum == taskDTOs.taskId || x.PalletCode == taskDTOs.containerCode) != null)
+                if (BaseDal.QueryFirst(x => x.TaskNum == taskDTOs.TaskNum || x.PalletCode == taskDTOs.PalletCode) != null)
                 {
                     return content.Error("璇ヤ换鍔″凡瀛樺湪锛�");
                 }
                 Dt_Task task = _mapper.Map<Dt_Task>(taskDTOs);
-                task.Creater = "MES";
+                task.Creater = "WMS";
                 // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔�
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
-
+                    
                 }
                 // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄叆搴撲换鍔�
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
-                {
-
-                }
-                // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓虹Щ搴撲换鍔�
-                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                 {
 
                 }
@@ -117,11 +115,11 @@
 
                 _taskExecuteDetailService.AddTaskExecuteDetailS(task.TaskNum, "鎺ユ敹WMS浠诲姟");
 
-                content = WebResponseContent.Instance.OK("鎴愬姛");
+                content.OK("鎴愬姛");
             }
             catch (Exception ex)
             {
-                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}杩斿洖鏁版嵁琛寋ex.StackTrace}");
+                content.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}杩斿洖鏁版嵁琛寋ex.StackTrace}");
             }
             return content;
         }
@@ -194,41 +192,23 @@
             try
             {
                 int oldState = task.TaskState;
-                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
+                var taskGroup = task.TaskState.GetTaskStateGroup();
+
+                // 2. 鑾峰彇涓嬩竴姝ョ姸鎬�
+                int nextStatus = taskGroup switch
                 {
-                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+                    TaskStateGroup.OutbondGroup => task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>(),
+                    TaskStateGroup.InboundGroup => task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(),
+                    _ => throw new InvalidOperationException($"浠诲姟绫诲瀷閿欒, 浠诲姟鍙�:銆恵task.TaskNum}銆�, 浠诲姟绫诲瀷:銆恵task.TaskType}銆�")
+                };
 
-                    task.TaskState = nextStatus;
-
-                    if (task.TaskState == (int)TaskOutStatusEnum.AGV_OutFinish)
-                    {
-
-                        task.ModifyDate = DateTime.Now;
-                        task.Modifier = "System";
-
-                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
-                        task_Hty.TaskId = 0;
-
-                        BaseDal.DeleteData(task);
-                        _taskHtyRepository.AddData(task_Hty);
-                    }
-                }
-                else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
+                if (nextStatus <= 0)
                 {
-                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
-                    task.TaskState = nextStatus;
-
-                    
-                }
-                else
-                {
-                    throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                    return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�, 浠诲姟鍙�:銆恵task.TaskNum}銆�, 褰撳墠鐘舵��:銆恵task.TaskState}銆�");
                 }
 
-                if (task.TaskState <= 0)
-                {
-                    return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
-                }
+                // 3. 鏇存柊浠诲姟鐘舵��
+                task.TaskState = nextStatus;
 
                 task.ModifyDate = DateTime.Now;
                 task.Modifier = "System";
@@ -236,17 +216,31 @@
 
                 _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�");
 
+                #region 浠诲姟瀹屾垚璋冪敤鎺ュ彛
+                bool isOutFinish = task.TaskState == (int)TaskOutStatusEnum.AGV_OutFinish;
+                bool isInFinish = task.TaskState == (int)TaskInStatusEnum.AGV_InFinish;
+
+                if (isOutFinish || isInFinish)
+                {
+                    int finalState = isOutFinish
+                        ? (int)TaskOutStatusEnum.OutFinish
+                        : (int)TaskInStatusEnum.InFinish;
+
+                    task.TaskState = finalState;
+                    
+                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserName != null ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
+
+                    var wmstaskCompleteIp= GetIpAddress(SysConfigKeyConst.CompleteTask);
+                    var res= HttpHelper.PostAsync(wmstaskCompleteIp, new { TaskNum = task.TaskNum}.ToJsonString()).Result;
+                    return JsonConvert.DeserializeObject<WebResponseContent>(res);
+                }
+
+                #endregion
+
                 #region 鏇存柊浠诲姟鐘舵��
 
                 // 鑾峰彇WMSip鍦板潃
-                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
-                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTaskStatus)?.ConfigValue;
-                if (wmsBase == null || updateTask == null)
-                {
-                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                }
-                var wmsIpAddress = wmsBase + updateTask;
+                var wmsIpAddress = GetIpAddress(SysConfigKeyConst.UpdateTaskStatus);
 
                 var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
                 content = JsonConvert.DeserializeObject<WebResponseContent>(result);
@@ -351,10 +345,10 @@
             return content;
         }
 
-        private string GetIpAddress(string baseIp, string name)
+        public string GetIpAddress(string name)
         {
             var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-            var wcsBasez = configz.Where(x => x.ConfigKey == baseIp).FirstOrDefault()?.ConfigValue;
+            var wcsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
             var address = configz.Where(x => x.ConfigKey == name).FirstOrDefault()?.ConfigValue;
             if (wcsBasez == null || address == null)
             {

--
Gitblit v1.9.3