|
|
@@ -3470,16 +3470,13 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
}
|
|
|
List<WorkOrdMaster> workMasters = _workOrdMaster.Select(a => mes_Morders.Select(m=>m.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == input.factory_id.ToString());
|
|
|
- decimal priority = 1;
|
|
|
for(int i=0;i<weekPlan.Count;i++)
|
|
|
{
|
|
|
weekPlan[i].ProductionStatus = "已发布";
|
|
|
- weekPlan[i].Priority = priority;
|
|
|
workMasters.ForEach(b =>
|
|
|
{
|
|
|
if (b.ItemNum == weekPlan[i].ItemNumber && b.WorkOrd == weekPlan[i].ProductionOrder)
|
|
|
{
|
|
|
- b.Priority = priority;
|
|
|
b.Status = "p";
|
|
|
}
|
|
|
});
|
|
|
@@ -3487,12 +3484,10 @@ namespace Business.Replenishment
|
|
|
{
|
|
|
c.morder_state = MorderEnum.Initial_state;
|
|
|
});
|
|
|
- priority++;
|
|
|
}
|
|
|
_workOrdMaster.Update(workMasters);
|
|
|
await _businessDbContext.BulkUpdateAsync(mes_Morders);
|
|
|
await _businessDbContext.BulkUpdateAsync(weekPlan);
|
|
|
-
|
|
|
return "OK";
|
|
|
}
|
|
|
|
|
|
@@ -3517,16 +3512,13 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
}
|
|
|
List<WorkOrdMaster> workMasters = _workOrdMaster.Select(a => mes_Morders.Select(m => m.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == factoryid);
|
|
|
- decimal priority = 1;
|
|
|
for (int i = 0; i < weekPlan.Count; i++)
|
|
|
{
|
|
|
weekPlan[i].ProductionStatus = "已发布";
|
|
|
- weekPlan[i].Priority = priority;
|
|
|
workMasters.ForEach(b =>
|
|
|
{
|
|
|
if (b.ItemNum == weekPlan[i].ItemNumber && b.WorkOrd == weekPlan[i].ProductionOrder)
|
|
|
{
|
|
|
- b.Priority = priority;
|
|
|
b.Status = "p";
|
|
|
}
|
|
|
});
|
|
|
@@ -3534,7 +3526,6 @@ namespace Business.Replenishment
|
|
|
{
|
|
|
c.morder_state = MorderEnum.Initial_state;
|
|
|
});
|
|
|
- priority++;
|
|
|
}
|
|
|
//发布计划订单产生的工单
|
|
|
List<mes_morder> planMo = _mysql_mes_morder.GetListAsync(a => idList.Contains(a.Id) && string.IsNullOrEmpty(a.morder_state) && a.factory_id.ToString() == factoryid).Result;
|
|
|
@@ -4578,6 +4569,24 @@ namespace Business.Replenishment
|
|
|
{
|
|
|
//Mes_Morders.ForEach(s => { s.moentry_sys_stime = DateTime.Now.Date.AddDays((double)lookDay + 1); });
|
|
|
List<string> monolist = Mes_Morders.Select(c => c.morder_no).ToList();
|
|
|
+ if (string.IsNullOrEmpty(analogCalcVersion))
|
|
|
+ {
|
|
|
+ var workOrds = _workOrdMaster.Select(a => monolist.Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive).OrderBy(c => c.Priority).ToList();
|
|
|
+ List<mes_morder> PriorityList = new List<mes_morder>();
|
|
|
+ foreach (var item in workOrds)
|
|
|
+ {
|
|
|
+ var mesItem = Mes_Morders.Find(a => a.morder_no == item.WorkOrd);
|
|
|
+ if (mesItem != null)
|
|
|
+ {
|
|
|
+ PriorityList.Add(mesItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(PriorityList.Any())
|
|
|
+ {
|
|
|
+ Mes_Morders = PriorityList;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//清理PR的占用。
|
|
|
//如果PR没有转PO,则PR没有合并,就删除,有合并,就减少合并后的PR的数量。
|
|
|
//var prlist = _mysql_srm_pr_main.GetListAsync(s => monolist.Contains(s.pr_mono)).Result;
|
|
|
@@ -4894,6 +4903,7 @@ namespace Business.Replenishment
|
|
|
{
|
|
|
//如果有计划工单,则需要生成pr po oo
|
|
|
List<mo_srm_pr_main> prmainlist = new List<mo_srm_pr_main>();
|
|
|
+ List<srm_pr_main> pr_mainlist = new List<srm_pr_main>();
|
|
|
if (_CalcBomViewAppService.SRMPRDtoList.Any())
|
|
|
{
|
|
|
List<List<mo_srm_pr_main>> prlist = _CalcBomViewAppService.SRMPRDtoList.Where(f => f.srm_Pr_Main != null).Select(s => s.srm_Pr_Main).ToList();
|
|
|
@@ -4934,6 +4944,9 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
|
|
|
+ pr_mainlist.ForEach(a => { a.analogcalcversion = analogCalcVersion; });
|
|
|
}
|
|
|
//暂时屏蔽重新生成工单物料明细
|
|
|
List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
|
|
|
@@ -5093,7 +5106,7 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
}
|
|
|
//数据库需要减少的PR集合
|
|
|
- CalcPrDel(prDelList, dbPurchaseList, ic_items, DBprmainList.Where(x=>x.state==1).ToList(), updatPrList, deletePrList, prmainlist);//只取新增状态的PR,可以做删除或者修改
|
|
|
+ CalcPrDel(prDelList, dbPurchaseList, ic_items, DBprmainList.Where(x=>x.state==1).ToList(), updatPrList, deletePrList, pr_mainlist);//只取新增状态的PR,可以做删除或者修改
|
|
|
new NLogHelper("AlignmentCalcList").WriteLog("AlignmentCalcList", JsonConvert.SerializeObject(AlignmentCalcList), _currentTenant.Id.ToString());
|
|
|
}
|
|
|
|
|
|
@@ -5148,10 +5161,8 @@ namespace Business.Replenishment
|
|
|
var moentrylist = ObjectMapper.Map<List<mo_mes_moentry>, List<mes_moentry>>(_CalcBomViewAppService.moentriesInsertList);
|
|
|
_businessDbContext.BulkInsert(moentrylist);
|
|
|
}
|
|
|
- if (prmainlist.Any())
|
|
|
+ if (pr_mainlist.Any())
|
|
|
{
|
|
|
- var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
|
|
|
- pr_mainlist.ForEach(a => { a.analogcalcversion = analogCalcVersion;}) ;
|
|
|
_businessDbContext.BulkInsert(pr_mainlist);
|
|
|
}
|
|
|
if (_CalcBomViewAppService.newStockOccList.Any())
|
|
|
@@ -5207,7 +5218,7 @@ namespace Business.Replenishment
|
|
|
return rtn;
|
|
|
}
|
|
|
|
|
|
- public void CalcPrDel(List<AlignmentCalcDto> prDelList,List<srm_purchase> purchase,List<ic_item> ic_items, List<srm_pr_main> dbPrlist, List<srm_pr_main> updatPrList, List<srm_pr_main> deletePrList,List<mo_srm_pr_main> prmainlist)
|
|
|
+ public void CalcPrDel(List<AlignmentCalcDto> prDelList,List<srm_purchase> purchase,List<ic_item> ic_items, List<srm_pr_main> dbPrlist, List<srm_pr_main> updatPrList, List<srm_pr_main> deletePrList,List<srm_pr_main> prmainlist)
|
|
|
{
|
|
|
prDelList.ForEach(dto => {
|
|
|
var itemPurList = purchase.Where(x => x.number == dto.ItemNum).ToList();
|
|
|
@@ -5228,12 +5239,16 @@ namespace Business.Replenishment
|
|
|
moPr.pr_rqty = moPr.pr_aqty;
|
|
|
moPr.pr_sqty = moPr.pr_aqty;
|
|
|
dto.updateQty += qty;
|
|
|
+ qty = 0;
|
|
|
+ dto.updatePrlist.Add(moPr);
|
|
|
continue;
|
|
|
}
|
|
|
else if (moPr.pr_aqty == qty)//一个PR够减
|
|
|
{
|
|
|
dto.deleteQty += qty;
|
|
|
prmainlist.Remove(moPr);
|
|
|
+ qty = 0;
|
|
|
+ dto.deletePrlist.Add(moPr);
|
|
|
continue;
|
|
|
}
|
|
|
else
|
|
|
@@ -5241,37 +5256,48 @@ namespace Business.Replenishment
|
|
|
dto.deleteQty += moPr.pr_aqty.GetValueOrDefault();
|
|
|
qty -= moPr.pr_aqty.GetValueOrDefault();
|
|
|
prmainlist.Remove(moPr);
|
|
|
+ dto.deletePrlist.Add(moPr);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //当前物料当前供应商的在途采购申请
|
|
|
- var itemSupplierList = dbPrlist.Where(x => x.icitem_id == icitem.Id && x.pr_purchaseid == c.supplier_id).OrderByDescending(f => f.pr_sarrive_date).ToList();
|
|
|
- if (itemSupplierList.Any())
|
|
|
+ if (qty > 0)
|
|
|
{
|
|
|
- foreach (var itemPr in itemSupplierList)
|
|
|
+ //当前物料当前供应商的在途采购申请
|
|
|
+ var itemSupplierList = dbPrlist.Where(x => x.icitem_id == icitem.Id && x.pr_purchaseid == c.supplier_id).OrderByDescending(f => f.pr_sarrive_date).ToList();
|
|
|
+ if (itemSupplierList.Any())
|
|
|
{
|
|
|
- if (itemPr.pr_aqty > qty)//一个PR够减
|
|
|
- {
|
|
|
- itemPr.pr_aqty = itemPr.pr_aqty - qty;
|
|
|
- itemPr.pr_rqty = itemPr.pr_aqty;
|
|
|
- itemPr.pr_sqty = itemPr.pr_aqty;
|
|
|
- updatPrList.Add(itemPr);
|
|
|
- dto.updatePrlist.Add(itemPr);
|
|
|
- dto.updateQty = qty;
|
|
|
- continue;
|
|
|
- }
|
|
|
- else if (itemPr.pr_aqty == qty)//一个PR够减
|
|
|
+ foreach (var itemPr in itemSupplierList)
|
|
|
{
|
|
|
- dto.deleteQty += qty;
|
|
|
- deletePrList.Add(itemPr);
|
|
|
- dto.deletePrlist.Add(itemPr);
|
|
|
- continue;
|
|
|
- }
|
|
|
- else {
|
|
|
- dto.deleteQty += itemPr.pr_aqty.GetValueOrDefault();
|
|
|
- qty -= itemPr.pr_aqty.GetValueOrDefault();
|
|
|
- deletePrList.Add(itemPr);
|
|
|
- dto.deletePrlist.Add(itemPr);
|
|
|
+ if (itemPr.pr_aqty > qty)//一个PR够减
|
|
|
+ {
|
|
|
+ itemPr.pr_aqty = itemPr.pr_aqty - qty;
|
|
|
+ itemPr.pr_rqty = itemPr.pr_aqty;
|
|
|
+ itemPr.pr_sqty = itemPr.pr_aqty;
|
|
|
+ updatPrList.Add(itemPr);
|
|
|
+ dto.updatePrlist.Add(itemPr);
|
|
|
+ dto.updateQty = qty;
|
|
|
+ qty = 0;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ else if (itemPr.pr_aqty == qty)//一个PR够减
|
|
|
+ {
|
|
|
+ dto.deleteQty += qty;
|
|
|
+ deletePrList.Add(itemPr);
|
|
|
+ dto.deletePrlist.Add(itemPr);
|
|
|
+ qty = 0;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ dto.deleteQty += itemPr.pr_aqty.GetValueOrDefault();
|
|
|
+ qty -= itemPr.pr_aqty.GetValueOrDefault();
|
|
|
+ deletePrList.Add(itemPr);
|
|
|
+ dto.deletePrlist.Add(itemPr);
|
|
|
+ }
|
|
|
+ if (qty == 0)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|