Zhang-Hong-Lin
2025-03-07 ee94d6b5b5719159370c5e0055957d2dffb3f815
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs
@@ -37,7 +37,7 @@
        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;
@@ -54,10 +54,10 @@
                var ZXJdevice = Storage.Devices.Find(v => v.DeviceName == "阳极整形机");
                //规整机PLC对象
                var GZJevice = Storage.Devices.Find(v => v.DeviceName == "阳极规整机");
                //if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected)
                //{
                //    return Task.CompletedTask;
                //}
                if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected)
                {
                    return Task.CompletedTask;
                }
                try
                {
                    #region å¤©è½¦å®Œæˆä»»åŠ¡é€»è¾‘
@@ -115,10 +115,20 @@
                        }
                        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 )
                    if (oHTReadData.R_RunMode == (int)RunModeEnum.Automatic)
                    {
                        if (oHTReadData.R_RunState == (int)RunStateEnum.Standby)
                        {
@@ -159,7 +169,7 @@
                }
                catch (Exception ex)
                {
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message,1);
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1);
                }
            }
            return Task.CompletedTask;
@@ -176,7 +186,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("-");
@@ -185,7 +195,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
                {
@@ -214,6 +224,25 @@
                }
                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)
            {