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 { 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 StationCodes = new() { "0348840CC0315655", "0349350CC0315655" }; 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.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 stationCodes = new() { "0319882DD0312730", "0319882DD0313240" }; 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.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 LocationCodes = new() { "RGD0303A04041", "RG0302A05041", "RG0304A05041", "RG0205A05031" }; List 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.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; } } }