using Autofac.Core; 
 | 
using HslCommunication; 
 | 
using HslCommunication.Core; 
 | 
using HslCommunication.WebSocket; 
 | 
using Microsoft.Extensions.Hosting; 
 | 
using Microsoft.VisualBasic.FileIO; 
 | 
using Newtonsoft.Json; 
 | 
using Quartz; 
 | 
using SixLabors.ImageSharp.PixelFormats; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
using System.ComponentModel; 
 | 
using System.Diagnostics.CodeAnalysis; 
 | 
using System.Linq; 
 | 
using System.Reflection; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
using WIDESEAWCS_Communicator; 
 | 
using WIDESEAWCS_Core.Helper; 
 | 
using WIDESEAWCS_ISystemServices; 
 | 
using WIDESEAWCS_ITaskInfoService; 
 | 
using WIDESEAWCS_Model.Models; 
 | 
using WIDESEAWCS_Model.Models.System; 
 | 
using WIDESEAWCS_QuartzJob; 
 | 
using WIDESEAWCS_QuartzJob.DeviceBase; 
 | 
using WIDESEAWCS_QuartzJob.StackerCrane.Enum; 
 | 
using WIDESEAWCS_Tasks.OHT; 
 | 
  
 | 
namespace WIDESEAWCS_Tasks 
 | 
{ 
 | 
    [DisallowConcurrentExecution] 
 | 
    public class ZXJJob : JobBase, IJob 
 | 
    { 
 | 
        public static bool W_ZXJ_Heat = true; 
 | 
        public static bool W_TC_Heat = true; 
 | 
        public static bool W_GZJ_Heat = true; 
 | 
        private readonly ITaskService _taskService; 
 | 
        private readonly Idt_ThicknessHtyService _IThicknessHtyService; 
 | 
        private readonly Idt_WeightHtyService _IWeightHtyService; 
 | 
        WebSocketServer _webSocketServer; 
 | 
        private readonly Idt_ErrormsginfoService _ErrormsginfoService; 
 | 
        public ZXJJob(ITaskService taskService, WebSocketServer webSocketServer,Idt_ErrormsginfoService errormsginfoService, Idt_ThicknessHtyService ThicknessHtyService, Idt_WeightHtyService WeightHtyService) 
 | 
        { 
 | 
            _taskService = taskService;//注入 
 | 
            _webSocketServer = webSocketServer; 
 | 
            _ErrormsginfoService = errormsginfoService; 
 | 
            _IThicknessHtyService = ThicknessHtyService; 
 | 
            _IWeightHtyService = WeightHtyService; 
 | 
        } 
 | 
  
 | 
        public Task Execute(IJobExecutionContext context) 
 | 
        { 
 | 
            //return Task.CompletedTask; 
 | 
            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); 
 | 
            if (flag && value != null) 
 | 
            { 
 | 
                 
 | 
                try 
 | 
                { 
 | 
                    //天车PLC对象 
 | 
                    OtherDevice TCevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "天车"); 
 | 
                    if (TCevice.Communicator.IsConnected) 
 | 
                    { 
 | 
                        #region 读取天车设备数据 
 | 
                        OHTJob.oHTReadData.R_HeartBeat = TCevice.GetValue<DeviceDBName, bool>(DeviceDBName.R_HeartBeat); 
 | 
                        OHTJob.oHTReadData.R_RunMode = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_RunMode); 
 | 
                        OHTJob.oHTReadData.R_RunState = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_RunState); 
 | 
                        OHTJob.oHTReadData.R_AlarmCode = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_AlarmCode); 
 | 
                        OHTJob.oHTReadData.R_TaskState = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState); 
 | 
                        OHTJob.oHTReadData.R_CurrentLine = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentLine); 
 | 
                        OHTJob.oHTReadData.R_CurrentColumn = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentColumn); 
 | 
                        OHTJob.oHTReadData.R_RiseUp_Position = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_RiseUp_Position); 
 | 
                        OHTJob.oHTReadData.R_TaskNumber = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_TaskNumber); 
 | 
                        OHTJob.oHTReadData.R_Loaded_1 = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_1); 
 | 
                        OHTJob.oHTReadData.R_Loaded_2 = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_2); 
 | 
                        OHTJob.oHTReadData.weight = TCevice.GetValue<DeviceDBName, float>(DeviceDBName.weight); 
 | 
                        #endregion 
 | 
                        if (W_TC_Heat) 
 | 
                        { 
 | 
                            W_TC_Heat = false; 
 | 
                            TCevice.SetValue(DeviceDBName.W_HeartBeat, W_TC_Heat); 
 | 
                        } 
 | 
                        else 
 | 
                        { 
 | 
                            W_TC_Heat = true; 
 | 
                            TCevice.SetValue(DeviceDBName.W_HeartBeat, W_TC_Heat); 
 | 
                        } 
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        throw new Exception($"天车PLC连接失败"); 
 | 
                    } 
 | 
                    //整形机PLC对象 
 | 
                    OtherDevice device = (OtherDevice)value; 
 | 
                    if (device.Communicator.IsConnected) 
 | 
                    { 
 | 
                        #region 读取整形机设备数据 
 | 
                        OHTJob.oHTReadData.R_ZXJ_HeartBeat = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_HeartBeat); 
 | 
                        OHTJob.oHTReadData.R_ZXJ_isWork = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_isWork); 
 | 
                        OHTJob.oHTReadData.R_ZXJ_RGVMode = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_RGVMode); 
 | 
                        OHTJob.oHTReadData.R_ZXJ_TCMode = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_TCMode); 
 | 
                        OHTJob.oHTReadData.R_ZXJ_TC_isready = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_TC_isready); 
 | 
                        OHTJob.oHTReadData.R_TCMode_TC = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_TCMode_TC); 
 | 
                        OHTJob.oHTReadData.R_TCMode_CC = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_TCMode_CC); 
 | 
                        OHTJob.oHTReadData.R_HC_isReady = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_HC_isReady); 
 | 
                        OHTJob.oHTReadData.R_HC_isReadyWork = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_HC_isReadyWork); 
 | 
                        OHTJob.oHTReadData.R_issafe = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_issafe); 
 | 
                        //总数 
 | 
                        OHTJob.oHTReadData.R_CommonRecorder = device.GetValue<ZXJDBName, Int16>(ZXJDBName.R_CommonRecorder); 
 | 
                        OHTJob.oHTReadData.R_SpecialRecorder = device.GetValue<ZXJDBName, Int16>(ZXJDBName.R_SpecialRecorder); 
 | 
                        OHTJob.oHTReadData.R_TotalWeight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TotalWeight); 
 | 
                        //重量厚度上、下限值 
 | 
                        //厚度 
 | 
                        float tza1 = OHTJob.oHTReadData.R_TopLeftUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopLeftUp); 
 | 
                        float tza2 = OHTJob.oHTReadData.R_TopLeftBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopLeftBelow); 
 | 
                        float tzb1 = OHTJob.oHTReadData.R_TopMiddleUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopMiddleUp); 
 | 
                        float tzb2 = OHTJob.oHTReadData.R_TopMiddleBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopMiddleBelow); 
 | 
                        float tzc1 = OHTJob.oHTReadData.R_TopRightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopRightUp); 
 | 
                        float tzc2 = OHTJob.oHTReadData.R_TopRightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopRightBelow); 
 | 
                        float tzd1 = OHTJob.oHTReadData.R_CentreLeftUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreLeftUp); 
 | 
                        float tzd2 = OHTJob.oHTReadData.R_CentreLeftBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreLeftBelow); 
 | 
                        float tze1 = OHTJob.oHTReadData.R_CentreMiddleUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreMiddleUp); 
 | 
                        float tze2 = OHTJob.oHTReadData.R_CentreMiddleBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreMiddleBelow); 
 | 
                        float tzf1 = OHTJob.oHTReadData.R_CentreRightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreRightUp); 
 | 
                        float tzf2 = OHTJob.oHTReadData.R_CentreRightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreRightBelow); 
 | 
                        float tzg1 = OHTJob.oHTReadData.R_BottomLeftUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomLeftUp); 
 | 
                        float tzg2 = OHTJob.oHTReadData.R_BottomLeftBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomLeftBelow); 
 | 
                        float tzh1 = OHTJob.oHTReadData.R_BottomRightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomRightUp); 
 | 
                        float tzh2 = OHTJob.oHTReadData.R_BottomRightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomRightBelow); 
 | 
                        //重量 
 | 
                        float ws1 = OHTJob.oHTReadData.R_WeightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_WeightUp); 
 | 
                        float ws2 = OHTJob.oHTReadData.R_WeightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_WeightBelow); 
 | 
  
 | 
                        //重量厚度值 
 | 
                        //厚度 
 | 
                        float tz1 = OHTJob.oHTReadData.R_TopLeft = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopLeft); 
 | 
                        float tz2 = OHTJob.oHTReadData.R_TopMiddle = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopMiddle); 
 | 
                        float tz3 = OHTJob.oHTReadData.R_TopRight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopRight); 
 | 
                        float tz4 = OHTJob.oHTReadData.R_CentreLeft = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreLeft); 
 | 
                        float tz5 = OHTJob.oHTReadData.R_CentreMiddle = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreMiddle); 
 | 
                        float tz6 = OHTJob.oHTReadData.R_CentreRight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreRight); 
 | 
                        float tz7 = OHTJob.oHTReadData.R_BottomLeft = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomLeft); 
 | 
                        float tz8 = OHTJob.oHTReadData.R_BottomRight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomRight); 
 | 
                        //重量 
 | 
                        float w = OHTJob.oHTReadData.R_Weight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_Weight); 
 | 
  
 | 
                        //记录重量厚度 
 | 
                        bool thickness = OHTJob.oHTReadData.R_ThicknessRecorder = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ThicknessRecorder); 
 | 
                        bool weight = OHTJob.oHTReadData.R_WeightRecorder = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_WeightRecorder); 
 | 
                        #endregion 
 | 
                        //记录重量与厚度 
 | 
                        //厚度 
 | 
                        if (thickness) 
 | 
                        { 
 | 
                            dt_Thickness_hty dt_thickness = new dt_Thickness_hty(); 
 | 
                            dt_thickness.topleft = tz1; 
 | 
                            dt_thickness.topmiddle = tz2; 
 | 
                            dt_thickness.topright = tz3; 
 | 
                            dt_thickness.centreleft = tz4; 
 | 
                            dt_thickness.centremiddle = tz5; 
 | 
                            dt_thickness.centreright = tz6; 
 | 
                            dt_thickness.bottomleft = tz7; 
 | 
                            dt_thickness.bottomright = tz8; 
 | 
  
 | 
                            int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0; 
 | 
                            //判断合格 
 | 
                            if (tz1 < tza2 && tz1 > tza1) 
 | 
                            { 
 | 
                                a = 1; 
 | 
                            } 
 | 
  
 | 
                            if (tz2 < tzb2 && tz2 > tzb1) 
 | 
                            { 
 | 
                                b = 1; 
 | 
                            } 
 | 
  
 | 
                            if (tz3 < tzc2 && tz3 > tzc1) 
 | 
                            { 
 | 
                                c = 1; 
 | 
                            } 
 | 
  
 | 
                            if (tz4 < tzd2 && tz4 > tzd1) 
 | 
                            { 
 | 
                                d = 1; 
 | 
                            } 
 | 
  
 | 
                            if (tz5 < tze2 && tz5 > tze1) 
 | 
                            { 
 | 
                                e = 1; 
 | 
                            } 
 | 
  
 | 
                            if (tz6 < tzf2 && tz6 > tzf1) 
 | 
                            { 
 | 
                                f = 1; 
 | 
                            } 
 | 
  
 | 
                            if (tz7 < tzg2 && tz7 > tzg1) 
 | 
                            { 
 | 
                                g = 1; 
 | 
                            } 
 | 
  
 | 
                            if (tz8 < tzh2 && tz8 > tzh1) 
 | 
                            { 
 | 
                                h = 1; 
 | 
                            } 
 | 
  
 | 
                            if (a == 1 && b == 1 && c == 1 && d == 1 && e == 1 && f == 1 && g == 1 && h == 1) 
 | 
                            { 
 | 
                                dt_thickness.qualified = 1; 
 | 
                            } 
 | 
                            else 
 | 
                            { 
 | 
                                dt_thickness.qualified = 0; 
 | 
                            } 
 | 
                            //区间值 
 | 
                            dt_thickness.interval = tza1 + "-" + tza2+","+ tzb1 + "-" + tzb2 + "," + tzc1 + "-" + tzc2 + "," + tzd1 + "-" + tzd2 + "," + tze1 + "-" + tze2 + "," + tzf1 + "-" + tzf2 + "," + tzg1 + "-" + tzg2 + "," + tzh1 + "-" + tzh2; 
 | 
                            if(tz1 != 0 && tz2 != 0 && tz3 != 0 && tz4 != 0 && tz5 != 0 && tz6 != 0 && tz7 != 0 && tz8 != 0) 
 | 
                            { 
 | 
                                _IThicknessHtyService.AddData(dt_thickness); 
 | 
                            } 
 | 
                            device.SetValue(DeviceDBName.R_ThicknessSuccess, true); 
 | 
                            //防止整形机没收到信号延时 
 | 
                            Thread.Sleep(400); 
 | 
                            device.SetValue(DeviceDBName.R_ThicknessSuccess, false); 
 | 
                            //防止整形机不能即使更改信号导致重复生成记录,延时 
 | 
                            Thread.Sleep(400); 
 | 
                        } 
 | 
                        //重量 
 | 
                        if (weight) 
 | 
                        { 
 | 
                            dt_Weight_hty dt_weight = new dt_Weight_hty(); 
 | 
                            dt_weight.weight = w; 
 | 
                            //判断合格 
 | 
                            if (w>ws1&&w<ws2) 
 | 
                            { 
 | 
                                dt_weight.qualified = 1; 
 | 
                            } 
 | 
                            else 
 | 
                            { 
 | 
                                dt_weight.qualified = 0; 
 | 
                            } 
 | 
                            //区间值 
 | 
                            dt_weight.interval = ws1+"-"+ws2; 
 | 
                            //不得小于150大于350 
 | 
                            if (w > 150 && w < 350 && w!=0) 
 | 
                            { 
 | 
                                _IWeightHtyService.AddData(dt_weight); 
 | 
                            } 
 | 
                            device.SetValue(DeviceDBName.R_WeightSuccess, true); 
 | 
                            bool c = device.GetValue<DeviceDBName, bool>(DeviceDBName.R_WeightSuccess); 
 | 
                            //防止整形机没收到信号延时 
 | 
                            Thread.Sleep(400); 
 | 
                            device.SetValue(DeviceDBName.R_WeightSuccess, false); 
 | 
                            //防止整形机不能即使更改信号导致重复生成记录,延时 
 | 
                            Thread.Sleep(400); 
 | 
                        } 
 | 
  
 | 
                        if (W_ZXJ_Heat) 
 | 
                        { 
 | 
                            W_ZXJ_Heat = false; 
 | 
                            device.SetValue(ZXJDBName.W_ZXJ_HeartBeat, W_ZXJ_Heat); 
 | 
                        } 
 | 
                        else 
 | 
                        { 
 | 
                            W_ZXJ_Heat = true; 
 | 
                            device.SetValue(ZXJDBName.W_ZXJ_HeartBeat, W_ZXJ_Heat); 
 | 
                        } 
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        throw new Exception($"整形机PLC连接失败"); 
 | 
                    } 
 | 
                    //规整机PLC对象 
 | 
                    OtherDevice GZJevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "阳极规整机"); 
 | 
                    if (GZJevice.Communicator.IsConnected) 
 | 
                    { 
 | 
                        #region 读取规整机设备数据 
 | 
                        OHTJob.oHTReadData.R_ZXJ_HeartBeat = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_GZJ_HeartBeat); 
 | 
                        OHTJob.oHTReadData.R_GZJ_isWork = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_GZJ_isWork); 
 | 
                        OHTJob.oHTReadData.R_RGVMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_RGVMode); 
 | 
                        OHTJob.oHTReadData.R_CCMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_CCMode); 
 | 
                        OHTJob.oHTReadData.R_TCMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_TCMode); 
 | 
                        OHTJob.oHTReadData.R_DK_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_DK_isready); 
 | 
                        OHTJob.oHTReadData.R_XK_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_XK_isready); 
 | 
                        OHTJob.oHTReadData.R_TC_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_TC_isready); 
 | 
                        #endregion 
 | 
                        if (W_GZJ_Heat) 
 | 
                        { 
 | 
                            W_GZJ_Heat = false; 
 | 
                            GZJevice.SetValue(GZJDBName.W_GZJ_HeartBeat, W_GZJ_Heat); 
 | 
                        } 
 | 
                        else 
 | 
                        { 
 | 
                            W_GZJ_Heat = true; 
 | 
                            GZJevice.SetValue(GZJDBName.W_GZJ_HeartBeat, W_GZJ_Heat); 
 | 
                        } 
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        throw new Exception($"规整机PLC连接失败"); 
 | 
                    } 
 | 
                    //状态数据发送给前端 
 | 
                    string ohtData = JsonConvert.SerializeObject(OHTJob.oHTReadData); 
 | 
                    _webSocketServer.PublishAllClientPayload(ohtData); 
 | 
                } 
 | 
                catch (Exception ex) 
 | 
                { 
 | 
                    //状态数据发送给前端 
 | 
                    string ohtData = JsonConvert.SerializeObject(OHTJob.oHTReadData); 
 | 
                    _webSocketServer.PublishAllClientPayload(ohtData); 
 | 
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1); 
 | 
                } 
 | 
            } 
 | 
            return Task.CompletedTask; 
 | 
        } 
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 任务实体转换成命令Model 
 | 
        /// </summary> 
 | 
        /// <param name="task">任务实体</param> 
 | 
        /// <returns></returns> 
 | 
        /// <exception cref="Exception"></exception> 
 | 
        public OHTTaskCommand? ConvertToOHTTaskCommand([NotNull] Dt_Task task) 
 | 
        { 
 | 
            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) 
 | 
            { 
 | 
                oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[1]); 
 | 
                oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[2]); 
 | 
                oHtTaskCommand.W_Put_Layer = Convert.ToInt16(SourceCodes[3]); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                //数据配置错误 
 | 
                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任务源地址配置错误!"); 
 | 
                return null; 
 | 
            } 
 | 
            string[] targetCodes = task.TargetAddress.Split("-"); 
 | 
            if (targetCodes.Length == 3) 
 | 
            { 
 | 
                oHtTaskCommand.W_Put_Line = Convert.ToInt16(targetCodes[1]); 
 | 
                oHtTaskCommand.W_Put_Column = Convert.ToInt16(targetCodes[2]); 
 | 
                oHtTaskCommand.W_Put_Layer = Convert.ToInt16(targetCodes[3]); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                //数据配置错误 
 | 
                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任务目标地址配置错误"); 
 | 
                return null; 
 | 
            } 
 | 
            return oHtTaskCommand; 
 | 
        } 
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 获取任务 
 | 
        /// </summary> 
 | 
        /// <returns></returns> 
 | 
        private Dt_Task? GetTask() 
 | 
        { 
 | 
            Dt_Task task; 
 | 
            task = _taskService.QueryStackerCraneTask("R01"); 
 | 
            return task; 
 | 
        } 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |