|
|
@@ -37,6 +37,9 @@ namespace Business.ResourceExamineManagement
|
|
|
public List<mo_mes_moentry> moentriesList = new List<mo_mes_moentry>();
|
|
|
public List<mo_mes_mooccupy> mooccupyAllList = new List<mo_mes_mooccupy>();
|
|
|
|
|
|
+ public List<mo_srm_po_list> srm_Po_Lists = new List<mo_srm_po_list>();
|
|
|
+ public List<mo_srm_po_occupy> srm_Po_Occupies = new List<mo_srm_po_occupy>();
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 工艺路径
|
|
|
/// </summary>
|
|
|
@@ -67,12 +70,18 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
private readonly ProductExamineAppService _productExamineAppService;
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 在途检查
|
|
|
+ /// </summary>
|
|
|
+ private readonly PurchaseOrderAppService _purchaseOrderAppService;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 构造函数
|
|
|
/// </summary>
|
|
|
/// <param name="morderAppService"></param>
|
|
|
public CalcBomViewAppService(MorderAppService morderAppService,
|
|
|
- ProductExamineAppService productExamineAppService)
|
|
|
+ ProductExamineAppService productExamineAppService,
|
|
|
+ PurchaseOrderAppService purchaseOrderAppService)
|
|
|
{
|
|
|
_morderAppService = morderAppService;
|
|
|
_morderAppService.process = process;
|
|
|
@@ -85,6 +94,7 @@ namespace Business.ResourceExamineManagement
|
|
|
_productExamineAppService.techs = techs;
|
|
|
_productExamineAppService.tech_Processes = tech_Processes;
|
|
|
_productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops;
|
|
|
+ _purchaseOrderAppService = purchaseOrderAppService;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -92,7 +102,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// 计算物料库存量
|
|
|
/// </summary>
|
|
|
/// <param name="returnlist"></param>
|
|
|
- public void BomStock(List<BomChildExamineDto> returnlist, List<mo_ic_item_stock> _ic_item_stock,long bangid)
|
|
|
+ public void BomStock(List<BomChildExamineDto> returnlist, List<mo_ic_item_stock> _ic_item_stock, long bangid)
|
|
|
{
|
|
|
returnlist = returnlist.OrderBy(s => s.num_order).ToList();
|
|
|
//获取当前工厂下物料库存数据
|
|
|
@@ -146,7 +156,9 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//获取物料详情
|
|
|
var ic_item = icitemlist.Find(s => s.mysql_id == level1Dto.item_id);
|
|
|
- var mooccupylist = _morderAppService.CheckMorder(level1Dto.bom_number, level1Dto.lack_qty, plan_date.GetValueOrDefault(), sentrys, ic_item, bangid).Result;
|
|
|
+ _morderAppService.mo_Mes_Morders = mordersList;//工单
|
|
|
+ _morderAppService.mo_Mes_Mooccupies = mooccupyAllList;//工单占用
|
|
|
+ var mooccupylist = _morderAppService.CheckMorder(level1Dto.bom_number, level1Dto.lack_qty, plan_date.GetValueOrDefault(), sentrys, ic_item, bangid);
|
|
|
|
|
|
if (mooccupylist.Any())
|
|
|
{
|
|
|
@@ -169,7 +181,7 @@ namespace Business.ResourceExamineManagement
|
|
|
itemStockoccupyDto.icitem_id = level1Dto.item_id;
|
|
|
itemStockoccupyDto.item_no = level1Dto.num;
|
|
|
itemStockoccupyDto.orderentry_id = sentrys.Id;
|
|
|
-
|
|
|
+
|
|
|
decimal moo_qty = mooccupylist.Sum(s => s.moo_qty.GetValueOrDefault());
|
|
|
level1Dto.mo_qty = moo_qty;
|
|
|
if (moo_qty != 0)
|
|
|
@@ -315,7 +327,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="bzlist"></param>
|
|
|
/// <param name="returnlist"></param>
|
|
|
/// <param name="sockoccupyList"></param>
|
|
|
- public void CaleLackItem(BomChildExamineDto parent, List<BomChildExamineDto> bzlist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sockoccupyList,long bangid)
|
|
|
+ public void CaleLackItem(BomChildExamineDto parent, List<BomChildExamineDto> bzlist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sockoccupyList, long bangid)
|
|
|
{
|
|
|
//从第二级开始循环
|
|
|
foreach (var item in bzlist)
|
|
|
@@ -463,7 +475,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//先计算末级数据的齐套时间。
|
|
|
if (cilList.Count() > 0)
|
|
|
{
|
|
|
- CalcIcitem(cilList, returnlist, bangid, input, sklist, plan_date, icitemlist, sentrys, childidList);
|
|
|
+ CalcIcitem(cilList, returnlist, bangid, input, sklist, plan_date, icitemlist, sentrys, childidList);
|
|
|
item.kitting_time = cilList.Max(s => s.kitting_time);
|
|
|
}
|
|
|
item.make_qty = item.lack_qty;
|
|
|
@@ -487,33 +499,43 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
else if (item.erp_cls == 3)
|
|
|
{
|
|
|
+ _purchaseOrderAppService.mo_Srm_Po_Lists = srm_Po_Lists;
|
|
|
+ _purchaseOrderAppService.srm_Po_Occupies = srm_Po_Occupies;
|
|
|
//先找在途
|
|
|
-
|
|
|
-
|
|
|
- //采购申请
|
|
|
- var SRMPRDto = CreateSRMPR(item, input.tenantId, input.factoryId, bangid, item.erp_cls, leadTimeList, supplierList, planList, plan_date.Value);
|
|
|
- item.purchase_qty = item.lack_qty;
|
|
|
- item.purchase_list = new List<purchase>();
|
|
|
- if (SRMPRDto.srm_Pr_Main != null)
|
|
|
+ var occoupylist = _purchaseOrderAppService.CheckPurchaseOrder(sentrys, item.item_id, item.lack_qty, plan_date.GetValueOrDefault(), planList, bangid);
|
|
|
+ if (occoupylist.Any())
|
|
|
{
|
|
|
- purchase pur = new purchase();
|
|
|
- pur.pr_billno = SRMPRDto.srm_Pr_Main.pr_billno;
|
|
|
- pur.pr_purchasenumber = SRMPRDto.srm_Pr_Main.pr_purchasenumber;
|
|
|
- pur.pr_purchasename = SRMPRDto.srm_Pr_Main.pr_purchasename;
|
|
|
- pur.pr_rqty = SRMPRDto.srm_Pr_Main.pr_rqty;
|
|
|
- pur.pr_aqty = SRMPRDto.srm_Pr_Main.pr_aqty;
|
|
|
- pur.pr_sqty = SRMPRDto.srm_Pr_Main.pr_sqty;
|
|
|
- pur.pr_parrive_date = SRMPRDto.srm_Pr_Main.pr_parrive_date;
|
|
|
- pur.pr_rarrive_date = SRMPRDto.srm_Pr_Main.pr_rarrive_date;
|
|
|
- pur.pr_pur_affirm_date = SRMPRDto.srm_Pr_Main.pr_pur_affirm_date;
|
|
|
- pur.pr_sysprice = SRMPRDto.srm_Pr_Main.pr_sysprice;
|
|
|
- pur.pr_orderprice = SRMPRDto.srm_Pr_Main.pr_orderprice;
|
|
|
- pur.pr_price = SRMPRDto.srm_Pr_Main.pr_price;
|
|
|
- pur.pr_rate = SRMPRDto.srm_Pr_Main.pr_rate;
|
|
|
- item.purchase_list.Add(pur);
|
|
|
+ decimal occqty = occoupylist.Sum(s => s.qty.GetValueOrDefault());
|
|
|
+ item.purchase_occupy_qty = occqty;
|
|
|
+ item.lack_qty -= occqty;
|
|
|
+ }
|
|
|
+ if (item.lack_qty > 0)
|
|
|
+ {
|
|
|
+ //采购申请
|
|
|
+ var SRMPRDto = CreateSRMPR(item, input.tenantId, input.factoryId, bangid, item.erp_cls, leadTimeList, supplierList, planList, plan_date.Value);
|
|
|
+ item.purchase_qty = item.lack_qty;
|
|
|
+ item.purchase_list = new List<purchase>();
|
|
|
+ if (SRMPRDto.srm_Pr_Main != null)
|
|
|
+ {
|
|
|
+ purchase pur = new purchase();
|
|
|
+ pur.pr_billno = SRMPRDto.srm_Pr_Main.pr_billno;
|
|
|
+ pur.pr_purchasenumber = SRMPRDto.srm_Pr_Main.pr_purchasenumber;
|
|
|
+ pur.pr_purchasename = SRMPRDto.srm_Pr_Main.pr_purchasename;
|
|
|
+ pur.pr_rqty = SRMPRDto.srm_Pr_Main.pr_rqty;
|
|
|
+ pur.pr_aqty = SRMPRDto.srm_Pr_Main.pr_aqty;
|
|
|
+ pur.pr_sqty = SRMPRDto.srm_Pr_Main.pr_sqty;
|
|
|
+ pur.pr_parrive_date = SRMPRDto.srm_Pr_Main.pr_parrive_date;
|
|
|
+ pur.pr_rarrive_date = SRMPRDto.srm_Pr_Main.pr_rarrive_date;
|
|
|
+ pur.pr_pur_affirm_date = SRMPRDto.srm_Pr_Main.pr_pur_affirm_date;
|
|
|
+ pur.pr_sysprice = SRMPRDto.srm_Pr_Main.pr_sysprice;
|
|
|
+ pur.pr_orderprice = SRMPRDto.srm_Pr_Main.pr_orderprice;
|
|
|
+ pur.pr_price = SRMPRDto.srm_Pr_Main.pr_price;
|
|
|
+ pur.pr_rate = SRMPRDto.srm_Pr_Main.pr_rate;
|
|
|
+ item.purchase_list.Add(pur);
|
|
|
+ }
|
|
|
+ item.kitting_time = SRMPRDto.lastStartTmie;
|
|
|
+ SRMPRDtoList.Add(SRMPRDto);
|
|
|
}
|
|
|
- item.kitting_time = SRMPRDto.lastStartTmie;
|
|
|
- SRMPRDtoList.Add(SRMPRDto);
|
|
|
}
|
|
|
else if (item.erp_cls == 2)
|
|
|
{
|
|
|
@@ -532,13 +554,13 @@ namespace Business.ResourceExamineManagement
|
|
|
item.subcontracting_list = new List<ooder>();
|
|
|
ooder oo = new ooder();
|
|
|
oo.morder_production_number = mesorder.morder_production_number;
|
|
|
- oo.production_unit= mesorder.production_unit;
|
|
|
+ oo.production_unit = mesorder.production_unit;
|
|
|
oo.production_unit_code = mesorder.production_unit_code;
|
|
|
- oo.ooentry_prdname= mesorder.ooentry_prdname;
|
|
|
- oo.ooentry_stime= mesorder.ooentry_stime;
|
|
|
- oo.ooentry_etime= mesorder.ooentry_etime;
|
|
|
- oo.oorder_date= mesorder.oorder_date;
|
|
|
- oo.oorder_no= mesorder.oorder_no;
|
|
|
+ oo.ooentry_prdname = mesorder.ooentry_prdname;
|
|
|
+ oo.ooentry_stime = mesorder.ooentry_stime;
|
|
|
+ oo.ooentry_etime = mesorder.ooentry_etime;
|
|
|
+ oo.oorder_date = mesorder.oorder_date;
|
|
|
+ oo.oorder_no = mesorder.oorder_no;
|
|
|
item.subcontracting_list.Add(oo);
|
|
|
item.kitting_time = mesorder.ooentry_etime;
|
|
|
orderList.Add(mesorder);
|
|
|
@@ -604,7 +626,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="returnlist"></param>
|
|
|
/// <param name="sklist"></param>
|
|
|
/// <param name="select"></param>
|
|
|
- public void WholeBatchCheck(List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, List<BomChildExamineDto> select,long bangid)
|
|
|
+ public void WholeBatchCheck(List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, List<BomChildExamineDto> select, long bangid)
|
|
|
{
|
|
|
for (int idx = 0; idx < 99; idx++)
|
|
|
{
|
|
|
@@ -645,7 +667,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="input"></param>
|
|
|
/// <param name="plan_date"></param>
|
|
|
public void WholeBatch(BomChildExamineDto item, List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, List<BomChildExamineDto> select, long bangid, BomChildExamineDto parent, SeorderentryDto input, DateTime
|
|
|
- ? plan_date, List<mo_ic_item> icitemlist, crm_seorderentry sentrys,List<long> childidList)
|
|
|
+ ? plan_date, List<mo_ic_item> icitemlist, crm_seorderentry sentrys, List<long> childidList)
|
|
|
{
|
|
|
if (select.Count() == 0)
|
|
|
{
|
|
|
@@ -829,7 +851,8 @@ namespace Business.ResourceExamineManagement
|
|
|
sct.use_qty += lack_Count;
|
|
|
sklist.Add(itemStockoccupyDto);
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
var cilList = returnlist.Where(s => s.parent_id == sct.id && s.type == sct.type).OrderBy(k => k.num_order).ToList();
|
|
|
|
|
|
itemStockoccupyDto.quantity = sqty;
|
|
|
@@ -914,7 +937,7 @@ namespace Business.ResourceExamineManagement
|
|
|
orderList.Add(mesorder);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|