Browse Source

在更新采购方案时更新采购商聚合信息

liangku_skuoptimazation
shanji 1 year ago
parent
commit
b9f104fe36
  1. 47
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

47
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<Enums.OrderState?> 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<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest
@ -216,6 +218,7 @@ namespace BBWYB.Server.Business
List<PurchaseSchemeGroup> dbSchemeGroupList = null;
List<PurchaseScheme> dbPurchaseSchemeList = null;
List<long> deleteSchemeIdList = new List<long>();
List<string> aggregationPurchaserIdList = new List<string>();
#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);
}
/// <summary>
@ -1007,33 +1017,19 @@ namespace BBWYB.Server.Business
public void DeletePurchaseScheme(long schemeId)
{
//IDelete<PurchaseSchemeGroup>? deletePsg = null;
//var purchaseScheme = fsql.Select<PurchaseScheme>(schemeId).ToOne();
//if (purchaseScheme == null)
// throw new BusinessException("采购方案不存在");
//if (purchaseScheme.SchemeGroupId != 0)
//{
// var sameGroupSchemeCount = fsql.Select<PurchaseScheme>().Where(ps => ps.SchemeGroupId == purchaseScheme.SchemeGroupId &&
// ps.Id != purchaseScheme.Id).Count();
// if (sameGroupSchemeCount == 0)
// deletePsg = fsql.Delete<PurchaseSchemeGroup>(purchaseScheme.SchemeGroupId);
//}
//fsql.Transaction(() =>
//{
// deletePsg?.ExecuteAffrows();
// fsql.Delete<PurchaseScheme>(schemeId).ExecuteAffrows();
// fsql.Delete<PurchaseSchemeProduct>().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
// fsql.Delete<PurchaseSchemeProductSku>().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
//});
DeletePurchaseScheme(new List<long>() { schemeId });
DeletePurchaseScheme(new List<long>() { schemeId }, true);
}
public void DeletePurchaseScheme(List<long> schemeIdList)
public void DeletePurchaseScheme(List<long> schemeIdList, bool isAggregationPurchaser = false)
{
IList<long> deleteSchemeGroupIdList = new List<long>();
var purchaseSchemeList = fsql.Select<PurchaseScheme>(schemeIdList).ToList();
if (purchaseSchemeList.Count() == 0)
return;
var purchaserIdList = isAggregationPurchaser ?
fsql.Select<PurchaseSchemeProduct>().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<PurchaseScheme>().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<PurchaseSchemeProduct>().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
fsql.Delete<PurchaseSchemeProductSku>().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
});
if (purchaserIdList != null && purchaserIdList.Count() > 0 && isAggregationPurchaser)
{
aggregionPurchaserBusiness.AggregionByPurchaserIdList(purchaserIdList);
}
}
/// <summary>

Loading…
Cancel
Save