|
@ -20,35 +20,45 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
|
private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest |
|
|
private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest |
|
|
{ |
|
|
{ |
|
|
var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList(); |
|
|
List<string> reqeustPurchaserIdList = new List<string>(); |
|
|
|
|
|
foreach (var scheme in purchaserSchemeList) |
|
|
|
|
|
reqeustPurchaserIdList.AddRange(scheme.PurchaseSchemeProductList.Select(p => p.PurchaserId)); |
|
|
|
|
|
reqeustPurchaserIdList = reqeustPurchaserIdList.Distinct().ToList(); |
|
|
|
|
|
|
|
|
|
|
|
//var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList();
|
|
|
var existPurchaserIdList = fsql.Select<Purchaser>().Where(p => reqeustPurchaserIdList.Contains(p.Id)).ToList(p => p.Id); |
|
|
var existPurchaserIdList = fsql.Select<Purchaser>().Where(p => reqeustPurchaserIdList.Contains(p.Id)).ToList(p => p.Id); |
|
|
var newPurchaserIdList = reqeustPurchaserIdList.Except(existPurchaserIdList); |
|
|
var newPurchaserIdList = reqeustPurchaserIdList.Except(existPurchaserIdList); |
|
|
foreach (var scheme in purchaserSchemeList) |
|
|
foreach (var scheme in purchaserSchemeList) |
|
|
{ |
|
|
{ |
|
|
if (newPurchaserIdList.Any(p => p == scheme.PurchaserId) && !addPurchaserList.Any(p => p.Id == scheme.PurchaserId)) |
|
|
foreach (var ps in scheme.PurchaseSchemeProductList) |
|
|
{ |
|
|
{ |
|
|
addPurchaserList.Add(new Purchaser() |
|
|
if (newPurchaserIdList.Any(p => p == ps.PurchaserId) && !addPurchaserList.Any(p => p.Id == ps.PurchaserId)) |
|
|
{ |
|
|
{ |
|
|
Id = scheme.PurchaserId, |
|
|
addPurchaserList.Add(new Purchaser() |
|
|
Id2 = scheme.PurchaserId2, |
|
|
{ |
|
|
Name = scheme.PurchaserName, |
|
|
Id = ps.PurchaserId, |
|
|
Location = scheme.PurchaserLocation, |
|
|
Id2 = ps.PurchaserId2, |
|
|
Platform = scheme.PurchasePlatform |
|
|
Name = ps.PurchaserName, |
|
|
}); |
|
|
Location = ps.PurchaserLocation, |
|
|
|
|
|
Platform = scheme.PurchasePlatform |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public void EditPurchaseScheme(BatchCURDSchemeRequest batchCURDSchemeRequest) |
|
|
public void EditPurchaseScheme(BatchCURDSchemeRequest batchCURDSchemeRequest) |
|
|
{ |
|
|
{ |
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) |
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && |
|
|
|
|
|
batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) |
|
|
throw new BusinessException("非法参数"); |
|
|
throw new BusinessException("非法参数"); |
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || |
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || |
|
|
string.IsNullOrEmpty(p.PurchaserName))) |
|
|
string.IsNullOrEmpty(pp.PurchaserName)))) |
|
|
throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); |
|
|
throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); |
|
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || |
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || |
|
|
string.IsNullOrEmpty(p.PurchaserName))) |
|
|
string.IsNullOrEmpty(pp.PurchaserName)))) |
|
|
throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); |
|
|
throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); |
|
|
|
|
|
|
|
|
List<PurchaseScheme> addPurchaseSchemeList = null; |
|
|
List<PurchaseScheme> addPurchaseSchemeList = null; |
|
@ -138,48 +148,49 @@ namespace BBWYB.Server.Business |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// 获取采购方案
|
|
|
/// 获取采购方案(不含采购配配件基本信息)
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
|
/// <param name="querySchemeRequest"></param>
|
|
|
/// <param name="querySchemeRequest"></param>
|
|
|
/// <returns></returns>
|
|
|
/// <returns></returns>
|
|
|
public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest) |
|
|
public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest) |
|
|
{ |
|
|
{ |
|
|
var select = fsql.Select<PurchaseScheme, Purchaser>().InnerJoin((ps, p) => ps.PurchaserId == p.Id); |
|
|
var select = fsql.Select<PurchaseScheme>(); |
|
|
if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0) |
|
|
if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0) |
|
|
select = select.Where((ps, p) => ps.Id == querySchemeRequest.SchemeId); |
|
|
select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId); |
|
|
else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0) |
|
|
else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0) |
|
|
select = select.Where((ps, p) => querySchemeRequest.SchemeIdList.Contains(ps.Id)); |
|
|
select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id)); |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, (ps, p) => ps.ShopId == querySchemeRequest.ShopId) |
|
|
select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, ps => ps.ShopId == querySchemeRequest.ShopId) |
|
|
.WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, (ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) |
|
|
.WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, ps => querySchemeRequest.SkuIdList.Contains(ps.SkuId)); |
|
|
.WhereIf(!string.IsNullOrEmpty(querySchemeRequest.PurchaserId), (ps, p) => ps.PurchaserId == querySchemeRequest.PurchaserId) |
|
|
//.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform);
|
|
|
.WhereIf(querySchemeRequest.PurchasePlatform != null, (ps, p) => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var purchaseSchemeList = select.ToList((ps, p) => new PurchaseSchemeResponse |
|
|
var purchaseSchemeList = select.ToList<PurchaseSchemeResponse>(); |
|
|
{ |
|
|
|
|
|
Id = ps.Id, |
|
|
|
|
|
ProductId = ps.ProductId, |
|
|
|
|
|
SkuId = ps.SkuId, |
|
|
|
|
|
ShopId = ps.ShopId, |
|
|
|
|
|
PurchaserId = p.Id, |
|
|
|
|
|
PurchaserId2 = p.Id2, |
|
|
|
|
|
PurchaserName = p.Name, |
|
|
|
|
|
PurchaserLocation = p.Location, |
|
|
|
|
|
DefaultCost = ps.DefaultCost, |
|
|
|
|
|
RealCost = ps.RealCost, |
|
|
|
|
|
CreateTime = ps.CreateTime, |
|
|
|
|
|
PurchasePlatform = ps.PurchasePlatform, |
|
|
|
|
|
LastPurchaseTime = ps.LastPurchaseTime |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
if (purchaseSchemeList.Count > 0) |
|
|
if (purchaseSchemeList.Count > 0) |
|
|
{ |
|
|
{ |
|
|
var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList(); |
|
|
var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList(); |
|
|
|
|
|
|
|
|
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) |
|
|
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct, Purchaser>() |
|
|
.ToList().Map<List<PurchaseSchemeProductResponse>>(); |
|
|
.InnerJoin((psp, p) => psp.PurchaserId == p.Id) |
|
|
|
|
|
.Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) |
|
|
|
|
|
.ToList((psp, p) => new PurchaseSchemeProductResponse |
|
|
|
|
|
{ |
|
|
|
|
|
CreateTime = psp.CreateTime, |
|
|
|
|
|
Id = psp.Id, |
|
|
|
|
|
ProductId = psp.ProductId, |
|
|
|
|
|
PurchaseProductId = psp.PurchaseProductId, |
|
|
|
|
|
PurchaseUrl = psp.PurchaseUrl, |
|
|
|
|
|
SkuId = psp.SkuId, |
|
|
|
|
|
SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId, |
|
|
|
|
|
PurchaserId = p.Id, |
|
|
|
|
|
PurchaserId2 = p.Id2, |
|
|
|
|
|
PurchaserLocation = p.Location, |
|
|
|
|
|
PurchaserName = p.Name, |
|
|
|
|
|
PurchasePlatform = p.Platform, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
var purchaseSchemeProductSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) |
|
|
var purchaseSchemeProductSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) |
|
|
.ToList().Map<List<PurchaseSchemeProductSkuResponse>>(); |
|
|
.ToList().Map<List<PurchaseSchemeProductSkuResponse>>(); |
|
@ -198,6 +209,23 @@ namespace BBWYB.Server.Business |
|
|
schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList); |
|
|
schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#region 封装采购商
|
|
|
|
|
|
foreach (var schemeProduct in schemeProductList) |
|
|
|
|
|
{ |
|
|
|
|
|
if (!scheme.PurchaserList.Any(p => p.Id == schemeProduct.PurchaserId)) |
|
|
|
|
|
{ |
|
|
|
|
|
scheme.PurchaserList.Add(new Purchaser() |
|
|
|
|
|
{ |
|
|
|
|
|
Id = schemeProduct.PurchaserId, |
|
|
|
|
|
Id2 = schemeProduct.PurchaserId2, |
|
|
|
|
|
Location = schemeProduct.PurchaserLocation, |
|
|
|
|
|
Name = schemeProduct.PurchaserName, |
|
|
|
|
|
Platform = schemeProduct.PurchasePlatform |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
#endregion
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return purchaseSchemeList; |
|
|
return purchaseSchemeList; |
|
@ -212,29 +240,33 @@ namespace BBWYB.Server.Business |
|
|
List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>(); |
|
|
List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>(); |
|
|
foreach (var purchaseScheme in purchaseSchemeList) |
|
|
foreach (var purchaseScheme in purchaseSchemeList) |
|
|
{ |
|
|
{ |
|
|
var purchaseProductIds = purchaseScheme.PurchaseSchemeProductList.Select(p => p.PurchaseProductId).ToArray(); |
|
|
var amount = 0M; |
|
|
var purchaseSkuIds = new List<string>(); |
|
|
var purchasePlatformGroups = purchaseScheme.PurchaseSchemeProductList.GroupBy(p => p.PurchasePlatform); |
|
|
foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) |
|
|
foreach (var purchasePlatformGroup in purchasePlatformGroups) |
|
|
{ |
|
|
{ |
|
|
purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); |
|
|
var purchaseProductIds = purchasePlatformGroup.Select(p => p.PurchaseProductId).ToArray(); |
|
|
} |
|
|
var purchaseSkuIds = new List<string>(); |
|
|
|
|
|
foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) |
|
|
var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() |
|
|
{ |
|
|
{ |
|
|
purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); |
|
|
FirstApiMode = Enums.PurchaseProductAPIMode.Spider, |
|
|
} |
|
|
PriceMode = Enums.PurchaseOrderMode.批发, |
|
|
var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() |
|
|
Params = new List<BatchPurchaseSkuBasicInfoParamRequest>() |
|
|
{ |
|
|
|
|
|
FirstApiMode = Enums.PurchaseProductAPIMode.Spider, |
|
|
|
|
|
PriceMode = Enums.PurchaseOrderMode.批发, |
|
|
|
|
|
Params = new List<BatchPurchaseSkuBasicInfoParamRequest>() |
|
|
{ |
|
|
{ |
|
|
new BatchPurchaseSkuBasicInfoParamRequest() |
|
|
new BatchPurchaseSkuBasicInfoParamRequest() |
|
|
{ |
|
|
{ |
|
|
Platform = purchaseScheme.PurchasePlatform, |
|
|
Platform = purchasePlatformGroup.Key.Value, |
|
|
PurchaseProductIds = purchaseProductIds, |
|
|
PurchaseProductIds = purchaseProductIds, |
|
|
PurchaseSkuIds = purchaseSkuIds |
|
|
PurchaseSkuIds = purchaseSkuIds |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
amount += purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var amount = purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); |
|
|
|
|
|
if (purchaseScheme.DefaultCost != amount) |
|
|
if (purchaseScheme.DefaultCost != amount) |
|
|
{ |
|
|
{ |
|
|
purchaseScheme.DefaultCost = amount; |
|
|
purchaseScheme.DefaultCost = amount; |
|
@ -255,34 +287,34 @@ namespace BBWYB.Server.Business |
|
|
return purchaseSchemeList; |
|
|
return purchaseSchemeList; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
///// <summary>
|
|
|
/// 获取共同拥有的采购商
|
|
|
///// 获取共同拥有的采购商
|
|
|
/// </summary>
|
|
|
///// </summary>
|
|
|
/// <param name="querySchemeRequest"></param>
|
|
|
///// <param name="querySchemeRequest"></param>
|
|
|
/// <returns></returns>
|
|
|
///// <returns></returns>
|
|
|
public IList<Purchaser> GetSharePurchaser(QuerySchemeRequest querySchemeRequest) |
|
|
//public IList<Purchaser> GetSharePurchaser(QuerySchemeRequest querySchemeRequest)
|
|
|
{ |
|
|
//{
|
|
|
var skuCount = querySchemeRequest.SkuIdList.Count(); |
|
|
// var skuCount = querySchemeRequest.SkuIdList.Count();
|
|
|
|
|
|
|
|
|
var purchaseSchemeList = fsql.Select<PurchaseScheme, Purchaser>().InnerJoin((ps, p) => ps.PurchaserId == p.Id) |
|
|
// var purchaseSchemeList = fsql.Select<PurchaseScheme, Purchaser>().InnerJoin((ps, p) => ps.PurchaserId == p.Id)
|
|
|
.Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId) |
|
|
// .Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId)
|
|
|
.Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) |
|
|
// .Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId))
|
|
|
.ToList(); |
|
|
// .ToList();
|
|
|
if (purchaseSchemeList.Count() == 0) |
|
|
// if (purchaseSchemeList.Count() == 0)
|
|
|
return null; |
|
|
// return null;
|
|
|
|
|
|
|
|
|
var group = purchaseSchemeList.GroupBy(p => p.PurchaserId); |
|
|
// var group = purchaseSchemeList.GroupBy(p => p.PurchaserId);
|
|
|
var sharePurchaserIdList = new List<string>(); |
|
|
// var sharePurchaserIdList = new List<string>();
|
|
|
foreach (var g in group) |
|
|
// foreach (var g in group)
|
|
|
{ |
|
|
// {
|
|
|
if (g.Count() == skuCount) |
|
|
// if (g.Count() == skuCount)
|
|
|
sharePurchaserIdList.Add(g.Key); |
|
|
// sharePurchaserIdList.Add(g.Key);
|
|
|
} |
|
|
// }
|
|
|
if (sharePurchaserIdList.Count == 0) |
|
|
// if (sharePurchaserIdList.Count == 0)
|
|
|
return null; |
|
|
// return null;
|
|
|
|
|
|
|
|
|
return fsql.Select<Purchaser>().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList(); |
|
|
// return fsql.Select<Purchaser>().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList();
|
|
|
} |
|
|
//}
|
|
|
|
|
|
|
|
|
public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) |
|
|
public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) |
|
|
{ |
|
|
{ |
|
|