using AutoMapper;
|
using HslCommunication;
|
using Newtonsoft.Json;
|
using OfficeOpenXml.Drawing.Chart;
|
using Quartz;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common.ShuttleCarEnum;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Core;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_DTO.WMSInfo;
|
using WIDESEAWCS_IShuttleCar;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob;
|
using WIDESEAWCS_QuartzJob.DTO;
|
using WIDESEAWCS_QuartzJob.Service;
|
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
|
using WIDESEAWCS_TaskInfoService;
|
using WIDESEAWCS_Tasks.ConveyorLineJob;
|
using WIDESEAWCS_Tasks.ShuttleCarJob;
|
using WIDESEAWCS_Tasks.StackerCraneJob;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
[DisallowConcurrentExecution]
|
partial class CommonShuttleCarJob : JobBase, IJob
|
{
|
private readonly ITaskService _taskService;
|
private readonly ITaskHtyService _taskHtyService;
|
private readonly IShuttleCarService _shuttleCarService;
|
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
|
private readonly IRouterService _routerService;
|
private readonly IMapper _mapper;
|
|
public CommonShuttleCarJob(ITaskService taskService, ITaskHtyService taskHtyService, IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper)
|
{
|
_taskService = taskService;
|
_taskHtyService = taskHtyService;
|
_shuttleCarService = shuttleCarService;
|
_taskExecuteDetailService = taskExecuteDetailService;
|
_routerService = routerService;
|
_mapper = mapper;
|
}
|
|
public Task Execute(IJobExecutionContext context)
|
{
|
try
|
{
|
ShuttleCar shuttleCar = (ShuttleCar)context.JobDetail.JobDataMap.Get("JobParams");
|
if (shuttleCar != null)
|
{
|
ShuttleCarTaskCommandR command = ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar, shuttleCar.DeviceCode);//读取穿梭车信息
|
if (command != null && command.JoinStatus == 1)
|
{
|
#region 穿梭车任务完成
|
var complete = shuttleCar.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.TaskComplete);
|
if (complete && command.TaskTypeComplete > (short)ShuttleCarTaskComplete.Standby && command.Status == command.TaskTypeComplete)
|
{
|
var Status = _taskService.ShuttleCarTaskCompleted(command.number, command.TaskTypeComplete).Status;
|
shuttleCar.SetValue(ShuttleCarDBName.ConfirmComplete, Status, shuttleCar.DeviceCode);
|
}
|
#endregion
|
|
#region 创建移车充电任务
|
if (command.Err_Status == (short)ShuttleCarErr.LowBattery || command.ElectricQuantity <= (short)ShuttleCarErr.LowBattery)
|
{
|
//生成堆垛机移车任务&穿梭车充电任务
|
var ShuttleCar = QueryCode(shuttleCar.DeviceCode);//充电终点待确认!!!!!!!!!!!!!!!!!!!!!
|
_taskService.AddRelocationCarTask(ShuttleCar.ShuttleCarPosition, "", ShuttleCar.ShuttleCarCode, ShuttleCarTaskType.Charging.ToString());
|
}
|
#endregion
|
|
#region 获取堆垛机移车完成任务
|
GetSC_CarFinish();
|
#endregion
|
|
#region 获取移车任务
|
Get_CarTask(shuttleCar, command);
|
#endregion
|
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
Console.Out.WriteLine(nameof(CommonShuttleCarJob) + ":" + ex.ToString());
|
}
|
finally
|
{
|
|
}
|
return Task.CompletedTask;
|
}
|
}
|
}
|