Murphy 2 лет назад
Родитель
Сommit
97485c86c6

+ 28 - 2
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -5725,7 +5725,18 @@ 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>();
-                for(int i=0;i<4;i++)
+                Dictionary<string, decimal> weekStockQty = new Dictionary<string, decimal>();
+                foreach(var item in itemListStock)
+                {
+                    if(!weekStockQty.ContainsKey(item.MATNR))
+                    {
+                        weekStockQty.Add(item.MATNR, item.LABST + item.INSME);
+                    }else
+                    {
+                        weekStockQty[item.MATNR] += (item.LABST + item.INSME);
+                    }
+                }
+                for (int i=0;i<4;i++)
                 {
                     var itemBegin = beginTime.AddDays(i*7);
                     var itemEnd = endTime.AddDays(7 * i-21);
@@ -5756,6 +5767,7 @@ namespace Business.ResourceExamineManagement
 
                         }
                         var requestdate = workItem.Min(a => a.OrdDate);
+ 
                         if(itemQty.Count>0)
                         {
                             foreach (var d in itemQty)
@@ -5771,7 +5783,21 @@ namespace Business.ResourceExamineManagement
                                 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);
-                                itemds.locqty = itemListStock.Where(a=>a.MATNR==d.ItemNum).Sum(a=>a.LABST+a.INSME);
+                                //库存需要做扣减
+                                if(weekStockQty.ContainsKey(d.ItemNum))
+                                {
+                                    itemds.locqty = weekStockQty[d.ItemNum];
+                                    if(itemds.mesqty>= itemds.locqty)
+                                    {
+                                        weekStockQty[d.ItemNum] = 0;
+                                    }else
+                                    {
+                                        weekStockQty[d.ItemNum] -= itemds.mesqty;
+                                    }
+                                }else
+                                {
+                                    itemds.locqty = 0;
+                                }
                                 //累计在途数量
                                 itemds.sechedqty = dsList.Where(a => a.requestdate<itemds.arrivaldate && a.itemnum==d.ItemNum).Sum(a=>a.schedqty-a.sentqty);
                                 itemds.tosechedqty = itemds.mesqty-(itemds.locqty + itemds.sechedqty);