#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 命名空间:WIDESEAWCS_TaskInfoService * 创建者:胡童庆 * 创建时间:2024/8/2 16:13:36 * 版本:V1.0.0 * 描述: * * ---------------------------------------------------------------- * 修改人: * 修改时间: * 版本:V1.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 WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public class TaskExecuteDetailService : ServiceBase, 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 taskState = task.TaskState; if (!int.TryParse(Enum.Parse(taskState.ToString()).ToString(), out int result)) { if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish) isNormal = false; } else if (!int.TryParse(Enum.Parse(taskState.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 = taskState, Description = description, CurrentAddress = task.CurrentAddress, NextAddress = task.NextAddress, }; BaseDal.AddData(taskExecuteDetail); } catch (Exception ex) { } } public void AddTaskExecuteDetail(List taskNums, string description = "") { try { List taskExecuteDetails = new List(); 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 taskState = task.TaskState; if (!int.TryParse(Enum.Parse(taskState.ToString()).ToString(), out int result)) { if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish) isNormal = false; } else if (!int.TryParse(Enum.Parse(taskState.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 = taskState, 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 list = new(); List steps = new(); Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum); if (task != null) { if (!int.TryParse(Enum.Parse(task.TaskType.ToString()).ToString(), out int result)) { steps = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast().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(); 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(task.TaskType.ToString()).ToString(), out result)) { steps = Enum.GetValues(typeof(TaskInStatusEnum)).Cast().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(); 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(task.TaskType.ToString()).ToString(), out result)) { //todo 调用WMS移库完成 } else if (!int.TryParse(Enum.Parse(task.TaskType.ToString()).ToString(), out result)) { } else { throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{task.TaskType}】"); } active = steps.IndexOf(task.TaskState) + 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 taskExecuteDetails = BaseDal.QueryData(x => x.TaskId == task.TaskId, new Dictionary { { nameof(Dt_TaskExecuteDetail.TaskDetailId), SqlSugar.OrderByType.Asc } }); content = WebResponseContent.Instance.OK(data: taskExecuteDetails); } else { content = WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】"); } } catch (Exception ex) { } return content; } } }