From de9b341ccc98d554f0c324478acab26d7d3cdafd Mon Sep 17 00:00:00 2001
From: qinchulong <qinchulong@hnkhzn.com>
Date: 星期六, 01 三月 2025 21:49:34 +0800
Subject: [PATCH] 新增错误信息显示

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs |  138 +++++++++++++++++++++++++++++----------------
 1 files changed, 88 insertions(+), 50 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs"
index 81aa2cb..ed8d009 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs"
@@ -31,6 +31,7 @@
     [DisallowConcurrentExecution]
     public class OHTJob : JobBase, IJob
     {
+        public static string InorOut = "In";
         private readonly ITaskService _taskService;
         WebSocketServer _webSocketServer;
         public OHTJob(ITaskService taskService, WebSocketServer webSocketServer)
@@ -38,7 +39,6 @@
             _taskService = taskService;//娉ㄥ叆
             _webSocketServer = webSocketServer;
         }
-
         public Task Execute(IJobExecutionContext context)
         {
            
@@ -53,6 +53,7 @@
                     //device.SetValue  鍐欏叆
                     //_taskService.Repository; //浠撳偍灞傦紝杩涜鏁版嵁搴撹闂�
                     OHTReadData oHTReadData = new OHTReadData();
+                    
                     #region 璇诲彇澶╄溅璁惧鏁版嵁
                     oHTReadData.R_HeartBeat = device.GetValue<DeviceDBName, bool>(DeviceDBName.R_HeartBeat);
                     oHTReadData.R_RunMode = device.GetValue<DeviceDBName, short>(DeviceDBName.R_RunMode);
@@ -91,23 +92,24 @@
                     string ohtData = JsonConvert.SerializeObject(oHTReadData);
                     _webSocketServer.PublishAllClientPayload(ohtData);
 
+                    #region 澶╄溅瀹屾垚浠诲姟閫昏緫
                     //鍥犱负澶╃殑浠诲姟闇�瑕佸垎娈靛彂閫侊紝鎵�浠ュ彇璐у畬鎴愪笌鏀捐揣瀹屾垚闇�瑕佸崟鐙仛閫昏緫鎺у埗
                     //鍒ゆ柇澶╄溅褰撳墠鏈夋病鏈夊彇璐у畬鎴愪换鍔′俊鍙�
-                    if (oHTReadData.R_RunState == (int)RunStateEnum.PickUpCompleted && oHTReadData.R_TaskState==(int)TaskStateEnum.TaskComplete)
+                    if (oHTReadData.R_RunState == (int)RunStateEnum.PickUpCompleted && oHTReadData.R_TaskState == (int)TaskStateEnum.TaskComplete)
                     {
                         //澶╄溅鍙栬揣瀹屾垚閫昏緫
                         var nawtask = _taskService.QueryTakNnmTask(oHTReadData.R_TaskNumber);
-                        if (nawtask==null)
+                        if (nawtask == null)
                         {
-                            throw new Exception(string.Format("澶╄溅鍙栬揣瀹屾垚浠诲姟鏈煡璇㈠埌浠诲姟鍙穥0}",oHTReadData.R_TaskNumber));
+                            throw new Exception(string.Format("澶╄溅鍙栬揣瀹屾垚浠诲姟鏈煡璇㈠埌浠诲姟鍙穥0}", oHTReadData.R_TaskNumber));
                         }
-                        if (nawtask.TaskType== (int)TaskInboundTypeEnum.Inbound)
+                        if (nawtask.TaskType == (int)TaskInboundTypeEnum.Inbound)
                         {
                             //濡傛灉浠诲姟鐨勭姸鎬佹槸澶╄溅鍏ュ簱鍙栬揣鎵ц涓�
-                            if (nawtask.TaskState==(int)TaskInStatusEnum.Line_InGrabExecuting)
+                            if (nawtask.TaskState == (int)TaskInStatusEnum.Line_InGrabExecuting)
                             {
-                                WebResponseContent result=_taskService.UpdateTaskStatusToLine_Ingrab(nawtask);
-                                if (result.Status) 
+                                WebResponseContent result = _taskService.UpdateTaskStatusToLine_Ingrab(nawtask);
+                                if (result.Status)
                                 {
                                     device.SetValue(DeviceDBName.W_ConfirmSignal, 3);
                                 }
@@ -125,19 +127,26 @@
                                 }
                             }
                         }
+                        return Task.CompletedTask;
                     }
                     else if (oHTReadData.R_RunState == (int)RunStateEnum.PutCompleted && oHTReadData.R_TaskState == (int)TaskStateEnum.TaskComplete)
                     {
                         //澶╄溅鏀捐揣瀹屾垚閫昏緫
-                        _taskService.StackCraneTaskCompleted(oHTReadData.R_TaskNumber);
+                        WebResponseContent result = _taskService.StackCraneTaskCompleted(oHTReadData.R_TaskNumber, oHTReadData.weight);
+                        if (result.Status)
+                        {
+                            device.SetValue(DeviceDBName.W_ConfirmSignal, 3);
+                        }
+                        return Task.CompletedTask;
                     }
