¶Ô±ÈÐÂÎļþ |
| | |
| | | using Autofac.Core; |
| | | using Microsoft.AspNetCore.Components.Routing; |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using Quartz; |
| | | using System.Reflection; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_IBasicInfoRepository; |
| | | using WIDESEAWCS_IPackInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | using WIDESEAWCS_Tasks.StackPlateJob; |
| | | using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class StackPlate : JobBase, IJob |
| | | { |
| | | private readonly ICacheService _cacheService; |
| | | private readonly ITaskService _taskService; |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly IStationMangerRepository _stationMangerRepository; |
| | | private readonly IDt_PackaxisRepository _packaxisRepository; |
| | | |
| | | public StackPlate(ICacheService cacheService, ITaskService taskService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IDt_PackaxisRepository packaxisRepository) |
| | | { |
| | | _cacheService = cacheService; |
| | | _taskService = taskService; |
| | | _taskRepository = taskRepository; |
| | | _stationMangerRepository = stationMangerRepository; |
| | | _packaxisRepository = packaxisRepository; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | CommonConveyorLine device = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | //è·åå½å设å¤å¯¹åºçç«å° |
| | | StackPlateTaskCommandCommand command = device.ReadCustomer<StackPlateTaskCommandCommand>(device.DeviceCode); |
| | | |
| | | if (command != null && command.State == 2) |
| | | { |
| | | DeviceProtocolDetailDTO? deviceProtocolDetails = device.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(StackPlateTaskCommandCommand.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString()); |
| | | if (deviceProtocolDetails != null) |
| | | { |
| | | MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); |
| | | if (method != null) |
| | | { |
| | | method.Invoke(this, new object[] { device, command }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ææè¿è¡ï¼ç³è¯·å
¥åº |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | /// <param name="command"></param> |
| | | public void InStockAllow(CommonConveyorLine device, StackPlateTaskCommandCommand command) |
| | | { |
| | | var station = _stationMangerRepository.QueryFirst(x => x.StationDeviceCode == device.DeviceCode); |
| | | if (station != null && station.Remark != null)//è·åç«å°éé¢çæçå· |
| | | { |
| | | var task = _taskRepository.QueryFirst(x => x.DeviceCode == device.DeviceCode && (x.TaskState == (int)TaskStatusEnum.AGV_Execute || x.TaskState == (int)TaskStatusEnum.AGV_Executing) && x.SourceAddress == station.AGVStationCode); |
| | | if (task == null) |
| | | { |
| | | WebResponseContent content = _taskService.CPEmptyInbound(station.Remark, station.AGVStationCode); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 空ä½è¿è¡ï¼å
许å ç |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | /// <param name="command"></param> |
| | | public void EmptySeatAllow(CommonConveyorLine device, StackPlateTaskCommandCommand command) |
| | | { |
| | | var station = _stationMangerRepository.QueryFirst(x => x.StationDeviceCode == device.DeviceCode); |
| | | var tasks = _taskRepository.QueryData(x => x.Roadway == device.DeviceCode && (x.TaskState == (int)TaskStatusEnum.AGV_Execute || x.TaskState == (int)TaskStatusEnum.AGV_Executing) && x.TargetAddress == device.DeviceCode); |
| | | if (tasks.Count + Convert.ToInt32(command.Num) < 9) |
| | | { |
| | | var task = _taskRepository.QueryFirst(x => x.Roadway == device.DeviceCode && x.TaskState == (int)TaskStatusEnum.StackPlate_Execute); |
| | | if (task != null && station != null) |
| | | { |
| | | task.TaskState = (int)TaskStatusEnum.AGV_Execute; |
| | | _taskRepository.UpdateData(task); |
| | | station.Remark = task.PalletCode; |
| | | _stationMangerRepository.UpdateData(station); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |