From e46aa927d231af83724683c7286d9db503e24cf7 Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期二, 10 六月 2025 11:46:20 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Gantry/GantryJob.cs |  220 +++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 175 insertions(+), 45 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Gantry/GantryJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Gantry/GantryJob.cs"
index 51104ea..bb389c8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Gantry/GantryJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Gantry/GantryJob.cs"
@@ -18,8 +18,25 @@
 namespace WIDESEAWCS_Tasks
 {
     /// <summary>
-    /// 榫欓棬鏋�
+    /// 榫欓棬鏋朵换鍔″鐞嗙被锛岀户鎵胯嚜JobBase骞跺疄鐜癐Job鎺ュ彛 <br/>
+    /// 鐗规�DisallowConcurrentExecution]琛ㄧず绂佹骞跺彂鎵ц
     /// </summary>
+    /// <remarks>
+    /// 涓昏鍔熻兘锛� <br/>
+    /// 1. 妫�鏌ラ緳闂ㄥ悐鐘舵�侊紙鑷姩鐘舵��/宸ヤ綔鐘舵�侊級 <br/>
+    /// 2. 澶勭悊鍙栬揣/鏀捐揣浠诲姟锛� <br/>
+    ///    - 楠岃瘉浣嶇疆鍧愭爣鏍煎紡 <br/>
+    ///    - 鑾峰彇鏉挎潗灏哄淇℃伅 <br/>
+    ///    - 鏍¢獙宸ヤ綅鍜屽鍣ㄤ俊鎭� <br/>
+    ///    - 璁$畻骞舵牎楠屽潗鏍囪寖鍥� <br/>
+    ///    - 鏇存柊PLC鎺у埗鍙傛暟 <br/>
+    /// 3. 澶勭悊浠诲姟瀹屾垚鐘舵�侊細 <br/>
+    ///    - 鏇存柊浠诲姟鐘舵�� <br/>
+    ///    - 閫氱煡MES绯荤粺 <br/>
+    ///    - 閲嶇疆宸ヤ綅鐘舵�� <br/>
+    /// 4. 閿欒澶勭悊锛氳褰曞悇绉嶆牎楠屽け璐ョ殑寮傚父鎯呭喌 <br/>
+    /// 渚濊禆澶氫釜浠撳偍鍜屾湇鍔℃帴鍙h繘琛屾暟鎹搷浣�
+    /// </remarks>
     [DisallowConcurrentExecution]
     public class GantryJob : JobBase, IJob
     {
@@ -28,21 +45,25 @@
         private readonly IContainerItemRepository _containerItemRepository;
         private readonly WebSocketServer _webSocketServer;
         private readonly IOrderDetailsService _orderDetailsService;
-        public GantryJob(ITaskRepository taskRepository, ITaskService taskService, IContainerItemRepository containerItemRepository, WebSocketServer webSocketServer, IOrderDetailsService orderDetailsService)
+        private readonly IContainerRepository _containerRepository;
+        private readonly IOrderContainerRepository _orderContainerRepository;
+
+        public GantryJob(ITaskRepository taskRepository, ITaskService taskService, IContainerItemRepository containerItemRepository, WebSocketServer webSocketServer, IOrderDetailsService orderDetailsService, IContainerRepository containerRepository, IOrderContainerRepository orderContainerRepository)
         {
             _taskRepository = taskRepository;
             _taskService = taskService;
             _containerItemRepository = containerItemRepository;
             _webSocketServer = webSocketServer;
             _orderDetailsService = orderDetailsService;
+            _containerRepository = containerRepository;
+            _orderContainerRepository = orderContainerRepository;
         }
 
         public Task Execute(IJobExecutionContext context)
         {
             bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
-            if (flag && value != null && value is OtherDevice)
+            if (flag && value is OtherDevice otherDevice)
             {
-                OtherDevice otherDevice = (OtherDevice)value;
                 try
                 {
                     byte gantryStatus = otherDevice.GetValue<GantryDBName, byte>(GantryDBName.GantryStatus);
@@ -51,13 +72,10 @@
 
                     if (gantryStatus == 1 && gantryAutoStatus == 3 && gantryWorkStatus == 0)
                     {
-                        // 閫昏緫澶勭悊
-                        // 1. 璇诲彇浠诲姟
-                        // 2. 浠诲姟鎵ц
-                        // 3. 浠诲姟瀹屾垚
                         Dt_Task? task = _taskService.QueryAGantryUnExecuteTask(otherDevice.DeviceCode);
                         if (task != null)
                         {
+                            #region 鍙栬揣浣嶇疆鍒ゆ柇
                             string[] takePositions = task.CurrentAddress.Split("*");
                             if (takePositions.Length != 5)
                             {
@@ -69,7 +87,9 @@
                                 }
                                 return Task.CompletedTask;
                             }
+                            #endregion
 
+                            #region 鏀捐揣浣嶇疆鍒ゆ柇
                             string[] putPositions = task.NextAddress.Split("*");
                             if (putPositions.Length != 5)
                             {
@@ -81,7 +101,9 @@
                                 }
                                 return Task.CompletedTask;
                             }
+                            #endregion
 
+                            #region 鏉挎潗灏哄鑾峰彇
                             Dt_ContainerItem containerItem = _containerItemRepository.QueryFirst(x => x.ItemCode == task.PalletCode);
                             if (containerItem == null)
                             {
@@ -91,10 +113,52 @@
                                     task.ExceptionMessage = "鏉挎潗灏哄鑾峰彇閿欒";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
+                            #endregion
 
-                            if (!LightStatusStorage.StationStautsDic.TryGetValue(putPositions[0],out bool stationStatus))
+                            #region 鏀捐揣宸ヤ綅鍒ゆ柇
+                            Dt_Container container = _containerRepository.QueryFirst(x => x.ContainerCode == putPositions[0]);
+                            if (container == null)
+                            {
+                                WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", $"鏀捐揣宸ヤ綅銆恵takePositions[0]}銆戞湭鎵惧埌");
+                                if (task.ExceptionMessage?.Contains($"鏀捐揣宸ヤ綅銆恵takePositions[0]}銆戞湭鎵惧埌") ?? true)
+                                {
+                                    task.ExceptionMessage = $"鏀捐揣宸ヤ綅銆恵takePositions[0]}銆戞湭鎵惧埌";
+                                    _taskRepository.UpdateData(task);
+                                }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
+                                return Task.CompletedTask;
+                            }
+                            #endregion
+
+                            #region 宸ヤ綅璁㈠崟淇℃伅鍒ゆ柇
+                            Dt_OrderContainer orderContainer = _orderContainerRepository.QueryFirst(x => x.ContainerCode == putPositions[0] && x.ContainerId == container.Id);
+                            if (orderContainer == null && container.ContainerType != ContainerTypeEnum.ExceptionContainer.ObjToInt())
+                            {
+                                WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", $"鏀捐揣宸ヤ綅銆恵takePositions[0]}銆戞湭鎵惧埌璁㈠崟淇℃伅");
+                                if (task.ExceptionMessage?.Contains($"鏀捐揣宸ヤ綅銆恵takePositions[0]}銆戞湭鎵惧埌璁㈠崟淇℃伅") ?? true)
+                                {
+                                    task.ExceptionMessage = $"鏀捐揣宸ヤ綅銆恵takePositions[0]}銆戞湭鎵惧埌璁㈠崟淇℃伅";
+                                    _taskRepository.UpdateData(task);
+                                }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
+                                return Task.CompletedTask;
+                            }
+                            #endregion
+
+                            #region 宸ヤ綅鍨澘璇诲彇鏁版嵁鍒ゆ柇
+                            if (!LightStatusStorage.StationStautsDic.TryGetValue(putPositions[0], out bool stationStatus))
                             {
                                 WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", $"宸ヤ綅銆恵putPositions[0]}銆戞湁鏃犲灚鏉挎暟鎹敊璇�,{LightStatusStorage.StationStautsDic.Serialize()}");
                                 if (task.ExceptionMessage?.Contains($"宸ヤ綅銆恵putPositions[0]}銆戞湁鏃犲灚鏉挎暟鎹敊璇�") ?? true)
@@ -102,8 +166,15 @@
                                     task.ExceptionMessage = $"宸ヤ綅銆恵putPositions[0]}銆戞湁鏃犲灚鏉挎暟鎹敊璇�";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
+                            #endregion
+
+                            #region 宸ヤ綅鍨澘鐘舵�佸垽鏂�
                             if (!stationStatus)
                             {
                                 WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", $"宸ヤ綅銆恵putPositions[0]}銆戞棤鍨澘,{LightStatusStorage.StationStautsDic.Serialize()}");
@@ -114,11 +185,9 @@
                                 }
                                 return Task.CompletedTask;
                             }
-                            
-                            int takePoX = Convert.ToInt32(takePositions[1]);
-                            int takePoY = Convert.ToInt32(takePositions[2]);
-                            int takePoZ = OPositions.HPositions[takePositions[0]].PositionZ + 30 * 1000 - Convert.ToInt32(takePositions[3]) * 1000;
+                            #endregion
 
+                            #region 鍙栬揣Z鍧愭爣鍒ゆ柇
                             if (OPositions.HPositions[takePositions[0]].PositionZ == 0)
                             {
                                 WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", "璇诲彇鍙栬揣Z鍧愭爣璇诲彇涓�0");
@@ -127,16 +196,16 @@
                                     task.ExceptionMessage = $"璇诲彇鍙栬揣Z鍧愭爣璇诲彇涓�0";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
+                            #endregion
 
-                            int takePoR = 0;
-
-                            int putPoX = Convert.ToInt32(putPositions[1]);
-                            int putPoY = Convert.ToInt32(putPositions[2]);
-                            int putPoZ = OPositions.HPositions[putPositions[0]].PositionZ - Convert.ToInt32(putPositions[3]) * 1000;
-
-                            if (OPositions.HPositions[takePositions[0]].PositionZ == 0)
+                            #region 鏀捐揣Z鍧愭爣鍒ゆ柇
+                            if (OPositions.HPositions[putPositions[0]].PositionZ == 0)
                             {
                                 WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", "璇诲彇鏀捐揣Z鍧愭爣璇诲彇涓�0");
                                 if (task.ExceptionMessage?.Contains($"璇诲彇鏀捐揣Z鍧愭爣璇诲彇涓�0") ?? true)
@@ -144,16 +213,37 @@
                                     task.ExceptionMessage = $"璇诲彇鏀捐揣Z鍧愭爣璇诲彇涓�0";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
-                            int putPoR = 0;
+                            #endregion
 
+                            #region 浠诲姟瀹炰綋鍙傛暟杞崲澶勭悊
+                            int takePoX = Convert.ToInt32(takePositions[1]);
+                            int takePoY = Convert.ToInt32(takePositions[2]);
+                            int takePoZ = OPositions.HPositions[takePositions[0]].PositionZ + 30 * 1000 - Convert.ToInt32(takePositions[3]) * 1000;
+
+                            int takePoR = 0;
+
+                            int putPoX = Convert.ToInt32(putPositions[1]);
+                            int putPoY = Convert.ToInt32(putPositions[2]);
+                            int putPoZ = OPositions.HPositions[putPositions[0]].PositionZ - Convert.ToInt32(putPositions[3]) * 1000;
+
+                            int putPoR = 0;
+                            #endregion
+
+                            #region 鍧愭爣涔樹互1000澶勭悊,2#榫欓棬鏋跺彇鍙�(涔樹互-1000)
                             int temp = 1000;
-                            if(otherDevice.DeviceCode == "GT02")
+                            if (otherDevice.DeviceCode == "GT02")
                             {
                                 temp = -1000;
                             }
+                            #endregion
 
+                            #region 鍧愭爣璁$畻
                             if (Convert.ToInt32(takePositions[4]) == 1 || Convert.ToInt32(takePositions[4]) == 2)
                             {
                                 takePoX = takePoX * temp + OPositions.HPositions[takePositions[0]].PositionX;
@@ -180,11 +270,13 @@
                                             task.ExceptionMessage = $"R鍧愭爣閿欒";
                                             _taskRepository.UpdateData(task);
                                         }
+                                        if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                        {
+                                            LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                        }
                                         return Task.CompletedTask;
                                     }
                                 }
-
-                                WriteDebug($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}-鍧愭爣", $"鍙栬揣浣嶏細{takePositions[0]},鏀捐揣浣嶏細{putPositions[0]}{Environment.NewLine}鍙栬揣鍧愭爣锛歑:{takePoX} Y:{takePoY} Z:{takePoZ} R:{takePoR}{Environment.NewLine}鏀捐揣鍧愭爣锛歑:{putPoX} Y:{putPoY} Z:{putPoZ} R:{putPoR}{Environment.NewLine}璇诲彇PLC鍙栬揣鍧愭爣锛歑:{OPositions.HPositions[takePositions[0]].PositionX} Y:{OPositions.HPositions[takePositions[0]].PositionY} Z:{OPositions.HPositions[takePositions[0]].PositionZ} R:{OPositions.HPositions[takePositions[0]].PositionR}{Environment.NewLine}璇诲彇PLC鏀捐揣鍧愭爣锛歑:{OPositions.HPositions[putPositions[0]].PositionX} Y:{OPositions.HPositions[putPositions[0]].PositionY} Z:{OPositions.HPositions[putPositions[0]].PositionZ} R:{OPositions.HPositions[putPositions[0]].PositionR}");
                             }
                             else
                             {
@@ -194,14 +286,26 @@
                                 putPoY = putPoY * temp + OPositions.ZPositions[putPositions[0]].PositionY;
                                 takePoR = OPositions.ZPositions[takePositions[0]].PositionR;
                                 putPoR = OPositions.ZPositions[putPositions[0]].PositionR;
-
-                                WriteDebug($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}-鍧愭爣", $"鍙栬揣浣嶏細{takePositions[0]},鏀捐揣浣嶏細{putPositions[0]}{Environment.NewLine}鍙栬揣鍧愭爣锛歑:{takePoX} Y:{takePoY} Z:{takePoZ} R:{takePoR}{Environment.NewLine}鏀捐揣鍧愭爣锛歑:{putPoX} Y:{putPoY} Z:{putPoZ} R:{putPoR}{Environment.NewLine}璇诲彇PLC鍙栬揣鍧愭爣锛歑:{OPositions.ZPositions[takePositions[0]].PositionX} Y:{OPositions.ZPositions[takePositions[0]].PositionY} Z:{OPositions.ZPositions[takePositions[0]].PositionZ} R:{OPositions.ZPositions[takePositions[0]].PositionR}{Environment.NewLine}璇诲彇PLC鏀捐揣鍧愭爣锛歑:{OPositions.ZPositions[putPositions[0]].PositionX} Y:{OPositions.ZPositions[putPositions[0]].PositionY} Z:{OPositions.ZPositions[putPositions[0]].PositionZ} R:{OPositions.ZPositions[putPositions[0]].PositionR}");
                             }
-                            #region
+                            #endregion
+
+                            #region Debug鏃ュ織璁板綍,璁板綍鍙栬揣鍜屾斁璐у潗鏍囦俊鎭�
+                            WriteDebug($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}-鍧愭爣", $"鍙栬揣浣嶏細{takePositions[0]},鏀捐揣浣嶏細{putPositions[0]}{Environment.NewLine}鍙栬揣鍧愭爣锛歑:{takePoX} Y:{takePoY} Z:{takePoZ} R:{takePoR}{Environment.NewLine}鏀捐揣鍧愭爣锛歑:{putPoX} Y:{putPoY} Z:{putPoZ} R:{putPoR}{Environment.NewLine}璇诲彇PLC鍙栬揣鍧愭爣锛歑:{OPositions.HPositions[takePositions[0]].PositionX} Y:{OPositions.HPositions[takePositions[0]].PositionY} Z:{OPositions.HPositions[takePositions[0]].PositionZ} R:{OPositions.HPositions[takePositions[0]].PositionR}{Environment.NewLine}璇诲彇PLC鏀捐揣鍧愭爣锛歑:{OPositions.HPositions[putPositions[0]].PositionX} Y:{OPositions.HPositions[putPositions[0]].PositionY} Z:{OPositions.HPositions[putPositions[0]].PositionZ} R:{OPositions.HPositions[putPositions[0]].PositionR}");
+                            #endregion
+
+                            #region 瓒呰繃瀹瑰櫒瀹藉害澶勭悊
+                            bool isMoreWidth = orderContainer == null ? false : orderContainer.MaxWidth > container.ContainerWidth;
+                            if (isMoreWidth)
+                            {
+                                putPoX = putPoX - (orderContainer.MaxWidth - container.ContainerWidth) / 2 * temp;
+                            }
+                            #endregion
+
+                            #region 鍧愭爣鑼冨洿鍒ゆ柇
                             List<DeviceProDTO> devicePros = otherDevice.DeviceProDTOs.Where(x => x.DeviceProParamType == "MaxPosition").ToList();
 
                             DeviceProDTO? devicePro = devicePros.OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-                            if(devicePro == null)
+                            if (devicePro == null)
                             {
                                 WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", "璁惧鍗忚鍙傛暟閿欒锛屾湭鎵惧埌鏈�澶ф渶灏忓潗鏍囧湴鍧�");
                                 if (task.ExceptionMessage?.Contains($"璁惧鍗忚鍙傛暟閿欒锛屾湭鎵惧埌鏈�澶ф渶灏忓潗鏍囧湴鍧�") ?? true)
@@ -209,8 +313,13 @@
                                     task.ExceptionMessage = $"璁惧鍗忚鍙傛暟閿欒锛屾湭鎵惧埌鏈�澶ф渶灏忓潗鏍囧湴鍧�";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
+
                             int[] data = otherDevice.Communicator.Read<int>(devicePro.DeviceProAddress, (ushort)(devicePros.Count));
 
                             int maxX = data[0];
@@ -222,16 +331,6 @@
                             int maxR = data[6];
                             int minR = data[7];
 
-                            //int maxX = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MaxX);
-                            //int minX = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MinX);
-                            //int maxY = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MaxY);
-                            //int minY = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MinY);
-                            //int maxZ = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MaxZ);
-                            //int minZ = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MinZ);
-                            //int maxR = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MaxR);
-                            //int minR = otherDevice.GetValue<GantryDBName, int>(GantryDBName.MinR);
-
-                            
                             if (takePoX < minX || takePoX > maxX)
                             {
                                 WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}-鍧愭爣", $"X鍙栬揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿takePoX},鏈�澶у�硷細{maxX},鏈�灏忓�硷細{minX}");
@@ -239,6 +338,10 @@
                                 {
                                     task.ExceptionMessage = $"X鍙栬揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿takePoX},鏈�澶у�硷細{maxX},鏈�灏忓�硷細{minX}";
                                     _taskRepository.UpdateData(task);
+                                }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
                                 }
                                 return Task.CompletedTask;
                             }
@@ -251,6 +354,10 @@
                                     task.ExceptionMessage = $"X鏀捐揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿putPoX},鏈�澶у�硷細{maxX},鏈�灏忓�硷細{minX}";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
 
@@ -261,6 +368,10 @@
                                 {
                                     task.ExceptionMessage = $"Y鍙栬揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿takePoY},鏈�澶у�硷細{maxY},鏈�灏忓�硷細{minY}";
                                     _taskRepository.UpdateData(task);
+                                }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
                                 }
                                 return Task.CompletedTask;
                             }
@@ -273,6 +384,10 @@
                                     task.ExceptionMessage = $"Y鏀捐揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿putPoY},鏈�澶у�硷細{maxY},鏈�灏忓�硷細{minY}";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
 
@@ -283,6 +398,10 @@
                                 {
                                     task.ExceptionMessage = $"Z鍙栬揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿takePoZ},鏈�澶у�硷細{maxZ},鏈�灏忓�硷細{minZ}";
                                     _taskRepository.UpdateData(task);
+                                }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
                                 }
                                 return Task.CompletedTask;
                             }
@@ -295,6 +414,10 @@
                                     task.ExceptionMessage = $"Z鏀捐揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿putPoZ},鏈�澶у�硷細{maxZ},鏈�灏忓�硷細{minZ}";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
 
