From 089b66c13b51beccf3d264882758a5a994201008 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期一, 03 十一月 2025 15:42:52 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs |  149 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 92 insertions(+), 57 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs"
index 728235d..986fe7f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs"
@@ -136,7 +136,7 @@
                                                     IsExecutingTask.TargetStation = station.remark;
                                                     IsExecutingTask.TaskState = (int)TaskOutStatusEnum.RGV_TransFer;
                                                 }
-                                                
+
                                                 _taskRepository.UpdateData(IsExecutingTask);
                                                 Thread.Sleep(1000);
                                             }
@@ -154,62 +154,68 @@
                         }
                         else
                         {
+
                             Dt_Task taskNew = null;
                             taskNew = GetTransFerTask(FirstRgv);
                             if (taskNew == null)
                             {
-                                taskNew = DispatchTask(FirstRgv);
+                                if (IsExistTransTask(FirstRgv))
+                                {
+                                    taskNew = DispatchTask(FirstRgv);
+                                }
                             }
                             if (taskNew != null)
-                            {
-                                RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(taskNew);
-                                if (rgvTaskCommand != null)
                                 {
-                                    Thread.Sleep(1000);
-                                    bool sendFlag = SendCommand(FirstRgv, rgvTaskCommand);
-                                    if (sendFlag)
+                                    RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(taskNew);
+                                    if (rgvTaskCommand != null)
                                     {
-                                        if (taskNew.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)
+                                        Thread.Sleep(1000);
+                                        bool sendFlag = SendCommand(FirstRgv, rgvTaskCommand);
+                                        if (sendFlag)
                                         {
-                                            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)
+                                            if (taskNew.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish)
                                             {
-                                                taskNew.TargetStation = station.stationRemark;
+                                                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.TargetStation = station.remark;
+                                                taskNew.RGVName = FirstRgv.DeviceCode;
+                                                _taskRepository.UpdateData(taskNew);
+                                                _taskService.UpdateTaskStatusToNext(taskNew.TaskNum);
+                                                Thread.Sleep(1000);
                                             }
-                                            _taskRepository.UpdateData(taskNew);
-                                            Thread.Sleep(1000);
-                                        }
-                                        else
-                                        {
-                                            taskNew.RGVName = FirstRgv.DeviceCode;
-                                            _taskRepository.UpdateData(taskNew);
-                                            _taskService.UpdateTaskStatusToNext(taskNew.TaskNum);
-                                            Thread.Sleep(1000);
                                         }
                                     }
+
                                 }
-                            }
+                            
                         }
                     }
                     #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
@@ -290,7 +296,7 @@
                                                 IsExecutingTask.RGVName = "RGV01";
                                                 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)
@@ -321,13 +327,16 @@
                         }
                         else
                         {
+
                             Dt_Task taskNew = null;
                             taskNew = GetTransFerTask(SecondRgv);
                             if (taskNew == null)
                             {
-                                taskNew = DispatchTask(SecondRgv);
+                                if (IsExistTransTask(SecondRgv))
+                                {
+                                    taskNew = DispatchTask(SecondRgv);
+                                }
                             }
-
                             if (taskNew != null)
                             {
                                 RGVTaskCommand? rgvTaskCommand = ConvertToRGVTaskCommand(taskNew);
@@ -368,6 +377,7 @@
                                     }
                                 }
                             }
+
                         }
                     }
                     #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
@@ -400,6 +410,7 @@
                             LevelPoint = SecondRgv.GetValue<RGVDBName, int>(RGVDBName.LevelPoint),
                             CurrentTaskNum = SecondRgv.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum),
                             RGVAlarm = SecondRgv.GetValue<RGVDBName, uint>(RGVDBName.RGVAlarm),
+                            InStock = SecondRgv.GetValue<RGVDBName, bool>(RGVDBName.InStock),
                             SecondRgv.DeviceCode,
                             SecondRgv.DeviceName,
                         };
@@ -520,13 +531,13 @@
                                     };
                                     SendCommand(commonRGVSecond, command);
                                     Thread.Sleep(3000);
-                                    if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
+                                    if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running) || commonRGVSecond.GetValue<RGVDBName, int>(RGVDBName.Speed) == 0)
                                     {
                                         return null;
                                     }
                                 }
                                 Thread.Sleep(1000);
