using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_TaskInfoService; using WIDESEAWCS_Tasks.HoisterJob; namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] public class CommonHoisterJob : JobBase, IJob { private readonly ITaskService _taskService; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly ITaskRepository _taskRepository; private readonly IRouterService _routerService; public CommonHoisterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; _taskRepository = taskRepository; _routerService = routerService; } public Task Execute(IJobExecutionContext context) { try { OtherDevice Hoister = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams"); if (Hoister != null) { foreach (var HoisterJob in Hoister.DeviceProDTOs.GroupBy(x => x.DeviceChildCode)) { var Tray = Hoister.GetValue(HoisterDBName.Tray, HoisterJob.Key); var Leisure = Hoister.GetValue(HoisterDBName.Leisure, HoisterJob.Key); if (Tray) { #region 查询组盘信息 //向WMS申请查询当前提升机口的组盘信息,存在组盘信息返回入库任务并发出入库申请 var task = _taskService.QueryExecutingConveyorLineTask(1, HoisterJob.Key); if (Leisure && task != null) Hoister.SetValue(HoisterDBName.RequestIn, true, HoisterJob.Key); #endregion var Inbounding = Hoister.GetValue(HoisterDBName.Inbounding, HoisterJob.Key); if (Inbounding && task != null) { task.TaskState = (int)TaskInStatusEnum.Line_InFinish; task.NextAddress = "001-003-001"; _taskService.UpdateData(task); //更新任务状态并取消入库申请 Hoister.SetValue(HoisterDBName.RequestIn, false, HoisterJob.Key); } } else { //查询出库任务,存在出库任务发出出库申请 var task = _taskService.QueryExecutingConveyorLineTask(2, HoisterJob.Key); if (task != null && Leisure) Hoister.SetValue(HoisterDBName.RequestOut, true, HoisterJob.Key); var Outbounding = Hoister.GetValue(HoisterDBName.Outbounding, HoisterJob.Key); if (Outbounding && task != null) { task.NextAddress = HoisterJob.Key; task.TargetAddress = HoisterJob.Key; task.TaskState = (int)TaskOutStatusEnum.OutNew; _taskService.UpdateData(task); //更新任务状态并取消出库申请 Hoister.SetValue(HoisterDBName.RequestOut, false, HoisterJob.Key); } } } } } catch (Exception ex) { } return Task.CompletedTask; } } }