From 850105e8cdf0d048ef843d87520513ac77a64200 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 23 七月 2025 21:21:53 +0800
Subject: [PATCH] 代码提交

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |  137 +++++++++++++++++++++++++++++++--------------
 1 files changed, 93 insertions(+), 44 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
index ceb41bd..894c017 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
@@ -23,6 +23,9 @@
 using WIDESEAWCS_Common;
 using WIDESEAWCS_IBasicInfoRepository;
 using WIDESEAWCS_BasicInfoService;
+using WIDESEAWCS_Model.BasicInfo;
+using WIDESEAWCS_Tasks.RGVJob;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
 
 namespace WIDESEAWCS_Tasks
 {
@@ -55,13 +58,18 @@
                 CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
                 if (commonStackerCrane != null)
                 {
-                    if (!commonStackerCrane.IsEventSubscribed)
+                    //if (!commonStackerCrane.IsEventSubscribed)
+                    //{
+                    //    commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
+                    //}
+
+                    //commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
+
+                    if (commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.TaskCompleted))
                     {
-                        commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
+                        var x = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.CurrentTaskNum);
+                        StackerCraneTaskFinish(commonStackerCrane, commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.CurrentTaskNum));
                     }
-
-                    commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
-
 
                     if (commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Automatic) && !commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Fault) && !commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Running))
                     {
@@ -109,12 +117,12 @@
                         Automatic = commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Automatic),
                         Fault = commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Fault),
                         Running = commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Running),
-                        commonStackerCrane.StackerCraneAutoStatusDes,
-                        commonStackerCrane.StackerCraneWorkStatusDes,
-                        commonStackerCrane.DeviceCode,
-                        commonStackerCrane.DeviceName,
-                        commonStackerCrane.CurrentTaskNum,
-                        commonStackerCrane.LastTaskNum,
+                        //commonStackerCrane.StackerCraneAutoStatusDes,
+                        //commonStackerCrane.StackerCraneWorkStatusDes,
+                        //commonStackerCrane.DeviceCode,
+                        //commonStackerCrane.DeviceName,
+                        //commonStackerCrane.CurrentTaskNum,
+                        //commonStackerCrane.LastTaskNum,
                     };
                     _noticeService.StackerData(userIds?.FirstOrDefault(), userTokenIds, new { commonStackerCrane.DeviceName, data = obj });
 
@@ -153,6 +161,27 @@
                     str = $"{commonStackerCrane.DeviceName}銆慦MS|WCS浠诲姟瀹屾垚锛氥�恵content.Status}銆�,鍫嗗灈鏈哄畬鎴愪俊鍙峰啓鍏ワ細銆恵isWorkType}銆�,浠诲姟鍙凤細銆恵e.TaskNum}銆戞椂闂淬�恵DateTime.Now}銆�";
                     WriteInfo(commonStackerCrane.DeviceName, str);
                     ConsoleHelper.WriteColorLine(str, ConsoleColor.Blue);
+                }
+            }
+        }
+
+        public void StackerCraneTaskFinish(CommonStackerCrane commonStackerCrane, int TaskNum)
+        {
+            if (commonStackerCrane != null)
+            {
+                #region 鏃ュ織璁板綍
+                ConsoleHelper.WriteColorLine($"銆恵commonStackerCrane.DeviceName}銆戝爢鍨涙満浣滀笟鐘舵�侊細銆愩�戞椂闂淬�恵DateTime.Now}銆�", ConsoleColor.Magenta);
+
+                string str = $"銆恵commonStackerCrane.DeviceName}銆戜换鍔″畬鎴�,浠诲姟鍙凤細銆恵TaskNum}銆戞椂闂淬�恵DateTime.Now}銆�";
+                WriteInfo(commonStackerCrane.DeviceName, str);
+                ConsoleHelper.WriteColorLine(str, ConsoleColor.Blue);
+
+                #endregion
+
+                var task = _taskRepository.QueryFirst(x => x.TaskNum == TaskNum);
+                if (task != null)
+                {
+                    var content = _taskService.StackCraneTaskCompleted(TaskNum);
                 }
             }
         }
