using Autofac.Core; using HslCommunication; using HslCommunication.Core; using Microsoft.VisualBasic.FileIO; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using Quartz; using SixLabors.ImageSharp.PixelFormats; using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Communicator; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.StackerCrane.Enum; namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] public partial class TaskJob : JobBase, IJob { private readonly ITaskService _taskService; private readonly IApiInfoService _apiInfoService; private readonly IRGVLocationInfoService _rGVLocationInfoService; private readonly IStationMangerService _stationMangerService; private readonly ITrackloginfoService _trackloginfoService; private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IAGVCartInfoService _agvcartInfoService; public TaskJob(ITaskService taskService, IApiInfoService apiInfoService, IRGVLocationInfoService rGVLocationInfoService, IStationMangerService stationMangerService, ITrackloginfoService trackloginfoService, IUnitOfWorkManage unitOfWorkManage, IAGVCartInfoService agvcartInfoService) { _taskService = taskService;//注入 _apiInfoService = apiInfoService; _rGVLocationInfoService = rGVLocationInfoService; _stationMangerService = stationMangerService; _trackloginfoService = trackloginfoService; _unitOfWorkManage = unitOfWorkManage; _agvcartInfoService = agvcartInfoService; } public Task Execute(IJobExecutionContext context) { try { SendNewTask(); SendWaitToTask(); #region 处理写入设备信号异常任务 var tasks = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.Finish.ObjToInt() && !string.IsNullOrEmpty(x.Remark)); if (tasks.Count > 0) { List list = new List(); foreach (var item in tasks) { var infos = item.Remark.Split("_"); var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == infos[0]) as OtherDevice; if (device != null && device.IsConnected) { DeviceProDTO? devicePro = device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == infos[1] && x.DeviceChildCode == infos[3]); if (devicePro != null) { var W = device.Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, infos[2]); if (W) list.Add(item); } } } _taskService.Repository.DeleteAndMoveIntoHty(list, OperateTypeEnum.自动删除); } #endregion } catch (Exception ex) { Console.Out.WriteLine(nameof(TaskJob) + ":" + ex.Message); } return Task.CompletedTask; } } }