|  |  | 
 |  |  | using Autofac.Core; | 
 |  |  | using HslCommunication; | 
 |  |  | using HslCommunication.Core; | 
 |  |  | using HslCommunication.Enthernet; | 
 |  |  | using HslCommunication.WebSocket; | 
 |  |  | using Microsoft.Extensions.Hosting; | 
 |  |  | using Microsoft.VisualBasic.FileIO; | 
 |  |  | using Newtonsoft.Json; | 
 |  |  | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; | 
 |  |  | using Quartz; | 
 |  |  | using SixLabors.ImageSharp.PixelFormats; | 
 |  |  | using System; | 
 |  |  | 
 |  |  | using WIDESEAWCS_Common.TaskEnum; | 
 |  |  | using WIDESEAWCS_Communicator; | 
 |  |  | using WIDESEAWCS_Core; | 
 |  |  | using WIDESEAWCS_Core.BaseRepository; | 
 |  |  | using WIDESEAWCS_Core.Helper; | 
 |  |  | using WIDESEAWCS_ISystemServices; | 
 |  |  | using WIDESEAWCS_ITaskInfoService; | 
 |  |  | 
 |  |  | using WIDESEAWCS_QuartzJob; | 
 |  |  | using WIDESEAWCS_QuartzJob.DeviceBase; | 
 |  |  | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; | 
 |  |  | using WIDESEAWCS_TaskInfoService; | 
 |  |  | using WIDESEAWCS_Tasks.OHT; | 
 |  |  |  | 
 |  |  | namespace WIDESEAWCS_Tasks | 
 |  |  | 
 |  |  |         public static OHTReadData oHTReadData = new OHTReadData(); | 
 |  |  |         private readonly ITaskService _taskService; | 
 |  |  |         private readonly Idt_ErrormsginfoService _ErrormsginfoService; | 
 |  |  |         private readonly IRepository<Dt_Task_hty> _taskhtyRepository; | 
 |  |  |         WebSocketServer _webSocketServer; | 
 |  |  |         public OHTJob(ITaskService taskService, WebSocketServer webSocketServer, Idt_ErrormsginfoService errormsginfoService) | 
 |  |  |         OtherDevice devicese; | 
 |  |  |         OtherDevice deviceses; | 
 |  |  |         public OHTJob(ITaskService taskService, WebSocketServer webSocketServer, Idt_ErrormsginfoService errormsginfoService, IRepository<Dt_Task_hty> taskhtyRepository) | 
 |  |  |         { | 
 |  |  |             _taskService = taskService;//注å
¥ | 
 |  |  |             _webSocketServer = webSocketServer; | 
 |  |  |             _ErrormsginfoService = errormsginfoService; | 
 |  |  |             _taskhtyRepository = taskhtyRepository; | 
 |  |  |         } | 
 |  |  |         public Task Execute(IJobExecutionContext context) | 
 |  |  |         { | 
 |  |  |             //return Task.CompletedTask; | 
 |  |  |             bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); | 
 |  |  |             if (flag && value != null) | 
 |  |  |             { | 
 |  |  |                 //天车PLC对象 | 
 |  |  |                 OtherDevice device = (OtherDevice)value; | 
 |  |  |                 OtherDevice zxj = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "鳿æ´å½¢æº"); | 
 |  |  |                 OtherDevice gzj = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "é³æè§æ´æº"); | 
 |  |  |                 devicese = zxj; | 
 |  |  |                 deviceses = gzj; | 
 |  |  |  | 
 |  |  |                  | 
 |  |  |                 //æ´å½¢æºPLC对象 | 
 |  |  |                 var ZXJdevice = Storage.Devices.Find(v => v.DeviceName == "鳿æ´å½¢æº"); | 
 |  |  |                 //è§æ´æºPLC对象 | 
 |  |  | 
 |  |  |                                 device.SetValue(DeviceDBName.W_ConfirmSignal, 3); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                         //åé¤åºåº | 
 |  |  |                         else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.TiChuChuKu) | 
 |  |  |                         { | 
 |  |  |                             //ä¿®æ¹ç¶æ | 
 |  |  |                             WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask); | 
 |  |  |                             if (result.Status) | 
 |  |  |                             { | 
 |  |  |                                 //gzj.SetValue(DeviceDBName.W_GZJ_LockGZJ, true); | 
 |  |  |                                 device.SetValue(DeviceDBName.W_ConfirmSignal, 3); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                         //åé¤å
¥åº | 
 |  |  |                         else if (nawtask.TaskType == (int)TaskInboundTypeEnum.TiChuRuKu) | 
 |  |  |                         { | 
 |  |  |                             //ä¿®æ¹ç¶æ | 
 |  |  |                             WebResponseContent result = _taskService.UpdateTaskStatusToLine_Ingrab(nawtask); | 
 |  |  |                             if (result.Status) | 
 |  |  |                             { | 
 |  |  |                                 device.SetValue(DeviceDBName.W_ConfirmSignal, 3); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                         //åé¤ç´æ¥åºåº | 
 |  |  |                         else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.TiChuZhiJieChuKu) | 
 |  |  |                         { | 
 |  |  |                             //ä¿®æ¹ç¶æ | 
 |  |  |                             WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask); | 
 |  |  |                             if (result.Status) | 
 |  |  |                             { | 
 |  |  |                                 //gzj.SetValue(DeviceDBName.W_GZJ_LockGZJ, true); | 
 |  |  |                                 device.SetValue(DeviceDBName.W_ConfirmSignal, 3); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                         return Task.CompletedTask; | 
 |  |  |                     } | 
 |  |  |                     else if (oHTReadData.R_RunState == (int)RunStateEnum.PutCompleted && oHTReadData.R_TaskState == (int)TaskStateEnum.TaskComplete) | 
 |  |  | 
 |  |  |                         { | 
 |  |  |                             device.SetValue(DeviceDBName.W_ConfirmSignal, 3); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         var nawtask = _taskService.QueryTakNnmTask(oHTReadData.R_TaskNumber); | 
 |  |  |                         if (nawtask == null) | 
 |  |  |                         { | 
 |  |  |                             throw new Exception(string.Format("天车åè´§å®æä»»å¡æªæ¥è¯¢å°ä»»å¡å·{0}", oHTReadData.R_TaskNumber)); | 
 |  |  |                         } | 
 |  |  |                         //åé¤åºåºä¸åé¤ç´æ¥åºåº | 
 |  |  |                         //if (nawtask.TaskType == (int)TaskOutboundTypeEnum.TiChuChuKu || nawtask.TaskType == (int)TaskOutboundTypeEnum.TiChuZhiJieChuKu) | 
 |  |  |                         //{ | 
 |  |  |                         //    gzj.SetValue(DeviceDBName.W_GZJ_LockGZJ, false); | 
 |  |  |                         //} | 
 |  |  |                         return Task.CompletedTask; | 
 |  |  |                     } | 
 |  |  |                     else if (oHTReadData.R_RunState == (int)RunStateEnum.MoveCompleted && oHTReadData.R_TaskState == (int)TaskStateEnum.TaskComplete) | 
 |  |  | 
 |  |  |                         WebResponseContent result = _taskService.StackCraneTaskCompleted(oHTReadData.R_TaskNumber, oHTReadData.weight); | 
 |  |  |                         if (result.Status) | 
 |  |  |                         { | 
 |  |  |                             //åé¤åºåºãç´æ¥åºåºç»å®æä¿¡å· | 
 |  |  |                             //List<Dt_Task_hty> Task_hty = _taskhtyRepository.QueryData(); | 
 |  |  |                             //int shu = Task_hty.Count - 1; | 
 |  |  |                             //int zhi = Task_hty[shu].TaskId; | 
 |  |  |                             //Dt_Task_hty lishi = _taskhtyRepository.QueryFirst(x => x.TaskId == zhi); | 
 |  |  |                             //if (lishi.TargetAddress == "40-2-1") | 
 |  |  |                             //{ | 
 |  |  |                             //    gzj.SetValue(DeviceDBName.W_GZJ_LockGZJ, false); | 
 |  |  |                             //} | 
 |  |  |                             device.SetValue(DeviceDBName.W_ConfirmSignal, 3); | 
 |  |  |                         } | 
 |  |  |                         return Task.CompletedTask; | 
 |  |  | 
 |  |  |                     #endregion | 
 |  |  |                 } | 
 |  |  |                 catch (Exception ex) | 
 |  |  |                 { | 
 |  |  |                 {  | 
 |  |  |                     _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  | 
 |  |  |         public OHTTaskCommand? ConvertToOHTTaskCommand([NotNull] Dt_Task task) | 
 |  |  |         { | 
 |  |  |             OHTTaskCommand oHtTaskCommand = new OHTTaskCommand(); | 
 |  |  |  | 
 |  |  |              | 
 |  |  |             if (task.TaskState == (int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew) | 
 |  |  |             { | 
 |  |  |                 oHtTaskCommand.W_Task_Type = 2; | 
 |  |  | 
 |  |  |                     oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[0]); | 
 |  |  |                     oHtTaskCommand.W_Pick_Column = Convert.ToInt16(SourceCodes[1]); | 
 |  |  |                     oHtTaskCommand.W_Put_Line = 0; | 
 |  |  |                     oHtTaskCommand.W_Put_Column = 0;  | 
 |  |  |                     oHtTaskCommand.W_Put_Column = 0; | 
 |  |  |  | 
 |  |  |                     //åé¤åºåº(ä¸éè¦åéä¿¡å·) | 
 |  |  |                     //åé¤å
¥åº | 
 |  |  |                     if (task.TaskType == (int)TaskInboundTypeEnum.TiChuRuKu) | 
 |  |  |                     { | 
 |  |  |                         devicese.SetValue(DeviceDBName.W_ZXJ_LockLocation, true); | 
 |  |  |                     } | 
 |  |  |                     //åé¤ç´æ¥åºåº | 
 |  |  |                     else if (task.TaskType == (int)TaskOutboundTypeEnum.TiChuZhiJieChuKu) | 
 |  |  |                     { | 
 |  |  |                         devicese.SetValue(DeviceDBName.W_ZXJ_LockLocation, true); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  | 
 |  |  |                     oHtTaskCommand.W_Pick_Column =0; | 
 |  |  |                     oHtTaskCommand.W_Put_Line = Convert.ToInt16(SourceCodes[0]); | 
 |  |  |                     oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[1]); | 
 |  |  |  | 
 |  |  |                     //åé¤åºåº | 
 |  |  |                     //if (task.TaskType == (int)TaskOutboundTypeEnum.TiChuChuKu) | 
 |  |  |                     //{ | 
 |  |  |                     //    deviceses.SetValue(DeviceDBName.W_GZJ_LockGZJ, true); | 
 |  |  |                     //} | 
 |  |  |                     //åé¤å
¥åº | 
 |  |  |                     if (task.TaskType == (int)TaskInboundTypeEnum.TiChuRuKu) | 
 |  |  |                     { | 
 |  |  |  | 
 |  |  |                         devicese.SetValue(DeviceDBName.W_ZXJ_LockLocation, false); | 
 |  |  |                     } | 
 |  |  |                     //åé¤ç´æ¥åºåº | 
 |  |  |                     else if (task.TaskType == (int)TaskOutboundTypeEnum.TiChuZhiJieChuKu) | 
 |  |  |                     { | 
 |  |  |  | 
 |  |  |                         //deviceses.SetValue(DeviceDBName.W_GZJ_LockGZJ, true); | 
 |  |  |                         devicese.SetValue(DeviceDBName.W_ZXJ_LockLocation, false); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { |