|
|
@ -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>
|
|
|
|