@@ -305,6 +428,10 @@
                                 {
                                     task.ExceptionMessage = $"R鍙栬揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿takePoR},鏈�澶у�硷細{maxR},鏈�灏忓�硷細{minR}";
                                     _taskRepository.UpdateData(task);
+                                }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
                                 }
                                 return Task.CompletedTask;
                             }
@@ -317,10 +444,15 @@
                                     task.ExceptionMessage = $"R鏀捐揣鍧愭爣瓒呭嚭鑼冨洿,鍙栬揣鍧愭爣锛歿putPoR},鏈�澶у�硷細{maxR},鏈�灏忓�硷細{minR}";
                                     _taskRepository.UpdateData(task);
                                 }
+                                if (LightStatusStorage.LightStatusDic.ContainsKey(putPositions[0]))
+                                {
+                                    LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightError;
+                                }
                                 return Task.CompletedTask;
                             }
                             #endregion
 
+                            #region 浠诲姟鍙戦��
                             otherDevice.SetValue(GantryDBName.TwoHand, true);
                             otherDevice.SetValue(GantryDBName.TaskNum, task.TaskNum);
                             otherDevice.SetValue(GantryDBName.TakePositionX, takePoX);
@@ -336,10 +468,14 @@
                             otherDevice.SetValue(GantryDBName.Height, containerItem.ItemHeight);
                             otherDevice.SetValue(GantryDBName.WorkType, 1);
                             otherDevice.SetValue(GantryDBName.StartCommand, 1);
