Browse Source

优化代码格式和逻辑,修正注释位置

删除了 `using System.Threading.Tasks;` 语句。
修改了查询 `WCS_TaskInfo` 的代码格式,但逻辑保持不变。
调整了 `case 2` 中 `barCode` 的处理逻辑,确保在不为空且包含 `"-"` 的情况下进行截取。
修改了一楼叉车补空任务的排序逻辑,按 `GetLineNo` 分组后取每组中 `AddTime` 最早的一个。
修正了 `#endregion` 注释的位置,使其与 `#region` 匹配。
添加了新的方法 `GetLineNo`,用于获取线体号。
林豪 左 1 year ago
parent
commit
56724b2f97
1 changed files with 16 additions and 7 deletions
  1. 16 7
      WCS.WorkEngineering/Systems/NoInteractionSystems.cs

+ 16 - 7
WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -3,7 +3,6 @@ using ServiceCenter.Logs;
 using ServiceCenter.Redis;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
-using System.Threading.Tasks;
 using WCS.Core;
 using WCS.Entity;
 using WCS.WorkEngineering.Extensions;
@@ -207,7 +206,7 @@ namespace WCS.WorkEngineering.Systems
                                 string barCode = "";
                                 var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(t => t.ID == item.ID).SplitTable(v => v.Take(2)).First() ?? throw new Exception($"未找到对应的AGV任务:{item.ID}");
                                 //获取对应wcs任务
-                                var wcs = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.AgvTaskID == agv.ID && t.Status == Entity.TaskStatus.WaitingToExecute).First() ?? throw new Exception($"AGV任务[{item.ID}]未找到对应的WCS任务");                               
+                                var wcs = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.AgvTaskID == agv.ID && t.Status == Entity.TaskStatus.WaitingToExecute).First() ?? throw new Exception($"AGV任务[{item.ID}]未找到对应的WCS任务");
                                 switch (wcs.Floor)
                                 {
                                     case 1: //一楼下发AGV任务
@@ -226,7 +225,7 @@ namespace WCS.WorkEngineering.Systems
                                         if (!string.IsNullOrEmpty(wcs.BarCode) && wcs.BarCode.Contains("-"))
                                         {
                                             barCode = wcs.BarCode.Substring(0, wcs.BarCode.IndexOf("-"));
-                                        }                                       
+                                        }
                                         var agvRes = IwmsApi.空轮回库(wcs.MatCode, wcs.SrmStation, wcs.IsSurplus, wcs.IsRework, agv.ID, barCode, wcs.AddWho);
                                         agv.Status = AGVTaskStatus.Confirm;
                                         agv.AgvID = agvRes.data;
@@ -255,7 +254,6 @@ namespace WCS.WorkEngineering.Systems
 
                 #region 一楼叉车补空任务处理
 
-
                 List<WCS_AgvTaskInfo> agvTaskInfos1 = new List<WCS_AgvTaskInfo>();
 
                 SqlSugarHelper.Do(db =>
@@ -265,7 +263,7 @@ namespace WCS.WorkEngineering.Systems
 
                 if (agvTaskInfos1.Any())
                 {
-                    agvTaskInfos1 = agvTaskInfos1.OrderBy(x=>x.AddTime).Take(5).ToList();
+                    agvTaskInfos1 = agvTaskInfos1.GroupBy(GetLineNo).Select(x => x.OrderBy(a => a.AddTime).First()).ToList();
                     foreach (var item in agvTaskInfos1)
                     {
                         try
@@ -295,7 +293,7 @@ namespace WCS.WorkEngineering.Systems
                     }
                 }
 
-                #endregion 移动任务处理
+                #endregion 一楼叉车补空任务处理
             }
             finally
             {
@@ -307,5 +305,16 @@ namespace WCS.WorkEngineering.Systems
         {
             return dev.Code == "1011";
         }
+
+        /// <summary>
+        ///  获取线体号
+        /// </summary>
+        /// <param name="agv"></param>
+        /// <returns></returns>
+        public int GetLineNo(WCS_AgvTaskInfo agv)
+        {
+            //TODO:需确定Station是否在叉车补空任务中对应产线站点
+            return int.Parse(agv.Station.Substring(2, 2));
+        }
     }
-}
+}