林豪 左 пре 3 година
родитељ
комит
ec7241ab3c
1 измењених фајлова са 18 додато и 18 уклоњено
  1. 18 18
      Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

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

@@ -20,8 +20,8 @@ namespace WCS.Service.Works.RGV
             rgv.EX(rgv =>
             {
                 //RGV是自动且空闲的
-                if (rgv.Data2.WorkMode != RGVMode.自动) return;
-                if (rgv.Data2.SystemStatus != RGVRunStatus.空闲) return;
+                if (rgv.Data2.WorkMode != RGVMode.自动) throw new DoException($"{rgv.Data2.WorkMode}");
+                if (rgv.Data2.SystemStatus != RGVRunStatus.空闲) throw new DoException($"{rgv.Data2.SystemStatus}");
 
                 var obj = Device.Find(ConvGroup_1030).Create<StationDeviceGroup>();
 
@@ -90,7 +90,7 @@ namespace WCS.Service.Works.RGV
                     if (rgv.Data2.WorkMode != RGVMode.自动) return;
                     if (rgv.Data2.SystemStatus != RGVRunStatus.空闲) return;
                     //是否有任务
-                    if (rgv.Data.Trigger_1 != rgv.Data2.Trigger_2) throw new WarnException($"待执行任务{rgv.Data.TaskID_1}-{rgv.Data.TaskID_2}");
+                    if (rgv.Data.Trigger_1 != rgv.Data2.Trigger_1) throw new WarnException($"待执行任务{rgv.Data.TaskID_1}-{rgv.Data.TaskID_2}");
                     //检查取货点是否需要取货
                     obj.WhetherToExecute();
                     //筛选出有任务号和起始及目标地址的设备
@@ -137,29 +137,29 @@ namespace WCS.Service.Works.RGV
                     else
                     {
                         //检查RGV自身是否有任务
-                        var a = false; //暂时默认无任务
-                        if (a)
+                        var b = false; //暂时默认无任务
+                        if (b)
                         {
                         }
                         else
                         {
                             //找到自己的后一个小车
-                            var b = rgv.After();
+                            var a = rgv.After();
                             //后面的小车是否在执行任务
-                            if (b.Data2.WorkMode == RGVMode.自动 && b.Data2.SystemStatus == RGVRunStatus.空闲) return;
+                            if (a.Data2.WorkMode == RGVMode.自动 && a.Data2.SystemStatus == RGVRunStatus.空闲) return;
                             //自己是否阻挡了该小车
-                            if (rgv.StopedByMe(b))
+                            if (rgv.StopedByMe(a))
                             {
                                 //取小车的目标位置值
-                                var d = Device.Find($"G{b.Data2.DestPosition_1}").Create<StationDeviceGroup>();
+                                var c = Device.Find($"G{a.Data2.DestPosition_1}").Create<StationDeviceGroup>();
                                 //计算目标位置最近的一个取货口
-                                var e = Device.Where(v => v.Is(DF.涂布RGV取货站台))
+                                var d = Device.Where(v => v.Is(DF.涂布RGV取货站台))
                                               .Select(v => v.Create<StationDeviceGroup>())
-                                              .Where(v => v.Position > d.Position)
+                                              .Where(v => v.Position > c.Position)
                                               .OrderBy(v => v.Position)
                                               .FirstOrDefault();
                                 //写入移动任务
-                                rgv.Move(e);
+                                rgv.Move(d);
                             }
 
                             ///检查是否阻挡了其他RGV
@@ -174,11 +174,11 @@ namespace WCS.Service.Works.RGV
                 {
                     //有没有目标地址是自己这的小车 任务未完成 未到站
                     var moveRgv = obj.RgvList.Any(v => v.Data2.DestPosition_1 == obj.Entity.CODE.Replace("G", "").ToShort()
-                                                     && !v.Data2.Finish_1 && !v.Data2.ToSition_1);
+                                                     && !v.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.任务完成) && !v.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.任务完成));
                     if (moveRgv) return;
                     //找到一个空闲且离自己最近的一个RGV
                     var a = obj.RgvList.Where(v => v.Data2.SystemStatus == RGVRunStatus.空闲 && v.Data2.WorkMode == RGVMode.自动);
-                    var z = a.OrderBy(v => obj.Distance(v)).FirstOrDefault();
+                    var z = a.OrderBy(v => obj.Distance(v)).FirstOrDefault() ?? throw new DoException("");
                     z.Move(obj);
                 }
             });
@@ -190,7 +190,7 @@ namespace WCS.Service.Works.RGV
         }
     }
 
-    [WorkTitle(typeof(RGVHandler), "涂布环穿放货")]
+    //[WorkTitle(typeof(RGVHandler), "涂布环穿放货")]
     public class 涂布环穿放货 : Work<StationDeviceGroup>
     {
         protected override void Do(StationDeviceGroup obj)
@@ -204,9 +204,9 @@ namespace WCS.Service.Works.RGV
                     if (rgv.Data.Trigger_1 != rgv.Data2.Trigger_2) throw new WarnException($"等待执行{rgv.Data2.TaskID_1 - rgv.Data2.TaskID_2},凭证号不一致");
                     if (rgv.Data2.WorkMode != RGVMode.自动) throw new DoException("非自动");
                     if (rgv.Data2.SystemStatus != RGVRunStatus.空闲) throw new DoException("非空闲");
-                    if (!rgv.Data2.Finish_1) throw new WarnException("任务未完成");
-                    if (!rgv.Data2.ToSition_1) throw new WarnException("RGV未到站");
-                    if (rgv.Data2.PH_Status_1) throw new WarnException("有光电");
+                    if (!rgv.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.任务完成)) throw new WarnException("任务未完成");
+                    if (!rgv.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV未到站");
+                    if (rgv.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("有光电");
                     //找到最近的一个取货站台
                     var q = Device.Where(v => v.Is(DF.涂布RGV取货站台)).Select(v => v.Create<StationDeviceGroup>()); ;
                     //计算自己与每一个取货站台的距离