From bfd2cde0cc9b9871eeab1503c837beabb9ade9e5 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 16 九月 2025 17:35:53 +0800
Subject: [PATCH] 增加叠盘机拆盘机流程

---
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs |   61 +++++++++++++++++++++---------
 1 files changed, 43 insertions(+), 18 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
index 7d9a407..4663e0d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
@@ -71,73 +71,98 @@
                 DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(R_RgvCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
 
                 DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(W_RgvCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-                Console.WriteLine(DateTime.Now.ToString("yyyy-mm-ddd HH:mm:ss"));
                 if (deviceProRead != null && deviceProWrite != null)
                 {
                     R_RGVCPInfo rgvInfoRead = device.Communicator.ReadCustomer<R_RGVCPInfo>(deviceProRead.DeviceProAddress);
                     W_RGVCPInfo rgvInfoWrite = device.Communicator.ReadCustomer<W_RGVCPInfo>(deviceProWrite.DeviceProAddress);
+                    if (rgvInfoRead==null || rgvInfoWrite==null)
+                    {
+                        return Task.CompletedTask;
+                    }
                     if ((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1)
                     {
+                        //鑾峰彇浠诲姟 鏄惁鏈塕GV鎵ц鐨勪换鍔�
                         List<Dt_Task> tasks = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState != TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode);
-                        //鑾峰彇浠诲姟
+                        
                         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);
                         List<Dt_Task> tasksDown = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode).OrderBy(x=>x.CreateDate).Take(3).ToList();
-                        //鍒嗛厤RGV宸ヤ綅浠诲姟
-                        if (tasksDown.Count>=2)
+                        if (tasksDown.Count>0)
                         {
-                            device.SetValue(W_RgvCPDB.TaskType, 4);
-                            //鍗犵敤涓や釜宸ヤ綅
-                            if (tasksDown.Count==2)
+                            bool ReceivedDone = false;
+                            //鍒嗛厤RGV宸ヤ綅浠诲姟鍗犵敤涓�涓伐浣�
+                            if (tasksDown.Count == 1)
                             {
-                                device.SetValue(W_RgvCPDB.WorkStation, 4);
                                 if (task1 == null)
                                 {
+                                    //涓嬪彂鎵ц宸ヤ綅
+                                    device.SetValue(W_RgvCPDB.WorkStation, 1);
                                     device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
                                     tasksDown[0].HeightType = 1;
                                     _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
+                                    Thread.Sleep(100);
+                                    ReceivedDone=true;
                                 }
-                                if (task2 == null)
+                            }
+                            else if (tasksDown.Count == 2)//鍗犵敤涓や釜宸ヤ綅
+                            {
+                                
+                                if (task1 == null && task2 == null)
                                 {
+                                    //涓嬪彂鎵ц宸ヤ綅
+                                    device.SetValue(W_RgvCPDB.WorkStation, 4);
+
+                                    device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
+                                    device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
+                                    device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
+                                    tasksDown[0].HeightType = 1;
+                                    _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
+                                    Thread.Sleep(100);
                                     device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress);
                                     tasksDown[1].HeightType = 2;
                                     _taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing);
+                                    Thread.Sleep(100);
+                                    ReceivedDone = true;
                                 }
                             }
                             else //鍗犵敤涓変釜宸ヤ綅
                             {
-                                device.SetValue(W_RgvCPDB.WorkStation, 7);
-                                if ( task1 == null)
+                                if (task1 == null && task2 == null && task3 == null)
                                 {
+                                    //涓嬪彂鎵ц宸ヤ綅
+                                    device.SetValue(W_RgvCPDB.WorkStation, 7);
+
                                     device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
                                     tasksDown[0].HeightType = 1;
                                     _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
-                                }
-                                if (task2 == null)
-                                {
+                                    Thread.Sleep(100);
                                     device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress);
                                     tasksDown[1].HeightType = 2;
                                     _taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing);
-                                }
-                                if (task3 == null)
-                                {
+                                    Thread.Sleep(100);
                                     device.SetValue(W_RgvCPDB.WcsTask3, tasksDown[2].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu3, tasksDown[2].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang3, tasksDown[2].NextAddress);
                                     tasksDown[2].HeightType = 3;
                                     _taskService.UpdateTask(tasksDown[2], TaskStatusEnum.RGV_Executing);
+                                    Thread.Sleep(100);
+                                    ReceivedDone = true;
                                 }
                             }
-                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
+                            if (ReceivedDone)
+                            {
+                                device.SetValue(W_RgvCPDB.TaskType, 4);
+                                device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
+                            }
                         }
                     }
                     else if((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.TaskDone == 3)

--
Gitblit v1.9.3