|
|
@ -61,67 +61,101 @@ namespace BBWYB.Server.Business |
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || |
|
|
|
string.IsNullOrEmpty(pp.PurchaserName)))) |
|
|
|
throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); |
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0 && batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) |
|
|
|
throw new BusinessException("编辑方案中采购方案缺少Id"); |
|
|
|
|
|
|
|
List<PurchaseScheme> addPurchaseSchemeList = null; |
|
|
|
List<PurchaseScheme> addPurchaseSchemeList = new List<PurchaseScheme>(); |
|
|
|
List<PurchaseSchemeProduct> addPurchaseSchemeProductList = new List<PurchaseSchemeProduct>(); |
|
|
|
List<PurchaseSchemeProductSku> addPurchaseSchemeProductSkuList = new List<PurchaseSchemeProductSku>(); |
|
|
|
List<Purchaser> newPurchaserList = new List<Purchaser>(); |
|
|
|
List<long> deletePurchaseSchemeIdList = new List<long>(); |
|
|
|
List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>(); |
|
|
|
|
|
|
|
#region 新增采购方案
|
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) |
|
|
|
{ |
|
|
|
ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); |
|
|
|
|
|
|
|
addPurchaseSchemeList = batchCURDSchemeRequest.AddPurchaseSchemeList.Map<List<PurchaseScheme>>(); |
|
|
|
|
|
|
|
foreach (var scheme in addPurchaseSchemeList) |
|
|
|
foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) |
|
|
|
{ |
|
|
|
scheme.Id = idGenerator.NewLong(); |
|
|
|
scheme.CreateTime = DateTime.Now; |
|
|
|
|
|
|
|
foreach (var purchaseProduct in scheme.PurchaseSchemeProductList) |
|
|
|
var ps = new PurchaseScheme() |
|
|
|
{ |
|
|
|
purchaseProduct.Id = idGenerator.NewLong(); |
|
|
|
purchaseProduct.CreateTime = DateTime.Now; |
|
|
|
purchaseProduct.SkuPurchaseSchemeId = scheme.Id; |
|
|
|
foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList) |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
ProductId = psReq.ProductId, |
|
|
|
SkuId = psReq.SkuId, |
|
|
|
ShopId = psReq.ShopId |
|
|
|
}; |
|
|
|
addPurchaseSchemeList.Add(ps); |
|
|
|
foreach (var pspReq in psReq.PurchaseSchemeProductList) |
|
|
|
{ |
|
|
|
var psp = pspReq.Map<PurchaseSchemeProduct>(); |
|
|
|
psp.Id = idGenerator.NewLong(); |
|
|
|
psp.CreateTime = DateTime.Now; |
|
|
|
psp.SkuPurchaseSchemeId = ps.Id; |
|
|
|
addPurchaseSchemeProductList.Add(psp); |
|
|
|
|
|
|
|
foreach (var pssReq in pspReq.PurchaseSchemeProductSkuList) |
|
|
|
{ |
|
|
|
purchaseProductSku.Id = idGenerator.NewLong(); |
|
|
|
purchaseProductSku.CreateTime = DateTime.Now; |
|
|
|
purchaseProductSku.SkuPurchaseSchemeId = scheme.Id; |
|
|
|
var pss = pssReq.Map<PurchaseSchemeProductSku>(); |
|
|
|
pss.Id = idGenerator.NewLong(); |
|
|
|
pss.CreateTime = DateTime.Now; |
|
|
|
pss.SkuPurchaseSchemeId = ps.Id; |
|
|
|
addPurchaseSchemeProductSkuList.Add(pss); |
|
|
|
ps.DefaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); |
|
|
|
} |
|
|
|
addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList); |
|
|
|
} |
|
|
|
addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 更新采购方案
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) |
|
|
|
{ |
|
|
|
//ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList);
|
|
|
|
deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); |
|
|
|
|
|
|
|
var editPurchaseSchemeList = batchCURDSchemeRequest.EditPurchaseSchemeList.Map<List<PurchaseScheme>>(); |
|
|
|
foreach (var scheme in editPurchaseSchemeList) |
|
|
|
foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) |
|
|
|
{ |
|
|
|
foreach (var purchaseProduct in scheme.PurchaseSchemeProductList) |
|
|
|
var schemeId = psReq.Id; |
|
|
|
var defaultCost = 0M; |
|
|
|
foreach (var pspReq in psReq.PurchaseSchemeProductList) |
|
|
|
{ |
|
|
|
purchaseProduct.Id = idGenerator.NewLong(); |
|
|
|
purchaseProduct.CreateTime = DateTime.Now; |
|
|
|
purchaseProduct.SkuPurchaseSchemeId = scheme.Id; |
|
|
|
foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList) |
|
|
|
var psp = pspReq.Map<PurchaseSchemeProduct>(); |
|
|
|
psp.Id = idGenerator.NewLong(); |
|
|
|
psp.CreateTime = DateTime.Now; |
|
|
|
psp.SkuPurchaseSchemeId = schemeId; |
|
|
|
addPurchaseSchemeProductList.Add(psp); |
|
|
|
|
|
|
|
foreach (var pssReq in pspReq.PurchaseSchemeProductSkuList) |
|
|
|
{ |
|
|
|
purchaseProductSku.Id = idGenerator.NewLong(); |
|
|
|
purchaseProductSku.CreateTime = DateTime.Now; |
|
|
|
purchaseProductSku.SkuPurchaseSchemeId = scheme.Id; |
|
|
|
var pss = pssReq.Map<PurchaseSchemeProductSku>(); |
|
|
|
pss.Id = idGenerator.NewLong(); |
|
|
|
pss.CreateTime = DateTime.Now; |
|
|
|
pss.SkuPurchaseSchemeId = schemeId; |
|
|
|
addPurchaseSchemeProductSkuList.Add(pss); |
|
|
|
defaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); |
|
|
|
} |
|
|
|
addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList); |
|
|
|
} |
|
|
|
addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList); |
|
|
|
var psupdate = fsql.Update<PurchaseScheme>(schemeId) |
|
|
|
.Set(ps => ps.DefaultCost, defaultCost); |
|
|
|
updatePurchaseSchemeList.Add(psupdate); |
|
|
|
} |
|
|
|
|
|
|
|
//var editPurchaseSchemeList = batchCURDSchemeRequest.EditPurchaseSchemeList.Map<List<PurchaseScheme>>();
|
|
|
|
//foreach (var scheme in editPurchaseSchemeList)
|
|
|
|
//{
|
|
|
|
// foreach (var purchaseProduct in scheme.PurchaseSchemeProductList)
|
|
|
|
// {
|
|
|
|
// purchaseProduct.Id = idGenerator.NewLong();
|
|
|
|
// purchaseProduct.CreateTime = DateTime.Now;
|
|
|
|
// purchaseProduct.SkuPurchaseSchemeId = scheme.Id;
|
|
|
|
// foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList)
|
|
|
|
// {
|
|
|
|
// purchaseProductSku.Id = idGenerator.NewLong();
|
|
|
|
// purchaseProductSku.CreateTime = DateTime.Now;
|
|
|
|
// purchaseProductSku.SkuPurchaseSchemeId = scheme.Id;
|
|
|
|
// }
|
|
|
|
// addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList);
|
|
|
|
// }
|
|
|
|
// addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList);
|
|
|
|
//}
|
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
@ -150,7 +184,11 @@ namespace BBWYB.Server.Business |
|
|
|
fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows(); |
|
|
|
if (addPurchaseSchemeProductSkuList.Count > 0) |
|
|
|
fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows(); |
|
|
|
|
|
|
|
if (updatePurchaseSchemeList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updatePurchaseSchemeList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -284,49 +322,40 @@ namespace BBWYB.Server.Business |
|
|
|
return purchaseSchemeList; |
|
|
|
} |
|
|
|
|
|
|
|
public IList<PurchaseSchemeCountResponse> GetPurchaseSchemeCountList(QuerySchemeCountRequest request) |
|
|
|
{ |
|
|
|
var list = fsql.Select<PurchaseScheme>().Where(ps => ps.ShopId == request.ShopId && |
|
|
|
request.SkuIdList.Contains(ps.SkuId)) |
|
|
|
.GroupBy(ps => ps.SkuId) |
|
|
|
.ToList(g => new PurchaseSchemeCountResponse() |
|
|
|
{ |
|
|
|
SkuId = g.Key, |
|
|
|
SchemeCount = g.Count() |
|
|
|
}); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
public IList<PurchaseSchemeResponse> RefreshPurchaseScheme(RefreshSchemeRequest request) |
|
|
|
{ |
|
|
|
var purchaseSchemeList = GetPurchaseSchemeList(new QuerySchemeRequest() |
|
|
|
{ |
|
|
|
SchemeIdList = request.SchemeIdList |
|
|
|
SchemeIdList = request.SchemeIdList, |
|
|
|
IncludePurchaseSkuBasicInfo = 1 |
|
|
|
}); |
|
|
|
List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>(); |
|
|
|
foreach (var purchaseScheme in purchaseSchemeList) |
|
|
|
foreach (var ps in purchaseSchemeList) |
|
|
|
{ |
|
|
|
var amount = 0M; |
|
|
|
var purchasePlatformGroups = purchaseScheme.PurchaseSchemeProductList.GroupBy(p => p.PurchasePlatform); |
|
|
|
foreach (var purchasePlatformGroup in purchasePlatformGroups) |
|
|
|
var defaultCost = 0M; |
|
|
|
foreach (var psp in ps.PurchaseSchemeProductList) |
|
|
|
{ |
|
|
|
var purchaseProductIds = purchasePlatformGroup.Select(p => p.PurchaseProductId).ToArray(); |
|
|
|
var purchaseSkuIds = new List<string>(); |
|
|
|
foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) |
|
|
|
{ |
|
|
|
purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); |
|
|
|
} |
|
|
|
var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() |
|
|
|
{ |
|
|
|
FirstApiMode = Enums.PurchaseProductAPIMode.Spider, |
|
|
|
PriceMode = Enums.PurchaseOrderMode.批发, |
|
|
|
Params = new List<BatchPurchaseSkuBasicInfoParamRequest>() |
|
|
|
foreach (var pss in psp.PurchaseSchemeProductSkuList) |
|
|
|
{ |
|
|
|
new BatchPurchaseSkuBasicInfoParamRequest() |
|
|
|
{ |
|
|
|
Platform = purchasePlatformGroup.Key.Value, |
|
|
|
PurchaseProductIds = purchaseProductIds, |
|
|
|
PurchaseSkuIds = purchaseSkuIds |
|
|
|
} |
|
|
|
defaultCost += ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1); |
|
|
|
} |
|
|
|
}); |
|
|
|
amount += purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); |
|
|
|
} |
|
|
|
|
|
|
|
if (purchaseScheme.RealCost != amount || |
|
|
|
purchaseScheme.DefaultCost != amount) |
|
|
|
if (ps.DefaultCost != defaultCost) |
|
|
|
{ |
|
|
|
purchaseScheme.RealCost = amount; |
|
|
|
purchaseScheme.DefaultCost = amount; |
|
|
|
var update = fsql.Update<PurchaseScheme>(purchaseScheme.Id).Set(p => p.RealCost, amount) |
|
|
|
.Set(p => p.DefaultCost, amount); |
|
|
|
var update = fsql.Update<PurchaseScheme>(ps.Id).Set(p => p.DefaultCost, defaultCost); |
|
|
|
updatePurchaseSchemeList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
@ -440,15 +469,20 @@ namespace BBWYB.Server.Business |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
public void EditPurchaseRatio(EditPurchaseRatioRequest request) |
|
|
|
{ |
|
|
|
if (request.Ratio < 1) |
|
|
|
request.Ratio = 1; |
|
|
|
fsql.Update<PurchaseSchemeProductSku>().Set(pss => pss.PurchaseRatio, request.Ratio) |
|
|
|
.Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId && |
|
|
|
pss.SkuId == request.SkuId && |
|
|
|
pss.PurchaseSkuId == request.PurchaseSkuId) |
|
|
|
.ExecuteAffrows(); |
|
|
|
} |
|
|
|
//public void EditPurchaseRatio(EditPurchaseRatioAndActualPriceRequest request)
|
|
|
|
//{
|
|
|
|
// if (request.Ratio < 1)
|
|
|
|
// request.Ratio = 1;
|
|
|
|
|
|
|
|
|
|
|
|
// fsql.Update<PurchaseSchemeProductSku>().Set(pss => pss.PurchaseRatio, request.Ratio)
|
|
|
|
// .Set(pss => pss.ActualPrice, request.ActualPrice)
|
|
|
|
// .Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId &&
|
|
|
|
// pss.SkuId == request.SkuId &&
|
|
|
|
// pss.PurchaseSkuId == request.PurchaseSkuId)
|
|
|
|
// .ExecuteAffrows();
|
|
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
} |
|
|
|
} |
|
|
|