林豪 左 2 ani în urmă
părinte
comite
220c7253f4
1 a modificat fișierele cu 18 adăugiri și 27 ștergeri
  1. 18 27
      Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

+ 18 - 27
Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

@@ -43,10 +43,9 @@ namespace WCS.Service.Works.RGV
 
                 //筛选出有任务号和起始及目标地址的设备
                 var dev = obj.RGVGetTaskedDevice() ?? throw new WarnException("无可用任务");
-
+                var taskids = dev.Select(v => v.Data2.Tasknum);
                 DB.Do(db =>
                 {
-                    var taskids = dev.Select(v => v.Data2.Tasknum);
                     var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
                     if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
                         throw new WarnException("任务组ID不一致");
@@ -80,11 +79,9 @@ namespace WCS.Service.Works.RGV
 
                     foreach (var task in tasks)
                     {
-                        var msg = $"下达从{rgv.Data.StartPosition_1}移动至{rgv.Data.DestPosition_1}的RGV PLC指令。";
-                        msg += $"[{task.ID}][{rgv.Data.StartPosition_1}][{rgv.Data.DestPosition_1}[{rgv.Data.Trigger_1}]";
-
-                        task.CreateStatusLog(db, msg, this.GetType());
+                        task.CreateStatusLog(db, "RGV开始执行", this.GetType());
                     }
+                    db.Default.SaveChanges();
                 });
             });
         }
@@ -112,10 +109,10 @@ namespace WCS.Service.Works.RGV
                 if (rgvDevice.IsPut())
                 {
                     if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV无光电,无法放货,请检查实际情况");
+                    var taskids = new List<int>() { rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2 };
                     //取小车上的任务
                     DB.Do(db =>
                     {
-                        var taskids = new List<int>() { rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2 };
                         var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
                         if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
                             throw new WarnException("任务组ID不一致");
@@ -140,15 +137,15 @@ namespace WCS.Service.Works.RGV
                         //是否需要取货
                         if (devise is { Count: > 0 } && pickStation.IsPickUp(rgvDevice))
                         {
+                            if (rgvDevice.Data.TaskID_1 != pickStation.Entity.CODE.Replace("G", "").ToShort()) throw new WarnException($"目标站台{rgvDevice.Data.TaskID_1}与当前站台{pickStation.Entity.CODE.Replace("G", "").ToShort()}不一致");
+                            if (rgvDevice.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{rgvDevice.Data2.TaskType_1}");
+                            if (rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
+                            if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
+                            var taskids = devise.Select(v => v.Data2.Tasknum);
+
                             //开始下达取货任务
                             DB.Do(db =>
                             {
-                                if (rgvDevice.Data.TaskID_1 != pickStation.Entity.CODE.Replace("G","").ToShort()) throw new WarnException($"目标站台{rgvDevice.Data.TaskID_1}与当前站台{pickStation.Entity.CODE.Replace("G", "").ToShort()}不一致");
-                                if (rgvDevice.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{rgvDevice.Data2.TaskType_1}");
-                                if (rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
-                                if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
-
-                                var taskids = devise.Select(v => v.Data2.Tasknum);
                                 var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
                                 if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
                                     throw new WarnException("任务组ID不一致");
@@ -172,11 +169,9 @@ namespace WCS.Service.Works.RGV
 
                                 foreach (var task in tasks)
                                 {
-                                    var msg = $"下达从{rgvDevice.Data.StartPosition_1}移动至{rgvDevice.Data.DestPosition_1}的RGV PLC指令。";
-                                    msg += $"[{task.ID}][{rgvDevice.Data.StartPosition_1}][{rgvDevice.Data.DestPosition_1}[{rgvDevice.Data.Trigger_1}]";
-
-                                    task.CreateStatusLog(db, msg, this.GetType());
+                                    task.CreateStatusLog(db, $"取货任务下达至{rgvDevice.Entity.CODE}", this.GetType());
                                 }
+                                db.Default.SaveChanges();
                             });
                             return;
                         }
@@ -215,7 +210,7 @@ namespace WCS.Service.Works.RGV
                         //找到自己的后一个小车
                         var afterRgv = rgvDevice.After();
 
-                        //自己是否阻挡了该小车 
+                        //自己是否阻挡了该小车
                         if (afterRgv.Data2.WorkMode == RGVMode.自动 && afterRgv.Data2.SystemStatus != RGVRunStatus.空闲 && rgvDevice.StopedByMe(afterRgv))
                         {
                             switch (pickStation.Entity.CODE)
@@ -320,14 +315,13 @@ namespace WCS.Service.Works.RGV
                         //是否需要取货
                         if (devs != null && devs.Count() > 0)
                         {
+                            if (obj.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{obj.Data2.TaskType_1}");
+                            if (obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
+                            if (!obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
+                            var taskids = devs.Select(v => v.Data2.Tasknum);
                             //开始下达取货任务
                             DB.Do(db =>
                             {
-                                if (obj.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{obj.Data2.TaskType_1}");
-                                if (obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
-                                if (!obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
-
-                                var taskids = devs.Select(v => v.Data2.Tasknum);
                                 var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
                                 if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
                                     throw new WarnException("任务组ID不一致");
@@ -343,10 +337,7 @@ namespace WCS.Service.Works.RGV
 
                                 foreach (var task in tasks)
                                 {
-                                    var msg = $"下达从{obj.Data.StartPosition_1}移动至{obj.Data.DestPosition_1}的RGV PLC指令。";
-                                    msg += $"[{task.ID}][{obj.Data.StartPosition_1}][{obj.Data.DestPosition_1}[{obj.Data.Trigger_1}]";
-
-                                    task.CreateStatusLog(db, msg, this.GetType());
+                                    task.CreateStatusLog(db, $"取货任务下达至{obj.Entity.CODE}", this.GetType());
                                 }
                             });
                             return;