-                                if (task.Remark != null || ((task.TaskType == (int)TaskOutboundTypeEnum.Outbound && task.RGVName == "RGV02" && task.TargetAddress == "1002") || (task.TaskType == (int)TaskOutboundTypeEnum.Outbound && task.RGVName == "RGV01" && (task.TargetAddress == "1030" || task.TargetAddress == "1029"))))
+                                if (task.Remark != null || (task.TaskType == (int)TaskOutboundTypeEnum.Outbound && task.RGVName == "RGV02" && task.TargetAddress == "1002") || (task.TaskType == (int)TaskOutboundTypeEnum.Outbound && task.RGVName == "RGV01" && (task.TargetAddress == "1030" || task.TargetAddress == "1029")))
                                 {
                                     task.Remark = "1025";
                                     _taskRepository.UpdateData(task);
@@ -633,7 +644,7 @@
                                     };
                                     SendCommand(commonRGVFirst, command);
                                     Thread.Sleep(3000);
-                                    if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
+                                    if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running) || commonRGVFirst.GetValue<RGVDBName, int>(RGVDBName.Speed) == 0)
                                     {
                                         return null;
                                     }
@@ -716,7 +727,7 @@
                             };
                             SendCommand(commonRGVSecond, command);
                             Thread.Sleep(3000);
-                            if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
+                            if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running) || commonRGVSecond.GetValue<RGVDBName, int>(RGVDBName.Speed) == 0)
                             {
                                 return null;
                             }
@@ -795,7 +806,7 @@
                             };
                             SendCommand(commonRGVFirst, command);
                             Thread.Sleep(3000);
-                            if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
+                            if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running) || commonRGVFirst.GetValue<RGVDBName, int>(RGVDBName.Speed) == 0)
                             {
                                 return null;
                             }
@@ -902,7 +913,7 @@
                                     };
                                     SendCommand(commonRGVSecond, command);
                                     Thread.Sleep(3000);
-                                    if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running))
+                                    if (!commonRGVSecond.GetValue<RGVDBName, bool>(RGVDBName.Running) || commonRGVSecond.GetValue<RGVDBName, int>(RGVDBName.Speed) == 0)
                                     {
                                         return null;
                                     }
@@ -989,7 +1000,7 @@
                                     };
                                     SendCommand(commonRGVFirst, command);
                                     Thread.Sleep(3000);
-                                    if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running))
+                                    if (!commonRGVFirst.GetValue<RGVDBName, bool>(RGVDBName.Running) || commonRGVFirst.GetValue<RGVDBName, int>(RGVDBName.Speed) == 0)
                                     {
                                         return null;
                                     }
@@ -1033,6 +1044,21 @@
                 return null;
             }
         }
+
+        public bool IsExistTransTask(CommonRGV_FirstFloor commonRGV)
+        {
+            if (commonRGV.DeviceCode == "RGV01")
+            {
+                var task = _taskRepository.QueryFirst(x => x.Floor == "1F" && (x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish || x.TaskState == (int)TaskOutStatusEnum.RGV_TransFerFInish)&&x.RGVName=="RGV02");
+                return task == null ? true : false;
+            }
+            else
+            {
+                var task = _taskRepository.QueryFirst(x => x.Floor == "1F" && (x.TaskState == (int)TaskInStatusEnum.RGV_TransFerFInish || x.TaskState == (int)TaskOutStatusEnum.RGV_TransFerFInish) && x.RGVName == "RGV01");
+                return task == null ? true : false;
+            }  
+        }
+
 
         /// <summary>
         /// RGV浠诲姟瀹屾垚
@@ -1100,9 +1126,9 @@
                                 {
                                     CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
                                     Thread.Sleep(100);
-                                    conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(stationManager.stationNextChildCode), stationManager.stationChildCode);
+                                    conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(stationManager.stationNextChildCode), stationManager.stationChildCode);
                                     Thread.Sleep(100);
-                                    conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, Convert.ToInt16(1), stationManager.stationChildCode);
+                                    conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(1), stationManager.stationChildCode);
                                     Thread.Sleep(100);
                                     conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(2), stationManager.stationChildCode);
                                 }
@@ -1398,7 +1424,7 @@
                 }
                 else if (task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
                 {
-                    if (task.Remark != null && (task.Roadway == "SC01" || task.Roadway == "SC06"))
+                    if (task.Remark != null && (task.Remark == "1026" || task.Remark == "1025"))
                     {
                         Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.Remark);
                         rgvTaskCommand.TaskType = (byte)Convert.ToSByte(4);
@@ -1421,7 +1447,7 @@
 
                 if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish)
                 {
-                    if (task.Remark != null && (task.Roadway == "SC01" || task.Roadway == "SC06"))
+                    if (task.Remark != null && (task.Remark == "1025" || task.Remark == "1026"))
                     {
                         Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress);
                         Dt_StationManager stationManagerEnd = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.Remark);
@@ -1446,9 +1472,18 @@
                 }
                 else if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish)
                 {
-                    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.Remark == "1025" || task.Remark == "1026"))
+                    {
+                        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
                 {

--
Gitblit v1.9.3