|
|
@ -208,7 +208,7 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
List<PurchaseSchemeGroup> dbSchemeGroupList = null; |
|
|
|
List<PurchaseScheme> dbPurchaseSchemeList = null; |
|
|
|
|
|
|
|
List<long> deleteSchemeIdList = new List<long>(); |
|
|
|
#region 数据验证
|
|
|
|
if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) && |
|
|
|
(batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)) |
|
|
@ -220,6 +220,9 @@ namespace BBWYB.Server.Business |
|
|
|
if (groupCount > 1) |
|
|
|
throw new BusinessException("只能对同一个spu的方案进行编辑"); |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) |
|
|
|
throw new BusinessException("更新方案中采购方案缺少Id"); |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) || |
|
|
|
string.IsNullOrEmpty(ps.SkuId) || |
|
|
|
ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) || |
|
|
@ -230,22 +233,42 @@ namespace BBWYB.Server.Business |
|
|
|
throw new BusinessException("更新方案缺少ProductId/SkuId"); |
|
|
|
} |
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList == null || |
|
|
|
ps.PurchaseSchemeProductList.Count() == 0 || |
|
|
|
ps.PurchaseSchemeProductList.Any(psp => psp.PurchaseSchemeProductSkuList == null || |
|
|
|
psp.PurchaseSchemeProductSkuList.Count() == 0))) |
|
|
|
#region 验证是否存在数据残缺的采购方案
|
|
|
|
for (var i = 0; i < batchCURDSchemeRequest.EditPurchaseSchemeList.Count(); i++) |
|
|
|
{ |
|
|
|
throw new BusinessException("更新方案缺少商品信息"); |
|
|
|
var editScheme = batchCURDSchemeRequest.EditPurchaseSchemeList[i]; |
|
|
|
if (editScheme.PurchaseSchemeProductList != null && editScheme.PurchaseSchemeProductList.Count() > 0) |
|
|
|
{ |
|
|
|
for (var j = 0; j < editScheme.PurchaseSchemeProductList.Count(); j++) |
|
|
|
{ |
|
|
|
var editSchemeProduct = editScheme.PurchaseSchemeProductList[j]; |
|
|
|
if (editSchemeProduct.PurchaseSchemeProductSkuList == null || editSchemeProduct.PurchaseSchemeProductSkuList.Count() == 0) |
|
|
|
{ |
|
|
|
//如果采购商品不具备配件,则移除该采购商品
|
|
|
|
editScheme.PurchaseSchemeProductList.RemoveAt(j); |
|
|
|
j--; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (editScheme.PurchaseSchemeProductList == null || editScheme.PurchaseSchemeProductList.Count() == 0) |
|
|
|
{ |
|
|
|
//采购方案不再具备采购商品,则移除该采购方案
|
|
|
|
batchCURDSchemeRequest.EditPurchaseSchemeList.RemoveAt(i); |
|
|
|
i--; |
|
|
|
deleteSchemeIdList.Add(editScheme.Id); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || |
|
|
|
string.IsNullOrEmpty(pp.PurchaserId2) || |
|
|
|
string.IsNullOrEmpty(pp.PurchaserName)))) |
|
|
|
throw new BusinessException("更新方案中有采购商Id/Id2/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"); |
|
|
@ -311,12 +334,14 @@ namespace BBWYB.Server.Business |
|
|
|
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<long> deletePartsSchemeIdList = new List<long>(); |
|
|
|
List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>(); |
|
|
|
|
|
|
|
List<PurchaseSchemeGroup> insertPurchaseSchemeGroupsList = new List<PurchaseSchemeGroup>(); |
|
|
|
IInsert<PurchaseSchemeGroupIndex>? insertPurchaseSchemeGroupIndex = null; |
|
|
|
IUpdate<PurchaseSchemeGroupIndex>? updatePurchaseSchemeGroupIndex = null; |
|
|
|
|
|
|
|
|
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) |
|
|
|
{ |
|
|
|
var firstScheme = batchCURDSchemeRequest.AddPurchaseSchemeList.First(); |
|
|
@ -402,7 +427,7 @@ namespace BBWYB.Server.Business |
|
|
|
{ |
|
|
|
ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList); |
|
|
|
|
|
|
|
deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); |
|
|
|
deletePartsSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); |
|
|
|
foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) |
|
|
|
{ |
|
|
|
var schemeId = psReq.Id; |
|
|
@ -446,10 +471,10 @@ namespace BBWYB.Server.Business |
|
|
|
fsql.Insert(newPurchaserList).ExecuteAffrows(); |
|
|
|
|
|
|
|
//更新,删除已存在的采购方案商品和Sku
|
|
|
|
if (deletePurchaseSchemeIdList.Count > 0) |
|
|
|
if (deletePartsSchemeIdList.Count > 0) |
|
|
|
{ |
|
|
|
fsql.Delete<PurchaseSchemeProduct>().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
fsql.Delete<PurchaseSchemeProductSku>().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
fsql.Delete<PurchaseSchemeProduct>().Where(p => deletePartsSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
fsql.Delete<PurchaseSchemeProductSku>().Where(p => deletePartsSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
//新增
|
|
|
@ -469,6 +494,10 @@ namespace BBWYB.Server.Business |
|
|
|
insertPurchaseSchemeGroupIndex?.ExecuteAffrows(); |
|
|
|
updatePurchaseSchemeGroupIndex?.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
|
|
|
|
//删除信息残缺的采购方案
|
|
|
|
if (deleteSchemeIdList.Count() > 0) |
|
|
|
DeletePurchaseScheme(deleteSchemeIdList); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
@ -741,23 +770,61 @@ 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) |
|
|
|
//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 }); |
|
|
|
} |
|
|
|
|
|
|
|
public void DeletePurchaseScheme(List<long> schemeIdList) |
|
|
|
{ |
|
|
|
IList<long> deleteSchemeGroupIdList = new List<long>(); |
|
|
|
var purchaseSchemeList = fsql.Select<PurchaseScheme>(schemeIdList).ToList(); |
|
|
|
if (purchaseSchemeList.Count() == 0) |
|
|
|
return; |
|
|
|
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) && |
|
|
|
!schemeIdList.Contains(ps.Id)) |
|
|
|
.GroupBy(ps => ps.SchemeGroupId) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
SchemeGroupId = g.Key, |
|
|
|
SchemeCount = g.Count() |
|
|
|
}); |
|
|
|
|
|
|
|
foreach (var purchaseScheme in purchaseSchemeList) |
|
|
|
{ |
|
|
|
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); |
|
|
|
if (purchaseScheme.SchemeGroupId != 0) |
|
|
|
{ |
|
|
|
var sameSchemeGroupCount = sameSchemeGroupCountGroups.FirstOrDefault(g => g.SchemeGroupId == purchaseScheme.SchemeGroupId); |
|
|
|
if (sameSchemeGroupCount != null && sameSchemeGroupCount.SchemeCount == 0) |
|
|
|
deleteSchemeGroupIdList.Add(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(); |
|
|
|
if (deleteSchemeGroupIdList.Count() > 0) |
|
|
|
fsql.Delete<PurchaseSchemeGroup>(deleteSchemeGroupIdList).ExecuteAffrows(); |
|
|
|
fsql.Delete<PurchaseScheme>(schemeIdList).ExecuteAffrows(); |
|
|
|
fsql.Delete<PurchaseSchemeProduct>().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
fsql.Delete<PurchaseSchemeProductSku>().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -978,6 +1045,26 @@ namespace BBWYB.Server.Business |
|
|
|
if (schemeList.Count() == 0) |
|
|
|
throw new BusinessException("采购方案不存在"); |
|
|
|
var scheme = schemeList[0]; |
|
|
|
|
|
|
|
if (scheme.PurchaseSchemeProductList.Count() == 1) |
|
|
|
{ |
|
|
|
var lastProduct = scheme.PurchaseSchemeProductList.FirstOrDefault(); |
|
|
|
if (lastProduct.PurchaseSchemeProductSkuList.Count() == 1) |
|
|
|
{ |
|
|
|
var lastSku = lastProduct.PurchaseSchemeProductSkuList.FirstOrDefault(); |
|
|
|
if (lastSku.PurchaseSkuId == request.PurchaseSkuId && |
|
|
|
lastSku.SkuId == request.SkuId) |
|
|
|
{ |
|
|
|
DeletePurchaseScheme(request.SchemeId); |
|
|
|
return 0M; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
throw new BusinessException("未找到需要移除的采购sku"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var defaultCost = 0M; |
|
|
|
long? pssId = null; |
|
|
|
|
|
|
@ -993,11 +1080,7 @@ namespace BBWYB.Server.Business |
|
|
|
if (tartegtPurchaseProductSku != null) |
|
|
|
{ |
|
|
|
if (schemeProduct.PurchaseSchemeProductSkuList.Count() == 1) |
|
|
|
{ |
|
|
|
if (scheme.PurchaseSchemeProductList.Count() == 1) |
|
|
|
throw new BusinessException("最后一个采购sku不能被移除"); |
|
|
|
deletePsp = fsql.Delete<PurchaseSchemeProduct>(schemeProduct.Id); |
|
|
|
} |
|
|
|
pssId = tartegtPurchaseProductSku.Id; |
|
|
|
deletePss = fsql.Delete<PurchaseSchemeProductSku>(pssId); |
|
|
|
} |
|
|
@ -1005,7 +1088,6 @@ namespace BBWYB.Server.Business |
|
|
|
defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Where(pss => !(pss.SkuId == request.SkuId && pss.PurchaseSkuId == request.PurchaseSkuId)) |
|
|
|
.Sum(pss => ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1)); |
|
|
|
} |
|
|
|
|
|
|
|
if (pssId == null) |
|
|
|
throw new BusinessException("未找到需要移除的采购sku"); |
|
|
|
updatePs = fsql.Update<PurchaseScheme>(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost); |
|
|
|