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