|
|
@ -192,6 +192,130 @@ namespace BBWYB.Server.Business |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest) |
|
|
|
{ |
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && |
|
|
|
batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) |
|
|
|
throw new BusinessException("非法参数"); |
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || |
|
|
|
string.IsNullOrEmpty(pp.PurchaserName)))) |
|
|
|
throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); |
|
|
|
|
|
|
|
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 = 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>>(); |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) |
|
|
|
{ |
|
|
|
ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); |
|
|
|
|
|
|
|
foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) |
|
|
|
{ |
|
|
|
var ps = new PurchaseScheme() |
|
|
|
{ |
|
|
|
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) |
|
|
|
{ |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#region 更新采购方案
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) |
|
|
|
{ |
|
|
|
deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); |
|
|
|
foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) |
|
|
|
{ |
|
|
|
var schemeId = psReq.Id; |
|
|
|
var defaultCost = 0M; |
|
|
|
foreach (var pspReq in psReq.PurchaseSchemeProductList) |
|
|
|
{ |
|
|
|
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) |
|
|
|
{ |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
var psupdate = fsql.Update<PurchaseScheme>(schemeId) |
|
|
|
.Set(ps => ps.DefaultCost, defaultCost); |
|
|
|
updatePurchaseSchemeList.Add(psupdate); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
foreach (var purchaseProductSku in addPurchaseSchemeProductSkuList) |
|
|
|
{ |
|
|
|
if (purchaseProductSku.PurchaseRatio == null) |
|
|
|
purchaseProductSku.PurchaseRatio = 1; |
|
|
|
} |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
if (newPurchaserList.Count > 0) |
|
|
|
fsql.Insert(newPurchaserList).ExecuteAffrows(); |
|
|
|
|
|
|
|
//更新,删除已存在的采购方案商品和Sku
|
|
|
|
if (deletePurchaseSchemeIdList.Count > 0) |
|
|
|
{ |
|
|
|
fsql.Delete<PurchaseSchemeProduct>().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
fsql.Delete<PurchaseSchemeProductSku>().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
//新增
|
|
|
|
if (addPurchaseSchemeList != null && addPurchaseSchemeList.Count > 0) |
|
|
|
fsql.Insert(addPurchaseSchemeList).ExecuteAffrows(); |
|
|
|
if (addPurchaseSchemeProductList.Count > 0) |
|
|
|
fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows(); |
|
|
|
if (addPurchaseSchemeProductSkuList.Count > 0) |
|
|
|
fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows(); |
|
|
|
if (updatePurchaseSchemeList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updatePurchaseSchemeList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取采购方案
|
|
|
|
/// </summary>
|
|
|
|