diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index e8f0bc3..915a401 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -15,14 +15,15 @@ namespace BBWYB.Server.Business { private PurchaseProductAPIService purchaseProductAPIService; private RestApiService restApiService; - + private AggregionPurchaserBusiness aggregionPurchaserBusiness; private IList invalidOrderStateList; public PurchaseSchemeBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, PurchaseProductAPIService purchaseProductAPIService, - RestApiService restApiService) : base(fsql, nLogManager, idGenerator) + RestApiService restApiService, + AggregionPurchaserBusiness aggregionPurchaserBusiness) : base(fsql, nLogManager, idGenerator) { this.purchaseProductAPIService = purchaseProductAPIService; this.restApiService = restApiService; @@ -33,6 +34,7 @@ namespace BBWYB.Server.Business Enums.OrderState.等待采购, Enums.OrderState.部分采购 }; + this.aggregionPurchaserBusiness = aggregionPurchaserBusiness; } private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest @@ -216,6 +218,7 @@ namespace BBWYB.Server.Business List dbSchemeGroupList = null; List dbPurchaseSchemeList = null; List deleteSchemeIdList = new List(); + List aggregationPurchaserIdList = new List(); #region 数据验证 if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) && @@ -356,6 +359,8 @@ namespace BBWYB.Server.Business if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { + aggregationPurchaserIdList.AddRange(batchCURDSchemeRequest.AddPurchaseSchemeList.SelectMany(s => s.PurchaseSchemeProductList.Select(psp => psp.PurchaserId)).ToList()); + var firstScheme = batchCURDSchemeRequest.AddPurchaseSchemeList.First(); ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); @@ -475,6 +480,8 @@ namespace BBWYB.Server.Business #region 更新采购方案 if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) { + aggregationPurchaserIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.SelectMany(s => s.PurchaseSchemeProductList.Select(psp => psp.PurchaserId)).ToList()); + ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList); var editSchemeIdList = batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id).ToList(); var dbPurchaseSchemes = GetPurchaseSchemeList(new QuerySchemeRequest() @@ -618,6 +625,9 @@ namespace BBWYB.Server.Business //删除信息残缺的采购方案 if (deleteSchemeIdList.Count() > 0) DeletePurchaseScheme(deleteSchemeIdList); + + aggregationPurchaserIdList = aggregationPurchaserIdList.Distinct().ToList(); + aggregionPurchaserBusiness.AggregionByPurchaserIdList(aggregationPurchaserIdList); } /// @@ -1007,33 +1017,19 @@ namespace BBWYB.Server.Business public void DeletePurchaseScheme(long schemeId) { - //IDelete? deletePsg = null; - //var purchaseScheme = fsql.Select(schemeId).ToOne(); - //if (purchaseScheme == null) - // throw new BusinessException("采购方案不存在"); - //if (purchaseScheme.SchemeGroupId != 0) - //{ - // var sameGroupSchemeCount = fsql.Select().Where(ps => ps.SchemeGroupId == purchaseScheme.SchemeGroupId && - // ps.Id != purchaseScheme.Id).Count(); - // if (sameGroupSchemeCount == 0) - // deletePsg = fsql.Delete(purchaseScheme.SchemeGroupId); - //} - //fsql.Transaction(() => - //{ - // deletePsg?.ExecuteAffrows(); - // fsql.Delete(schemeId).ExecuteAffrows(); - // fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); - // fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); - //}); - DeletePurchaseScheme(new List() { schemeId }); + DeletePurchaseScheme(new List() { schemeId }, true); } - public void DeletePurchaseScheme(List schemeIdList) + public void DeletePurchaseScheme(List schemeIdList, bool isAggregationPurchaser = false) { IList deleteSchemeGroupIdList = new List(); var purchaseSchemeList = fsql.Select(schemeIdList).ToList(); if (purchaseSchemeList.Count() == 0) return; + var purchaserIdList = isAggregationPurchaser ? + fsql.Select().Where(psp => schemeIdList.Contains(psp.SkuPurchaseSchemeId)) + .Distinct() + .ToList(psp => psp.PurchaserId) : null; var schemeGroupIdList = purchaseSchemeList.Where(ps => ps.SchemeGroupId != 0).Select(ps => ps.SchemeGroupId).ToList(); var sameSchemeGroupCountGroups = fsql.Select().Where(ps => ps.SchemeGroupId != 0 && schemeGroupIdList.Contains(ps.SchemeGroupId) && @@ -1055,6 +1051,8 @@ namespace BBWYB.Server.Business } } + + fsql.Transaction(() => { if (deleteSchemeGroupIdList.Count() > 0) @@ -1063,6 +1061,11 @@ namespace BBWYB.Server.Business fsql.Delete().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); fsql.Delete().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); }); + + if (purchaserIdList != null && purchaserIdList.Count() > 0 && isAggregationPurchaser) + { + aggregionPurchaserBusiness.AggregionByPurchaserIdList(purchaserIdList); + } } ///