林豪 左 3 жил өмнө
parent
commit
0efbfd3f42

+ 23 - 0
Projects/永冠OPP/WCS.Service/Helpers/FinishTaskList.cs

@@ -28,6 +28,29 @@ namespace WCS.Service.Helpers
         public StationDevice Station { get; set; }
     }
 
+    /// <summary>
+    /// 处理完成任务记录集合
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public class FinishTaskList<T,T1>
+    {
+        public FinishTaskList(T finishCode, T1 station)
+        {
+            FinishCode = finishCode;
+            Station = station;
+        }
+
+        /// <summary>
+        /// 完成
+        /// </summary>
+        public T FinishCode { get; set; }
+
+        /// <summary>
+        /// 对应设备信息
+        /// </summary>
+        public T1 Station { get; set; }
+    }
+
     public static class FinishTaskListExtensions
     {
         /// <summary>

+ 13 - 5
Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

@@ -365,6 +365,8 @@ namespace WCS.Service.Works.SRM
 
                         #endregion 校验两个产品是否为同规格
 
+                        var finishTaskList = new List<FinishTaskList<SrmFork, Task>>();
+
                         for (int i = 0; i < tasks.Length; i++)
                         {
                             var item = tasks[i];
@@ -390,15 +392,21 @@ namespace WCS.Service.Works.SRM
                                 msg = $"状态由[{oldTaskSTATUS}]变更为[{task.STATUS}][{obj.Data.SLine_2}-{obj.Data.SCol_2}-{obj.Data.SLayer_2}][{obj.Data.ELine_2}][{obj.Data.VoucherNo_2}]";
                             task.CreateStatusLog(db, msg, this.GetType());
                             item.SRMSTATION = task.SRMSTATION;
-                            if (fork == SrmFork.货叉1) // 列数较小的放一工位
+                            finishTaskList.Add(new FinishTaskList<SrmFork, Task>(fork, item));
+                        }
+
+                        db.Default.SaveChanges();
+
+                        foreach (var finish in finishTaskList)
+                        {
+                            if (finish.FinishCode == SrmFork.货叉1) // 列数较小的放一工位
                             {
-                                obj.WriteTask1(item, (short)tasks.Length);
+                                obj.WriteTask1(finish.Station, (short)tasks.Length);
                             }
-                            else if (fork == SrmFork.货叉2) //列数较大的放二工位
+                            else if (finish.FinishCode == SrmFork.货叉2) //列数较大的放二工位
                             {
-                                obj.WriteTask2(item, (short)tasks.Length);
+                                obj.WriteTask2(finish.Station, (short)tasks.Length);
                             }
-                            db.Default.SaveChanges();
                         }
                     });
                     //});

+ 3 - 6
Projects/永冠OPP/WCS.Service/Works/Station/一楼出库.cs

@@ -103,15 +103,13 @@ namespace WCS.Service.Works.Station
             {
                 //当前组有一个运行的设备就停止执行
                 if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new DoException("设备运行中");
-                if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new DoException("设备停止运行,但有光电"); 
+                if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new DoException("设备停止运行,但有光电");
                 //此处逻辑为货物离开后报完成
-     
-            
+
                 //成功处理的任务
                 var finishTaskList = new List<FinishTaskList<int>>();
                 DB.Do(db =>
-                {                
-
+                {
                     var devs = new List<FinishTaskList<string>>();
                     foreach (var dev in obj.Items)
                     {
@@ -155,7 +153,6 @@ namespace WCS.Service.Works.Station
                         InfoLog.INFO_TIMING($"{obj.Entity.CODE}--处理请求到反馈完成信号耗时{timer.ElapsedMilliseconds}");
                     }
                 });
-                
             });
         }