|  |  |  | 
|---|
|  |  |  | using WIDESEAWCS_QuartzJob.Models; | 
|---|
|  |  |  | using WIDESEAWCS_QuartzJob.Service; | 
|---|
|  |  |  | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; | 
|---|
|  |  |  | using WIDESEAWCS_Tasks.HoisterJob; | 
|---|
|  |  |  | using WIDESEAWCS_Tasks.StackerCraneJob; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace WIDESEAWCS_Tasks | 
|---|
|  |  |  | 
|---|
|  |  |  | if (sendFlag) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.LastTaskType = task.TaskType; | 
|---|
|  |  |  | _taskService.UpdateTaskStatusToNext(task.TaskNum); | 
|---|
|  |  |  | //_taskService.UpdateTaskStatusToNext(task.TaskNum); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Console.Out.WriteLine("TaskCompleted" + e.TaskNum); | 
|---|
|  |  |  | _taskService.StackCraneTaskCompleted(e.TaskNum); | 
|---|
|  |  |  | //Console.Out.WriteLine("TaskCompleted" + e.TaskNum); | 
|---|
|  |  |  | // _taskService.StackCraneTaskCompleted(e.TaskNum); | 
|---|
|  |  |  | commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); | 
|---|
|  |  |  | if (task == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (OutTaskStationIsOccupied(task) != null) | 
|---|
|  |  |  | if (OutTaskStationIsOccupied(task) != null || true) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return task; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | /// <returns>妿æªè¢«å ç¨ï¼è¿åä¼ å
¥çä»»å¡ä¿¡æ¯ï¼å¦åï¼è¿ånull</returns> | 
|---|
|  |  |  | private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault(); | 
|---|
|  |  |  | Dt_Router? router = _routerService.QueryNextRoutes(task.DeviceCode, task.NextAddress).FirstOrDefault(); | 
|---|
|  |  |  | if (router != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode); | 
|---|
|  |  |  | if (device != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (device.DeviceCode == "YMCTSJ" || task.DeviceCode == "CSJCSC01") return task; | 
|---|
|  |  |  | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; | 
|---|
|  |  |  | if (conveyorLine.IsOccupied(router.ChildPosi))//åºåºç«å°æªè¢«å ç¨ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | stackerCraneTaskCommand.Barcode = task.PalletCode; | 
|---|
|  |  |  | stackerCraneTaskCommand.TaskNum = task.TaskNum; | 
|---|
|  |  |  | stackerCraneTaskCommand.WorkType = 1; | 
|---|
|  |  |  | stackerCraneTaskCommand.TrayType = 0; | 
|---|
|  |  |  | stackerCraneTaskCommand.TrayType = 1; | 
|---|
|  |  |  | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//夿æ¯å¦æ¯å
¥åºä»»å¡ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway); | 
|---|
|  |  |  | if (routers.Count > 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer); | 
|---|
|  |  |  | //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway); | 
|---|
|  |  |  | //if (routers.Count > 0) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | string[] startCodes = task.CurrentAddress.Split("-"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | string[] targetCodes = task.NextAddress.Split("-"); | 
|---|
|  |  |  | if (targetCodes.Length == 3) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"å
¥åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | string[] targetCodes = task.NextAddress.Split("-"); | 
|---|
|  |  |  | if (targetCodes.Length == 3) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³è·å对åºçå åæºåè´§ç«å°ä¿¡æ¯"); | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"å
¥åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | //else | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³è·å对åºçå åæºåè´§ç«å°ä¿¡æ¯"); | 
|---|
|  |  |  | //    return null; | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress); | 
|---|
|  |  |  | if (routers.Count > 0) | 
|---|
|  |  |  | //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress); | 
|---|
|  |  |  | //if (routers.Count > 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer); | 
|---|
|  |  |  | string[] targetCodes = task.NextAddress.Split("-"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | string[] sourceCodes = task.CurrentAddress.Split("-"); | 
|---|
|  |  |  | if (sourceCodes.Length == 3) | 
|---|
|  |  |  | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³è·å对åºçå åæºæ¾è´§ç«å°ä¿¡æ¯"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //else | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³è·å对åºçå åæºæ¾è´§ç«å°ä¿¡æ¯"); | 
|---|
|  |  |  | //    return null; | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) | 
|---|
|  |  |  | { | 
|---|