From c6e8b600398de38b6684f5fa1eaaaade8562859b Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期六, 20 九月 2025 15:16:56 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhiHuiQiCe/LongDeLiLiKu --- 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlate.cs | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 101 insertions(+), 0 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlate.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlate.cs" new file mode 100644 index 0000000..b8bf6ae --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlate.cs" @@ -0,0 +1,101 @@ +锘縰sing 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); + } + } + } + } +} -- Gitblit v1.9.3