|
@@ -303,34 +303,39 @@ namespace WCS.Service.Works.SRM
|
|
|
|
|
|
//同时对结果进行排序,分组
|
|
|
var maxnum = ProtocolProxy.YGWMS150Redis.Get("SaleTaskGroupCount").ToInt();
|
|
|
+ //所有 有优先级任务的出货口
|
|
|
+ var priorityADDRTO = db.Default.Set<WCS_TASK>().Where(v => v.Priority > 0 && v.STATUS == TaskStatus.新建).GroupBy(v => v.ADDRTO).Select(v => v.Key);
|
|
|
var outDepotList = waitTask.Where(v =>
|
|
|
- {
|
|
|
- var max = v.ADDRTO == "G1340" ? 4 : maxnum;
|
|
|
- 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() < max;
|
|
|
- })
|
|
|
- .OrderByDescending(v => v.Priority)
|
|
|
- .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 => v.CREATETIME)
|
|
|
- .GroupBy(v => v.ADDRTO).ToArray();
|
|
|
+ {
|
|
|
+ var max = v.ADDRTO == "G1340" ? 4 : maxnum;
|
|
|
+ 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() < max;
|
|
|
+ })
|
|
|
+ .OrderByDescending(v => v.Priority)
|
|
|
+ .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 => v.CREATETIME)
|
|
|
+ .GroupBy(v => v.ADDRTO)
|
|
|
+ .Where(v => !priorityADDRTO.Contains(v.Key))
|
|
|
+ .FirstOrDefault()
|
|
|
+ .Select(v => v).ToList();
|
|
|
|
|
|
//获取两个个可执行任务,此时这两个任务的目标地址是一致的
|
|
|
- var tasks = outDepotList.GetSrmValidTaskList(obj).GetOutTask();
|
|
|
+ var tasks = outDepotList.GetOutTask();
|
|
|
|
|
|
#region 校验两个产品是否为同规格
|
|
|
|