|
|
@ -194,25 +194,60 @@ 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为空"); |
|
|
|
List<PurchaseSchemeGroup> dbSchemeGroupList = null; |
|
|
|
List<PurchaseScheme> dbPurchaseSchemeList = null; |
|
|
|
|
|
|
|
#region 数据验证
|
|
|
|
if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) && |
|
|
|
(batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)) |
|
|
|
throw new BusinessException("更新方案和新增方案参数不能同时为空"); |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0) |
|
|
|
{ |
|
|
|
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.Any(ps => ps.Id == 0)) |
|
|
|
throw new BusinessException("更新方案中采购方案缺少Id"); |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.SchemeGroupId == null || ps.SchemeGroupId == 0)) |
|
|
|
throw new BusinessException("更新方案中采购方案缺少分组Id"); |
|
|
|
} |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0) |
|
|
|
{ |
|
|
|
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"); |
|
|
|
|
|
|
|
var productIds = batchCURDSchemeRequest.AddPurchaseSchemeList.Select(ps => ps.ProductId).ToList(); |
|
|
|
|
|
|
|
dbSchemeGroupList = fsql.Select<PurchaseSchemeGroup>().Where(psg => productIds.Contains(psg.ProductId)).ToList(); |
|
|
|
var dbSchemeGroupIds = dbSchemeGroupList.Select(psg => psg.Id).ToList(); |
|
|
|
dbPurchaseSchemeList = fsql.Select<PurchaseScheme>().Where(ps => dbSchemeGroupIds.Contains(ps.SchemeGroupId)).ToList(); |
|
|
|
foreach (var addPurchaseScheme in batchCURDSchemeRequest.AddPurchaseSchemeList) |
|
|
|
{ |
|
|
|
if (addPurchaseScheme.SchemeGroupId == null || addPurchaseScheme.SchemeGroupId == 0) |
|
|
|
continue; |
|
|
|
var dbSchemeGroup = dbSchemeGroupList.FirstOrDefault(g => g.Id == addPurchaseScheme.SchemeGroupId); |
|
|
|
if (dbSchemeGroup == null) |
|
|
|
throw new BusinessException($"新增方案中指定了不存在的分组{addPurchaseScheme.SchemeGroupId}"); |
|
|
|
var dbPurchaseSchemeList_sameGroup = dbPurchaseSchemeList.Where(ps => ps.SchemeGroupId == addPurchaseScheme.SchemeGroupId).ToList(); |
|
|
|
if (dbPurchaseSchemeList_sameGroup.Any(ps => ps.SkuId == addPurchaseScheme.SkuId)) |
|
|
|
throw new BusinessException($"采购方案分组中Sku不允许重复,{dbSchemeGroup.GroupName}已存在{addPurchaseScheme.SkuId}的采购方案"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
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>>(); |
|
|
|
List<PurchaseSchemeGroup> insertPurchaseSchemeGroupsList = new List<PurchaseSchemeGroup>(); |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) |
|
|
|
{ |
|
|
@ -220,13 +255,31 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) |
|
|
|
{ |
|
|
|
if (psReq.SchemeGroupId == null || psReq.SchemeGroupId == 0) |
|
|
|
{ |
|
|
|
//新增分组
|
|
|
|
var saemSpuSchemeGroupList = dbSchemeGroupList.Where(psg => psg.ProductId == psReq.ProductId).ToList(); |
|
|
|
var insertSchemeGroup = new PurchaseSchemeGroup() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
GroupName = $"{psReq.ProductId}_第{saemSpuSchemeGroupList.Count() + 1}组", |
|
|
|
ProductId = psReq.ProductId, |
|
|
|
ShopId = psReq.ShopId |
|
|
|
}; |
|
|
|
insertPurchaseSchemeGroupsList.Add(insertSchemeGroup); |
|
|
|
} |
|
|
|
|
|
|
|
var ps = new PurchaseScheme() |
|
|
|
{ |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
ProductId = psReq.ProductId, |
|
|
|
SkuId = psReq.SkuId, |
|
|
|
ShopId = psReq.ShopId |
|
|
|
ShopId = psReq.ShopId, |
|
|
|
HYBDId = psReq.HYBDId, |
|
|
|
HYSchemeId = psReq.HYSchemeId, |
|
|
|
SchemeGroupId = psReq.SchemeGroupId ?? 0 |
|
|
|
}; |
|
|
|
addPurchaseSchemeList.Add(ps); |
|
|
|
foreach (var pspReq in psReq.PurchaseSchemeProductList) |
|
|
@ -308,6 +361,8 @@ namespace BBWYB.Server.Business |
|
|
|
fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows(); |
|
|
|
if (addPurchaseSchemeProductSkuList.Count > 0) |
|
|
|
fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows(); |
|
|
|
if (insertPurchaseSchemeGroupsList.Count() > 0) |
|
|
|
fsql.Insert(insertPurchaseSchemeGroupsList).ExecuteAffrows(); |
|
|
|
if (updatePurchaseSchemeList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updatePurchaseSchemeList) |
|
|
|