|
|
@@ -2644,10 +2644,12 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//工单信息
|
|
|
var workOrdMasters = _workOrdMaster.Select(p => p.Domain == domain && workOrd.Contains(p.WorkOrd));
|
|
|
+
|
|
|
//当前工单所有工序
|
|
|
- var workordRList = _workOrdRouting.Select(s => s.Domain == domain && workOrd.Contains(s.WorkOrd)).ToList();
|
|
|
+ var workordRList = _workOrdRouting.Select(s => s.Domain == domain && s.IsActive && workOrd.Contains(s.WorkOrd)).ToList();
|
|
|
//产线
|
|
|
List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrdMasters.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == domain && p.IsActive);
|
|
|
+
|
|
|
//获取已排产的工单
|
|
|
List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => workOrd.Contains(p.WorkOrds) && p.Domain == domain && p.IsActive);
|
|
|
|
|
|
@@ -2656,44 +2658,79 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
List<WorkOrdRouting> alllist = workordRList.Where(s => s.WorkOrd == work).ToList();
|
|
|
List<WorkOrdRouting> parentlist = alllist.Where(s => s.WorkOrd == work && s.ParentOp == 0).ToList();
|
|
|
- //非关键工序也要添加
|
|
|
- copyList.AddRange(parentlist.Where(s => s.MilestoneOp == false).ToList());
|
|
|
- GetChildOP(parentlist, alllist, copyList);
|
|
|
- }
|
|
|
- foreach (var wor in copyList)
|
|
|
- {
|
|
|
- var workPsd = dbPeriodSequences.Where(s => s.ItemNum == wor.ItemNum && s.WorkOrds == wor.WorkOrd).ToList();
|
|
|
- var line = prodLines.Where(p => p.Part == wor.ItemNum && p.Op == wor.OP).FirstOrDefault();
|
|
|
- foreach (var psd in workPsd)
|
|
|
+ //父级工序,根据工序代码排序,
|
|
|
+
|
|
|
+ WorkOrdRouting upperOp = null;
|
|
|
+ List<WorkOrdRouting> worouting = parentlist.Where(x => x.MilestoneOp).OrderBy(s => s.OP).ToList();
|
|
|
+ foreach (var wt in worouting)
|
|
|
{
|
|
|
- var newPsd = new PeriodSequenceDet
|
|
|
- {
|
|
|
- Domain = domain,
|
|
|
- //Line = item.Line,
|
|
|
- ItemNum = wor.ItemNum,
|
|
|
- PlanDate = psd.PlanDate,
|
|
|
- Period = 1,//目前只考虑一班制
|
|
|
- OrdQty = psd.OrdQty,
|
|
|
- WorkOrds = wor.WorkOrd,
|
|
|
- Op = wor.OP,
|
|
|
- IsActive = true,
|
|
|
- Status = "",
|
|
|
- CreateTime = DateTime.Now
|
|
|
- };
|
|
|
- if (line != null)
|
|
|
+ List<WorkOrdRouting> refMilestoneOpList = new List<WorkOrdRouting>();
|
|
|
+ copyList = new List<WorkOrdRouting>();
|
|
|
+ if (upperOp == null)
|
|
|
{
|
|
|
- newPsd.Line = line.Line;
|
|
|
+ refMilestoneOpList.AddRange(parentlist.Where(x => x.OP < wt.OP).ToList());
|
|
|
}
|
|
|
- else
|
|
|
+ else {
|
|
|
+ refMilestoneOpList.AddRange(parentlist.Where(x => upperOp.OP < x.OP && x.OP < wt.OP).ToList());
|
|
|
+ }
|
|
|
+ upperOp = wt;
|
|
|
+ GetChildOP(refMilestoneOpList, alllist, copyList);
|
|
|
+ var workPsd = dbPeriodSequences.Where(s => s.ItemNum == wt.ItemNum && s.WorkOrds == work && s.Op == wt.OP).ToList();
|
|
|
+ foreach (var psd in workPsd)
|
|
|
{
|
|
|
- newPsd.Line = psd.Line;
|
|
|
+ refMilestoneOpList.ForEach(wor =>
|
|
|
+ {
|
|
|
+ var newPsd = new PeriodSequenceDet
|
|
|
+ {
|
|
|
+ Domain = domain,
|
|
|
+ Line = psd.Line,
|
|
|
+ ItemNum = wor.ItemNum,
|
|
|
+ PlanDate = psd.PlanDate,
|
|
|
+ Period = 1,//目前只考虑一班制
|
|
|
+ OrdQty = psd.OrdQty,
|
|
|
+ WorkOrds = wor.WorkOrd,
|
|
|
+ Op = wor.OP,
|
|
|
+ IsActive = true,
|
|
|
+ Status = "",
|
|
|
+ CreateTime = DateTime.Now
|
|
|
+ };
|
|
|
+ returnList.Add(newPsd);
|
|
|
+ });
|
|
|
+ copyList.ForEach(wor =>
|
|
|
+ {
|
|
|
+ var line = prodLines.Where(p => p.Part == wor.ItemNum && p.Op == wor.OP).FirstOrDefault();
|
|
|
+ var newPsd = new PeriodSequenceDet
|
|
|
+ {
|
|
|
+ Domain = domain,
|
|
|
+ //Line = psd.Line,
|
|
|
+ ItemNum = wor.ItemNum,
|
|
|
+ PlanDate = psd.PlanDate,
|
|
|
+ Period = 1,//目前只考虑一班制
|
|
|
+ OrdQty = psd.OrdQty,
|
|
|
+ WorkOrds = wor.WorkOrd,
|
|
|
+ Op = wor.OP,
|
|
|
+ IsActive = true,
|
|
|
+ Status = "",
|
|
|
+ CreateTime = DateTime.Now
|
|
|
+ };
|
|
|
+ if (line != null)
|
|
|
+ {
|
|
|
+ newPsd.Line = line.Line;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ newPsd.Line = psd.Line;
|
|
|
+ }
|
|
|
+ returnList.Add(newPsd);
|
|
|
+ });
|
|
|
+
|
|
|
}
|
|
|
- returnList.Add(newPsd);
|
|
|
}
|
|
|
}
|
|
|
return returnList;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//递归寻找到子级工序里工序编码最大的一条记录。
|
|
|
public void GetChildOP(List<WorkOrdRouting> parentlist, List<WorkOrdRouting> alllist, List<WorkOrdRouting> copyList)
|
|
|
{
|
|
|
@@ -3514,7 +3551,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
defaultLine = lineMasters.FirstOrDefault();
|
|
|
}
|
|
|
- LocationTo = defaultLine?.VLocation;
|
|
|
+ LocationTo = defaultLine?.Location;
|
|
|
}
|
|
|
var workdtls = workDetails.Where(s => s.WorkOrd == workord.WorkOrd).ToList();
|
|
|
//List<ProductStructureMaster> itemList = GetProductStructure(dbPeriodSequences.First(a => a.WorkOrds == workord.WorkOrd).ItemNum, QtyOrdSum, workord.Domain);
|