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, bool>(HoisterDBName.Tray, HoisterJob.Key);
|
var Leisure = Hoister.GetValue<HoisterDBName, bool>(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, bool>(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, bool>(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;
|
}
|
}
|
}
|