From 73e0e7c3886bc88e7ed37db24d28d8f6d159f1c0 Mon Sep 17 00:00:00 2001
From: qinchulong <qinchulong@hnkhzn.com>
Date: 星期六, 08 三月 2025 18:57:10 +0800
Subject: [PATCH] 优先级修改

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs |  185 ++++++++++++++++++++++++++--------------------
 1 files changed, 105 insertions(+), 80 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 54bd025..4f6742d 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"
@@ -33,10 +33,11 @@
     public class OHTJob : JobBase, IJob
     {
         public static string InorOut = "In";
+        public static OHTReadData oHTReadData = new OHTReadData();
         private readonly ITaskService _taskService;
         private readonly Idt_ErrormsginfoService _ErrormsginfoService;
         WebSocketServer _webSocketServer;
-        public OHTJob(ITaskService taskService, WebSocketServer webSocketServer,Idt_ErrormsginfoService errormsginfoService)
+        public OHTJob(ITaskService taskService, WebSocketServer webSocketServer, Idt_ErrormsginfoService errormsginfoService)
         {
             _taskService = taskService;//娉ㄥ叆
             _webSocketServer = webSocketServer;
@@ -44,57 +45,21 @@
         }
         public Task Execute(IJobExecutionContext context)
         {
-           
             bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
             if (flag && value != null)
             {
+                //澶╄溅PLC瀵硅薄
                 OtherDevice device = (OtherDevice)value;
+                //鏁村舰鏈篜LC瀵硅薄
+                var ZXJdevice = Storage.Devices.Find(v => v.DeviceName == "闃虫瀬鏁村舰鏈�");
+                //瑙勬暣鏈篜LC瀵硅薄
+                var GZJevice = Storage.Devices.Find(v => v.DeviceName == "闃虫瀬瑙勬暣鏈�");
+                //if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected)
+                //{
+                //    return Task.CompletedTask;
+                //}
                 try
                 {
-                    //Example
-                    //device.GetValue  璇诲彇
-                    //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);
-                    oHTReadData.R_RunState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_RunState);
-                    oHTReadData.R_AlarmCode = device.GetValue<DeviceDBName, short>(DeviceDBName.R_AlarmCode);
-                    oHTReadData.R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState);
-                    oHTReadData.R_CurrentLine = device.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentLine);
-                    oHTReadData.R_CurrentColumn = device.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentColumn);
-                    oHTReadData.R_RiseUp_Position = device.GetValue<DeviceDBName, int>(DeviceDBName.R_RiseUp_Position);
-                    oHTReadData.R_TaskNumber = device.GetValue<DeviceDBName, int>(DeviceDBName.R_TaskNumber);
-                    oHTReadData.R_Loaded_1 = device.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_1);
-                    oHTReadData.R_Loaded_2 = device.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_2);
-                    oHTReadData.weight = device.GetValue<DeviceDBName, float>(DeviceDBName.weight);
-                    
-                    #region 娴嬭瘯鐢�
-                    //oHTReadData.R_HeartBeat = 1;
-                    //oHTReadData.R_RunMode = 2;
-                    //oHTReadData.R_RunState = 3;
-                    //oHTReadData.R_AlarmCode = 4;
-                    //oHTReadData.R_TaskState = 5;
-                    //oHTReadData.R_CurrentLine = 6;
-                    //oHTReadData.R_CurrentColumn = 7;
-                    //oHTReadData.R_RiseUp_Position = 8;
-                    //oHTReadData.R_TaskNumber = 9;
-                    //oHTReadData.R_Loaded_1 =10;
-                    //oHTReadData.R_Loaded_2 = 11;
-                    //oHTReadData.R_Code_1 = "12";
-                    //oHTReadData.R_Code_2 = "13";
-                    //oHTReadData.R_Load_Requst_1 =true;
-                    //oHTReadData.R_Load_Requst_2 = false;
-                    #endregion
-
-                    #endregion
-
-                    //鐘舵�佹暟鎹彂閫佺粰鍓嶇
-                    string ohtData = JsonConvert.SerializeObject(oHTReadData);
-                    _webSocketServer.PublishAllClientPayload(ohtData);
-
                     #region 澶╄溅瀹屾垚浠诲姟閫昏緫
                     //鍥犱负澶╃殑浠诲姟闇�瑕佸垎娈靛彂閫侊紝鎵�浠ュ彇璐у畬鎴愪笌鏀捐揣瀹屾垚闇�瑕佸崟鐙仛閫昏緫鎺у埗
                     //鍒ゆ柇澶╄溅褰撳墠鏈夋病鏈夊彇璐у畬鎴愪换鍔′俊鍙�
@@ -106,11 +71,13 @@
                         {
                             throw new Exception(string.Format("澶╄溅鍙栬揣瀹屾垚浠诲姟鏈煡璇㈠埌浠诲姟鍙穥0}", oHTReadData.R_TaskNumber));
                         }
+                        //鍏ュ簱
                         if (nawtask.TaskType == (int)TaskInboundTypeEnum.Inbound)
                         {
-                            //濡傛灉浠诲姟鐨勭姸鎬佹槸澶╄溅鍏ュ簱鍙栬揣鎵ц涓�
+                            //濡傛灉浠诲姟鐨勭姸鎬佹槸鍚︽槸澶╄溅鍏ュ簱鍙栬揣鎵ц涓�
                             if (nawtask.TaskState == (int)TaskInStatusEnum.Line_InGrabExecuting)
                             {
+                                //淇敼鐘舵��
                                 WebResponseContent result = _taskService.UpdateTaskStatusToLine_Ingrab(nawtask);
                                 if (result.Status)
                                 {
@@ -118,16 +85,28 @@
                                 }
                             }
                         }
