1
huangxiaoqiang
5 天以前 bafe1d72065cef96afe6f03e103e9ca662185ae0
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs
@@ -32,6 +32,7 @@
using WIDESEAWCS_Core.Caches;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.HttpContextUser;
using WIDESEAWCS_DTO.Enum;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_ITaskInfoRepository;
@@ -103,30 +104,60 @@
                    }
                    if (FirstRgv.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !FirstRgv.GetValue<RGVDBName, bool>(RGVDBName.Fault) && !FirstRgv.GetValue<RGVDBName, bool>(RGVDBName.Running))
                    {
                        Dt_Task? task = GetTask(FirstRgv, FirstRgv.GetValue<RGVDBName, bool>(RGVDBName.InStock));
                        if (task != null)
                        if (FirstRgv.GetValue<RGVDBName, bool>(RGVDBName.InStock))
                        {
                            var IsExecutingTask = DispatchExecutingTask(FirstRgv, task);
                            if (IsExecutingTask != null)
                            Dt_Task? task = GetTask(FirstRgv, FirstRgv.GetValue<RGVDBName, bool>(RGVDBName.InStock));
                            if (task != null)
                            {
                                RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(IsExecutingTask);
                                if (rgvTaskCommand != null)
                                var IsExecutingTask = DispatchExecutingTask(FirstRgv, task);
                                if (IsExecutingTask != null)
                                {
                                    Thread.Sleep(1000);
                                    bool sendFlag = SendCommand(FirstRgv, rgvTaskCommand);
                                    if (sendFlag)
                                    RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(IsExecutingTask);
                                    if (rgvTaskCommand != null)
                                    {
                                        IsExecutingTask.RGVName = FirstRgv.DeviceCode;
                                        _taskRepository.UpdateData(IsExecutingTask);
                                        _taskService.UpdateTaskStatusToNext(IsExecutingTask.TaskNum);
                                        Thread.Sleep(1000);
                                        bool sendFlag = SendCommand(FirstRgv, rgvTaskCommand);
                                        if (sendFlag)
                                        {
                                            if (IsExecutingTask.Remark != null)
                                            {
                                                IsExecutingTask.RGVName = "RGV02";
                                                IsExecutingTask.CurrentAddress = IsExecutingTask.Remark;
                                                IsExecutingTask.Remark = "";
                                                Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == IsExecutingTask.NextAddress);
                                                IsExecutingTask.SourceStation = IsExecutingTask.CurrentAddress == "1025" ? 10 : 7;
                                                if (IsExecutingTask.TaskType == (int)TaskInboundTypeEnum.Inbound)
                                                {
                                                    IsExecutingTask.TargetStation = station.stationRemark;
                                                }
                                                else
                                                {
                                                    IsExecutingTask.TargetStation = station.remark;
                                                }
                                                IsExecutingTask.TaskState = (int)TaskInStatusEnum.RGV_TransFer;
                                                _taskRepository.UpdateData(IsExecutingTask);
                                                Thread.Sleep(1000);
                                            }
                                            else
                                            {
                                                IsExecutingTask.RGVName = FirstRgv.DeviceCode;
                                                _taskRepository.UpdateData(IsExecutingTask);
                                                _taskService.UpdateTaskStatusToNext(IsExecutingTask.TaskNum);
                                                Thread.Sleep(1000);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            var taskNew = DispatchTask(FirstRgv);
                            Dt_Task taskNew = null;
                            taskNew = GetTransFerTask(FirstRgv);
                            if (taskNew == null)
                            {
                                taskNew = DispatchTask(FirstRgv);
                            }
                            if (taskNew != null)
                            {
                                RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(taskNew);
@@ -136,10 +167,44 @@
                                    bool sendFlag = SendCommand(FirstRgv, rgvTaskCommand);
                                    if (sendFlag)
                                    {
                                        taskNew.RGVName = FirstRgv.DeviceCode;
                                        _taskRepository.UpdateData(taskNew);
                                        _taskService.UpdateTaskStatusToNext(taskNew.TaskNum);
                                        Thread.Sleep(1000);
                                        if (taskNew.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)
                                        {
                                            taskNew.TaskState = (int)TaskInStatusEnum.RGV_InExecuting;
                                            _taskRepository.UpdateData(taskNew);
                                            Thread.Sleep(1000);
                                        }
                                        else if (taskNew.TaskState == (int)TaskOutStatusEnum.RGV_TransFerFInish)
                                        {
                                            taskNew.TaskState = (int)TaskOutStatusEnum.RGV_OutExecuting;
                                            _taskRepository.UpdateData(taskNew);
                                            Thread.Sleep(1000);
                                        }
                                        else if (taskNew.Remark != null)
                                        {
                                            taskNew.RGVName = "RGV02";
                                            taskNew.CurrentAddress = taskNew.Remark;
                                            taskNew.Remark = "";
                                            taskNew.TaskState = (int)TaskOutStatusEnum.RGV_TransFer;
                                            Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskNew.NextAddress);
                                            taskNew.SourceStation = taskNew.CurrentAddress == "1025" ? 10 : 7;
                                            if (taskNew.TaskType == (int)TaskInboundTypeEnum.Inbound)
                                            {
                                                taskNew.TargetStation = station.stationRemark;
                                            }
                                            else
                                            {
                                                taskNew.TargetStation = station.remark;
                                            }
                                            _taskRepository.UpdateData(taskNew);
                                            Thread.Sleep(1000);
                                        }
                                        else
                                        {
                                            taskNew.RGVName = FirstRgv.DeviceCode;
                                            _taskRepository.UpdateData(taskNew);
                                            _taskService.UpdateTaskStatusToNext(taskNew.TaskNum);
                                            Thread.Sleep(1000);
                                        }
                                    }
                                }
                            }
@@ -203,30 +268,62 @@
                    }
                    if (SecondRgv.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !SecondRgv.GetValue<RGVDBName, bool>(RGVDBName.Fault) && !SecondRgv.GetValue<RGVDBName, bool>(RGVDBName.Running))
                    {
                        Dt_Task? task = GetTask(SecondRgv, SecondRgv.GetValue<RGVDBName, bool>(RGVDBName.InStock));
                        if (task != null)
                        if (SecondRgv.GetValue<RGVDBName, bool>(RGVDBName.InStock))
                        {
                            var IsExecutingTask = DispatchExecutingTask(SecondRgv, task);
                            if (IsExecutingTask != null)
                            Dt_Task? task = GetTask(SecondRgv, SecondRgv.GetValue<RGVDBName, bool>(RGVDBName.InStock));
                            if (task != null)
                            {
                                RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(IsExecutingTask);
                                if (rgvTaskCommand != null)
                                var IsExecutingTask = DispatchExecutingTask(SecondRgv, task);
                                if (IsExecutingTask != null)
                                {
                                    Thread.Sleep(1000);
                                    bool sendFlag = SendCommand(SecondRgv, rgvTaskCommand);
                                    if (sendFlag)
                                    RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(IsExecutingTask);
                                    if (rgvTaskCommand != null)
                                    {
                                        IsExecutingTask.RGVName = SecondRgv.DeviceCode;
                                        _taskRepository.UpdateData(IsExecutingTask);
                                        _taskService.UpdateTaskStatusToNext(IsExecutingTask.TaskNum);
                                        Thread.Sleep(1000);
                                        bool sendFlag = SendCommand(SecondRgv, rgvTaskCommand);
                                        if (sendFlag)
                                        {
                                            if (IsExecutingTask.Remark != null)
                                            {
                                                IsExecutingTask.RGVName = "RGV01";
                                                IsExecutingTask.CurrentAddress = IsExecutingTask.Remark;
                                                IsExecutingTask.Remark = "";
                                                IsExecutingTask.TaskState = (int)TaskInStatusEnum.RGV_TransFer;
                                                Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == IsExecutingTask.NextAddress);
                                                IsExecutingTask.SourceStation = IsExecutingTask.CurrentAddress == "1025" ? 10 : 7;
                                                if (IsExecutingTask.TaskType == (int)TaskInboundTypeEnum.Inbound)
                                                {
                                                    IsExecutingTask.TargetStation = station.stationRemark;
                                                }
                                                else
                                                {
                                                    IsExecutingTask.TargetStation = station.remark;
                                                }
                                                _taskRepository.UpdateData(IsExecutingTask);
                                                Thread.Sleep(1000);
                                            }
                                            else
                                            {
                                                IsExecutingTask.RGVName = SecondRgv.DeviceCode;
                                                _taskRepository.UpdateData(IsExecutingTask);
                                                _taskService.UpdateTaskStatusToNext(IsExecutingTask.TaskNum);
                                                Thread.Sleep(1000);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            var taskNew = DispatchTask(SecondRgv);
                            Dt_Task taskNew = null;
                            taskNew = GetTransFerTask(SecondRgv);
                            if (taskNew == null)
                            {
                                taskNew = DispatchTask(SecondRgv);
                            }
                            if (taskNew != null)
                            {
                                RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(taskNew);
@@ -236,10 +333,34 @@
                                    bool sendFlag = SendCommand(SecondRgv, rgvTaskCommand);
                                    if (sendFlag)
                                    {
                                        taskNew.RGVName = SecondRgv.DeviceCode;
                                        _taskRepository.UpdateData(taskNew);
                                        _taskService.UpdateTaskStatusToNext(taskNew.TaskNum);
                                        Thread.Sleep(1000);
                                        if (taskNew.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)
                                        {
                                            taskNew.TaskState = (int)TaskInStatusEnum.RGV_InExecuting;
                                            _taskRepository.UpdateData(taskNew);
                                            Thread.Sleep(1000);
                                        }
                                        else if (taskNew.TaskState == (int)TaskOutStatusEnum.RGV_TransFerFInish)
                                        {
                                            taskNew.TaskState = (int)TaskOutStatusEnum.RGV_OutExecuting;
                                            _taskRepository.UpdateData(taskNew);
                                            Thread.Sleep(1000);
                                        }
                                        else if (taskNew.Remark != null)
                                        {
                                            taskNew.RGVName = "RGV01";
                                            taskNew.CurrentAddress = taskNew.Remark;
                                            taskNew.Remark = "";
                                            taskNew.TaskState = (int)TaskOutStatusEnum.RGV_TransFer;
                                            _taskRepository.UpdateData(taskNew);
                                            Thread.Sleep(1000);
                                        }
                                        else
                                        {
                                            taskNew.RGVName = SecondRgv.DeviceCode;
                                            _taskRepository.UpdateData(taskNew);
                                            _taskService.UpdateTaskStatusToNext(taskNew.TaskNum);
                                            Thread.Sleep(1000);
                                        }
                                    }
                                }
                            }
@@ -312,17 +433,43 @@
                    {
                        if (commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault))
                        {
                            var taskSecond = _taskRepository.QueryFirst(x => x.RGVName == "RGV02" && x.TaskNum == commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum) && ((x.TaskType == (int)TaskInboundTypeEnum.Inbound && x.TaskState < 230) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                            var taskSecond = _taskRepository.QueryFirst(x => x.RGVName == "RGV02" && x.TaskNum == commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum) && ((x.TaskType == (int)TaskInboundTypeEnum.Inbound && (x.TaskState < 230||x.TaskState == (int)TaskInStatusEnum.RGV_TransFer|| x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                            if (taskSecond != null)
                            {
                                if (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_Indispatch || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_InAwaitWMS || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                {
                                    if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                    {
                                        if (task.TargetStation- taskSecond.SourceStation > 1 && task.TargetStation - taskSecond.TargetStation > 1)
                                        if (task.TargetStation - taskSecond.SourceStation > 1 && task.TargetStation - taskSecond.TargetStation > 1)
                                        {
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task)}】】");
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                            Thread.Sleep(1000);
                                            if (task.Remark != null)
                                            {
                                                return GetDispatchExecutingTask(task, taskSecond);
                                            }
                                            return task;
                                        }
                                    }
                                }
                                else if ((taskSecond.CurrentAddress == "1025" || taskSecond.CurrentAddress == "1026") && (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_InExecuting))
                                {
                                    if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                    {
                                        if (task.TargetStation - taskSecond.SourceStation > 1 && task.TargetStation - taskSecond.TargetStation > 1)
                                        {
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                            Thread.Sleep(1000);
                                            if (task.Remark != null)
                                            {
                                                return GetDispatchExecutingTask(task, taskSecond);
                                            }
                                            return task;
                                        }
                                    }
@@ -333,8 +480,12 @@
                                    {
                                        if (task.TargetStation - taskSecond.TargetStation > 1)
                                        {
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task)}】】");
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                            Thread.Sleep(1000);
                                            if (task.Remark != null)
                                            {
                                                return GetDispatchExecutingTask(task, taskSecond);
                                            }
                                            return task;
                                        }
                                    }
@@ -343,17 +494,29 @@
                            }
                            else
                            {
                                if (commonRGVSecond.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted))
                                {
                                    RGVTaskFinish(commonRGVSecond, commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                                }
                                if (commonRGVSecond.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) > 35000)
                                {
                                    if (commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                    RGVTaskCommand command = new RGVTaskCommand()
                                    {
                                        PickupLocation = (byte)Convert.ToSByte(15),
                                        TaskNum = Convert.ToInt16(1000),
                                        TaskNum = Convert.ToInt16(1),
                                        TaskType = (byte)Convert.ToSByte(1)
                                    };
                                    SendCommand(commonRGVSecond, command);
                                    Thread.Sleep(1000);
                                    if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                }
                                LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task)}】】");
                                Thread.Sleep(1000);
                                return task;
                            }
@@ -366,21 +529,41 @@
                    CommonRGV_FirstFloor? commonRGVFirst = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "RGV01") as CommonRGV_FirstFloor;
                    if (commonRGVFirst != null)
                    {
                        if (commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault))
                        {
                            var taskSecond = _taskRepository.QueryFirst(x => x.RGVName == "RGV01" && x.TaskNum == commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum)&&((x.TaskType==(int)TaskInboundTypeEnum.Inbound&&x.TaskState<230)||(x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                            var taskSecond = _taskRepository.QueryFirst(x => x.RGVName == "RGV01" && x.TaskNum == commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum) && ((x.TaskType == (int)TaskInboundTypeEnum.Inbound && (x.TaskState < 230 || x.TaskState == (int)TaskInStatusEnum.RGV_TransFer || x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                            if (taskSecond != null)
                            {
                                if (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_Indispatch || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_InAwaitWMS || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                {
                                    if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                    {
                                        if (taskSecond.SourceStation - task.TargetStation > 1 && taskSecond.TargetStation - task.TargetStation > 1)
                                        {
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task)}】】");
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                            Thread.Sleep(1000);
                                            if (task.Remark != null)
                                            {
                                                return GetDispatchExecutingTask(task, taskSecond);
                                            }
                                            return task;
                                        }
                                    }
                                }
                                else if ((taskSecond.CurrentAddress == "1025" || taskSecond.CurrentAddress == "1026") && (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_InExecuting))
                                {
                                    if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                    {
                                        if (taskSecond.SourceStation - task.TargetStation > 1 && taskSecond.TargetStation - task.TargetStation > 1)
                                        {
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                            Thread.Sleep(1000);
                                            if (task.Remark != null)
                                            {
                                                return GetDispatchExecutingTask(task, taskSecond);
                                            }
                                            return task;
                                        }
                                    }
@@ -389,10 +572,15 @@
                                {
                                    if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                    {
                                        if (taskSecond.TargetStation-task.TargetStation >1 )
                                        if (taskSecond.TargetStation - task.TargetStation > 1)
                                        {
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task)}】】");
                                            LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                            Thread.Sleep(1000);
                                            if (task.Remark != null)
                                            {
                                                return GetDispatchExecutingTask(task, taskSecond);
                                            }
                                            return task;
                                        }
                                    }
@@ -401,17 +589,29 @@
                            }
                            else
                            {
                                if (commonRGVFirst.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted))
                                {
                                    RGVTaskFinish(commonRGVFirst, commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                                }
                                if (commonRGVFirst.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) < 420000)
                                {
                                    if (commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                    RGVTaskCommand command = new RGVTaskCommand()
                                    {
                                        PickupLocation = (byte)Convert.ToSByte(26),
                                        TaskNum = Convert.ToInt16(1000),
                                        TaskNum = Convert.ToInt16(1),
                                        TaskType = (byte)Convert.ToSByte(1)
                                    };
                                    SendCommand(commonRGVFirst, command);
                                    Thread.Sleep(1000);
                                    if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                }
                                LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task)}】】");
                                Thread.Sleep(1000);
                                return task;
                            }
@@ -432,7 +632,7 @@
            try
            {
                var tasks = _taskService.QueryRGVTask();
                Dt_Task task;
                Dt_Task task = new Dt_Task();
                if (tasks.Count() == 0)
                {
                    return null;
@@ -444,78 +644,57 @@
                    {
                        if (commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault))
                        {
                            var taskSecond = _taskRepository.QueryFirst(x => x.RGVName == "RGV02" && x.TaskNum == commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                            if (taskSecond != null)
                            var taskSecond = _taskRepository.QueryFirst(x => x.RGVName == "RGV02" && x.TaskNum == commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum) && ((x.TaskType == (int)TaskInboundTypeEnum.Inbound && (x.TaskState < 230 || x.TaskState == (int)TaskInStatusEnum.RGV_TransFer || x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                             if (taskSecond != null)
                            {
                                if (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_Indispatch || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_InAwaitWMS || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                {
                                task = GetDispatchTask(tasks, taskSecond);
                                    task = tasks.FirstOrDefault(x =>(x.SourceStation- taskSecond.TargetStation > 1 && x.SourceStation - taskSecond.SourceStation > 1&&x.TaskType==(int)TaskInboundTypeEnum.Inbound) ||(x.SourceStation - taskSecond.TargetStation > 1 && x.TargetStation - taskSecond.SourceStation > 1 && x.SourceStation - taskSecond.SourceStation > 1 && x.TargetStation - taskSecond.TargetStation > 1&&x.TaskType== (int)TaskOutboundTypeEnum.Outbound));
                                    if (task == null)
                                    {
                                        task = tasks.FirstOrDefault(x => (x.SourceStation - taskSecond.TargetStation > 1 && x.SourceStation - taskSecond.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - taskSecond.TargetStation > 1 && x.TargetStation - taskSecond.SourceStation > 1 && x.SourceStation - taskSecond.SourceStation > 1 && x.TargetStation - taskSecond.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                                    }
                                    LogAndWarn("执行调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                LogAndWarn("调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                Thread.Sleep(1000);
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                else if (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_InExecuting)
                                {
                                    task = tasks.FirstOrDefault(x => x.SourceStation - taskSecond.TargetStation> 1 &&x.TargetStation - taskSecond.TargetStation > 1);
                                    LogAndWarn("执行调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                return task;
                            }
                        }
                        var taskNews = tasks.Where(x => (x.TaskType == (int)TaskInboundTypeEnum.Inbound && (Convert.ToInt32(x.SourceAddress) < 1015|| Convert.ToInt32(x.SourceAddress)>1031)) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound && (x.Roadway == "SC01" || x.Roadway == "SC02" || x.Roadway == "SC03")) || x.RGVName == "RGV01").ToList();
                        if (taskNews.Count == 0)
                        {
                            return null;
                        }
                        if (commonRGVSecond.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted))
                        {
                            RGVTaskFinish(commonRGVSecond, commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                        }
                        if (commonRGVSecond.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) > 35000)
                        {
                            if (commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
                            {
                                return null;
                            }
                            else
                            RGVTaskCommand command = new RGVTaskCommand()
                            {
                                var taskNews = tasks.Where(x => (x.TaskType == (int)TaskInboundTypeEnum.Inbound && Convert.ToInt32(x.SourceAddress) < 1015) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound && (x.Roadway == "SC01" || x.Roadway == "SC02" || x.Roadway == "SC03"))).ToList();
                                if (taskNews.Count== 0)
                                {
                                    return null;
                                }
                                if (commonRGVSecond.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) > 35000)
                                {
                                    RGVTaskCommand command = new RGVTaskCommand()
                                    {
                                        PickupLocation = (byte)Convert.ToSByte(15),
                                        TaskNum = Convert.ToInt16(1000),
                                        TaskType = (byte)Convert.ToSByte(1)
                                    };
                                    SendCommand(commonRGVSecond, command);
                                }
                                if (tasks.FirstOrDefault(x => x.RGVName == "RGV01") != null)
                                {
                                    LogAndWarn("调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV01").TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return taskNews.FirstOrDefault(x => x.RGVName == "RGV01");
                                }
                                else
                                {
                                    LogAndWarn("调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName != "RGV02").TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return taskNews.FirstOrDefault(x => x.RGVName != "RGV02");
                                }
                                PickupLocation = (byte)Convert.ToSByte(15),
                                TaskNum = Convert.ToInt16(1),
                                TaskType = (byte)Convert.ToSByte(1)
                            };
                            SendCommand(commonRGVSecond, command);
                            Thread.Sleep(1000);
                            if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
                            {
                                return null;
                            }
                        }
                        if (tasks.FirstOrDefault(x => x.RGVName == "RGV01") != null)
                        {
                            LogAndWarn("调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(taskNews.FirstOrDefault(x => x.RGVName == "RGV01").TaskNum)}】】");
                            Thread.Sleep(1000);
                            return taskNews.FirstOrDefault(x => x.RGVName == "RGV01");
                        }
                        else
                        {
                            if (tasks.FirstOrDefault(x => x.RGVName == "RGV01") != null)
                            {
                                LogAndWarn("调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV01").TaskNum)}】】");
                                Thread.Sleep(1000);
                                return tasks.FirstOrDefault(x => x.RGVName == "RGV01");
                            }
                            else
                            {
                                LogAndWarn("调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName != "RGV02").TaskNum)}】】");
                                Thread.Sleep(1000);
                                return tasks.FirstOrDefault(x => x.RGVName != "RGV02");
                            }
                            LogAndWarn("调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(taskNews.FirstOrDefault(x => x.RGVName != "RGV02").TaskNum)}】】");
                            Thread.Sleep(1000);
                            return taskNews.FirstOrDefault(x => x.RGVName != "RGV02");
                        }
                    }
                    else
@@ -541,77 +720,59 @@
                    {
                        if (commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault))
                        {
                            var taskFirst = _taskRepository.QueryFirst(x => x.RGVName == "RGV01" && x.TaskNum == commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                            var taskFirst = _taskRepository.QueryFirst(x => x.RGVName == "RGV01" && x.TaskNum == commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum) && ((x.TaskType == (int)TaskInboundTypeEnum.Inbound && (x.TaskState < 230 || x.TaskState == (int)TaskInStatusEnum.RGV_TransFer || x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                            if (taskFirst != null)
                            {
                                if (taskFirst.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || taskFirst.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || taskFirst.TaskState == (int)TaskInStatusEnum.RGV_Indispatch || taskFirst.TaskState == (int)TaskInStatusEnum.RGV_InAwaitWMS || taskFirst.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                {
                                task = GetDispatchTask(tasks, taskFirst);
                                    task = tasks.FirstOrDefault(x => (x.SourceStation - taskFirst.TargetStation > 1 && x.SourceStation - taskFirst.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - taskFirst.TargetStation > 1 && x.TargetStation - taskFirst.SourceStation > 1 && x.SourceStation - taskFirst.SourceStation > 1 && x.TargetStation - taskFirst.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                                LogAndWarn("调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskFirst)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                Thread.Sleep(1000);
                                    LogAndWarn("执行调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskFirst)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                else if (taskFirst.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || taskFirst.TaskState == (int)TaskInStatusEnum.RGV_InExecuting)
                                {
                                    task = tasks.FirstOrDefault(x => taskFirst.TargetStation - x.SourceStation > 1 && taskFirst.TargetStation - x.TargetStation > 1);
                                    LogAndWarn("执行调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskFirst)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                return task;
                            }
                        }
                        var taskNews = tasks.Where(x => (x.TaskType == (int)TaskInboundTypeEnum.Inbound && Convert.ToInt32(x.SourceAddress) > 1014 && Convert.ToInt32(x.SourceAddress)<1031) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound && (x.Roadway == "SC04" || x.Roadway == "SC05" || x.Roadway == "SC06")) || x.RGVName == "RGV02").ToList();
                        if (taskNews.Count == 0)
                        {
                            return null;
                        }
                        if (commonRGVFirst.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted))
                        {
                            RGVTaskFinish(commonRGVFirst, commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                        }
                        if (commonRGVFirst.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) < 420000)
                        {
                            if (commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
                            {
                                return null;
                            }
                            else
                            RGVTaskCommand command = new RGVTaskCommand()
                            {
                                var taskNews = tasks.Where(x => (x.TaskType == (int)TaskInboundTypeEnum.Inbound && Convert.ToInt32(x.SourceAddress) > 1015) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound && (x.Roadway == "SC04" || x.Roadway == "SC05" || x.Roadway == "SC06"))).ToList();
                                if (taskNews.Count == 0)
                                {
                                    return null;
                                }
                                if (commonRGVFirst.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) < 420000)
                                {
                                    RGVTaskCommand command = new RGVTaskCommand()
                                    {
                                        PickupLocation = (byte)Convert.ToSByte(26),
                                        TaskNum = Convert.ToInt16(1000),
                                        TaskType = (byte)Convert.ToSByte(1)
                                    };
                                    SendCommand(commonRGVFirst, command);
                                }
                                if (tasks.FirstOrDefault(x => x.RGVName == "RGV02") != null)
                                {
                                    LogAndWarn("调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV02").TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return tasks.FirstOrDefault(x => x.RGVName == "RGV02");
                                }
                                else
                                {
                                    LogAndWarn("调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName != "RGV01").TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return tasks.FirstOrDefault(x => x.RGVName != "RGV01");
                                }
                                PickupLocation = (byte)Convert.ToSByte(26),
                                TaskNum = Convert.ToInt16(1),
                                TaskType = (byte)Convert.ToSByte(1)
                            };
                            SendCommand(commonRGVFirst, command);
                            Thread.Sleep(1000);
                            if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
                            {
                                return null;
                            }
                        }
                        if (tasks.FirstOrDefault(x => x.RGVName == "RGV02") != null)
                        {
                            LogAndWarn("调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(taskNews.FirstOrDefault(x => x.RGVName == "RGV02").TaskNum)}】】");
                            Thread.Sleep(1000);
                            return taskNews.FirstOrDefault(x => x.RGVName == "RGV02");
                        }
                        else
                        {
                            if (tasks.FirstOrDefault(x => x.RGVName == "RGV02") != null)
                            {
                                LogAndWarn("调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV02").TaskNum)}】】");
                                Thread.Sleep(1000);
                                return tasks.FirstOrDefault(x => x.RGVName == "RGV02");
                            }
                            else
                            {
                                LogAndWarn("调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName != "RGV01").TaskNum)}】】");
                            LogAndWarn("调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(taskNews.FirstOrDefault(x => x.RGVName != "RGV01").TaskNum)}】】");
                                Thread.Sleep(1000);
                                return tasks.FirstOrDefault(x => x.RGVName != "RGV01");
                            }
                            Thread.Sleep(1000);
                            return taskNews.FirstOrDefault(x => x.RGVName != "RGV01");
                        }
                    }
                    else
@@ -636,6 +797,199 @@
            catch (Exception ex)
            {
                WriteInfo("调度任务异常日志", ex.Message+Environment.NewLine+ex.StackTrace);
                return null;
            }
        }
        public Dt_Task GetTransFerTask(CommonRGV_FirstFloor commonRGV)
        {
            try
            {
                var tasks = _taskRepository.QueryData(x => x.Floor == "1F" && (x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish || x.TaskState == (int)TaskOutStatusEnum.RGV_TransFerFInish));
                Dt_Task task = new Dt_Task();
                if (tasks.Count() == 0)
                {
                    return null;
                }
                if (commonRGV.DeviceCode == "RGV01")
                {
                    CommonRGV_FirstFloor? commonRGVSecond = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "RGV02") as CommonRGV_FirstFloor;
                    if (commonRGVSecond != null)
                    {
                        if (commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault))
                        {
                            var taskSecond = _taskRepository.QueryFirst(x => x.RGVName == "RGV02" && x.TaskNum == commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum) && ((x.TaskType == (int)TaskInboundTypeEnum.Inbound && (x.TaskState < 230 || x.TaskState == (int)TaskInStatusEnum.RGV_TransFer || x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                            if (taskSecond != null)
                            {
                                if (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                {
                                    task = tasks.FirstOrDefault(x => ((x.SourceStation - taskSecond.TargetStation > 1 && x.SourceStation - taskSecond.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - taskSecond.TargetStation > 1 && x.TargetStation - taskSecond.SourceStation > 1 && x.SourceStation - taskSecond.SourceStation > 1 && x.TargetStation - taskSecond.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound)) && x.RGVName == "RGV01");
                                    LogAndWarn("中转调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                else if (taskSecond.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || taskSecond.TaskState == (int)TaskInStatusEnum.RGV_InExecuting)
                                {
                                    task = tasks.FirstOrDefault(x => x.SourceStation - taskSecond.TargetStation > 1 && x.TargetStation - taskSecond.TargetStation > 1 && x.RGVName == "RGV01");
                                    LogAndWarn("中转调度任务控制", $"【{commonRGV.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVSecond.DeviceCode}】任务【{JsonConvert.SerializeObject(taskSecond)}】{commonRGVSecond.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                return null;
                            }
                            else
                            {
                                if (commonRGVSecond.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted))
                                {
                                    RGVTaskFinish(commonRGVSecond, commonRGVSecond.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                                }
                                if (commonRGVSecond.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) > 35000)
                                {
                                    if (commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                    RGVTaskCommand command = new RGVTaskCommand()
                                    {
                                        PickupLocation = (byte)Convert.ToSByte(15),
                                        TaskNum = Convert.ToInt16(1),
                                        TaskType = (byte)Convert.ToSByte(1)
                                    };
                                    SendCommand(commonRGVSecond, command);
                                    Thread.Sleep(1000);
                                    if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                }
                                if (tasks.FirstOrDefault(x => x.RGVName == "RGV01") != null)
                                {
                                    LogAndWarn("中转调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV01").TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return tasks.FirstOrDefault(x => x.RGVName == "RGV01");
                                }
                            }
                        }
                        else
                        {
                            if (tasks.FirstOrDefault(x => x.RGVName == "RGV01") != null)
                            {
                                LogAndWarn("中转调度任务控制", $"【{commonRGVSecond.DeviceCode}工作模式:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV01").TaskNum)}】】");
                                Thread.Sleep(1000);
                                return tasks.FirstOrDefault(x => x.RGVName == "RGV01");
                            }
                        }
                    }
                    else
                    {
                        if (tasks.FirstOrDefault(x => x.RGVName == "RGV01") != null)
                        {
                            LogAndWarn("中转调度任务控制", $"【未找到RGV02设备信息】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV01").TaskNum)}】】");
                            Thread.Sleep(1000);
                            return tasks.FirstOrDefault(x => x.RGVName == "RGV01");
                        }
                    }
                    return null;
                }
                else
                {
                    CommonRGV_FirstFloor? commonRGVFirst = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "RGV01") as CommonRGV_FirstFloor;
                    if (commonRGVFirst != null)
                    {
                        if (commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic) && !commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault))
                        {
                            var taskFirst = _taskRepository.QueryFirst(x => x.RGVName == "RGV01" && x.TaskNum == commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum) && ((x.TaskType == (int)TaskInboundTypeEnum.Inbound && (x.TaskState < 230 || x.TaskState == (int)TaskInStatusEnum.RGV_TransFer || x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)) || (x.TaskType == (int)TaskOutboundTypeEnum.Outbound)));
                            if (taskFirst != null)
                            {
                                if (taskFirst.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || taskFirst.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || taskFirst.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                                {
                                    task = tasks.FirstOrDefault(x => ((taskFirst.TargetStation-x.SourceStation  > 1 &&taskFirst.SourceStation - x.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || ( taskFirst.TargetStation- x.SourceStation > 1 &&  taskFirst.SourceStation- x.TargetStation > 1 &&  taskFirst.SourceStation- x.SourceStation > 1 && taskFirst.TargetStation - x.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound)) && x.RGVName == "RGV02");
                                    LogAndWarn("中转调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskFirst)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                else if (taskFirst.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || taskFirst.TaskState == (int)TaskInStatusEnum.RGV_InExecuting)
                                {
                                    task = tasks.FirstOrDefault(x => taskFirst.TargetStation - x.SourceStation > 1 && taskFirst.TargetStation - x.TargetStation > 1 && x.RGVName == "RGV02");
                                    LogAndWarn("中转调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】【{commonRGVFirst.DeviceCode}】任务【{JsonConvert.SerializeObject(taskFirst)}】{commonRGVFirst.DeviceCode}返回任务:【{JsonConvert.SerializeObject(task.TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return task;
                                }
                                return null;
                            }
                            else
                            {
                                if (commonRGVFirst.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted))
                                {
                                    RGVTaskFinish(commonRGVFirst, commonRGVFirst.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum));
                                }
                                if (commonRGVFirst.GetValue<RGVDBName, int>(RGVDBName.LevelPoint) < 420000)
                                {
                                    if (commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                    RGVTaskCommand command = new RGVTaskCommand()
                                    {
                                        PickupLocation = (byte)Convert.ToSByte(26),
                                        TaskNum = Convert.ToInt16(1),
                                        TaskType = (byte)Convert.ToSByte(1)
                                    };
                                    SendCommand(commonRGVFirst, command);
                                    Thread.Sleep(1000);
                                    if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
                                    {
                                        return null;
                                    }
                                }
                                if (tasks.FirstOrDefault(x => x.RGVName == "RGV02") != null)
                                {
                                    LogAndWarn("中转调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV02").TaskNum)}】】");
                                    Thread.Sleep(1000);
                                    return tasks.FirstOrDefault(x => x.RGVName == "RGV02");
                                }
                            }
                        }
                        else
                        {
                            if (tasks.FirstOrDefault(x => x.RGVName == "RGV02") != null)
                            {
                                LogAndWarn("中转调度任务控制", $"【{commonRGVFirst.DeviceCode}工作模式:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Automatic)}】作业状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running)}】设备状态:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Fault)}】是否有货:【{commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.InStock)}】返回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV02").TaskNum)}】】");
                                Thread.Sleep(1000);
                                return tasks.FirstOrDefault(x => x.RGVName == "RGV02");
                            }
                        }
                    }
                    else
                    {
                        if (tasks.FirstOrDefault(x => x.RGVName == "RGV02") != null)
                        {
                            LogAndWarn("中转调度任务控制", $"【未找到RGV01设备信息】 è¿”回任务:【{JsonConvert.SerializeObject(tasks.FirstOrDefault(x => x.RGVName == "RGV02").TaskNum)}】】");
                            Thread.Sleep(1000);
                            return tasks.FirstOrDefault(x => x.RGVName == "RGV02");
                        }
                    }
                    return null;
                }
            }
            catch (Exception ex)
            {
                WriteInfo("调度任务异常日志", ex.Message + Environment.NewLine + ex.StackTrace);
                return null;
            }
        }
@@ -669,8 +1023,12 @@
                                string Barcode = Encoding.UTF8.GetString(x);
                                if (Barcode == null || Barcode == ""|| Barcode.Trim().Contains("\0"))
                                short y = conveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.InteractiveSignal, stationManager.stationChildCode);
                                var structs = BitConverter.GetBytes(y).ToArray().ToBoolArray();
                                if (Barcode == null || Barcode == "" || Barcode.Trim().Contains("\0")|| structs[5])
                                {
                                    WriteInfo("入库异常信息", $"托盘号【{Barcode}】检尺【{structs[5]}】任务号【{TaskNum}】");
                                    commonRGV.SetValue(StackerCraneDBName.PutcargoLocation, Convert.ToSByte(stationManager.stationRemark));
                                    commonRGV.SetValue(StackerCraneDBName.TaskNum, Convert.ToInt16(task.TaskNum));
                                    commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(4));
@@ -680,6 +1038,7 @@
                                    Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                                    task_Hty.TaskId = 0;
                                    task_Hty.OperateType = (int)OperateTypeEnum.异常退回;
                                    _taskRepository.DeleteData(task);
                                    _task_HtyRepository.AddData(task_Hty);
@@ -701,10 +1060,9 @@
                                {
                                    CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
                                    Thread.Sleep(100);
                                    var Barcode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.ConveyorLineBarcode, stationManager.stationChildCode);
                                    conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(stationManager.stationNextChildCode), stationManager.stationChildCode);
                                    Thread.Sleep(100);
                                    conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, Convert.ToInt16(1000), stationManager.stationChildCode);
                                    conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, Convert.ToInt16(1), stationManager.stationChildCode);
                                    Thread.Sleep(100);
                                    conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(2), stationManager.stationChildCode);
                                }
@@ -730,6 +1088,143 @@
            return null;
        }
        public Dt_Task? GetDispatchTask(List<Dt_Task> tasks, Dt_Task oldtask)
        {
            Dt_Task y = tasks.Where(x => x.Remark != null&& ((x.SourceStation - oldtask.TargetStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - oldtask.TargetStation > 1 && x.TargetStation - oldtask.SourceStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TargetStation - oldtask.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound))).FirstOrDefault();
            if (y == null)
            {
                WriteInfo("查询任务", $" è¿”回任务:【{JsonConvert.SerializeObject(oldtask)}】】");
                if (oldtask.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || oldtask.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || oldtask.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                {
                    if (oldtask.RGVName == "RGV01")
                    {
                        return tasks.FirstOrDefault(x => (oldtask.TargetStation - x.SourceStation > 1 && oldtask.SourceStation - x.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (oldtask.TargetStation - x.SourceStation > 1 && oldtask.SourceStation - x.TargetStation > 1 && oldtask.SourceStation - x.SourceStation > 1 && oldtask.TargetStation - x.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                    }
                    else
                    {
                        return tasks.FirstOrDefault(x => (x.SourceStation - oldtask.TargetStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - oldtask.TargetStation > 1 && x.TargetStation - oldtask.SourceStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TargetStation - oldtask.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                    }
                }
                else if ((oldtask.CurrentAddress == "1025" || oldtask.CurrentAddress == "1026") && (oldtask.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || oldtask.TaskState == (int)TaskInStatusEnum.RGV_InExecuting))
                {
                    if (oldtask.RGVName == "RGV01")
                    {
                        return tasks.FirstOrDefault(x => (oldtask.TargetStation - x.SourceStation > 1 && oldtask.SourceStation - x.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (oldtask.TargetStation - x.SourceStation > 1 && oldtask.SourceStation - x.TargetStation > 1 && oldtask.SourceStation - x.SourceStation > 1 && oldtask.TargetStation - x.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                    }
                    else
                    {
                        return tasks.FirstOrDefault(x => (x.SourceStation - oldtask.TargetStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - oldtask.TargetStation > 1 && x.TargetStation - oldtask.SourceStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TargetStation - oldtask.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                    }
                }
                else if (oldtask.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || oldtask.TaskState == (int)TaskInStatusEnum.RGV_InExecuting)
                {
                    if (oldtask.RGVName == "RGV01")
                    {
                        return tasks.FirstOrDefault(x => oldtask.TargetStation - x.SourceStation > 1 && oldtask.TargetStation - x.TargetStation > 1);
                    }
                    else
                    {
                        return tasks.FirstOrDefault(x => x.SourceStation - oldtask.TargetStation > 1 && x.TargetStation - oldtask.TargetStation > 1);
                    }
                }
                return null;
            }
            else
            {
                var stationManager = _stationManagerRepository.QueryData(x => x.stationType == 15);
                if (stationManager.Count() > 0)
                {
                    string next = null;
                    foreach (var item in stationManager)
                    {
                        var x = _taskRepository.QueryFirst(x => x.NextAddress == item.stationChildCode || x.CurrentAddress == item.stationChildCode);
                        if (x == null)
                        {
                            next = item.stationChildCode;
                            break;
                        }
                    }
                    if (next != null)
                    {
                        y.Remark = next;
                        _taskRepository.UpdateData(y);
                        LogAndWarn("中转任务", $" è¿”回任务:【{JsonConvert.SerializeObject(y)}】】");
                        return y;
                    }
                }
                if (oldtask.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch || oldtask.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish || oldtask.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                {
                    return tasks.FirstOrDefault(x => (x.SourceStation - oldtask.TargetStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - oldtask.TargetStation > 1 && x.TargetStation - oldtask.SourceStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TargetStation - oldtask.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                }
                else if ((oldtask.CurrentAddress == "1025" || oldtask.CurrentAddress == "1026") && (oldtask.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || oldtask.TaskState == (int)TaskInStatusEnum.RGV_InExecuting))
                {
                    return tasks.FirstOrDefault(x => (x.SourceStation - oldtask.TargetStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TaskType == (int)TaskInboundTypeEnum.Inbound) || (x.SourceStation - oldtask.TargetStation > 1 && x.TargetStation - oldtask.SourceStation > 1 && x.SourceStation - oldtask.SourceStation > 1 && x.TargetStation - oldtask.TargetStation > 1 && x.TaskType == (int)TaskOutboundTypeEnum.Outbound));
                }
                else if (oldtask.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting || oldtask.TaskState == (int)TaskInStatusEnum.RGV_InExecuting)
                {
                    return tasks.FirstOrDefault(x => x.SourceStation - oldtask.TargetStation > 1 && x.TargetStation - oldtask.TargetStation > 1);
                }
                return null;
            }
        }
        public Dt_Task? GetDispatchExecutingTask(Dt_Task oldtask,Dt_Task task)
        {
            var stationManagers = _stationManagerRepository.QueryData(x => x.stationType == 15);
            if (stationManagers.Count() > 0)
            {
                string next = null;
                foreach (var item in stationManagers)
                {
                    var x = _taskRepository.QueryFirst(x => x.NextAddress == item.stationChildCode || x.CurrentAddress == item.stationChildCode);
                    if (x == null)
                    {
                        next = item.stationChildCode;
                        break;
                    }
                }
                if (next != null)
                {
                    var stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == next);
                    oldtask.Remark = next;
                    if (task.RGVName == "RGV01")
                    {
                        if (task.TargetStation - stationManager.stationRemark > 1 && task.SourceStation - stationManager.stationRemark > 1 && task.SourceStation - oldtask.SourceStation > 1 && task.TargetStation - oldtask.SourceStation > 1)
                        {
                            _taskRepository.UpdateData(oldtask);
                            LogAndWarn("中转任务GetDispatchExecutingTask", $" è¿”回任务:【{JsonConvert.SerializeObject(oldtask)}】】");
                            return oldtask;
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else
                    {
                        if (stationManager.stationRemark - task.TargetStation > 1 && stationManager.stationRemark - task.SourceStation > 1 && oldtask.SourceStation - task.SourceStation > 1 && oldtask.SourceStation - task.TargetStation > 1)
                        {
                            _taskRepository.UpdateData(oldtask);
                            LogAndWarn("中转任务GetDispatchExecutingTask", $" è¿”回任务:【{JsonConvert.SerializeObject(oldtask)}】】");
                            return oldtask;
                        }
                        else
                        {
                            return null;
                        }
                    }
                }
            }
            return null;
        }
        /// <summary>
        /// ä»»åŠ¡å®žä½“è½¬æ¢æˆå‘½ä»¤Model
        /// </summary>
@@ -749,11 +1244,28 @@
                    rgvTaskCommand.TaskType = (byte)Convert.ToSByte(3);
                    rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManager.stationRemark);
                }
                else if (task.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)
                {
                    Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress);
                    Dt_StationManager stationManagerEnd = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress);
                    rgvTaskCommand.TaskType = (byte)Convert.ToSByte(5);
                    rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManagerStart.stationRemark);
                    rgvTaskCommand.PutcargoLocation = (byte)Convert.ToSByte(stationManagerEnd.stationRemark);
                }
                else if (task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                {
                    Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress);
                    rgvTaskCommand.TaskType = (byte)Convert.ToSByte(4);
                    rgvTaskCommand.PutcargoLocation = (byte)Convert.ToSByte(stationManager.stationRemark);
                    if (task.Remark != null && (task.Roadway == "SC01" || task.Roadway == "SC06"))
                    {
                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.Remark);
                        rgvTaskCommand.TaskType = (byte)Convert.ToSByte(4);
                        rgvTaskCommand.PutcargoLocation = (byte)Convert.ToSByte(stationManager.stationRemark);
                    }
                    else
                    {
                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress);
                        rgvTaskCommand.TaskType = (byte)Convert.ToSByte(4);
                        rgvTaskCommand.PutcargoLocation = (byte)Convert.ToSByte(stationManager.stationRemark);
                    }
                }
                else
                {
@@ -765,9 +1277,28 @@
                if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish)
                {
                    Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress);
                    rgvTaskCommand.TaskType = (byte)Convert.ToSByte(3);
                    rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManager.stationRemark);
                    if (task.Remark != null && (task.Roadway == "SC01" || task.Roadway == "SC06"))
                    {
                        Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress);
                        Dt_StationManager stationManagerEnd = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.Remark);
                        rgvTaskCommand.TaskType = (byte)Convert.ToSByte(5);
                        rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManagerStart.stationRemark);
                        rgvTaskCommand.PutcargoLocation = (byte)Convert.ToSByte(stationManagerEnd.stationRemark);
                    }
                    else
                    {
                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress);
                        rgvTaskCommand.TaskType = (byte)Convert.ToSByte(3);
                        rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManager.stationRemark);
                    }
                }
                else if (task.TaskState == (int)TaskOutStatusEnum.RGV_TransFerFInish)
                {
                    Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress);
                    Dt_StationManager stationManagerEnd = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress);
                    rgvTaskCommand.TaskType = (byte)Convert.ToSByte(5);
                    rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManagerStart.stationRemark);
                    rgvTaskCommand.PutcargoLocation = (byte)Convert.ToSByte(stationManagerEnd.stationRemark);
                }
                else if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish)
                {