From 0e674f770d785bfd24b5034456c2502dcc6671d2 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 17 六月 2025 16:56:50 +0800
Subject: [PATCH] 代码提交

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |  186 ++++++++++++++++++++++++++++++++++++----------
 1 files changed, 145 insertions(+), 41 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
index 1de6610..9358c77 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
@@ -10,6 +10,7 @@
 using WIDESEAWCS_Core.Caches;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_Core.HttpContextUser;
+using WIDESEAWCS_DTO.Enum;
 using WIDESEAWCS_IBasicInfoRepository;
 using WIDESEAWCS_ISystemRepository;
 using WIDESEAWCS_ITaskInfoRepository;
@@ -24,6 +25,7 @@
 using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
 using WIDESEAWCS_SignalR;
 using WIDESEAWCS_Tasks.StackerCraneJob;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
 using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
 
 namespace WIDESEAWCS_Tasks
@@ -53,7 +55,6 @@
             try
             {
                 CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
-
                 if (commonStackerCrane != null)
                 {
                     if (!commonStackerCrane.IsEventSubscribed)
@@ -67,7 +68,10 @@
 
                         if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Idle)
                         {
-                            GetTask(commonStackerCrane);
+                            if (commonStackerCrane.GetValue<StackerCraneDBName, float>(StackerCraneDBName.Electricity) > 20)
+                            {
+                                GetTask(commonStackerCrane);
+                            }
                         }
                     }
 
@@ -87,8 +91,8 @@
                             commonStackerCrane.DeviceName,
                             commonStackerCrane.CurrentTaskNum,
                             commonStackerCrane.LastTaskNum,
-                            SourceAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.SourceAddress),
-                            TargetAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.TargetAddress),
+                            SourceAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.StartAddress),
+                            TargetAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.EndAddress),
                             Command = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.Command),
                             Electricity = commonStackerCrane.GetValue<StackerCraneDBName, float>(StackerCraneDBName.Electricity),
                         };
@@ -116,8 +120,6 @@
            CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane;
             if (commonStackerCrane != null)
             {
-
-                Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
                 _taskService.StackCraneTaskCompleted(e.TaskNum);
                 commonStackerCrane.SetValue(StackerCraneDBName.TaskCompleted, 1);
 
@@ -135,39 +137,53 @@
             task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
             if (task != null)
             {
-                StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
-                if (stackerCraneTaskCommand != null)
+                if (task.Roadway == "3")
                 {
-                    bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
-                    Thread.Sleep(1000);
-                    if (ReadReceived(commonStackerCrane) == 1)
+                    if (AGVToSandyEdgeRead(commonStackerCrane))
                     {
-                        WriteConfirm(commonStackerCrane);
-                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
+                        WriteAGVTask(task, commonStackerCrane);
+                    }
+                    else
+                    {
+                        AGVToSandyEdge(commonStackerCrane);
+                    }
+
+                }
+                else if (task.Roadway == "2")
+                {
+                    if (AGVToEdgeBandingRead(commonStackerCrane))
+                    {
+                        WriteAGVTask(task, commonStackerCrane);
+                    }
+                    else
+                    {
+                        AGVToEdgeBanding(commonStackerCrane);
                     }
                 }
+                else
+                {
+                    WriteAGVTask(task, commonStackerCrane);
+                }
+
             }
         }
 
-
-        //璇诲彇AGV鐘舵��
-        public int ReadAGVstatus(CommonStackerCrane commonStackerCrane)
+        public void WriteAGVTask(Dt_Task task, CommonStackerCrane commonStackerCrane)
         {
-            var deviceProDTO = commonStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AGVCraneStatus");
-            return deviceProDTO != null ? commonStackerCrane.Communicator.Read<int>(deviceProDTO.DeviceProAddress) : 99;
-        }
-        //璇诲彇AGV宸ヤ綔妯″紡
-        public int ReadAGVworkingmode(CommonStackerCrane commonStackerCrane)
-        {
-            var deviceProDTO = commonStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AGVWorkingmode");
-            return deviceProDTO != null ? commonStackerCrane.Communicator.Read<int>(deviceProDTO.DeviceProAddress) : 99;
-        }
-
-        //璇诲彇浠诲姟鍙�
-        public int Readtasknumber(CommonStackerCrane commonStackerCrane)
-        {
-            var deviceProDTO = commonStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AGVWorkingmode");
-            return deviceProDTO != null ? commonStackerCrane.Communicator.Read<int>(deviceProDTO.DeviceProAddress) : 99;
+            StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+            if (stackerCraneTaskCommand != null)
+            {
+                bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+                Thread.Sleep(2000);
+                if (ReadReceived(commonStackerCrane) == 1)
+                {
+                    if (Clear(commonStackerCrane))
+                    {
+                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
+                    }
+                    
+                }
+            }
         }
 
         /// <summary>
