|
@@ -4,6 +4,7 @@ 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;
|
|
@@ -139,6 +140,23 @@ 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")
|
|
|
+ {
|
|
|
+ //最大三个任务
|
|
|
+ if (rgvDevice.RGVList.Count(v => v.Data.DestPosition_1 == 1) < 3)
|
|
|
+ {
|
|
|
+ //放货点是否有货
|
|
|
+ var G1 = Device.Find("G1").Create<StationDeviceGroup>();
|
|
|
+ //只能有一组任务的下一个地址是交货点同时,放货点必须无货
|
|
|
+
|
|
|
+ if (G1.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位)
|
|
|
+ || v.Data2.Status.HasFlag(IstationStatus.光电状态)
|
|
|
+ || v.Data2.Tasknum > 10000
|
|
|
+ || !v.Data3.Status.HasFlag(StationStatus.自动))) return;
|
|
|
+ }
|
|
|
+ else return;
|
|
|
+ }
|
|
|
+
|
|
|
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)
|
|
@@ -397,4 +415,4 @@ namespace WCS.Service.Works.RGV
|
|
|
return dev.Is(DF.BOPPRGV);
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+}
|