|
|
@@ -5703,8 +5703,12 @@ namespace Business.ResourceExamineManagement
|
|
|
int adddays = weekday==0?1:8-weekday;
|
|
|
DateTime beginTime = Convert.ToDateTime(DateTime.Now.AddDays(adddays).ToString("yyyy-MM-dd 00:00:00.000"));
|
|
|
DateTime endTime = Convert.ToDateTime(DateTime.Now.AddDays(adddays+21+6).ToString("yyyy-MM-dd 23:59:59.999"));
|
|
|
- var workords=_workOrdMaster.Select(a => a.OrdDate >= beginTime && a.OrdDate <= endTime && a.Domain == domain);
|
|
|
- var workordList = workords.Select(x => x.WorkOrd).Distinct().ToList();
|
|
|
+ var workords=_workOrdMaster.Select(a => a.OrdDate >= beginTime && a.OrdDate <= endTime && a.Domain == domain && a.Status!="C");
|
|
|
+ var workordList = workords.Select(x => x.WorkOrd).Distinct().ToList();
|
|
|
+
|
|
|
+ var workordsPickBill = _workOrdMaster.Select(a => a.OrdDate < beginTime && (a.Status=="R"|| a.Status=="W") && a.Domain == domain);
|
|
|
+ var workordListPickBill = workordsPickBill.Select(x => x.WorkOrd).Distinct().ToList();
|
|
|
+
|
|
|
var workExamineResult=_businessBangDbContext.b_examine_result.Where(a => workordList.Contains(a.morder_no) && a.factory_id.ToString()==domain).GroupBy(i => i.morder_no).Select(g => new
|
|
|
{
|
|
|
workOrd = g.Key,
|
|
|
@@ -5713,7 +5717,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//需要测试工单没有做资源检查会不会报错
|
|
|
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.is_use && a.factory_id.ToString() == domain).Result;
|
|
|
- var pickBills = _nbrDetail.Select(a => workordList.Contains(a.WorkOrd) && a.Type.ToUpper()=="SM" && a.Domain == domain);
|
|
|
+ var pickBills = _nbrDetail.Select(a => workordListPickBill.Contains(a.WorkOrd) && a.Type.ToUpper()=="SM" && a.Domain == domain);
|
|
|
var dsList=_srm_polist_ds.Select(a => a.requestdate <= endTime && a.domain==domain);
|
|
|
var itemList = _itemMaster.Select(a => examines.Select(e=>e.item_number).Distinct().ToList().Contains(a.ItemNum) && a.Domain == domain);
|
|
|
var locationRange = _configurationItem.Select(x => x.FldName == "MRPLocationRange" && x.Domain == domain).FirstOrDefault();
|
|
|
@@ -5726,7 +5730,8 @@ namespace Business.ResourceExamineManagement
|
|
|
var itemListStock = _SAPInv.Select(a => examines.Select(e => e.item_number).Distinct().ToList().Contains(a.MATNR) && locationList.Contains(a.LGORT) && a.WERKS == domain);
|
|
|
List<ic_demandschedule> ds = new List<ic_demandschedule>();
|
|
|
Dictionary<string, decimal> weekStockQty = new Dictionary<string, decimal>();
|
|
|
- foreach(var item in itemListStock)
|
|
|
+ Dictionary<string, bool> weekPickBillQty = new Dictionary<string, bool>();
|
|
|
+ foreach (var item in itemListStock)
|
|
|
{
|
|
|
if(!weekStockQty.ContainsKey(item.MATNR))
|
|
|
{
|
|
|
@@ -5746,7 +5751,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
foreach (var item in workItem)
|
|
|
{
|
|
|
- var examids = workExamineResult.First(a => item.WorkOrd==a.workOrd);
|
|
|
+ var examids = workExamineResult.Find(a => item.WorkOrd==a.workOrd);
|
|
|
if(examids!=null && examids.examineId>0)
|
|
|
{
|
|
|
var itemLackList=examines.Where(a => a.examine_id == examids.examineId).ToList();
|
|
|
@@ -5763,8 +5768,10 @@ namespace Business.ResourceExamineManagement
|
|
|
itemQty.Add(demandscheduleDto);
|
|
|
}
|
|
|
});
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ new NLogHelper("ResourceExamineAppService").WriteLog("CreateDemandSchedule", "生成交货计划:" + item.WorkOrd+"找不到资源检查记录", _currentTenant.Id.ToString());
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
var requestdate = workItem.Min(a => a.OrdDate);
|
|
|
|
|
|
@@ -5781,8 +5788,17 @@ namespace Business.ResourceExamineManagement
|
|
|
itemds.requestdate = requestdate.GetValueOrDefault();
|
|
|
itemds.arrivaldate = requestdate.GetValueOrDefault().AddDays(-1).AddDays(-itemNum.InsLT).AddDays(-(int)Math.Ceiling(itemNum.MFGMTTR));
|
|
|
itemds.shortqty =d.LackQty;
|
|
|
- //工单需求+已下达工单领料单待发料
|
|
|
- itemds.mesqty =d.NeedQty + pickBills.Where(a=> workItem.Select(s=>s.WorkOrd).Contains(a.WorkOrd) && a.ItemNum== d.ItemNum).Sum(q=>q.QtyOrd-q.QtyRec);
|
|
|
+ //工单需求+已下达工单领料单待发料(只算第一次)
|
|
|
+ if (weekPickBillQty.ContainsKey(d.ItemNum))
|
|
|
+ {
|
|
|
+ itemds.mesqty = d.NeedQty;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ itemds.mesqty = d.NeedQty + pickBills.Where(a => a.ItemNum == d.ItemNum).Sum(q => q.QtyOrd - q.QtyRec);
|
|
|
+ weekPickBillQty.Add(d.ItemNum, true);
|
|
|
+ }
|
|
|
+
|
|
|
//库存需要做扣减
|
|
|
if(weekStockQty.ContainsKey(d.ItemNum))
|
|
|
{
|