Przeglądaj źródła

占用逻辑调整。

tangdi 2 lat temu
rodzic
commit
0ef50b46f2

+ 24 - 5
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -2031,6 +2031,13 @@ namespace Business.ResourceExamineManagement
                 {
                     locationList = locationRange.Val.SplitToArray(",").ToList();
                 }
+                if (!param.checkPlan)
+                {
+                    if (locationList.Contains("1000"))
+                    {
+                        locationList.Remove("1000");
+                    }
+                }
                 var locStock = _invMaster.Select(a => numbers.Contains(a.ItemNum) && a.IsActive && a.Domain == factoryId.ToString() && locationList.Contains(a.Location));
                 var sapInvList = _SAPInv.Select(a => a.WERKS == factoryId.ToString() && numbers.Contains(a.MATNR) && (a.SOBKZ.ToUpper() == "O" || locationList.Contains(a.LGORT)));
 
@@ -2048,7 +2055,10 @@ namespace Business.ResourceExamineManagement
                         }
                         item.sqty += lctQty;
                     }
-                    item.sqty += sapInvList.Where(x => x.MATNR == item.icitem_number && x.SOBKZ.ToUpper() == "O").Sum(p => p.LABST + p.INSME);
+                    if (param.checkPlan)
+                    {
+                        item.sqty += sapInvList.Where(x => x.MATNR == item.icitem_number && x.SOBKZ.ToUpper() == "O").Sum(p => p.LABST + p.INSME);
+                    }
                 });
                 var moIcitemStokc = ObjectMapper.Map<List<ic_item_stock>, List<mo_ic_item_stock>>(icitemStokc);
                 moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId()); });
@@ -2061,9 +2071,18 @@ namespace Business.ResourceExamineManagement
             {
                 //根据工单表找到工单明细,然后根据DOP工单占用记录,对比工单明细发货数量,来做冲销。
                 var workdetails = _workOrdDetail.Select(s => workordmsters.Select(c => c.WorkOrd).Contains(s.WorkOrd));
+                List<ic_item_stockoccupy> item_occupy = new List<ic_item_stockoccupy>();
+                if (!param.checkPlan)
+                {
+                    //在库检,只计算下达工单的占用。
+                    var pwork = workordmsters.Where(x => x.Status.ToLower() == "r").ToList();
+                    item_occupy = _mysql_ic_item_stockoccupy.GetListAsync(p => p.company_id == companyId && itemIds.Contains(p.icitem_id) && pwork.Select(c => c.WorkOrd).Contains(p.morder_mo)).Result;
+                }
+                else {
+                    //物料库存占用记录表
+                    item_occupy = _mysql_ic_item_stockoccupy.GetListAsync(p => p.company_id == companyId && itemIds.Contains(p.icitem_id) && workordmsters.Select(c => c.WorkOrd).Contains(p.morder_mo)).Result;
+                }
 
-                //物料库存占用记录表
-                var item_occupy = _mysql_ic_item_stockoccupy.GetListAsync(p => p.company_id == companyId && itemIds.Contains(p.icitem_id)&& workordmsters.Select(c => c.WorkOrd).Contains(p.morder_mo)).Result;
                 if (item_occupy.Any())
                 {
                     item_occupy.ForEach(s =>
@@ -3401,11 +3420,11 @@ namespace Business.ResourceExamineManagement
             {
                 priorityMorderList = mo_Mes_Morders;
             }
-            if (!planCheck)
+            /*if (!planCheck)
             {
                 //如果是齐套检查,则不考虑其他数据的占用,只看原材料库存
                 sklist = new List<mo_ic_item_stockoccupy>();
-            }
+            }*/
             _morderAppService.param = param;
             _purchaseOrderAppService.param = param;
             _CalcBomViewAppService.param = param;