1
zhanghonglin
2025-07-13 813d932834bd802364c045f890cc4d864aa76836
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs
@@ -75,28 +75,52 @@
                if (deviceProRead != null && deviceProWrite != null)
                {
                    R_RGVCPInfo rgvInfoRead = device.Communicator.ReadCustomer<R_RGVCPInfo>(deviceProRead.DeviceProAddress);
                    if (rgvInfoRead.Mode==4  && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1)
                    W_RGVCPInfo rgvInfoWrite = device.Communicator.ReadCustomer<W_RGVCPInfo>(deviceProWrite.DeviceProAddress);
                    if (rgvInfoRead.Mode==5 && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1)
                    {
                        List<Dt_Task> tasks = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState != TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode);
                        //鑾峰彇浠诲姟
                        Dt_Task task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode==device.DeviceCode);
                        if (task != null)
                        Dt_Task? task1 = tasks.FirstOrDefault(x => x.HeightType==1);
                        Dt_Task? task2 = tasks.FirstOrDefault(x => x.HeightType == 2);
                        Dt_Task? task3 = tasks.FirstOrDefault(x => x.HeightType == 3);
                        Dt_Task task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode);
                        if (task != null && task1 == null)
                        {
                            device.SetValue(W_RgvCPDB.WcsTask, task.TaskNum);
                            device.SetValue(W_RgvCPDB.WcsTask1, task.TaskNum);
                            device.SetValue(W_RgvCPDB.TaskType, 4);
                            device.SetValue(W_RgvCPDB.WorkStation, 1);
                            device.SetValue(W_RgvCPDB.Qu1, task.CurrentAddress);
                            device.SetValue(W_RgvCPDB.Fang1, task.NextAddress);
                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
                            Thread.Sleep(1000);
                            //澶嶄綅淇″彿
                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
                            task.HeightType = 1;
                            _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing);
                        }else if (task != null && task2 == null)
                        {
                            device.SetValue(W_RgvCPDB.WcsTask1, task.TaskNum);
                            device.SetValue(W_RgvCPDB.TaskType, 4);
                            device.SetValue(W_RgvCPDB.WorkStation, 1);
                            device.SetValue(W_RgvCPDB.Qu2, task.CurrentAddress);
                            device.SetValue(W_RgvCPDB.Fang2, task.NextAddress);
                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
                            task.HeightType = 2;
                            _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing);
                        }
                        else if (task != null && task3 == null)
                        {
                            device.SetValue(W_RgvCPDB.WcsTask1, task.TaskNum);
                            device.SetValue(W_RgvCPDB.TaskType, 4);
                            device.SetValue(W_RgvCPDB.WorkStation, 1);
                            device.SetValue(W_RgvCPDB.Qu3, task.CurrentAddress);
                            device.SetValue(W_RgvCPDB.Fang3, task.NextAddress);
                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
                            task.HeightType = 3;
                            _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing);
                        }
                    }
                    else if(rgvInfoRead.Mode == 4 && rgvInfoRead.State == 1 && rgvInfoRead.TaskDone == 3)
                    else if((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.TaskDone == 3)
                    {
                        //鑾峰彇浠诲姟
                        Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvEndTask &&  _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                        Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvTask &&  _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                        if (task != null)
                        {
                            //鑾峰彇涓嬩竴涓妭鐐圭殑璺敱
@@ -105,9 +129,6 @@
                            task.NextAddress = "";
                            task.DeviceCode = stationManger.StationDeviceCode;
                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 2);
                            Thread.Sleep(1000);
                            //澶嶄綅淇″彿
                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
                            _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute);
                            WriteError(device.DeviceName, $"RGV浠诲姟瀹屾垚,浠诲姟鍙穥rgvInfoRead.RgvEndTask}");
                        }
@@ -116,6 +137,14 @@
                            WriteError(device.DeviceName, $"鏈壘鍒癛GV瀵瑰簲鐨勭粨鏉熶换鍔rgvInfoRead.RgvEndTask}");
                        }
                    }
                    else if (rgvInfoRead.TaskDone == 2 && rgvInfoWrite.TaskReceivedDone == 1)
                    {
                        device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
                    }
                    else if (rgvInfoRead.TaskDone == 0 && rgvInfoWrite.TaskReceivedDone == 2)
                    {
                        device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
                    }
                }
                else
                {