@@ -227,12 +256,12 @@
         /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
         private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
         {
-            var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationLocation == task.TargetAddress && x.Roadway == task.Roadway);
+            var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode==task.NextAddress && x.Roadway == task.Roadway);
             IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationinfo.stationPLC);
             if (device != null)
             {
-                CommonConveyorLine_After conveyorLine = (CommonConveyorLine_After)device;
-                if (conveyorLine.IsOccupied(stationinfo.stationChildCode))//鍑哄簱绔欏彴鏈鍗犵敤
+                CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
+                if (conveyorLine.IsOccupiedx(stationinfo.stationChildCode))//鍑哄簱绔欏彴鏈鍗犵敤
                 {
                     return task;
                 }
@@ -289,21 +318,31 @@
             StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand();
 
             stackerCraneTaskCommand.TaskNum = (byte)Convert.ToSByte(task.TaskNum);
-            stackerCraneTaskCommand.WorkType = 1;
             if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
             {
 
-                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
-                if (routers.Count > 0)
+                Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationChildCode == task.CurrentAddress);
+                if (stationManager != null)
                 {
-                    stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(Convert.ToInt16(routers.FirstOrDefault().SrmRow));
-                    stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(routers.FirstOrDefault().SrmColumn);
-                    stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(routers.FirstOrDefault().SrmLayer);
+                    stackerCraneTaskCommand.WorkType = (byte)Convert.ToSByte(17);
+                    string[] sourceCodes = stationManager.stationLocation.Split("-");
+                    if (sourceCodes.Length == 3)
+                    {
+                        stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(sourceCodes[0]);
+                        stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]);
+                        stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]);
+                    }
+                    else
+                    {
+                        //鏁版嵁閰嶇疆閿欒
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                        return null;
+                    }
 
-                    string[] targetCodes = task.NextAddress.Split("-");
+                    string[] targetCodes = task.TargetAddress.Split("-");
                     if (targetCodes.Length == 3)
                     {
-                        stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(Convert.ToInt16(targetCodes[0]) % 2 != 0 ? (short)1 : (short)2);
+                        stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(targetCodes[0]);
                         stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]);
                         stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]);
                     }
@@ -322,20 +361,29 @@
             }
             else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
             {
-
-                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
-                if (routers.Count > 0)
+                stackerCraneTaskCommand.WorkType = (byte)Convert.ToSByte(18);
+                Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationChildCode == task.NextAddress);
+                if (stationManager != null)
                 {
-                    stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(routers.FirstOrDefault().SrmRow);
-                    stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(routers.FirstOrDefault().SrmColumn);
-                    stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(routers.FirstOrDefault().SrmLayer);
-
                     string[] sourceCodes = task.CurrentAddress.Split("-");
                     if (sourceCodes.Length == 3)
                     {
-                        stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(Convert.ToInt16(sourceCodes[0]) % 2 != 0 ? (short)1 : (short)2);
+                        stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(sourceCodes[0]);
                         stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]);
                         stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]);
+                    }
+                    else
+                    {
+                        //鏁版嵁閰嶇疆閿欒
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                        return null;
+                    }
+                    string[] targetCodes = stationManager.stationLocation.Split("-");
+                    if (targetCodes.Length == 3)
+                    {
+                        stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(targetCodes[0]);
+                        stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]);
+                        stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]);
                     }
                     else
                     {
@@ -352,20 +400,8 @@
             }
             else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
             {
-                string[] targetCodes = task.NextAddress.Split("-");
-                if (targetCodes.Length == 3)
-                {
-                    stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(Convert.ToInt16(targetCodes[0]) % 2 != 0 ? (short)1 : (short)2);
-                    stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]);
-                    stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]);
-                }
-                else
-                {
-                    //鏁版嵁閰嶇疆閿欒
-                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
-                    return null;
-                }
-                string[] sourceCodes = task.CurrentAddress.Split("-");
+                stackerCraneTaskCommand.WorkType = (byte)Convert.ToSByte(20);
+                string[] sourceCodes = task.SourceAddress.Split("-");
                 if (sourceCodes.Length == 3)
                 {
                     stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(Convert.ToInt16(sourceCodes[0]) % 2 != 0 ? (short)1 : (short)2);
@@ -378,6 +414,19 @@
                     _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
                     return null;
                 }
+                string[] targetCodes = task.TargetAddress.Split("-");
+                if (targetCodes.Length == 3)
+                {
+                    stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(Convert.ToInt16(targetCodes[0]) % 2 != 0 ? (short)1 : (short)2);
+                    stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                    return null;
+                }
             }
             return stackerCraneTaskCommand;
         }

--
Gitblit v1.9.3