1
qinchulong
2025-02-28 6ff7cbed707a5bbc6a97f44257285bc8fdb2c9c9
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs
@@ -15,7 +15,9 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
@@ -52,21 +54,19 @@
                    //_taskService.Repository; //仓储层,进行数据库访问
                    OHTReadData oHTReadData = new OHTReadData();
                    #region è¯»å–天车设备数据
                    oHTReadData.R_HeartBeat = device.GetValue<DeviceDBName, short>(DeviceDBName.R_HeartBeat);
                    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, short>(DeviceDBName.R_CurrentLine);
                    oHTReadData.R_CurrentColumn = device.GetValue<DeviceDBName, short>(DeviceDBName.R_CurrentColumn);
                    oHTReadData.R_RiseUp_Position = device.GetValue<DeviceDBName, short>(DeviceDBName.R_RiseUp_Position);
                    oHTReadData.R_TaskNumber = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskNumber);
                    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.R_Code_1 = device.GetValue<DeviceDBName, string>(DeviceDBName.R_Code_1);
                    oHTReadData.R_Code_2 = device.GetValue<DeviceDBName, string>(DeviceDBName.R_Code_2);
                    oHTReadData.R_Load_Requst_1 = device.GetValue<DeviceDBName, bool>(DeviceDBName.R_Load_Requst_1);
                    oHTReadData.R_Load_Requst_2 = device.GetValue<DeviceDBName, bool>(DeviceDBName.R_Load_Requst_2);
                    oHTReadData.weight = device.GetValue<DeviceDBName, float>(DeviceDBName.weight);
                    #region æµ‹è¯•用
                    //oHTReadData.R_HeartBeat = 1;
                    //oHTReadData.R_RunMode = 2;
@@ -91,6 +91,60 @@
                    string ohtData = JsonConvert.SerializeObject(oHTReadData);
                    _webSocketServer.PublishAllClientPayload(ohtData);
                    //因为天的任务需要分段发送,所以取货完成与放货完成需要单独做逻辑控制
                    //判断天车当前有没有取货完成任务信号
                    if (oHTReadData.R_RunState == (int)RunStateEnum.PickUpCompleted && oHTReadData.R_TaskState==(int)TaskStateEnum.TaskComplete)
                    {
                        //天车取货完成逻辑
                        var nawtask = _taskService.QueryTakNnmTask(oHTReadData.R_TaskNumber);
                        if (nawtask==null)
                        {
                            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)
                                {
                                    device.SetValue(DeviceDBName.W_ConfirmSignal, 3);
                                }
                            }
                        }
                        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 (oHTReadData.R_RunState == (int)RunStateEnum.PutCompleted && oHTReadData.R_TaskState == (int)TaskStateEnum.TaskComplete)
                    {
                        //天车放货完成逻辑
                        var nawtask = _taskService.QueryTakNnmTask(oHTReadData.R_TaskNumber);
                        if (nawtask == null)
                        {
                            throw new Exception(string.Format("天车放货完成任务未查询到任务号{0}", oHTReadData.R_TaskNumber));
                        }
                        if (nawtask.TaskType == (int)TaskInboundTypeEnum.Inbound)
                        {
                        }
                        else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                        {
                        }
                    }
                    if (oHTReadData.R_RunMode == (int)RunModeEnum.Automatic && oHTReadData.R_AlarmCode == (int)AlarmCodeEnum.Normal)
                    {
                        if (oHTReadData.R_RunState == (int)RunStateEnum.Standby)