From 2cc4dfef234b47bef364edf798b5051a25f33217 Mon Sep 17 00:00:00 2001 From: hutongqing <hutongqing@hnkhzn.com> Date: 星期五, 30 八月 2024 10:58:56 +0800 Subject: [PATCH] 1 --- WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 94 +++++++++++++++++++++++++++------------------- 1 files changed, 55 insertions(+), 39 deletions(-) diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs index a6bd3b9..5e14f93 100644 --- a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs +++ b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs @@ -1,16 +1,19 @@ -锘縰sing Quartz; +锘縰sing Microsoft.AspNetCore.Components.Routing; +using Quartz; using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core.Enums; -using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DeviceBase; +using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_QuartzJob.StackerCrane.Enum; using WIDESEAWCS_Tasks.StackerCraneJob; @@ -54,11 +57,12 @@ if (task != null) { StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); - if(stackerCraneTaskCommand != null) + if (stackerCraneTaskCommand != null) { bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand); if (sendFlag) { + commonStackerCrane.LastTaskType = task.TaskType; _taskService.UpdateTaskStatusToNext(task.TaskNum); } } @@ -81,7 +85,16 @@ /// <param name="e"></param> private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e) { - _taskService.TaskCompleted(e.TaskNum); + CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane; + if (commonStackerCrane != null) + { + if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) + { + Console.Out.WriteLine("TaskCompleted" + e.TaskNum); + _taskService.StackCraneTaskCompleted(e.TaskNum); + commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); + } + } } /// <summary> @@ -98,36 +111,41 @@ } else { - IEnumerable<int> taskInboundTypes = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>(); - if (Enum.TryParse(typeof(TaskOutboundTypeEnum), commonStackerCrane.LastTaskType.GetValueOrDefault().ToString(), out object? result)) + if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); + if (task == null) + { + task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); + } } else { task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); - if (task != null) + } + } + + if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { + if (OutTaskStationIsOccupied(task) != null) + { + return task; + } + else + { + List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList(); + List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes); + foreach (var item in tasks) { if (OutTaskStationIsOccupied(task) != null) { return task; } - else - { - List<string> otherOutStaionCodes = _routerService.QueryRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList(); - List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes); - foreach (var item in tasks) - { - if (OutTaskStationIsOccupied(task) != null) - { - return task; - } - } - task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); - } } + task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); } } + return task; } @@ -136,16 +154,16 @@ /// </summary> /// <param name="task">浠诲姟瀹炰綋</param> /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns> - private Dt_Task? OutTaskStationIsOccupied(Dt_Task task) + private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task) { - Dt_Router? router = _routerService.QueryRoutes(task.Roadway, task.NextAddress).FirstOrDefault(); + Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault(); if (router != null) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode); if (device != null) { CommonConveyorLine conveyorLine = (CommonConveyorLine)device; - if (!conveyorLine.IsOccupied(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤 + if (conveyorLine.IsOccupied(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤 { return task; } @@ -168,7 +186,7 @@ /// <param name="task">浠诲姟瀹炰綋</param> /// <returns></returns> /// <exception cref="Exception"></exception> - public StackerCraneTaskCommand? ConvertToStackerCraneTaskCommand(Dt_Task task) + public StackerCraneTaskCommand? ConvertToStackerCraneTaskCommand([NotNull] Dt_Task task) { StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand(); @@ -176,12 +194,11 @@ stackerCraneTaskCommand.TaskNum = task.TaskNum; stackerCraneTaskCommand.WorkType = 1; stackerCraneTaskCommand.TrayType = 0; - if (Enum.TryParse(typeof(TaskInboundTypeEnum), task.TaskType.ToString(), out object? result))//鍒ゆ柇鏄惁鏄叆搴撲换鍔� + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔� { - List<Dt_Router> routers = _routerService.QueryRoutes(task.CurrentAddress, task.Roadway); + List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway); if (routers.Count > 0) { - stackerCraneTaskCommand.StartRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow); stackerCraneTaskCommand.StartColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn); stackerCraneTaskCommand.StartLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer); @@ -196,7 +213,8 @@ else { //鏁版嵁閰嶇疆閿欒 - throw new Exception(); + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�"); + return null; } } else @@ -205,9 +223,9 @@ return null; } } - else if (Enum.TryParse(typeof(TaskOutboundTypeEnum), task.TaskType.ToString(), out result)) + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { - List<Dt_Router> routers = _routerService.QueryRoutes(task.Roadway, task.TargetAddress); + List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress); if (routers.Count > 0) { stackerCraneTaskCommand.EndRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow); @@ -224,7 +242,8 @@ else { //鏁版嵁閰嶇疆閿欒 - throw new Exception(); + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); + return null; } } else @@ -233,7 +252,7 @@ return null; } } - else if (Enum.TryParse(typeof(TaskRelocationTypeEnum), task.TaskType.ToString(), out result)) + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { string[] targetCodes = task.NextAddress.Split("-"); if (targetCodes.Length == 3) @@ -245,7 +264,8 @@ else { //鏁版嵁閰嶇疆閿欒 - throw new Exception(); + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�"); + return null; } string[] sourceCodes = task.CurrentAddress.Split("-"); if (sourceCodes.Length == 3) @@ -257,14 +277,10 @@ else { //鏁版嵁閰嶇疆閿欒 - throw new Exception(); + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); + return null; } } - else if (Enum.TryParse(typeof(TaskOtherTypeEnum), task.TaskType.ToString(), out result)) - { - - } - return stackerCraneTaskCommand; } } -- Gitblit v1.9.3