+                        //鍑哄簱
                         else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                         {
-                            //濡傛灉浠诲姟鐘舵�佹槸澶╄溅鍑哄簱鍙栬揣鎵ц涓�
+                            //濡傛灉浠诲姟鐘舵�佹槸鍚︽槸澶╄溅鍑哄簱鍙栬揣鎵ц涓�
                             if (nawtask.TaskState == (int)TaskOutStatusEnum.Line_OutGrabExecuting)
                             {
+                                //淇敼鐘舵��
                                 WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask);
                                 if (result.Status)
                                 {
                                     device.SetValue(DeviceDBName.W_ConfirmSignal, 3);
                                 }
+                            }
+                        }
+                        //鐩存帴鍑哄簱
+                        else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.OutInventory)
+                        {
+                            //淇敼鐘舵��
+                            WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask);
+                            if (result.Status)
+                            {
+                                device.SetValue(DeviceDBName.W_ConfirmSignal, 3);
                             }
                         }
                         return Task.CompletedTask;
@@ -142,40 +121,57 @@
                         }
                         return Task.CompletedTask;
                     }
+                    else if (oHTReadData.R_RunState == (int)RunStateEnum.MoveCompleted && oHTReadData.R_TaskState == (int)TaskStateEnum.TaskComplete)
+                    {
+                        //澶╄溅绉诲姩瀹屾垚
+                        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_RunMode == (int)RunModeEnum.Automatic)
                     {
                         if (oHTReadData.R_RunState == (int)RunStateEnum.Standby)
                         {
-                            Dt_Task? task = GetTask(InorOut);
-                            if (task != null)
+                            //鏌ョ湅浠诲姟姹犱腑鏄惁瀛樺湪鎵ц涓殑浠诲姟
+                            var tasking = _taskService.QueryTasking();
+                            if (tasking==null)
                             {
-                                OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task);
-                                if (oHTTaskCommand != null)
+                                Dt_Task? task = GetTask(InorOut);
+                                if (task != null)
                                 {
-                                    //todo锛氬啓鍏ヤ换鍔″懡浠�
-                                    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_Put_Line, oHTTaskCommand.W_Put_Line);
-                                    device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column);
-                                    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_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)
+                                    OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task);
+                                    if (oHTTaskCommand != null)
                                     {
-                                        device.SetValue(DeviceDBName.W_ConfirmSignal, 2);
+                                        //缁欏ぉ杞︿笅鍙戜换鍔′箣鍓嶅皢姝ゅ�煎啓0
+                                        device.SetValue(DeviceDBName.W_ConfirmSignal, 0);
+                                        //todo锛氬啓鍏ヤ换鍔″懡浠�
+                                        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_Put_Line, oHTTaskCommand.W_Put_Line);
+                                        device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column);
+                                        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_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.TaskId, oHTTaskCommand.W_Task_Type);
                                     }
-                                    //涓嬪彂鎴愬姛锛屼慨鏀逛换鍔$姸鎬�
-                                    _taskService.UpdateTaskStatus(task.TaskNum, oHTTaskCommand.W_Task_Type);
                                 }
                             }
                         }
@@ -184,8 +180,7 @@
                 }
                 catch (Exception ex)
                 {
-                    _ErrormsginfoService.UpdateErrorMsg(ex.Message,1);
-                    //WriteError(device.DeviceName, "閿欒", ex);
+                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1);
                 }
             }
             return Task.CompletedTask;
@@ -202,7 +197,7 @@
         {
             OHTTaskCommand oHtTaskCommand = new OHTTaskCommand();
 
-            if (task.TaskState==(int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew)
+            if (task.TaskState == (int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew)
             {
                 oHtTaskCommand.W_Task_Type = 2;
                 string[] SourceCodes = task.SourceAddress.Split("-");
@@ -211,7 +206,7 @@
                     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;
+                    oHtTaskCommand.W_Put_Column = 0; 
                 }
                 else
                 {
@@ -219,7 +214,7 @@
                     _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�");
                     return null;
                 }
-                oHtTaskCommand.W_CheckValue = task.TaskType + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]);
+                oHtTaskCommand.W_CheckValue = 2 + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]);
             }
             else if (task.TaskState == (int)TaskInStatusEnum.Line_Ingrab || task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
             {
@@ -238,7 +233,26 @@
                     _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟婧愬湴鍧�閰嶇疆閿欒锛�");
                     return null;
                 }
-                oHtTaskCommand.W_CheckValue = task.TaskType + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]);
+                oHtTaskCommand.W_CheckValue = 3 + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]);
+            }
+            else if(task.TaskState == (int)TaskMoveStatusEnum.OutNewMove )
+            {
+                oHtTaskCommand.W_Task_Type = 4;
+                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 = 4 + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]);
             }
             
             if (task.WMSId==1)
@@ -259,8 +273,8 @@
                 oHtTaskCommand.W_Catch_2 = 1;
                 oHtTaskCommand.W_CheckValue += 2;
             }
-            oHtTaskCommand.W_TaskNumber = task.TaskNum;
-            oHtTaskCommand.W_CheckValue += task.TaskNum;
+            oHtTaskCommand.W_TaskNumber = task.TaskId;
+            oHtTaskCommand.W_CheckValue += task.TaskId;
             return oHtTaskCommand;
         }
 
@@ -284,6 +298,17 @@
                     InorOut = "In";
                 }
             }
+            else
+            {
+                if (workType.Equals("In"))
+                {
+                    InorOut = "Out";
+                }
+                else
+                {
+                    InorOut = "In";
+                }
+            }
             return task;
         }
     }

--
Gitblit v1.9.3