| | |
| | | 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> |
| | |
| | | return content = WebResponseContent.Instance.Error($"WCSæªæ¥è¯¢å°æºç«ç¹å¯¹åºçåºä½ï¼æºç«ç¹ï¼{taskDTO.dest_station.ToString()}"); |
| | | } |
| | | break; |
| | | case 3001://AGVæ¾è´§å®æ WMSå3001çåæ¶ä¼åæåä¿¡å· |
| | | case 3001://AGVæ¾è´§å®æ WMSå3001çåæ¶WCSéå¨jobä¸åæåä¿¡å· |
| | | if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.task_id) == null)//æå¨å
¥åºç´æ¥å3001ï¼éè¦çæä»»å¡ï¼å 为没æ1001ç¯è |
| | | { |
| | | |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ServiceLogger.WriteDebug("ReceiveTask", $"任塿¥æ¶é误,é误信æ¯:{ex.Message}"); |
| | | ServiceLogger.WriteDebug("ReceiveTask", $"任塿¥æ¶é误,é误信æ¯:{ex.StackTrace}"); |
| | | content = WebResponseContent.Instance.Error($"任塿¥æ¶é误,é误信æ¯:{ex.Message}"); |
| | | } |
| | | return content; |
| | |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.ExceptionMessage); |
| | | |
| | | content = WebResponseContent.Instance.OK(); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | task.Modifier = "System"; |
| | | task.ModifyDate = DateTime.Now; |
| | | 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; |
| | | } |
| | | |
| | | |
| | |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | //任塿§è¡å¤±è´¥ï¼è´§ä½ç¶æè¿å |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"大å åæºæ§è¡åºåºä»»å¡å¤±è´¥ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{ex.Message}ã"); |
| | | content = WebResponseContent.Instance.Error($"大å åæºæ§è¡åºåºä»»å¡å¤±è´¥ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{ex.Message}ã"); |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress); |
| | | //Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress); |
| | | //srcLocation.LocationStatus = (int)LocationStatusEnum.Free; |
| | | |
| | | |
| | |
| | | MESResponse res = ApiInvoke.SendTaskCMD(sendcmd); |
| | | if (res != null && res.code != 0) |
| | | { |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"å°å åæºå®æåºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | content = WebResponseContent.Instance.Error($"å°å åæºå®æåºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | } |
| | | else |
| | | { |
| | | //夿æ¯å¦å®æçæåä¸å±ï¼èªå¨çæç©ºè½¦åºåºä»»å¡ |
| | | string[] Levels = task.Remark.Split("-"); |
| | | if (Levels.Length == 2) |
| | | { |
| | | if (!string.IsNullOrEmpty(Levels[0])&& !string.IsNullOrEmpty(Levels[1])) |
| | | { |
| | | //妿å½åæå屿°çäºæ»å±æï¼å表示æè½¦ææç屿°åå® |
| | | if(Convert.ToInt16(Levels[0])== Convert.ToInt16(Levels[1])) |
| | | { |
| | | string[] SourceCodes = task.SourceAddress.Split("-"); |
| | | string startPlan = ""; |
| | | if (SourceCodes.Length == 4) |
| | | { |
| | | startPlan= "101"+ SourceCodes[2].Substring(1,2); |
| | | } |
| | | DeliveryPlan send = new DeliveryPlan { startPlan = startPlan, isQuit = false, CarId = task.PalletCode }; |
| | | string inparam2 = JsonConvert.SerializeObject(send); |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"å°å åæºæ§è¡åºåºä»»å¡åä¼ MESå
¥å{inparam2}"); |
| | | ApiInvoke.DeliveryPlanCMD(send);//åè°MESæ¥å£çæç©ºè½¦åºåºä»»å¡ |
| | | //ææç屿°é½åå®ï¼éè¦ææåä½ç¶ææ¹ä¸ºç©ºé²ç¶æ |
| | | srcLocation.LocationStatus = (int)LocationStatusEnum.Free; |
| | | _locationInfoRepository.UpdateData(srcLocation); |
| | | } |
| | | //else |
| | | //{ |
| | | // //夿æ¯å¦å®æçæåä¸å±ï¼èªå¨çæç©ºè½¦åºåºä»»å¡ |
| | | // string[] Levels = task.Remark.Split("-"); |
| | | // if (Levels.Length == 2) |
| | | // { |
| | | // if (!string.IsNullOrEmpty(Levels[0])&& !string.IsNullOrEmpty(Levels[1])) |
| | | // { |
| | | // //妿å½åæå屿°çäºæ»å±æï¼å表示æè½¦ææç屿°åå® |
| | | // if(Convert.ToInt16(Levels[0])== Convert.ToInt16(Levels[1])) |
| | | // { |
| | | // string[] SourceCodes = task.SourceAddress.Split("-"); |
| | | // string startPlan = ""; |
| | | // if (SourceCodes.Length == 4) |
| | | // { |
| | | // startPlan = "101" + SourceCodes[2].Substring(1, 2); |
| | | // } |
| | | // DeliveryPlan send = new DeliveryPlan { startPlan = startPlan, isQuit = false, CarId = task.PalletCode }; |
| | | // string inparam2 = JsonConvert.SerializeObject(send); |
| | | // ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"å°å åæºæ§è¡åºåºä»»å¡åä¼ MESå
¥å{inparam2}"); |
| | | // ApiInvoke.DeliveryPlanCMD(send);//åè°MESæ¥å£çæç©ºè½¦åºåºä»»å¡ |
| | | // ææç屿°é½åå®ï¼éè¦ææåä½ç¶ææ¹ä¸ºç©ºé²ç¶æ |
| | | // srcLocation.LocationStatus = (int)LocationStatusEnum.Free; |
| | | // _locationInfoRepository.UpdateData(srcLocation); |
| | | // } |
| | | |
| | | } |
| | | // } |
| | | |
| | | } |
| | | } |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"å°å åæºæ§è¡åºåºä»»å¡å¤±è´¥ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{ex.Message}ã"); |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"å°å åæºæ§è¡åºåºä»»å¡å¤±è´¥ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{ex.StackTrace}ã"); |
| | | content = WebResponseContent.Instance.Error($"å°å åæºæ§è¡åºåºä»»å¡å¤±è´¥ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{ex.Message}ã"); |
| | | } |
| | | |
| | |
| | | return content; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ¢å¤æèµ·ä»»å¡ |
| | | /// </summary> |