|
|
@@ -65,8 +65,6 @@ namespace WCS.Service.Works.SRM
|
|
|
if (srmDevice.Data2.SRMMode != SCMode.远程) return;
|
|
|
if (srmDevice.Data2.SRMStatus != SCRunStatus.空闲) return;
|
|
|
|
|
|
-
|
|
|
-
|
|
|
var isTransfer = new List<WCS_TASK>(); //是否有移库任务
|
|
|
WCS_TASK enterPriority = new(), outPriority = new(); //出入库优先级任务
|
|
|
//再检查是否有等待执行的货物
|
|
|
@@ -269,38 +267,36 @@ namespace WCS.Service.Works.SRM
|
|
|
else if (v.Data2.Status.HasFlag(IstationStatus.光电状态)) res = false;
|
|
|
else if (v.Data2.Request == IstationRequest.堆垛机放货完成请求目标地址) res = false;
|
|
|
else if (v.Data2.Tasknum > 10000) res = false;
|
|
|
- //else if (v.Entity.Is(DF.SRM涂布放货)) //涂布分货,应为电控不会等到RGV取货点无货时,再让货物离开无动力站台,因此需要判断一次旋转台的状态
|
|
|
- //{
|
|
|
- // var devise = new List<StationDevice>();
|
|
|
- // switch (v.Entity.CODE)
|
|
|
- // {
|
|
|
- // case "1283" or "1284":
|
|
|
- // devise = Device.Where(b => b.CODE is "1281" or "1282").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
- // break;
|
|
|
-
|
|
|
- // case "1290" or "1291" or "1292" or "1293":
|
|
|
- // devise = Device.Where(b => b.CODE is "1288" or "1289").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
- // break;
|
|
|
-
|
|
|
- // case "1299" or "1300" or "1301" or "1302":
|
|
|
- // devise = Device.Where(b => b.CODE is "1297" or "1298").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
- // break;
|
|
|
-
|
|
|
- // case "1308" or "1309" or "1310" or "1311":
|
|
|
- // devise = Device.Where(b => b.CODE is "1306" or "1307").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
- // break;
|
|
|
- // }
|
|
|
-
|
|
|
- // if (!devise.Any()) return res;
|
|
|
- // foreach (var stationDevice in devise)
|
|
|
- // {
|
|
|
- // //放货点是否有货
|
|
|
- // if (stationDevice.Data3.Status.HasFlag(StationStatus.运行状态位)) res = false;
|
|
|
- // else if (stationDevice.Data2.Status.HasFlag(IstationStatus.光电状态)) res = false;
|
|
|
- // else if (stationDevice.Data2.Request == IstationRequest.堆垛机放货完成请求目标地址) res = false;
|
|
|
- // else if (stationDevice.Data2.Tasknum > 10000) res = false;
|
|
|
- // }
|
|
|
- //}
|
|
|
+ if (!v.Entity.Is(DF.SRM涂布放货)) return res;
|
|
|
+ var devise = new List<StationDevice>();
|
|
|
+ switch (v.Entity.CODE)
|
|
|
+ {
|
|
|
+ case "1283" or "1284":
|
|
|
+ devise = Device.Where(b => b.CODE is "1281" or "1282").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "1290" or "1291" or "1292" or "1293":
|
|
|
+ devise = Device.Where(b => b.CODE is "1288" or "1289").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "1299" or "1300" or "1301" or "1302":
|
|
|
+ devise = Device.Where(b => b.CODE is "1297" or "1298").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "1308" or "1309" or "1310" or "1311":
|
|
|
+ devise = Device.Where(b => b.CODE is "1306" or "1307").Select(b => b.Create<StationDevice>()).ToList();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!devise.Any()) return res;
|
|
|
+ foreach (var stationDevice in devise)
|
|
|
+ {
|
|
|
+ //放货点是否有货
|
|
|
+ if (stationDevice.Data3.Status.HasFlag(StationStatus.运行状态位)) res = false;
|
|
|
+ else if (stationDevice.Data2.Status.HasFlag(IstationStatus.光电状态)) res = false;
|
|
|
+ else if (stationDevice.Data2.Request == IstationRequest.堆垛机放货完成请求目标地址) res = false;
|
|
|
+ else if (stationDevice.Data2.Tasknum > 10000) res = false;
|
|
|
+ }
|
|
|
|
|
|
return res;
|
|
|
}).ToList();
|
|
|
@@ -338,15 +334,17 @@ namespace WCS.Service.Works.SRM
|
|
|
.Where(d => d.TYPE == TaskType.出库)
|
|
|
.Where(d => d.STATUS > TaskStatus.新建)
|
|
|
.Where(d => d.STATUS < TaskStatus.已完成).ToList();
|
|
|
- var outDepotList = waitTask.Where(v => cTaskList.Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR).GroupBy(d => d.TaskGroupKey).Count() < maximum)
|
|
|
+ var outDepotGrouping = waitTask.Where(v => cTaskList.Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR).GroupBy(d => d.TaskGroupKey).Count() < maximum)
|
|
|
.OrderByDescending(v => v.Priority)
|
|
|
.ThenBy(v => v.ADDRTO == "G1340" ? 0 : 1)
|
|
|
.ThenBy(v => v.FLOOR == floor ? 0 : 1)
|
|
|
.ThenBy(v => cTaskList.Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR).GroupBy(d => d.TaskGroupKey).Count())
|
|
|
.ThenBy(v => v.CREATETIME)
|
|
|
.GroupBy(v => v.ADDRTO)
|
|
|
- .FirstOrDefault(v => !priorityADDRTO.Contains(v.Key))!
|
|
|
- .Select(v => v).ToList();
|
|
|
+ .FirstOrDefault(v => !priorityADDRTO.Contains(v.Key));
|
|
|
+ if (outDepotGrouping == null) return; //用于解决Linq Value cannot be null. (Parameter 'source')
|
|
|
+
|
|
|
+ var outDepotList = outDepotGrouping.Select(v => v).ToList();
|
|
|
|
|
|
//获取两个个可执行任务,此时这两个任务的目标地址是一致的
|
|
|
var tasks = outDepotList.GetOutTask();
|
|
|
@@ -446,4 +444,4 @@ namespace WCS.Service.Works.SRM
|
|
|
return dev.Is(DF.SRM);
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+}
|