| | |
| | | using System.Reflection.Metadata; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Transactions; |
| | | using WIDESEA_Common.Log; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_ISystemServices; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_Model.Models.System; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DeviceBase; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly IRouterService _routerService; |
| | | private readonly IDt_PlatformStationService _DtPlatformStationService; |
| | | |
| | | public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService) |
| | | public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IDt_PlatformStationService dt_PlatformStationService) |
| | | { |
| | | _taskService = taskService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | | _taskRepository = taskRepository; |
| | | _routerService = routerService; |
| | | _DtPlatformStationService= dt_PlatformStationService; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | |
| | | // commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é
ä»»å¡å®æäºä»¶ |
| | | //} |
| | | |
| | | |
| | | |
| | | |
| | | if ((int)commonStackerCrane.StackerCraneWorkStatusValue == 6) |
| | | { |
| | | WebResponseContent webResponse = _taskService.StackCraneTaskCompleted(commonStackerCrane.CurrentTaskNum); |
| | | if (webResponse.Status) |
| | | //夿å½å任塿¯å¦æ¯çç¹ |
| | | Dt_Task? currtask = _taskService.CurrtaskInfo(commonStackerCrane.CurrentTaskNum); |
| | | if(currtask != null) |
| | | { |
| | | //夿任å¡ç±»å |
| | | if(currtask.TaskType== (int)TaskTypeEnum.Inventorybound) |
| | | { |
| | | //è¯»åæ¡ç ï¼è¿è¡é
对 |
| | | |
| | | bool ddjfk = commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); |
| | | DeviceProDTO? deviceProDTO = commonStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == "SCBarcode"); |
| | | byte[] bytes = commonStackerCrane.Communicator.Read(deviceProDTO.DeviceProAddress, 64); |
| | | string result = Encoding.ASCII.GetString(bytes).Replace(" ", ""); |
| | | |
| | | bool pandianBort = false; |
| | | if(currtask.PalletCode== result) pandianBort= true; |
| | | |
| | | } |
| | | |
| | | WebResponseContent webResponse = _taskService.StackCraneTaskCompleted(commonStackerCrane.CurrentTaskNum); |
| | | if (webResponse.Status) |
| | | { |
| | | |
| | | bool ddjfk = commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | try |
| | | { |
| | | List<Dt_Task> task; |
| | | task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); |
| | | //夿å½åå åæºæ¯å¦æå¨æ§è¡çä»»å¡ |
| | | if (_taskService.CutStackerCraneTask(commonStackerCrane.DeviceCode) != null) return null; |
| | | |
| | | |
| | | List<Dt_Task> task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); |
| | | if (task.Count > 0) |
| | | { |
| | | foreach (Dt_Task taskItem in task) |
| | | { |
| | | if (taskItem.TaskType == (int)TaskOutboundTypeEnum.Outbound) |
| | | if (taskItem.TaskType == (int)TaskTypeEnum.Outbound) |
| | | { |
| | | if (OutTaskStationIsOccupied(taskItem.NextAddress)) |
| | | { |
| | | return taskItem; |
| | | } |
| | | } |
| | | else if (taskItem.TaskType == (int)TaskInboundTypeEnum.Inbound) |
| | | else if (taskItem.TaskType == (int)TaskTypeEnum.Inbound || taskItem.TaskType == (int)TaskTypeEnum.Inventorybound) |
| | | { |
| | | return taskItem; |
| | | } |
| | |
| | | /// <returns>妿æªè¢«å ç¨ï¼è¿åä¼ å
¥çä»»å¡ä¿¡æ¯ï¼å¦åï¼è¿ånull</returns> |
| | | private bool OutTaskStationIsOccupied(string NextAddress) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1002"); |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1003"); |
| | | if (device == null) return false; |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == NextAddress && x.DeviceProParamName == "StationFree"); |
| | |
| | | { |
| | | StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand(); |
| | | |
| | | stackerCraneTaskCommand.Barcode = ""; /*task.PalletCode;*/ |
| | | stackerCraneTaskCommand.Barcode = task.PalletCode; |
| | | stackerCraneTaskCommand.TaskNum = task.TaskNum; |
| | | stackerCraneTaskCommand.WorkType = 1; |
| | | stackerCraneTaskCommand.TrayType = 0; |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//夿æ¯å¦æ¯å
¥åºä»»å¡ |
| | | if (task.TaskType == (int)TaskTypeEnum.Inbound)//夿æ¯å¦æ¯å
¥åºä»»å¡ |
| | | { |
| | | string[] targetCodest = task.SourceAddress.Split("-"); |
| | | if (targetCodest.Length == 5) |
| | | //è·åç«å°ç¼å· |
| | | Dt_PlatformStation dt_Platform=_DtPlatformStationService.getStatiomInfo(task.SourceAddress); |
| | | |
| | | string[] targetCodest = dt_Platform.Station_storey.Split("-"); |
| | | if (targetCodest.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = Convert.ToInt16(targetCodest[1]); |
| | | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(targetCodest[2]); |
| | | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(targetCodest[3]); |
| | | string StartRow = targetCodest[0].Substring(1); |
| | | stackerCraneTaskCommand.StartRow = Convert.ToInt16(StartRow); |
| | | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(targetCodest[1]); |
| | | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(targetCodest[2]); |
| | | } |
| | | else |
| | | { |
| | |
| | | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"å
¥åºèµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.SourceAddress}ã"); |
| | | return null; |
| | | } |
| | | string[] targetCodes = task.NextAddress.Split("-"); |
| | | if (targetCodes.Length == 5) |
| | | string[] EndCodest = task.NextAddress.Split("-"); |
| | | if (EndCodest.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]); |
| | | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]); |
| | | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]); |
| | | string EndRow = EndCodest[0].Substring(1); |
| | | stackerCraneTaskCommand.EndRow = Convert.ToInt16(EndRow); |
| | | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(EndCodest[1]); |
| | | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(EndCodest[2]); |
| | | } |
| | | else |
| | | { |
| | |
| | | return null; |
| | | } |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | | else if (task.TaskType == (int)TaskTypeEnum.Outbound) |
| | | { |
| | | string[] sourceCodes = task.CurrentAddress.Split("-"); |
| | | if (sourceCodes.Length == 5) |
| | | if (sourceCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]); |
| | | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]); |
| | | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]); |
| | | string StartRow = sourceCodes[0].Substring(1); |
| | | stackerCraneTaskCommand.StartRow = Convert.ToInt16(StartRow); |
| | | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]); |
| | | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]); |
| | | } |
| | | else |
| | | { |
| | |
| | | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"åºåºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); |
| | | return null; |
| | | } |
| | | string[] sourceCodest = task.TargetAddress.Split("-"); |
| | | if (sourceCodest.Length == 5) |
| | | |
| | | //è·åç«å°ç¼å· |
| | | Dt_PlatformStation dt_Platform = _DtPlatformStationService.getStatiomInfo(task.SourceAddress); |
| | | string[] EndCodest = dt_Platform.Station_storey.Split("-"); |
| | | if (EndCodest.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.EndRow = Convert.ToInt16(sourceCodest[1]); |
| | | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(sourceCodest[2]); |
| | | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(sourceCodest[3]); |
| | | string EndRow = EndCodest[0].Substring(1); |
| | | stackerCraneTaskCommand.EndRow = Convert.ToInt16(EndRow); |
| | | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(EndCodest[1]); |
| | | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(EndCodest[2]); |
| | | } |
| | | else |
| | | { |
| | |
| | | return null; |
| | | } |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) |
| | | else if (task.TaskType == (int)TaskTypeEnum.Inventorybound) |
| | | { |
| | | string[] targetCodes = task.NextAddress.Split("-"); |
| | | if (targetCodes.Length == 5) |
| | | stackerCraneTaskCommand.WorkType = 6; |
| | | |
| | | stackerCraneTaskCommand.StartRow = Convert.ToInt16(0); |
| | | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(0); |
| | | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(0); |
| | | |
| | | string[] EndCodest = task.NextAddress.Split("-"); |
| | | if (EndCodest.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]); |
| | | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]); |
| | | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]); |
| | | } |
| | | else |
| | | { |
| | | //æ°æ®é
ç½®é误 |
| | | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"ç§»åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); |
| | | return null; |
| | | } |
| | | string[] sourceCodes = task.CurrentAddress.Split("-"); |
| | | if (sourceCodes.Length == 5) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]); |
| | | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]); |
| | | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]); |
| | | string EndRow = EndCodest[0].Substring(1); |
| | | stackerCraneTaskCommand.EndRow = Convert.ToInt16(EndRow); |
| | | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(EndCodest[1]); |
| | | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(EndCodest[2]); |
| | | } |
| | | else |
| | | { |
| | |
| | | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"ç§»åºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | } |
| | | return stackerCraneTaskCommand; |
| | | } |