using Quartz;
|
using SqlSugar.Extensions;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection.Metadata;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common;
|
using WIDESEAWCS_Common.LocationEnum;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Core.BaseRepository;
|
using WIDESEAWCS_DTO.WMS;
|
using WIDESEAWCS_IBasicInfoService;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
[DisallowConcurrentExecution]
|
public partial class ScheduledTaskJob : JobBase, IJob
|
{
|
private readonly ITaskService _taskService;
|
private readonly IHKLocationInfoService _HKLocationInfoService;
|
private readonly IStationInfoService _StationInfoService;
|
private readonly IStationMangerService _stationMangerService;
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
public ScheduledTaskJob(ITaskService taskService, IApiInfoService apiInfoService, IHKLocationInfoService hKLocationInfoService, IStationInfoService stationInfoService, IStationMangerService stationMangerService, IUnitOfWorkManage unitOfWorkManage)
|
{
|
_taskService = taskService;
|
_HKLocationInfoService = hKLocationInfoService;
|
_StationInfoService = stationInfoService;
|
_stationMangerService = stationMangerService;
|
_unitOfWorkManage = unitOfWorkManage;
|
}
|
|
public Task Execute(IJobExecutionContext context)
|
{
|
try
|
{
|
#region 三楼自动任务
|
List<string> StationCodes = new() { "0348840CC0315690", "0349350CC0315686" };
|
var stations = _StationInfoService.Repository.QueryData(x => StationCodes.Contains(x.StationCode));
|
#region 入提升机任务
|
var station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
|
if (station != null)
|
{
|
var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
|
Dt_Task dt_Task = new Dt_Task()
|
{
|
TaskNum = tasknum,
|
WMSTaskNum = "GP" + tasknum,
|
Grade = 60,
|
PalletCode = station.PalletCode,
|
Roadway = "",
|
TaskState = (int)TaskStatusEnum.New,
|
TaskType = TaskTypeEnum.RK3F.ObjToInt(),
|
SourceAddress = station.StationCode,
|
CurrentAddress = station.StationCode,
|
NextAddress = "TSJR3F",
|
TargetAddress = "TSJR3F",
|
Creater = "WCS",
|
};
|
var content = _taskService.SendHIKROBOTTask(dt_Task);
|
if (content.Status)
|
{
|
dt_Task.TaskState = (int)TaskStatusEnum.Execut;
|
dt_Task.Dispatchertime = DateTime.Now;
|
station.StationStatus = (int)LocationStatusEnum.OutLock;
|
_taskService.AddData(dt_Task);
|
_StationInfoService.UpdateData(station);
|
}
|
}
|
#endregion
|
|
#region 出提升机任务
|
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
|
if (device != null && device.IsConnected)
|
{
|
if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, "TSJC3F") == 1)
|
{
|
Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC3F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
|
if (dt_Task == null)
|
{
|
station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
|
if (station != null)
|
{
|
var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
|
dt_Task = new Dt_Task()
|
{
|
TaskNum = tasknum,
|
WMSTaskNum = "GP" + tasknum,
|
Grade = 60,
|
PalletCode = "LXM" + tasknum,
|
Roadway = "",
|
TaskState = (int)TaskStatusEnum.New,
|
TaskType = TaskTypeEnum.CK3F.ObjToInt(),
|
SourceAddress = "TSJC3F",
|
CurrentAddress = "TSJC3F",
|
NextAddress = station.StationCode,
|
TargetAddress = station.StationCode,
|
Creater = "WCS",
|
};
|
var content = _taskService.SendHIKROBOTTask(dt_Task);
|
if (content.Status)
|
{
|
dt_Task.TaskState = (int)TaskStatusEnum.Execut;
|
dt_Task.Dispatchertime = DateTime.Now;
|
station.StationStatus = (int)LocationStatusEnum.InLock;
|
_taskService.AddData(dt_Task);
|
_StationInfoService.UpdateData(station);
|
}
|
}
|
}
|
}
|
}
|
#endregion
|
|
#endregion
|
|
#region 4F
|
List<string> stationCodes = new() { "0319882DD0313240", "0319882DD0313750" };
|
var Stations = _StationInfoService.Repository.QueryData(x => stationCodes.Contains(x.StationCode));
|
#region 入提升机任务
|
var Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
|
if (Station != null)
|
{
|
var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
|
Dt_Task dt_Task = new Dt_Task()
|
{
|
TaskNum = tasknum,
|
WMSTaskNum = "GP" + tasknum,
|
Grade = 60,
|
PalletCode = Station.PalletCode,
|
Roadway = "",
|
TaskState = (int)TaskStatusEnum.New,
|
TaskType = TaskTypeEnum.F04.ObjToInt(),
|
SourceAddress = Station.StationCode,
|
CurrentAddress = Station.StationCode,
|
NextAddress = "TSJR4F",
|
TargetAddress = "TSJR4F",
|
Creater = "WCS",
|
};
|
var content = _taskService.SendHIKROBOTTask(dt_Task);
|
if (content.Status)
|
{
|
dt_Task.TaskState = (int)TaskStatusEnum.Execut;
|
dt_Task.Dispatchertime = DateTime.Now;
|
Station.StationStatus = (int)LocationStatusEnum.OutLock;
|
_taskService.AddData(dt_Task);
|
_StationInfoService.UpdateData(Station);
|
}
|
}
|
#endregion
|
|
#region 出提升机任务
|
device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
|
if (device != null && device.IsConnected)
|
{
|
if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
|
{
|
Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
|
if (dt_Task == null)
|
{
|
Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
|
if (Station != null)
|
{
|
var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
|
dt_Task = new Dt_Task()
|
{
|
TaskNum = tasknum,
|
WMSTaskNum = "GP" + tasknum,
|
Grade = 60,
|
PalletCode = "LXM" + tasknum,
|
Roadway = "",
|
TaskState = (int)TaskStatusEnum.New,
|
TaskType = TaskTypeEnum.F03.ObjToInt(),
|
SourceAddress = "TSJC4F",
|
CurrentAddress = "TSJC4F",
|
NextAddress = Station.StationCode,
|
TargetAddress = Station.StationCode,
|
Creater = "WCS",
|
};
|
var content = _taskService.SendHIKROBOTTask(dt_Task);
|
if (content.Status)
|
{
|
dt_Task.TaskState = (int)TaskStatusEnum.Execut;
|
dt_Task.Dispatchertime = DateTime.Now;
|
Station.StationStatus = (int)LocationStatusEnum.InLock;
|
_taskService.AddData(dt_Task);
|
_StationInfoService.UpdateData(Station);
|
}
|
}
|
}
|
}
|
}
|
#endregion
|
|
#endregion
|
|
#region 四楼自动任务
|
//List<string> LocationCodes = new() { "RGD0303A04041", "RG0302A05041", "RG0304A05041", "RG0205A05031" };
|
List<string> LocationCodes = new() { "RGD0302A05041", "RGD0304A05041", "R3CG0106A04031", "RGD0307A05012" };
|
var hKLocationInfos = _HKLocationInfoService.Repository.QueryData(x => LocationCodes.Contains(x.LocationCode));
|
#region 入提升机任务
|
var hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.InStock);
|
if (hKLocation != null)
|
{
|
var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
|
Dt_Task dt_Task = new Dt_Task()
|
{
|
TaskNum = tasknum,
|
WMSTaskNum = "GP" + tasknum,
|
Grade = 60,
|
PalletCode = hKLocation.PalletCode,
|
Roadway = "",
|
TaskState = (int)TaskStatusEnum.New,
|
TaskType = TaskTypeEnum.CHUKU1.ObjToInt(),
|
SourceAddress = hKLocation.LocationCode,
|
CurrentAddress = hKLocation.LocationCode,
|
NextAddress = "TSJR4F",
|
TargetAddress = "TSJR4F",
|
Creater = "WCS",
|
};
|
var content = _taskService.SendHIKROBOTTask(dt_Task);
|
if (content.Status)
|
{
|
dt_Task.TaskState = (int)TaskStatusEnum.Execut;
|
dt_Task.Dispatchertime = DateTime.Now;
|
hKLocation.LocationStatus = (int)LocationStatusEnum.OutLock;
|
_taskService.AddData(dt_Task);
|
_HKLocationInfoService.UpdateData(hKLocation);
|
}
|
}
|
#endregion
|
|
#region 出提升机任务
|
//if (device != null && device.IsConnected)
|
//{
|
// if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
|
// {
|
// Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F");
|
// if (dt_Task == null)
|
// {
|
// hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.Free);
|
// if (hKLocation != null)
|
// {
|
// var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
|
// dt_Task = new Dt_Task()
|
// {
|
// TaskNum = tasknum,
|
// WMSTaskNum = "GP" + tasknum,
|
// Grade = 60,
|
// PalletCode = "LXM" + tasknum,
|
// Roadway = "",
|
// TaskState = (int)TaskStatusEnum.New,
|
// TaskType = TaskTypeEnum.Q1TSJ4.ObjToInt(),
|
// SourceAddress = "TSJC4F",
|
// CurrentAddress = "TSJC4F",
|
// NextAddress = hKLocation.LocationCode,
|
// TargetAddress = hKLocation.LocationCode,
|
// Creater = "WCS",
|
// };
|
// var content = _taskService.SendHIKROBOTTask(dt_Task);
|
// if (content.Status)
|
// {
|
// dt_Task.TaskState = (int)TaskStatusEnum.Execut;
|
// dt_Task.Dispatchertime = DateTime.Now;
|
// hKLocation.LocationStatus = (int)LocationStatusEnum.InLock;
|
// _taskService.AddData(dt_Task);
|
// _HKLocationInfoService.UpdateData(hKLocation);
|
// }
|
// }
|
// }
|
|
// }
|
//}
|
#endregion
|
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
Console.Out.WriteLine(nameof(TaskJob) + ":" + ex.Message);
|
}
|
return Task.CompletedTask;
|
}
|
}
|
}
|