|
@@ -304,44 +304,24 @@ namespace WCS.Service.Works.SRM
|
|
|
//同时对结果进行排序,分组
|
|
|
var maxnum = ProtocolProxy.YGWMS150Redis.Get("SaleTaskGroupCount").ToInt();
|
|
|
//所有 有优先级任务的出货口
|
|
|
- List<string> priorityADDRTO = new List<string>();
|
|
|
-
|
|
|
- var t = db.Default.Set<WCS_TASK>().Where(v => v.Priority > 0 && v.STATUS == TaskStatus.新建 && v.DEVICE != obj.Entity.CODE).ToList()
|
|
|
- .GroupBy(v => v.ADDRTO);
|
|
|
- if (t.Any()) //用于避免t为空时报错
|
|
|
- {
|
|
|
- priorityADDRTO = t.Select(v => new { v.Key, List = v.Select(p => p.DEVICE).Distinct().ToList() })
|
|
|
- .Where(v => v.List.Where(p =>
|
|
|
- {
|
|
|
- var dev = Device.Find(p).Create<SRMDevice>();
|
|
|
- return dev.Data2.SRMMode == SCMode.远程 && dev.Data2.SRMStatus == SCRunStatus.空闲;
|
|
|
- }).Any())
|
|
|
- .Select(v => v.Key)
|
|
|
- .ToList();
|
|
|
- }
|
|
|
- var outDepotList = waitTask.Where(v =>
|
|
|
- {
|
|
|
- return db.Default.Set<WCS_TASK>()
|
|
|
- .AsNoTracking()
|
|
|
- .Where(d => d.TYPE == TaskType.出库)
|
|
|
- .Where(d => d.STATUS > TaskStatus.新建)
|
|
|
- .Where(d => d.STATUS < TaskStatus.已完成 || taskidList.Contains(d.ID))
|
|
|
- .Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR)
|
|
|
- .GroupBy(d => d.TaskGroupKey).Count() < maxnum;
|
|
|
- })
|
|
|
+ var priorityADDRTO = db.Default.Set<WCS_TASK>().Where(v => v.Priority > 0 && v.STATUS == TaskStatus.新建 && v.DEVICE != obj.Entity.CODE).ToList()
|
|
|
+ .GroupBy(v => v.ADDRTO).Select(v => new { v.Key, List = v.Select(p => p.DEVICE).Distinct().ToList() })
|
|
|
+ .Where(v => v.List.Where(p =>
|
|
|
+ {
|
|
|
+ var dev = Device.Find(p).Create<SRMDevice>();
|
|
|
+ return dev.Data2.SRMMode == SCMode.远程 && dev.Data2.SRMStatus == SCRunStatus.空闲;
|
|
|
+ }).Any())
|
|
|
+ .Select(v => v.Key)
|
|
|
+ .ToList();
|
|
|
+ var cTaskList = db.Default.Set<WCS_TASK>().AsNoTracking()
|
|
|
+ .Where(d => d.TYPE == TaskType.出库)
|
|
|
+ .Where(d => d.STATUS > TaskStatus.新建)
|
|
|
+ .Where(d => d.STATUS < TaskStatus.已完成 || taskidList.Contains(d.ID)).ToList();
|
|
|
+ var outDepotList = waitTask.Where(v => cTaskList.Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR).GroupBy(d => d.TaskGroupKey).Count() < maxnum)
|
|
|
.OrderByDescending(v => v.Priority)
|
|
|
.ThenBy(v => v.ADDRTO == "G1340" ? 0 : 1)
|
|
|
.ThenBy(v => v.FLOOR == floor ? 0 : 1)
|
|
|
- .ThenBy(v =>
|
|
|
- {
|
|
|
- return db.Default.Set<WCS_TASK>()
|
|
|
- .AsNoTracking()
|
|
|
- .Where(d => d.TYPE == TaskType.出库)
|
|
|
- .Where(d => d.STATUS > TaskStatus.新建)
|
|
|
- .Where(d => d.STATUS < TaskStatus.已完成 || taskidList.Contains(d.ID))
|
|
|
- .Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR)
|
|
|
- .GroupBy(d => d.TaskGroupKey).Count();
|
|
|
- })
|
|
|
+ .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)
|
|
|
.Where(v => !priorityADDRTO.Contains(v.Key))
|