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() { "0321935CC0329515", "0321935CC0329015", "0321935CC0328485", "0321935CC0328005" }; var stations = _StationInfoService.Repository.QueryData(x => StationCodes.Contains(x.StationCode)); #region 入提升机任务 var station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock); 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) { station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free); 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.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 四楼自动任务 List LocationCodes = new() { "RGD0304A04011", "RG0105A04031", "RG0202A05021" }; 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, "TSJC3F") == 1) { hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.Free); 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.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; } } }