@@ -179,10 +195,6 @@
         {
             return commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.Received);
         }
-        public void WriteConfirm(CommonStackerCrane commonStackerCrane)
-        {
-            commonStackerCrane.SetValue(StackerCraneDBName.WriteConfirm, 1);
-        }
 
         /// <summary>
         /// 璋冨害AGV鍘诲皝杈瑰尯鍩�
@@ -191,7 +203,90 @@
         /// <param name="value"></param>
         public void AGVToEdgeBanding(CommonStackerCrane commonStackerCrane)
         {
-            commonStackerCrane.SetValue(StackerCraneDBName.AreaWrite, true);
+            DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaWrite" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaWrite").OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+            commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, true);
+            commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 3);
+            commonStackerCrane.SetValue(StackerCraneDBName.WriteConfirm, 1);
+            Thread.Sleep(1000);
+            if (ReadReceived(commonStackerCrane) == 1)
+            {
+                Clear(commonStackerCrane);
+            }
+        }
+
+        /// <summary>
+        /// 璇诲彇AGV鏄惁鍦ㄧ爞杈�
+        /// </summary>
+        /// <param name="commonStackerCrane"></param>
+        /// <returns></returns>
+        public bool AGVToSandyEdgeRead(CommonStackerCrane commonStackerCrane)
+        {
+            DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaRead" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaRead").OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+
+            if (devicePro == null)
+            {
+                ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta);
+                return false;
+            }
+
+            string[] x = devicePro.DeviceProAddress.Split('.');
+
+            x[x.Length - 1] = (int.Parse(x[x.Length - 1]) + 1).ToString();
+
+            string DeviceProAddress = string.Join(".", x);
+            bool read = commonStackerCrane.Communicator.Read<bool>(DeviceProAddress);
+
+            return read;
+        }
+
+        public bool Clear(CommonStackerCrane commonStackerCrane)
+        {
+            DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "WriteConfirm" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "WriteConfirm").OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+
+            if (devicePro == null)
+            {
+                ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta);
+                return false;
+            }
+            commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress,Convert.ToInt16(0));
+
+            for (int i = 0; i < 6; i++)
+            {
+                if (i == 5)
+                {
+                    return false;
+                }
+                else
+                {
+                    int read = commonStackerCrane.Communicator.Read<int>(devicePro.DeviceProAddress);
+                    if (read == 0)
+                    {
+                        return true;
+                    }
+                    else
+                    {
+                        commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, Convert.ToInt16(0));
+                    }
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 璇诲彇AGV鏄惁鍦ㄥ皝杈�
+        /// </summary>
+        /// <param name="commonStackerCrane"></param>
+        /// <returns></returns>
+        public bool AGVToEdgeBandingRead(CommonStackerCrane commonStackerCrane)
+        {
+            DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaRead" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaRead").OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+
+            if (devicePro == null)
+            {
+                ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta);
+                return false;
+            }
+            return commonStackerCrane.Communicator.Read<bool>(devicePro.DeviceProAddress);
         }
 
         /// <summary>
@@ -203,15 +298,24 @@
         {
             DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaWrite" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaWrite").OrderBy(x => x.DeviceProOffset).FirstOrDefault();
 
-            if(devicePro == null)
+            if (devicePro == null)
             {
                 ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta);
                 return;
             }
-            var writeBool = commonStackerCrane.Communicator.Read<bool>(devicePro.DeviceProAddress+0.1);
-            if (!writeBool)
+
+            string[] x = devicePro.DeviceProAddress.Split('.');
+
+            x[x.Length - 1] = (int.Parse(x[x.Length - 1]) + 1).ToString();
+
+            string DeviceProAddress = string.Join(".", x);
+            commonStackerCrane.Communicator.Write(DeviceProAddress, true);
+            commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 4);
+            commonStackerCrane.SetValue(StackerCraneDBName.WriteConfirm, 1);
+            Thread.Sleep(1000);
+            if (ReadReceived(commonStackerCrane) == 1)
             {
-                commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress + 0.1, true);
+                Clear(commonStackerCrane);
             }
         }
         /// <summary>
@@ -234,7 +338,7 @@
 
             stackerCraneTaskCommand.TaskNum = task.TaskNum;
             stackerCraneTaskCommand.WorkType = 1;
-            stackerCraneTaskCommand.TaskType = 0;
+            stackerCraneTaskCommand.WriteConfirm = 1;
             stackerCraneTaskCommand.StartAddress = Convert.ToInt16(SourceAddress.stationCode);
             stackerCraneTaskCommand.EndAddress = Convert.ToInt16(TargetAddress.stationCode);
 

--
Gitblit v1.9.3