#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_DTO.TaskInfo; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public class TaskExecuteDetailService : ServiceBase, ITaskExecuteDetailService { private readonly ITaskRepository _taskRepository; private readonly ITask_HtyRepository _task_Hty; public TaskExecuteDetailService(ITaskExecuteDetailRepository BaseDal, ITaskRepository taskRepository,ITask_HtyRepository task_Hty) : base(BaseDal) { _taskRepository = taskRepository; _task_Hty = task_Hty; } 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; 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)) { } 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(); int TaskType = 0; int TaskState = 0; Dt_Task_hty task_h = null; Dt_Task task = _taskRepository.QueryData().Where(x=>x.TaskNum == taskNum).FirstOrDefault(); if (task != null) { TaskType = task.TaskType; TaskState = task.TaskState; } else if(task == null) { task_h = _task_Hty.QueryData().Where(x => x.TaskNum == taskNum).FirstOrDefault(); TaskType = task_h.TaskType; TaskState = task_h.TaskState; } else { return content.Error("任务不存在"); } if (task != null || task_h != null) { if (!int.TryParse(Enum.Parse(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(TaskType.ToString()).ToString(), out result)) { steps = Enum.GetValues(typeof(TaskInStatusEnum)).Cast().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(TaskType.ToString()).ToString(), out result)) { //todo 调用WMS移库完成 } else { throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{TaskType}】"); } active = steps.IndexOf(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); Dt_Task task = _taskRepository.QueryData().Where(x => x.TaskNum == taskNum).FirstOrDefault(); int TaskNum = 0; Dt_Task_hty task_h = null; if (task != null) { TaskNum = task.TaskNum; } else if (task == null) { task_h = _task_Hty.QueryData().Where(x => x.TaskNum == taskNum).FirstOrDefault(); TaskNum = task_h.TaskNum; } else { return content.Error("任务不存在"); } if (task != null || task_h != null) { List taskExecuteDetails = BaseDal.QueryData(x => x.TaskNum == TaskNum, 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; } } }