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_DTO.TaskInfo; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.StackerCrane.Enum; using WIDESEAWCS_TaskInfoService; namespace WIDESEAWCS_TaskInfoService { public partial class TaskService { /// /// 更新AGV任务状态 /// /// /// public WebResponseContent AGVUpdateTaskState(AGVUpdateTaskDTO saveModel) { WebResponseContent content = new WebResponseContent(); try { if (saveModel == null) throw new Exception("更新任务信息为空"); Dt_Task dt_Task = GetTaskInfo(Convert.ToInt32(saveModel.outID)); if (dt_Task == null) throw new Exception($"未找到任务号为【{saveModel.outID}】的任务"); if (dt_Task.TaskState >= (int)TaskInStatusEnum.AGV_InFinish) { return content = WebResponseContent.Instance.Error($"该任务状态不可跳转到下一步,任务号:【{dt_Task.TaskNum}】,任务状态:【{GetEnumDescription(Enum.Parse(Enum.GetName(typeof(TaskInStatusEnum), dt_Task.TaskState)))}】"); } switch (saveModel.status) { case "02": dt_Task.TaskState = (int)TaskInStatusEnum.AGV_InExecuting; break; case "08": { dt_Task.TaskState = (int)TaskInStatusEnum.AGV_InFinish; dt_Task.CurrentAddress = dt_Task.NextAddress; List routers = _routerService.QueryNextRoutes(dt_Task.CurrentAddress, dt_Task.TargetAddress); if (routers.Count > 0) { dt_Task.NextAddress = routers.FirstOrDefault().ChildPosi; } } break; default: throw new Exception($"未定义任务状态【{saveModel.status}】"); } //dt_Task.TaskState = saveModel.status switch //{ // "02" => (int)TaskInStatusEnum.AGV_InExecuting, // "08" => (int)TaskInStatusEnum.AGV_InFinish, // _ => throw new Exception($"未定义任务状态【{saveModel.status}】"), //}; content = UpdateData(dt_Task); } catch (Exception ex) { content.Error(ex.Message); } return content; //return new AGVReturnInfo() //{ // code = content.Status ? "20000" : "90000", // message = content.Message, //}; } public static string GetEnumDescription(T value) where T : Enum { FieldInfo fieldInfo = typeof(T).GetField(value.ToString()); DescriptionAttribute attribute = (DescriptionAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)); return attribute?.Description ?? value.ToString(); } } }