+                    #endregion
 
-
+                    #region 澶╄溅鍙戦�佷换鍔¢�昏緫
                     if (oHTReadData.R_RunMode == (int)RunModeEnum.Automatic && oHTReadData.R_AlarmCode == (int)AlarmCodeEnum.Normal)
                     {
                         if (oHTReadData.R_RunState == (int)RunStateEnum.Standby)
                         {
-                            Dt_Task? task = GetTask();
+                            Dt_Task? task = GetTask(InorOut);
                             if (task != null)
                             {
                                 OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task);
@@ -147,41 +156,34 @@
                                     device.SetValue(DeviceDBName.W_Task_Type, oHTTaskCommand.W_Task_Type);
                                     device.SetValue(DeviceDBName.W_Pick_Line, oHTTaskCommand.W_Pick_Line);
                                     device.SetValue(DeviceDBName.W_Pick_Column, oHTTaskCommand.W_Pick_Column);
-                                    device.SetValue(DeviceDBName.W_Pick_Layer, oHTTaskCommand.W_Pick_Layer);
                                     device.SetValue(DeviceDBName.W_Put_Line, oHTTaskCommand.W_Put_Line);
                                     device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column);
-                                    device.SetValue(DeviceDBName.W_Put_Layer, oHTTaskCommand.W_Put_Layer);
                                     device.SetValue(DeviceDBName.W_Catch_1, oHTTaskCommand.W_Catch_1);
                                     device.SetValue(DeviceDBName.W_Catch_2, oHTTaskCommand.W_Catch_2);
-                                    device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber);
                                     device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber);
                                     device.SetValue(DeviceDBName.W_CheckValue, oHTTaskCommand.W_CheckValue);
                                     //纭淇″彿鍐欏叆1锛屼换鍔′笅杈惧畬鎴�
                                     device.SetValue(DeviceDBName.W_ConfirmSignal, 1);
+                                    Thread.Sleep(500);
                                     //WCS妫�娴嬪埌澶╄溅鐨凴_TaskState=1锛岄�氳繃W_ConfirmSignal缃�2琛ㄧず璁╁ぉ杞﹀紑濮嬫墽琛屼换鍔�
                                     int R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState);
                                     if (R_TaskState == 1)
                                     {
                                         device.SetValue(DeviceDBName.W_ConfirmSignal, 2);
                                     }
+                                    //涓嬪彂鎴愬姛锛屼慨鏀逛换鍔$姸鎬�
+                                    _taskService.UpdateTaskStatus(task.TaskNum, oHTTaskCommand.W_Task_Type);
                                 }
-
                             }
-
                         }
-
                     }
-                    WriteInfo(device.DeviceName, "infoLog");
-
-                    WriteDebug(device.DeviceName, "debugLog");
+                    #endregion
                 }
                 catch (Exception ex)
                 {
                     WriteError(device.DeviceName, "閿欒", ex);
                 }
             }
-
-
             return Task.CompletedTask;
         }
 
