林豪 左 3 år sedan
förälder
incheckning
b4ebaf31fe

+ 15 - 0
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -134,6 +134,21 @@ namespace WCS.Service.Extensions
             return a.Count == 0 ? null : a;
         }
 
+        /// <summary>
+        /// 是否可以取货
+        /// </summary>
+        /// <returns></returns>
+        public bool IsPickUp(RGVDevice rgvDevice)
+        {
+            if (Entity.CODE is "G2" or "G3") return true;
+            var dCount = Device.Where(v => v.CODE is "G1" or "G1340" or "G1337").Select(v => v.Create<StationDeviceGroup>()).Count(v => v.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位)
+                || v.Data2.Status.HasFlag(IstationStatus.光电状态)
+                || v.Data2.Tasknum > 10000
+                || !v.Data3.Status.HasFlag(StationStatus.自动)));
+            var rCount = rgvDevice.RGVList.Count(v => v.Data.DestPosition_1 == 1);
+            return rCount < dCount;
+        }
+
         /// <summary>
         /// 入库位置获取需要生产任务的设备及条码信息
         /// </summary>

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

@@ -4,7 +4,6 @@ using System.Collections.Generic;
 using System.Linq;
 using WCS.Core;
 using WCS.Entity;
-using WCS.Entity.Protocol;
 using WCS.Entity.Protocol.RGV;
 using WCS.Service.Extensions;
 using WCS.Service.Handlers;
@@ -129,9 +128,10 @@ namespace WCS.Service.Works.RGV
                     if (pickStation.Entity.Is(DF.涂布RGV取货设备组))
                     {
                         // 筛选出有任务号和起始及目标地址的设备
-                        var devs = pickStation.RGVGetTaskedDevice();
+                        var devise = pickStation.RGVGetTaskedDevice();
+
                         //是否需要取货
-                        if (devs != null && devs.Count > 0)
+                        if (devise is { Count: > 0 } && pickStation.IsPickUp(rgvDevice))
                         {
                             //开始下达取货任务
                             DB.Do(db =>
@@ -140,18 +140,7 @@ namespace WCS.Service.Works.RGV
                                 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实际状态");
 
-                                if (pickStation.Entity.CODE != "G2" && pickStation.Entity.CODE != "G3")
-                                {
-                                    var a = Device.Where(v => v.CODE is "G1" or "G1340" or "G1337").Select(v => v.Create<StationDeviceGroup>()).Count(v => v.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位)
-                                        || v.Data2.Status.HasFlag(IstationStatus.光电状态)
-                                        || v.Data2.Tasknum > 10000
-                                        || !v.Data3.Status.HasFlag(StationStatus.自动)));
-                                    var b = rgvDevice.RGVList.Count(v => v.Data.DestPosition_1 == 1);
-                                    //最大三个任务
-                                    if (b >= 3) return;
-                                }
-
-                                var taskids = devs.Select(v => v.Data2.Tasknum);
+                                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不一致");