1
yangpeixing
2026-02-04 dccc001554c6c5376482df77f929c0d49b258844
WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGV/RGVJob_L1.cs
@@ -87,19 +87,25 @@
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == device.GetValue<R_RGVConveyorLineDBName, int>(R_RGVConveyorLineDBName.R_TaskNum, item.StationCode) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt());
                            if (task != null)
                            {
                                if (task.TaskType == TaskTypeEnum.Inbound.ObjToInt())//RGV入库任务完成
                                if (task.TaskType >= TaskTypeEnum.Inbound.ObjToInt())//RGV入库任务完成
                                {
                                    Dt_Router routers = _routerRepository.QueryFirst(x => x.StartPosi == task.NextAddress);
                                    _taskService.UpdateTask(task, TaskStatusEnum.RGV_Finish, currentAddress: task.NextAddress, nextAddress: routers.NextPosi);
                                    device.SetValue(W_RGVConveyorLineDBName.W_ACK, true, item.StationCode);
                                }
                                else
                                {
                                    //出库任务是否需要跟出库口输送线对接完成任务
                                    WriteDebug(device.DeviceName, $"任务完成,任务号:{task.TaskNum}");
                                    device.SetValue(W_RGVConveyorLineDBName.W_ACK, true, item.StationCode);
                                    _taskService.TaskCompleted(task.TaskNum);
                                }
                                device.SetValue(W_RGVConveyorLineDBName.W_ACK, true, item.StationCode);
                                for (int i = 0; i < 3; i++)
                                {
                                    device.SetValue(W_RGVConveyorLineDBName.W_ACK, true, item.StationCode);
                                    Thread.Sleep(100);
                                }
                            }
                        }
@@ -108,23 +114,31 @@
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskType >= TaskTypeEnum.Inbound.ObjToInt() && x.TaskState == TaskStatusEnum.RGV_NEW.ObjToInt() && x.RGVCode == item.StationCode);
                            if (task != null)
                            {
                                //写入RGV任务
                                device.SetValue(W_RGVConveyorLineDBName.W_TaskNo, task.TaskNum, item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_StartPos, task.SourceAddress.ObjToInt(), item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_TaskType, 2, item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_EndPos, task.NextAddress.ObjToInt(), item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_STB, true, item.StationCode);
                                for (int i = 0; i < 3; i++)
                                {
                                    //写入RGV任务
                                    device.SetValue(W_RGVConveyorLineDBName.W_TaskNo, task.TaskNum, item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_StartPos, task.SourceAddress.ObjToInt(), item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_TaskType, 2, item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_EndPos, task.NextAddress.ObjToInt(), item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_STB, true, item.StationCode);
                                    Thread.Sleep(1000);
                                }
                                _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing);
                            }
                            Dt_Task task1 = _taskRepository.QueryFirst(x => x.TaskType >= TaskTypeEnum.Outbound.ObjToInt() && x.TaskType <= TaskTypeEnum.Inbound.ObjToInt() && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.RGVCode == item.StationCode);
                            if (task1 != null)
                            {
                                //写入RGV任务
                                device.SetValue(W_RGVConveyorLineDBName.W_TaskNo, task1.TaskNum, item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_StartPos, task1.CurrentAddress, item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_TaskType, 2, item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_EndPos, task1.TargetAddress, item.StationCode);
                                device.SetValue(W_RGVConveyorLineDBName.W_STB, true, item.StationCode);
                                for (int i = 0; i < 3; i++)
                                {
                                    //写入RGV任务
                                    device.SetValue(W_RGVConveyorLineDBName.W_TaskNo, task1.TaskNum, item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_StartPos, task1.CurrentAddress, item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_TaskType, 2, item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_EndPos, task1.TargetAddress, item.StationCode);
                                    device.SetValue(W_RGVConveyorLineDBName.W_STB, true, item.StationCode);
                                    Thread.Sleep(1000);
                                }
                                _taskService.UpdateTask(task1, TaskStatusEnum.RGV_Executing);
                            }
                        }