From ce1292c9cf37195b6abd2699dfc5d6cb3e143c9b Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期日, 12 四月 2026 23:38:19 +0800
Subject: [PATCH] feat(MES): 添加MES接口相关实体和DTO JS扩展文件至JSX格式并更新配置

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |   85 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 80 insertions(+), 5 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 8622839..1032614 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -101,10 +101,13 @@
             try
             {
                 List<Dt_Task> tasks = new List<Dt_Task>();
+                List<Dt_Task> duplicates = new List<Dt_Task>();
                 foreach (var item in taskDTOs)
                 {
-                    if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null)
+                    Dt_Task existingTask = BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode);
+                    if (existingTask != null)
                     {
+                        duplicates.Add(existingTask);
                         continue;
                     }
                     Dt_Task task = _mapper.Map<Dt_Task>(item);
@@ -112,11 +115,15 @@
                     InitializeTaskOnReceive(task, item);
                     tasks.Add(task);
                 }
+                // TOOD: 杩欓噷娉ㄦ剰娣诲姞閿欒瑕佽繑鍥為敊璇�
                 BaseDal.AddData(tasks);
 
                 _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
 
-                content = WebResponseContent.Instance.OK("鎴愬姛", tasks);
+                // 灏嗛噸澶嶄换鍔′俊鎭篃涓�骞惰繑鍥�
+                tasks.AddRange(duplicates);
+                var result = tasks;
+                content = WebResponseContent.Instance.OK("鎴愬姛", result);
             }
             catch (Exception ex)
             {
@@ -144,7 +151,7 @@
                     Roadway = "SC01",
                     SourceAddress = sourceAddress,
                     TargetAddress = "SC01",
-                    TaskState = (int)TaskInStatusEnum.InNew,
+                    TaskStatus = (int)TaskInStatusEnum.InNew,
                     Id = 0,
                     TaskType = (int)TaskInboundTypeEnum.Inbound
                 };
@@ -399,7 +406,7 @@
             task.Modifier = "System";
             if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish)
             {
-                BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩鍒犻櫎);
+                BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
             }
             else
             {
@@ -637,6 +644,74 @@
         {
             return BaseDal.QueryFirst(x => x.TaskNum == taskNum);
         }
+
+        /// <summary>
+        /// 鎺ユ敹WMS鎵嬪姩鍒涘缓鐨勪换鍔★紝鍒涘缓WCS浠诲姟
+        /// </summary>
+        /// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public WebResponseContent ReceiveManualTask([NotNull] List<WMSTaskDTO> taskDTOs)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                // 鏀堕泦閲嶅浠诲姟鐨勪俊鎭�
+                var duplicateTasks = new List<DuplicateTaskDto>();
+                // 鍊掑簭閬嶅巻锛屽畨鍏ㄥ垹闄ゅ苟鏀堕泦琚Щ闄ょ殑椤�
+                for (int i = taskDTOs.Count - 1; i >= 0; i--)
+                {
+                    var item = taskDTOs[i];
+                    var exists = BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode);
+                    if (exists != null)
+                    {
+                        duplicateTasks.Add(new DuplicateTaskDto
+                        {
+                            TaskNum = exists.TaskNum,
+                            PalletCode = exists.PalletCode,
+                            TaskType = exists.TaskType,
+                            TaskStatus = exists.TaskStatus
+                        });
+                        taskDTOs.RemoveAt(i);
+                    }
+                }
+
+                // 璋冪敤 ReceiveWMSTask 鍒涘缓 WCS 浠诲姟
+                content = ReceiveWMSTask(taskDTOs);
+
+                // 濡傛灉鏈夐噸澶嶄换鍔★紝淇敼杩斿洖缁撴灉
+                if (duplicateTasks.Count > 0 && content.Status)
+                {
+                    var result = new ReceiveTaskResultDto
+                    {
+                        Success = true,
+                        Message = content.Message + $"锛屽叾涓瓄duplicateTasks.Count}涓换鍔″湪WCS涓凡瀛樺湪",
+                        CreatedCount = taskDTOs.Count,
+                        DuplicateTasks = duplicateTasks
+                    };
+                    content.Data = result;
+                }
+
+                return content;
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鎵嬪姩浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+                return content;
+            }
+        }
+
+        /// <summary>
+        /// 鏌ヨ鎸囧畾璧风偣鍦板潃鐨勬柊寤烘墜鍔ㄥ叆搴撲换鍔�
+        /// </summary>
+        /// <param name="sourceAddress">璧风偣鍦板潃</param>
+        /// <returns>浠诲姟瀹炰綋</returns>
+        public Dt_Task QueryManualInboundTask(string sourceAddress)
+        {
+            return BaseDal.QueryFirst(x =>
+                x.TaskType == (int)TaskInboundTypeEnum.Inbound &&
+                x.TaskStatus == (int)TaskInStatusEnum.InNew &&
+                x.SourceAddress == sourceAddress);
+        }
     }
 
     public enum ConveyorLineDBNameNew
@@ -726,4 +801,4 @@
         [DataLength(22)]
         public string Barcode { get; set; }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3