|
@@ -5751,6 +5751,32 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
|
|
|
+ var demanddeletedList = _mysql_ic_demandschedule.GetListAsync(a => a.ishistoryversion != "Y" && a.status != "P").Result;
|
|
|
|
|
+ demanddeletedList.ForEach(ds =>
|
|
|
|
|
+ {
|
|
|
|
|
+ ds.IsDeleted = true;
|
|
|
|
|
+ ds.update_time = DateTime.Now;
|
|
|
|
|
+ ds.remarks = $"{DateTime.Now.ToString()},重新生成交货计划把未发布交货计划软删除";
|
|
|
|
|
+ });
|
|
|
|
|
+ await _businessDbContext.BulkUpdateAsync(demanddeletedList);
|
|
|
|
|
+
|
|
|
|
|
+ var dsdeletedList = _srm_polist_ds.Select(a => a.isactive == 1 && a.status == "N");
|
|
|
|
|
+ dsdeletedList.ForEach(ds =>
|
|
|
|
|
+ {
|
|
|
|
|
+ ds.isactive = 0;
|
|
|
|
|
+ ds.updatetime = DateTime.Now;
|
|
|
|
|
+ ds.remarks = $"{DateTime.Now.ToString()},重新生成交货计划把未发布交货单禁用";
|
|
|
|
|
+ });
|
|
|
|
|
+ await _businessDbContext.BulkUpdateAsync(dsdeletedList);
|
|
|
|
|
+ var historyversionList = _mysql_ic_demandschedule.GetListAsync(a => a.ishistoryversion != "Y").Result;
|
|
|
|
|
+ historyversionList.ForEach(a =>
|
|
|
|
|
+ {
|
|
|
|
|
+ a.ishistoryversion = "Y";
|
|
|
|
|
+ a.historyversionTime = DateTime.Now;
|
|
|
|
|
+ });
|
|
|
|
|
+ await _businessDbContext.BulkUpdateAsync(historyversionList);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
var weekday = (int)DateTime.Now.DayOfWeek;
|
|
var weekday = (int)DateTime.Now.DayOfWeek;
|
|
|
int adddays = weekday==0?1:8-weekday;
|
|
int adddays = weekday==0?1:8-weekday;
|
|
|
DateTime beginTime = Convert.ToDateTime(DateTime.Now.AddDays(adddays).ToString("yyyy-MM-dd 00:00:00.000"));
|
|
DateTime beginTime = Convert.ToDateTime(DateTime.Now.AddDays(adddays).ToString("yyyy-MM-dd 00:00:00.000"));
|
|
@@ -5775,7 +5801,7 @@ namespace Business.ResourceExamineManagement
|
|
|
var examineIds = workExamineResult.Select(s => s.examineId).ToList();
|
|
var examineIds = workExamineResult.Select(s => s.examineId).ToList();
|
|
|
var examines=_mysql_bom_child_examine.GetListAsync(a => examineIds.Contains(a.examine_id.Value) && (a.erp_cls==3 || a.erp_cls==2) && a.is_use && a.factory_id.ToString() == domain).Result;
|
|
var examines=_mysql_bom_child_examine.GetListAsync(a => examineIds.Contains(a.examine_id.Value) && (a.erp_cls==3 || a.erp_cls==2) && a.is_use && a.factory_id.ToString() == domain).Result;
|
|
|
var pickBills = _nbrDetail.Select(a => workordListPickBill.Contains(a.WorkOrd) && a.Type.ToUpper()=="SM" && (a.QtyOrd - a.QtyRec)>0 && a.Domain == domain && a.Status.ToUpper()!="C");
|
|
var pickBills = _nbrDetail.Select(a => workordListPickBill.Contains(a.WorkOrd) && a.Type.ToUpper()=="SM" && (a.QtyOrd - a.QtyRec)>0 && a.Domain == domain && a.Status.ToUpper()!="C");
|
|
|
- var dsList=_srm_polist_ds.Select(a => a.requestdate <= endTime && a.domain==domain && a.isactive==1);
|
|
|
|
|
|
|
+ var dsList=_srm_polist_ds.Select(a =>a.domain==domain && a.isactive==1 &&a.status=="P");
|
|
|
var items = examines.Select(e => e.item_number).Distinct().ToList();
|
|
var items = examines.Select(e => e.item_number).Distinct().ToList();
|
|
|
var itempickbills=pickBills.Select(s => s.ItemNum);
|
|
var itempickbills=pickBills.Select(s => s.ItemNum);
|
|
|
items.AddRange(itempickbills);
|
|
items.AddRange(itempickbills);
|
|
@@ -5791,6 +5817,7 @@ namespace Business.ResourceExamineManagement
|
|
|
var itemListStock = _SAPInv.Select(a => items.Contains(a.MATNR) && locationList.Contains(a.LGORT) && a.WERKS == domain);
|
|
var itemListStock = _SAPInv.Select(a => items.Contains(a.MATNR) && locationList.Contains(a.LGORT) && a.WERKS == domain);
|
|
|
List<ic_demandschedule> ds = new List<ic_demandschedule>();
|
|
List<ic_demandschedule> ds = new List<ic_demandschedule>();
|
|
|
Dictionary<string, decimal> weekStockQty = new Dictionary<string, decimal>();
|
|
Dictionary<string, decimal> weekStockQty = new Dictionary<string, decimal>();
|
|
|
|
|
+ Dictionary<string, decimal> weekdsQty = new Dictionary<string, decimal>();
|
|
|
foreach (var item in itemListStock)
|
|
foreach (var item in itemListStock)
|
|
|
{
|
|
{
|
|
|
if(!weekStockQty.ContainsKey(item.MATNR))
|
|
if(!weekStockQty.ContainsKey(item.MATNR))
|
|
@@ -5801,6 +5828,17 @@ namespace Business.ResourceExamineManagement
|
|
|
weekStockQty[item.MATNR] += (item.LABST + item.INSME);
|
|
weekStockQty[item.MATNR] += (item.LABST + item.INSME);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ foreach(var item in dsList)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!weekdsQty.ContainsKey(item.itemnum))
|
|
|
|
|
+ {
|
|
|
|
|
+ weekdsQty.Add(item.itemnum, item.schedqty - item.sentqty);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ weekdsQty[item.itemnum] += (item.schedqty - item.sentqty);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
for (int i=0;i<8;i++)
|
|
for (int i=0;i<8;i++)
|
|
|
{
|
|
{
|
|
|
var itemBegin = beginTime.AddDays(i*7);
|
|
var itemBegin = beginTime.AddDays(i*7);
|
|
@@ -5863,23 +5901,41 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
itemds.mesqty = d.NeedQty;
|
|
itemds.mesqty = d.NeedQty;
|
|
|
}
|
|
}
|
|
|
- //库存需要做扣减
|
|
|
|
|
- if(weekStockQty.ContainsKey(d.ItemNum))
|
|
|
|
|
|
|
+ //库存扣减量
|
|
|
|
|
+ decimal stockDeduction = 0;
|
|
|
|
|
+ if (weekStockQty.ContainsKey(d.ItemNum))
|
|
|
{
|
|
{
|
|
|
itemds.locqty = weekStockQty[d.ItemNum];
|
|
itemds.locqty = weekStockQty[d.ItemNum];
|
|
|
if(itemds.mesqty>= itemds.locqty)
|
|
if(itemds.mesqty>= itemds.locqty)
|
|
|
{
|
|
{
|
|
|
weekStockQty[d.ItemNum] = 0;
|
|
weekStockQty[d.ItemNum] = 0;
|
|
|
- }else
|
|
|
|
|
|
|
+ stockDeduction = itemds.locqty;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
{
|
|
{
|
|
|
weekStockQty[d.ItemNum] -= itemds.mesqty;
|
|
weekStockQty[d.ItemNum] -= itemds.mesqty;
|
|
|
|
|
+ stockDeduction = itemds.mesqty;
|
|
|
}
|
|
}
|
|
|
}else
|
|
}else
|
|
|
{
|
|
{
|
|
|
itemds.locqty = 0;
|
|
itemds.locqty = 0;
|
|
|
}
|
|
}
|
|
|
- //累计在途数量
|
|
|
|
|
- itemds.sechedqty = dsList.Where(a => a.requestdate<itemds.arrivaldate && a.itemnum==d.ItemNum).Sum(a=>a.schedqty-a.sentqty);
|
|
|
|
|
|
|
+ if (weekdsQty.ContainsKey(d.ItemNum))
|
|
|
|
|
+ {
|
|
|
|
|
+ itemds.sechedqty = weekdsQty[d.ItemNum];
|
|
|
|
|
+ //优先扣减库存,库存不够扣减交货单在途
|
|
|
|
|
+ if(itemds.mesqty-stockDeduction- itemds.sechedqty>=0)
|
|
|
|
|
+ {
|
|
|
|
|
+ weekdsQty[d.ItemNum] = 0;
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ weekdsQty[d.ItemNum] -= itemds.mesqty - stockDeduction;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ itemds.sechedqty = 0;
|
|
|
|
|
+ }
|
|
|
itemds.tosechedqty = itemds.mesqty-(itemds.locqty + itemds.sechedqty);
|
|
itemds.tosechedqty = itemds.mesqty-(itemds.locqty + itemds.sechedqty);
|
|
|
itemds.status = "";
|
|
itemds.status = "";
|
|
|
itemds.remarks = "";
|
|
itemds.remarks = "";
|
|
@@ -5907,25 +5963,43 @@ namespace Business.ResourceExamineManagement
|
|
|
itemds.arrivaldate = itemBegin.AddDays(-1).AddDays(-itemNum.InsLT).AddDays(-(int)Math.Ceiling(itemNum.MFGMTTR));
|
|
itemds.arrivaldate = itemBegin.AddDays(-1).AddDays(-itemNum.InsLT).AddDays(-(int)Math.Ceiling(itemNum.MFGMTTR));
|
|
|
itemds.shortqty = 0;
|
|
itemds.shortqty = 0;
|
|
|
itemds.mesqty = pickBills.Where(a => a.ItemNum == item).Sum(q => q.QtyOrd - q.QtyRec);
|
|
itemds.mesqty = pickBills.Where(a => a.ItemNum == item).Sum(q => q.QtyOrd - q.QtyRec);
|
|
|
- //库存需要做扣减
|
|
|
|
|
|
|
+ //库存扣减量
|
|
|
|
|
+ decimal stockDeduction = 0;
|
|
|
if (weekStockQty.ContainsKey(item))
|
|
if (weekStockQty.ContainsKey(item))
|
|
|
{
|
|
{
|
|
|
itemds.locqty = weekStockQty[item];
|
|
itemds.locqty = weekStockQty[item];
|
|
|
if (itemds.mesqty >= itemds.locqty)
|
|
if (itemds.mesqty >= itemds.locqty)
|
|
|
{
|
|
{
|
|
|
weekStockQty[item] = 0;
|
|
weekStockQty[item] = 0;
|
|
|
|
|
+ stockDeduction = itemds.locqty;
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
weekStockQty[item] -= itemds.mesqty;
|
|
weekStockQty[item] -= itemds.mesqty;
|
|
|
|
|
+ stockDeduction = itemds.mesqty;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
itemds.locqty = 0;
|
|
itemds.locqty = 0;
|
|
|
}
|
|
}
|
|
|
- //累计在途数量
|
|
|
|
|
- itemds.sechedqty = dsList.Where(a => a.requestdate < itemds.arrivaldate && a.itemnum == item).Sum(a => a.schedqty - a.sentqty);
|
|
|
|
|
|
|
+ if (weekdsQty.ContainsKey(item))
|
|
|
|
|
+ {
|
|
|
|
|
+ itemds.sechedqty = weekdsQty[item];
|
|
|
|
|
+ //优先扣减库存,库存不够扣减交货单在途
|
|
|
|
|
+ if (itemds.mesqty - stockDeduction - itemds.sechedqty >= 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ weekdsQty[item] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ weekdsQty[item] -= itemds.mesqty - stockDeduction;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ itemds.sechedqty = 0;
|
|
|
|
|
+ }
|
|
|
itemds.tosechedqty = itemds.mesqty - (itemds.locqty + itemds.sechedqty);
|
|
itemds.tosechedqty = itemds.mesqty - (itemds.locqty + itemds.sechedqty);
|
|
|
itemds.status = "";
|
|
itemds.status = "";
|
|
|
itemds.remarks = "";
|
|
itemds.remarks = "";
|
|
@@ -5938,8 +6012,6 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- await _mysql_ic_demandschedule.HardDeleteAsync(a => a.status != "P");
|
|
|
|
|
- _srm_polist_ds.Delete(a=>a.status=="N");
|
|
|
|
|
await _businessDbContext.BulkInsertAsync(ds);
|
|
await _businessDbContext.BulkInsertAsync(ds);
|
|
|
return "ok";
|
|
return "ok";
|
|
|
}
|
|
}
|