Browse Source

1)删除配件接口,如果删除最后一个配件则删除采购方案

2)保存接口,删除残缺的采购方案
yijia
shanji 2 years ago
parent
commit
684c16990e
  1. 144
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  2. 4
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs
  3. 2
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
  4. 2
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs

144
BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -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);

4
BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs

@ -7,12 +7,12 @@ namespace BBWYB.Server.Model.Dto
/// <summary>
/// 需要修改的采购方案
/// </summary>
public IList<EditPurchaseSchemeRequest> EditPurchaseSchemeList { get; set; }
public List<EditPurchaseSchemeRequest> EditPurchaseSchemeList { get; set; }
/// <summary>
/// 需要新增的采购方案
/// </summary>
public IList<InputPurchaseSchemeRequest> AddPurchaseSchemeList { get; set; }
public List<InputPurchaseSchemeRequest> AddPurchaseSchemeList { get; set; }
}

2
BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs

@ -38,6 +38,6 @@
public Enums.Platform? PurchasePlatform { get; set; }
public IList<InputPurchaseSchemeProductSkuRequest> PurchaseSchemeProductSkuList { get; set; }
public List<InputPurchaseSchemeProductSkuRequest> PurchaseSchemeProductSkuList { get; set; }
}
}

2
BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs

@ -23,6 +23,6 @@ namespace BBWYB.Server.Model.Dto
public string ProductId { get; set; }
public string SkuId { get; set; }
public IList<InputPurchaseSchemeProductRequest> PurchaseSchemeProductList { get; set; }
public List<InputPurchaseSchemeProductRequest> PurchaseSchemeProductList { get; set; }
}
}

Loading…
Cancel
Save