| | |
| | | |
| | | if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result)) |
| | | { |
| | | List<Dt_Router> routers = _routerService.QueryRoutes(item.SourceAddress, item.TargetAddress); |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); |
| | | //暂不考虑多路径 |
| | | if (routers.Count > 0) |
| | | { |
| | |
| | | } |
| | | else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result)) |
| | | { |
| | | List<Dt_Router> routers = _routerService.QueryRoutes(item.SourceAddress, item.TargetAddress); |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); |
| | | //暂不考虑多路径 |
| | | if (routers.Count > 0) |
| | | { |
| | |
| | | task.ModifyDate = DateTime.Now; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.TaskNum, task.TaskState, task.ExceptionMessage); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.ExceptionMessage); |
| | | |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】"); |
| | | |
| | | if (task.TaskState >= (int)TaskInStatusEnum.InFinish || task.TaskState >= (int)TaskOutStatusEnum.OutFinish) |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"该任务状态不可跳转到下一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | } |
| | | int oldState = task.TaskState; |
| | | if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result)) |
| | | { |
| | | if (task.TaskState >= (int)TaskOutStatusEnum.OutFinish) |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"该任务状态不可跳转到下一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | } |
| | | |
| | | List<int> list = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList(); |
| | | int nextStatus = list.Where(x => x > task.TaskState && x < (int)TaskOutStatusEnum.OutFinish).OrderBy(x => x).FirstOrDefault(); |
| | | |
| | | task.TaskState = nextStatus; |
| | | } |
| | | else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result)) |
| | | { |
| | | if (task.TaskState >= (int)TaskInStatusEnum.InFinish) |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"该任务状态不可跳转到下一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | } |
| | | |
| | | int nextStatus = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().Where(x => x > task.TaskState && x < (int)TaskInStatusEnum.InFinish).OrderBy(x => x).FirstOrDefault(); |
| | | task.TaskState = nextStatus; |
| | | } |
| | |
| | | { |
| | | throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{task.TaskType}】"); |
| | | } |
| | | |
| | | if (task.TaskState <= 0) |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"该任务状态不可跳转到下一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | } |
| | | |
| | | if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish || task.TaskState == (int)TaskInStatusEnum.AGV_InFinish || task.TaskState == (int)TaskInStatusEnum.SC_InFinish || task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish || task.TaskState == (int)TaskOutStatusEnum.AGV_OutFinish || task.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) |
| | | { |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); |
| | | if (!routers.Any()) return WebResponseContent.Instance.Error($"未找到设备路由信息"); |
| | | |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | } |
| | | |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.TaskNum, task.TaskState, App.User.UserId > 0 ? $"人工将任务状态从【{oldState}】跳转到【{task.TaskState}】" : "", App.User.UserId > 0); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"人工手动将任务状态从【{oldState}】跳转到【{task.TaskState}】" : $"系统自动流程,任务状态从【{oldState}】转到【{task.TaskState}】"); |
| | | |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | |
| | | /// </summary> |
| | | /// <param name="taskNum">任务编号</param> |
| | | /// <returns>返回处理结果</returns> |
| | | public WebResponseContent TaskCompleted(int taskNum) |
| | | public WebResponseContent StackCraneTaskCompleted(int taskNum) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】"); |
| | | |
| | | if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result)) |
| | | if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result) && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) |
| | | { |
| | | List<Dt_Router> routers = _routerService.QueryRoutes(task.SourceAddress, task.TargetAddress); |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); |
| | | if (!routers.Any()) return WebResponseContent.Instance.Error($"未找到设备路由信息"); |
| | | if (routers.Count != 0) |
| | | { |
| | | int nextStatus = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>().Where(x => x > task.TaskState).OrderBy(x => x).FirstOrDefault(); |
| | | task.TaskState = nextStatus; |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.TaskNum, task.TaskState, $""); |
| | | //todo 同步到WMS |
| | | } |
| | | else//暂不考虑多个出库口 |
| | | { |
| | | List<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList(); |
| | | int nextStatus = enums.Where(x => x > task.TaskState).OrderBy(x => x).FirstOrDefault(); |
| | | task.TaskState = nextStatus; |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | } |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成"); |
| | | //todo 同步到WMS |
| | | |
| | | //暂不考虑多个出库口 |
| | | } |
| | | else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result)) |
| | | else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result) && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) |
| | | { |
| | | string locationCode = ""; |
| | | //todo 调用WMS申请分配货位 |
| | | |
| | | int nextStatus = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast<int>().Where(x => x > task.TaskState).OrderBy(x => x).FirstOrDefault(); |
| | | int nextStatus = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().Where(x => x > task.TaskState).OrderBy(x => x).FirstOrDefault(); |
| | | task.TaskState = nextStatus; |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = locationCode; |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.TaskNum, task.TaskState, $""); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成"); |
| | | } |
| | | else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(task.TaskType.ToString()).ToString(), out result)) |
| | | { |
| | |
| | | |
| | | BaseDal.UpdateData(task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, taskNum, task.TaskState, $"人工恢复挂起任务,恢复挂起时任务状态【{task.TaskState}】", true); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"人工恢复挂起任务,恢复挂起时任务状态【{task.TaskState}】"); |
| | | |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | |
| | | /// <returns>返回处理结果</returns> |
| | | public WebResponseContent RollbackTaskStatusToLast(int taskNum) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | WebResponseContent content = new(); |
| | | try |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】"); |
| | | if (task.TaskState >= (int)TaskInStatusEnum.InFinish || task.TaskState >= (int)TaskOutStatusEnum.OutFinish || task.TaskState == (int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew) |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"该任务状态不可回滚到上一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | } |
| | | |
| | | int oldState = task.TaskState; |
| | | Dt_TaskExecuteDetail taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.TaskState < task.TaskState, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } }); |
| | | Dt_TaskExecuteDetail taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.TaskState < task.TaskState && x.TaskState > 0, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } }); |
| | | if (taskExecuteDetail != null) |
| | | { |
| | | task.TaskState = taskExecuteDetail.TaskState; |
| | | task.CurrentAddress = taskExecuteDetail.CurrentAddress; |
| | | task.NextAddress = taskExecuteDetail.NextAddress; |
| | | } |
| | | else |
| | | { |
| | | if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result)) |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.OutNew; |
| | | } |
| | | else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result)) |
| | | { |
| | | task.TaskState = (int)TaskInStatusEnum.InNew; |
| | | } |
| | | return content = WebResponseContent.Instance.Error($"未找到任务明细信息,该任务状态不可回滚到上一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | |
| | | //if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result)) |
| | | //{ |
| | | // if (task.TaskState >= (int)TaskOutStatusEnum.OutFinish || task.TaskState == (int)TaskOutStatusEnum.OutNew) |
| | | // { |
| | | // return content = WebResponseContent.Instance.Error($"该任务状态不可回滚到上一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | // } |
| | | // List<int> list = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList(); |
| | | // int preStatus = list.Where(x => x > (int)TaskOutStatusEnum.OutNew && x < task.TaskState).OrderBy(x => x).FirstOrDefault(); |
| | | // task.TaskState = preStatus; |
| | | //} |
| | | //else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result)) |
| | | //{ |
| | | // if (task.TaskState >= (int)TaskInStatusEnum.InFinish || task.TaskState == (int)TaskInStatusEnum.InNew) |
| | | // { |
| | | // return content = WebResponseContent.Instance.Error($"该任务状态不可回滚到上一步,任务号:【{taskNum}】,任务状态:【{task.TaskState}】"); |
| | | // } |
| | | // List<int> list = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList(); |
| | | // int preStatus = list.Where(x => x > (int)TaskInStatusEnum.InNew && x < task.TaskState).OrderBy(x => x).FirstOrDefault(); |
| | | // task.TaskState = preStatus; |
| | | //} |
| | | |
| | | //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.CurrentAddress); |
| | | //if (!routers.Any()) return WebResponseContent.Instance.Error($"未找到设备路由信息"); |
| | | |
| | | //task.CurrentAddress = task.NextAddress; |
| | | //task.NextAddress = task.CurrentAddress; |
| | | |
| | | //todo |
| | | } |
| | | |
| | |
| | | |
| | | BaseDal.UpdateData(task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, taskNum, task.TaskState, $"人工将任务状态从【{oldState}】回滚到【{task.TaskState}】", true); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"人工将任务状态从【{oldState}】回滚到【{task.TaskState}】"); |
| | | |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |