|
|
@@ -4001,7 +4001,7 @@ namespace Business.Replenishment
|
|
|
//成品虚拟件对应关系
|
|
|
var productOpList = _productStructureOp.Select(x => orderCode.Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
|
|
|
//获取物料主数据
|
|
|
- List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString() && orderCode.Contains(p.ItemNum)).ToList();
|
|
|
+ List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString()).ToList();
|
|
|
foreach (var item in morders)
|
|
|
{
|
|
|
var moItem = exmResult.Find(b => b.morder_no ==item.morder_no);
|
|
|
@@ -4072,7 +4072,7 @@ namespace Business.Replenishment
|
|
|
foreach (var caleNumber in calereturnList)
|
|
|
{
|
|
|
var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
|
|
|
-
|
|
|
+ var itemMst = itemMasters.Find(x => x.ItemNum == caleNumber);
|
|
|
//添加工单的物料信息
|
|
|
woDetail = new WorkOrdDetail();
|
|
|
woDetail.Domain = item.factory_id.ToString();
|
|
|
@@ -4091,6 +4091,7 @@ namespace Business.Replenishment
|
|
|
woDetail.CreateTime = DateTime.Now;
|
|
|
woDetail.Line = num;
|
|
|
woDetail.QtyRequired = caleList.Sum(c => c.needCount.GetValueOrDefault());
|
|
|
+ woDetail.Location = itemMst == null ? "" : itemMst.Location;
|
|
|
if (workOrd.QtyOrded != 0)
|
|
|
{
|
|
|
woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workOrd.QtyOrded, 10);
|
|
|
@@ -4951,72 +4952,73 @@ namespace Business.Replenishment
|
|
|
//暂时屏蔽重新生成工单物料明细
|
|
|
List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
|
|
|
List<WorkOrdDetail> delWorkOrddetails = new List<WorkOrdDetail>();
|
|
|
-
|
|
|
- //成品虚拟件对应关系
|
|
|
- var productOpList = _productStructureOp.Select(x => mo_Mes_Morders.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
|
|
|
- var workOrds = _workOrdMaster.Select(a => mo_Mes_Morders.Select(p => p.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive);
|
|
|
- delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
|
|
|
- foreach (var workord in mo_Mes_Morders)
|
|
|
+ //获取物料主数据
|
|
|
+ List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString()).ToList();
|
|
|
+ //成品虚拟件对应关系
|
|
|
+ var productOpList = _productStructureOp.Select(x => mo_Mes_Morders.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
|
|
|
+ var workOrds = _workOrdMaster.Select(a => mo_Mes_Morders.Select(p => p.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive);
|
|
|
+ delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
|
|
|
+ foreach (var workord in mo_Mes_Morders)
|
|
|
+ {
|
|
|
+ long fid = GetParentMo(mo_Mes_Morders, workord);
|
|
|
+ var exm = examines.Find(s => s.morder_id == fid);
|
|
|
+ //var exm = examines.Find(s => s.morder_no == workord.morder_no);
|
|
|
+ if (exm != null)
|
|
|
{
|
|
|
- long fid = GetParentMo(mo_Mes_Morders, workord);
|
|
|
- var exm = examines.Find(s => s.morder_id == fid);
|
|
|
- //var exm = examines.Find(s => s.morder_no == workord.morder_no);
|
|
|
- if (exm != null)
|
|
|
- {
|
|
|
- var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
|
|
|
+ var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
|
|
|
|
|
|
- var child = childs.Find(s => s.item_number == workord.product_code);
|
|
|
- if (child == null)
|
|
|
+ var child = childs.Find(s => s.item_number == workord.product_code);
|
|
|
+ if (child == null)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
|
|
|
+ var productOps = productOpList.Where(x => x.ProductItem == workord.product_code).ToList();
|
|
|
+ GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs, productOps);
|
|
|
+ if (returnList.Any())
|
|
|
+ {
|
|
|
+ WorkOrdDetail woDetail = null;
|
|
|
+ var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
|
|
|
+ var work = workOrds.Find(x => x.WorkOrd == workord.morder_no);
|
|
|
+ if (work == null)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
- List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
|
|
|
- var productOps = productOpList.Where(x => x.ProductItem == workord.product_code).ToList();
|
|
|
- GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs, productOps);
|
|
|
- if (returnList.Any())
|
|
|
+ short num = 1;
|
|
|
+ foreach (var caleNumber in calereturnList)
|
|
|
{
|
|
|
- WorkOrdDetail woDetail = null;
|
|
|
- var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
|
|
|
- var work = workOrds.Find(x => x.WorkOrd == workord.morder_no);
|
|
|
- if (work == null)
|
|
|
+ var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
|
|
|
+ var itmeMst = itemMasters.Find(x => x.ItemNum == caleNumber);
|
|
|
+ //添加工单的物料信息
|
|
|
+ woDetail = new WorkOrdDetail();
|
|
|
+ woDetail.Domain = workord.factory_id.ToString();
|
|
|
+ woDetail.WorkOrd = workord.morder_no;
|
|
|
+ var oplist = caleList.Where(x => x.Op > 0).ToList();
|
|
|
+ woDetail.Op = 0;
|
|
|
+ if (oplist.Any())
|
|
|
{
|
|
|
- continue;
|
|
|
+ woDetail.Op = oplist.Min(f => f.Op);
|
|
|
}
|
|
|
- short num = 1;
|
|
|
- foreach (var caleNumber in calereturnList)
|
|
|
+ woDetail.ItemNum = caleNumber;
|
|
|
+ woDetail.QtyPosted = 0m;
|
|
|
+ woDetail.QtyReturned = 0m;
|
|
|
+ woDetail.Status = "";
|
|
|
+ woDetail.IsActive = true;
|
|
|
+ woDetail.CreateTime = DateTime.Now;
|
|
|
+ woDetail.Line = num;
|
|
|
+ woDetail.QtyRequired = caleList.Sum(c => c.needCount);
|
|
|
+ woDetail.WorkOrdMasterRecID = work.RecID;
|
|
|
+ woDetail.Location = itmeMst == null ? "" : itmeMst.Location;
|
|
|
+ if (workord.need_number != 0)
|
|
|
{
|
|
|
- var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
|
|
|
-
|
|
|
- //添加工单的物料信息
|
|
|
- woDetail = new WorkOrdDetail();
|
|
|
- woDetail.Domain = workord.factory_id.ToString();
|
|
|
- woDetail.WorkOrd = workord.morder_no;
|
|
|
- var oplist = caleList.Where(x => x.Op > 0).ToList();
|
|
|
- woDetail.Op = 0;
|
|
|
- if (oplist.Any())
|
|
|
- {
|
|
|
- woDetail.Op = oplist.Min(f => f.Op);
|
|
|
- }
|
|
|
- woDetail.ItemNum = caleNumber;
|
|
|
- woDetail.QtyPosted = 0m;
|
|
|
- woDetail.QtyReturned = 0m;
|
|
|
- woDetail.Status = "";
|
|
|
- woDetail.IsActive = true;
|
|
|
- woDetail.CreateTime = DateTime.Now;
|
|
|
- woDetail.Line = num;
|
|
|
- woDetail.QtyRequired = caleList.Sum(c => c.needCount);
|
|
|
- woDetail.WorkOrdMasterRecID = work.RecID;
|
|
|
- if (workord.need_number != 0)
|
|
|
- {
|
|
|
- woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
|
|
|
- }
|
|
|
- mainWorkOrdDetails.Add(woDetail);
|
|
|
- num++;
|
|
|
+ woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
|
|
|
}
|
|
|
+ mainWorkOrdDetails.Add(woDetail);
|
|
|
+ num++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ }
|
|
|
|
|
|
List<srm_pr_main> updatPrList = new List<srm_pr_main>();
|
|
|
List<srm_pr_main> deletePrList = new List<srm_pr_main>();
|