|  |  | 
 |  |  |         private readonly ILocationInfoRepository _locationInfoRepository; | 
 |  |  |         private readonly IMapper _mapper; | 
 |  |  |         private readonly IUnitOfWorkManage _unitOfWorkManage; | 
 |  |  |         private readonly ITaskRepository _taskRepository; | 
 |  |  |  | 
 |  |  |         private Dictionary<string, OrderByType> _taskOrderBy = new() | 
 |  |  |             { | 
 |  |  | 
 |  |  |  | 
 |  |  |         public List<int> TaskOtherboundTypes => typeof(TaskOtherTypeEnum).GetEnumIndexList(); | 
 |  |  |  | 
 |  |  |         public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ILocationInfoRepository locationInfoRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) | 
 |  |  |         public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ILocationInfoRepository locationInfoRepository, IUnitOfWorkManage unitOfWorkManage, ITaskRepository taskRepository) : base(BaseDal) | 
 |  |  |         { | 
 |  |  |             _routerService = routerService; | 
 |  |  |             _taskExecuteDetailService = taskExecuteDetailService; | 
 |  |  | 
 |  |  |             _mapper = mapper; | 
 |  |  |             _locationInfoRepository = locationInfoRepository; | 
 |  |  |             _unitOfWorkManage = unitOfWorkManage; | 
 |  |  |             _taskRepository = taskRepository; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  | 
 |  |  |  | 
 |  |  |                 _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.ExceptionMessage); | 
 |  |  |  | 
 |  |  |                 content = WebResponseContent.Instance.OK(); | 
 |  |  |                 | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  | 
 |  |  |             BaseDal.UpdateData(task); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// ä»»å¡å¼ºå¶å®æ | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="taskNum"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public WebResponseContent ForceCompleteTask(int taskNum) | 
 |  |  |         { | 
 |  |  |             return null; | 
 |  |  |          | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// ä»»å¡åæ¶ | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="taskid"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public WebResponseContent CancelTask(int taskid) | 
 |  |  |         { | 
 |  |  |             WebResponseContent content = new WebResponseContent(); | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 //å
æ¥è¯¢ä»»å¡ï¼æ ¹æ®ä¸åçä»»å¡ç±»ååä»»å¡åæ¶æä½ | 
 |  |  |                 bool isAllow = false; | 
 |  |  |                 Dt_Task task = _taskRepository.QueryFirst(x => x.TaskId == taskid); | 
 |  |  |                 if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡id:ã{taskid}ã"); | 
 |  |  |  | 
 |  |  |                 //妿æ¯å
¥åºåèªå¨åæå¨ä¸¤ç§æ
åµå¤ç | 
 |  |  |                 if (task.TaskType == (int)TaskInboundTypeEnum.Inbound) | 
 |  |  |                 { | 
 |  |  |                     if (task.WMSId == 0 && task.TaskState == (int)TaskInStatusEnum.InNew)//èªå¨å
¥åºï¼1001-AGVè¯·æ±æ¯å¦å
计è¿å
¥ï¼ä»»å¡ç¶æä¸ºâæ°å»ºå
¥åºä»»å¡200âä¹åå¯ä»¥åæ¶ | 
 |  |  |                     { | 
 |  |  |                         isAllow = true; | 
 |  |  |                         task.TaskState = (int)TaskInStatusEnum.InCancel; | 
 |  |  |                     } | 
 |  |  |                     else if (task.WMSId == 1 && task.TaskState == (int)TaskInStatusEnum.AGV_InExecuting)//æå¨å
¥åºï¼3001-AGVæ¾è´§å®æï¼ä»»å¡ç¶æä¸ºâAGVå
¥åºæ§è¡ä¸210âä¹åå¯ä»¥åæ¶ | 
 |  |  |                     { | 
 |  |  |                         isAllow = true; | 
 |  |  |                         task.TaskState = (int)TaskInStatusEnum.InCancel; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 else//å
¶ä»ä»»å¡ï¼ä»»å¡ç¶æâæ°å»ºåºåºä»»å¡âä¹åï¼æå¯ä»¥åæ¶ | 
 |  |  |                 { | 
 |  |  |                     if (task.TaskState == (int)TaskOutStatusEnum.OutNew) | 
 |  |  |                     { | 
 |  |  |                         isAllow = true; | 
 |  |  |                         task.TaskState = (int)TaskOutStatusEnum.OutCancel; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (isAllow)//妿å
è®¡åæ¶ | 
 |  |  |                 { | 
 |  |  |                     //æ´æ°ç¶æä¸ºä»»å¡åæ¶ | 
 |  |  |                     UpdateTaskStatus(task.TaskId, task.TaskState); | 
 |  |  |                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"æå¨ä»»å¡åæ¶"); | 
 |  |  |                     content = WebResponseContent.Instance.OK("åæ¶æåï¼"); | 
 |  |  |                     //忥åä¼ WMS | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  |                     content = WebResponseContent.Instance.OK("该任å¡ç®åç¶æä¸å
è®¸åæ¶ï¼"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  |                 content = WebResponseContent.Instance.Error(ex.Message); | 
 |  |  |             } | 
 |  |  |             return content; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ´æ°ä»»å¡ç¶æä¿¡æ¯åæ°çä»»å¡å·ï¼1001ï¼3001æ¶ä¸æ ·ä»»å¡å·ï¼ |