+                            #endregion
 
+                            #region 浠诲姟鐘舵�佹洿鏂�
                             task.TaskState = TaskStatusEnum.Gantry_Executing.ObjToInt();
                             _taskRepository.UpdateData(task);
+                            #endregion
 
+                            #region 涓夎壊鐏姸鎬佹洿鏂�
                             if (LightStatusStorage.LightStatusDic.TryGetValue(putPositions[0], out LightStatusEnum lightStatusDic))
                             {
                                 if (lightStatusDic != LightStatusEnum.LightWorking)
@@ -347,6 +483,7 @@
                                     LightStatusStorage.LightStatusDic[putPositions[0]] = LightStatusEnum.LightWorking;
                                 }
                             }
+                            #endregion
                         }
                     }
                     else if (gantryWorkStatus == 5)
@@ -363,12 +500,10 @@
                                 {
                                     _orderDetailsService.ToMes(task.PalletCode, 4);
                                 });
-                                
 
                                 string[] putPositions = task.NextAddress.Split("*");
                                 if (putPositions.Length != 5)
                                 {
-                                    //WriteError
                                     return Task.CompletedTask;
                                 }
                                 if (LightStatusStorage.LightStatusDic.TryGetValue(putPositions[0], out LightStatusEnum lightStatusDic))
@@ -393,11 +528,6 @@
                 WriteError(nameof(GantryJob), "鍙傛暟閿欒,鏈紶閫掕澶囧弬鏁版垨璁惧绫诲瀷閿欒");
             }
             return Task.CompletedTask;
-        }
-
-        public Dt_Task GetTask()
-        {
-            return new Dt_Task();
         }
     }
 }

--
Gitblit v1.9.3