tangdi 2 лет назад
Родитель
Сommit
9f0eed6b3e

+ 33 - 1
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -5012,10 +5012,21 @@ namespace Business.Replenishment
                     var prAddList = AlignmentCalcList.Where(x => x.DifferenceQty > 0).ToList();
                     //需要减少PR的集合
                     var prDelList = AlignmentCalcList.Where(x => x.DifferenceQty < 0).ToList();
-                    var dbPurchaseList = _srm_purchase.GetListAsync(x => AlignmentCalcList.Select(c => c.ItemNum).Contains(x.number)).Result;
+                    var dbPurchaseList = _mysql_srm_purchase.GetListAsync(x => x.factory_id == param.factoryId && x.quota_rate.GetValueOrDefault() > 0 && AlignmentCalcList.Select(c => c.ItemNum).Contains(x.number)).Result;
                     //获取需要新增的PR
+                    var sysSet = _generalizedCodeMaster.Select(s => s.FldName == "SystemConfig" && s.Val == "ScheduleAgreement" && s.Domain == factoryId.ToString()).ToList();
+                    int ScheduleAgreement = 0;//计划协议 0不启用,1启用
+                    if (sysSet.Any())
+                    {
+                        if (!string.IsNullOrEmpty(sysSet[0].Ufld1))
+                        {
+                            int.TryParse(sysSet[0].Ufld1, out ScheduleAgreement);
+                        }
+                    }
+
 
                     //数据库需要减少的PR集合
+                    CalcPrDel(prDelList, dbPurchaseList, ic_items, DBprmainList.Where(x=>x.state==1).ToList());//只取新增状态的PR,可以做删除或者修改
                 }
 
                 using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
@@ -5116,6 +5127,27 @@ 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)
+        {
+            prDelList.ForEach(dto => {
+                var itemPurList = purchase.Where(x => x.number == dto.ItemNum).ToList();
+                var icitem = ic_items.Find(x => x.number == dto.ItemNum);
+                if (itemPurList.Any() && icitem!=null)
+                {
+                    decimal minQty = 999999999;
+                    var itemPrs = dbPrlist.Where(x => x.icitem_id == icitem.Id).ToList();
+                    itemPurList.ForEach(c => {
+                        decimal diffQty = Math.Floor(Math.Abs(dto.DifferenceQty) * c.quota_rate.GetValueOrDefault() / 100);
+                        if (diffQty < minQty)
+                        {
+                            diffQty = minQty;
+                        }
+                    });
+
+                }
+            });
+        }
+
         public async Task ExamineResultInsertDBAsync(List<ExamineResult> examines)
         {
             //检查结果写入数据库