From c020f31a67fc5aa5644511bddff075f7ecc85234 Mon Sep 17 00:00:00 2001
From: qinchulong <qinchulong@hnkhzn.com>
Date: 星期二, 27 五月 2025 15:35:27 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/ZhongHeLiTiKu

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs |  229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 229 insertions(+), 0 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs"
new file mode 100644
index 0000000..06eed97
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs"
@@ -0,0 +1,229 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_TaskInfoService
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Enums;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_DTO.TaskEnum;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_TaskInfoService
+{
+    public class TaskExecuteDetailService : ServiceBase<Dt_TaskExecuteDetail, ITaskExecuteDetailRepository>, ITaskExecuteDetailService
+    {
+        private readonly ITaskRepository _taskRepository;
+
+        public TaskExecuteDetailService(ITaskExecuteDetailRepository BaseDal, ITaskRepository taskRepository) : base(BaseDal)
+        {
+            _taskRepository = taskRepository;
+        }
+
+        public void AddTaskExecuteDetail(int taskId, string description = "")
+        {
+            try
+            {
+                bool isNormal = true;
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskId == taskId);
+                if (task == null) return;
+                int taskNum = task.TaskNum;
+                int TaskStatus = task.TaskStatus;
+
+                if (!int.TryParse(Enum.Parse<OutTaskStatusEnum>(TaskStatus.ToString()).ToString(), out int result))
+                {
+                    if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
+                        isNormal = false;
+                }
+                else if (!int.TryParse(Enum.Parse<InTaskStatusEnum>(TaskStatus.ToString()).ToString(), out result))
+                {
+                    if ((int)(TaskInStatusEnum)result > (int)TaskInStatusEnum.InFinish)
+                        isNormal = false;
+                }
+                Dt_TaskExecuteDetail taskExecuteDetail = new()
+                {
+                    IsManual = App.User.UserId > 0,
+                    IsNormal = isNormal,
+                    TaskNum = taskNum,
+                    TaskId = taskId,
+                    TaskState = TaskStatus,
+                    Description = description,
+                    CurrentAddress = task.CurrentAddress,
+                    NextAddress = task.NextAddress,
+                };
+                BaseDal.AddData(taskExecuteDetail);
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        public void AddTaskExecuteDetail(List<int> taskNums, string description = "")
+        {
+            try
+            {
+                List<Dt_TaskExecuteDetail> taskExecuteDetails = new List<Dt_TaskExecuteDetail>();
+                foreach (var item in taskNums)
+                {
+                    bool isNormal = true;
+                    Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == item);
+                    if (task == null) return;
+                    int taskNum = task.TaskNum;
+                    int TaskStatus = task.TaskStatus;
+
+                    if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(TaskStatus.ToString()).ToString(), out int result))
+                    {
+                        if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
+                            isNormal = false;
+                    }
+                    else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(TaskStatus.ToString()).ToString(), out result))
+                    {
+                        if ((int)(TaskInStatusEnum)result > (int)TaskInStatusEnum.InFinish)
+                            isNormal = false;
+                    }
+                    Dt_TaskExecuteDetail taskExecuteDetail = new()
+                    {
+                        IsManual = App.User.UserId > 0,
+                        IsNormal = isNormal,
+                        TaskNum = taskNum,
+                        TaskId = task.TaskId,
+                        TaskState = TaskStatus,
+                        Description = description,
+                        CurrentAddress = task.CurrentAddress,
+                        NextAddress = task.NextAddress,
+                    };
+                    taskExecuteDetails.Add(taskExecuteDetail);
+                }
+
+                BaseDal.AddData(taskExecuteDetails);
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        public WebResponseContent GetDetailInfo(int taskNum)
+        {
+            WebResponseContent content = new();
+            try
+            {
+                int active = -1;
+                List<object> list = new();
+                List<int> steps = new();
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+                if (task != null)
+                {
+
+                    if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result))
+                    {
+                        steps = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().Where(x => x <= (int)TaskOutStatusEnum.OutFinish).ToList();
+
+                        foreach (var item in steps)
+                        {
+                            object obj;
+                            FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
+                            DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                            if (descriptionAttribute != null)
+                            {
+                                obj = new { title = item, description = descriptionAttribute.Description };
+                            }
+                            else
+                            {
+                                obj = new { title = item, description = ((TaskOutStatusEnum)item).ToString() };
+                            }
+                            list.Add(obj);
+                        }
+                    }
+                    else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result))
+                    {
+                        steps = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().Where(x => x <= (int)TaskInStatusEnum.InFinish).ToList();
+                        foreach (var item in steps)
+                        {
+                            object obj;
+                            FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
+                            DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                            if (descriptionAttribute != null)
+                            {
+                                obj = new { title = item, description = descriptionAttribute.Description };
+                            }
+                            else
+                            {
+                                obj = new { title = item, description = ((TaskInStatusEnum)item).ToString() };
+                            }
+                            list.Add(obj);
+                        }
+                    }
+                    else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(task.TaskType.ToString()).ToString(), out result))
+                    {
+                        //todo 璋冪敤WMS绉诲簱瀹屾垚
+                    }
+                    else if (!int.TryParse(Enum.Parse<TaskOtherTypeEnum>(task.TaskType.ToString()).ToString(), out result))
+                    {
+
+                    }
+                    else
+                    {
+                        throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                    }
+                    active = steps.IndexOf(task.TaskStatus) + 1;
+
+                }
+
+                content = WebResponseContent.Instance.OK(data: new { active, list });
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return content;
+        }
+
+        public WebResponseContent GetDetailDatas(int taskNum)
+        {
+            WebResponseContent content = new();
+            try
+            {
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+                if (task != null)
+                {
+                    List<Dt_TaskExecuteDetail> taskExecuteDetails = BaseDal.QueryData(x => x.TaskId == task.TaskId, new Dictionary<string, SqlSugar.OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), SqlSugar.OrderByType.Asc } });
+
+                    content = WebResponseContent.Instance.OK(data: taskExecuteDetails);
+                }
+                else
+                {
+                    content = WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return content;
+        }
+    }
+}

--
Gitblit v1.9.3