#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 命名空间:WIDESEAWCS_Tasks.ConveyorLineJob * 创建者:胡童庆 * 创建时间:2024/8/2 16:13:36 * 版本:V1.0.0 * 描述: * * ---------------------------------------------------------------- * 修改人: * 修改时间: * 版本:V1.0.1 * 修改说明: * *----------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using AutoMapper; using HslCommunication; using Quartz; using System; using System.Linq; using System.Text; using System.Text.RegularExpressions; using WIDESEA_Common.Log; using WIDESEAWCS_DTO.BasicInfo; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_Model.Models.System; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_Tasks.ConveyorLineJob; namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] public class CommonConveyorLineOutJob : JobBase, IJob { private readonly ITaskService _taskService; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly IRouterService _routerService; private readonly IOrderDetailsService _OrderDetailsService; private readonly IMapper _mapper; public CommonConveyorLineOutJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IOrderDetailsService orderDetails, IMapper mapper) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; _routerService = routerService; _OrderDetailsService = orderDetails; _mapper = mapper; } static string barcode = string.Empty; //条码 public Task Execute(IJobExecutionContext context) { try { bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); if (flag && value != null && value is OtherDevice) { OtherDevice otherDevice = (OtherDevice)value; bool request = otherDevice.GetValue(ConveyorLineStationDBName.PLCStationRequest); //申请 bool response = otherDevice.GetValue(ConveyorLineStationDBName.PLCStationResponse); //应答 bool wcsResponse = otherDevice.GetValue(ConveyorLineStationDBName.WCSStationResponse); //应答 if (request && !response && !wcsResponse) { } else { if (wcsResponse) otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, false); //清除响应 } } } catch (Exception ex) { WriteError(nameof(CommonConveyorLineJob), ex.ToString(), ex); } return Task.CompletedTask; } public int[] GetIndexArray(T[] values, T value) { List result = new List(); for (int i = 0; i < values.Length; i++) { if (value.Equals(values[i])) { result.Add(i); } } return result.ToArray(); } } }