@@ -196,36 +198,65 @@
         {
             OHTTaskCommand oHtTaskCommand = new OHTTaskCommand();
 
-            oHtTaskCommand.W_Task_Type = 1;
-            oHtTaskCommand.W_Load_Layer = 0;
-            oHtTaskCommand.W_Pick_Line = 1;
-           
-            string[] SourceCodes = task.SourceAddress.Split("-");
-            if (SourceCodes.Length == 3)
+            if (task.TaskState==(int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew)
             {
-                oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[1]);
-                oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[2]);
-                oHtTaskCommand.W_Put_Layer = Convert.ToInt16(SourceCodes[3]);
+                oHtTaskCommand.W_Task_Type = 2;
+                string[] SourceCodes = task.SourceAddress.Split("-");
+                if (SourceCodes.Length == 3)
+                {
+                    oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[0]);
+                    oHtTaskCommand.W_Pick_Column = Convert.ToInt16(SourceCodes[1]);
+                    oHtTaskCommand.W_Put_Line = 0;
+                    oHtTaskCommand.W_Put_Column = 0;
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�");
+                    return null;
+                }
+                oHtTaskCommand.W_CheckValue = task.TaskType + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]);
             }
-            else
+            else if (task.TaskState == (int)TaskInStatusEnum.Line_Ingrab || task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
             {
-                //鏁版嵁閰嶇疆閿欒
-                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�");
-                return null;
+                oHtTaskCommand.W_Task_Type = 3;
+                string[] SourceCodes = task.TargetAddress.Split("-");
+                if (SourceCodes.Length == 3)
+                {
+                    oHtTaskCommand.W_Pick_Line = 0;
+                    oHtTaskCommand.W_Pick_Column =0;
+                    oHtTaskCommand.W_Put_Line = Convert.ToInt16(SourceCodes[0]);
+                    oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[1]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�");
+                    return null;
+                }
+                oHtTaskCommand.W_CheckValue = task.TaskType + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]);
             }
-            string[] targetCodes = task.TargetAddress.Split("-");
-            if (targetCodes.Length == 3)
+            
+            if (task.WMSId==1)
             {
-                oHtTaskCommand.W_Put_Line = Convert.ToInt16(targetCodes[1]);
-                oHtTaskCommand.W_Put_Column = Convert.ToInt16(targetCodes[2]);
-                oHtTaskCommand.W_Put_Layer = Convert.ToInt16(targetCodes[3]);
+                oHtTaskCommand.W_Catch_1 = 1;
+                oHtTaskCommand.W_Catch_2 = 0;
+                oHtTaskCommand.W_CheckValue += 1;
             }
-            else
+            else if (task.WMSId == 2)
             {
-                //鏁版嵁閰嶇疆閿欒
-                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟鐩爣鍦板潃閰嶇疆閿欒");
-                return null;
+                oHtTaskCommand.W_Catch_1 = 0;
+                oHtTaskCommand.W_Catch_2 = 1;
+                oHtTaskCommand.W_CheckValue += 1;
             }
+            else if (task.WMSId == 3)
+            {
+                oHtTaskCommand.W_Catch_1 = 1;
+                oHtTaskCommand.W_Catch_2 = 1;
+                oHtTaskCommand.W_CheckValue += 2;
+            }
+            oHtTaskCommand.W_TaskNumber = task.TaskNum;
+            oHtTaskCommand.W_CheckValue += task.TaskNum;
             return oHtTaskCommand;
         }
 
@@ -234,15 +265,22 @@
         /// 鑾峰彇浠诲姟
         /// </summary>
         /// <returns></returns>
-        private Dt_Task? GetTask()
+        private Dt_Task? GetTask(string workType)
         {
             Dt_Task task;
-            task = _taskService.QueryStackerCraneTask("R01");
+            task = _taskService.QueryStackerCraneTask(workType);
+            if (task!=null && (task.TaskState==(int)TaskInStatusEnum.InNew|| task.TaskState == (int)TaskOutStatusEnum.OutNew))
+            {
+                if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
+                {
+                    InorOut = "Out";
+                }
+                else
+                {
+                    InorOut = "In";
+                }
+            }
             return task;
         }
-
-
     }
-
-
 }

--
Gitblit v1.9.3