Browse Source

1.编辑/新增采购方案接口支持多商家

2.采购方案查询接口支持多商家,采购商品层增加商家信息,采购方案层增加商家列表信息
3.采购方案刷新接口支持多商家
yijia
shanji 2 years ago
parent
commit
628e502ecc
  1. 2
      BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
  2. 196
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  3. 4
      BBWYB.Server.Model/BBWYB.Server.Model.csproj
  4. 14
      BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
  5. 30
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
  6. 32
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
  7. 16
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
  8. 8
      BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
  9. 9
      BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs

2
BBWYB.Server.API/Controllers/PurchaseSchemeController.cs

@ -28,7 +28,7 @@ namespace BBWYB.Server.API.Controllers
}
/// <summary>
/// 查询采购方案列表
/// 获取采购方案列表 (不含采购配配件基本信息)
/// </summary>
/// <param name="querySchemeRequest"></param>
/// <returns></returns>

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

@ -20,35 +20,45 @@ namespace BBWYB.Server.Business
private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest
{
var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList();
List<string> reqeustPurchaserIdList = new List<string>();
foreach (var scheme in purchaserSchemeList)
reqeustPurchaserIdList.AddRange(scheme.PurchaseSchemeProductList.Select(p => p.PurchaserId));
reqeustPurchaserIdList = reqeustPurchaserIdList.Distinct().ToList();
//var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList();
var existPurchaserIdList = fsql.Select<Purchaser>().Where(p => reqeustPurchaserIdList.Contains(p.Id)).ToList(p => p.Id);
var newPurchaserIdList = reqeustPurchaserIdList.Except(existPurchaserIdList);
foreach (var scheme in purchaserSchemeList)
{
if (newPurchaserIdList.Any(p => p == scheme.PurchaserId) && !addPurchaserList.Any(p => p.Id == scheme.PurchaserId))
foreach (var ps in scheme.PurchaseSchemeProductList)
{
addPurchaserList.Add(new Purchaser()
if (newPurchaserIdList.Any(p => p == ps.PurchaserId) && !addPurchaserList.Any(p => p.Id == ps.PurchaserId))
{
Id = scheme.PurchaserId,
Id2 = scheme.PurchaserId2,
Name = scheme.PurchaserName,
Location = scheme.PurchaserLocation,
Platform = scheme.PurchasePlatform
});
addPurchaserList.Add(new Purchaser()
{
Id = ps.PurchaserId,
Id2 = ps.PurchaserId2,
Name = ps.PurchaserName,
Location = ps.PurchaserLocation,
Platform = scheme.PurchasePlatform
});
}
}
}
}
public void EditPurchaseScheme(BatchCURDSchemeRequest batchCURDSchemeRequest)
{
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 &&
batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)
throw new BusinessException("非法参数");
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) ||
string.IsNullOrEmpty(p.PurchaserName)))
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.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) ||
string.IsNullOrEmpty(p.PurchaserName)))
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
string.IsNullOrEmpty(pp.PurchaserName))))
throw new BusinessException("编辑方案中有采购商Id/Name/Location为空");
List<PurchaseScheme> addPurchaseSchemeList = null;
@ -138,48 +148,49 @@ namespace BBWYB.Server.Business
}
/// <summary>
/// 获取采购方案
/// 获取采购方案(不含采购配配件基本信息)
/// </summary>
/// <param name="querySchemeRequest"></param>
/// <returns></returns>
public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest)
{
var select = fsql.Select<PurchaseScheme, Purchaser>().InnerJoin((ps, p) => ps.PurchaserId == p.Id);
var select = fsql.Select<PurchaseScheme>();
if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0)
select = select.Where((ps, p) => ps.Id == querySchemeRequest.SchemeId);
select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId);
else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0)
select = select.Where((ps, p) => querySchemeRequest.SchemeIdList.Contains(ps.Id));
select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id));
else
{
select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, (ps, p) => ps.ShopId == querySchemeRequest.ShopId)
.WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, (ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId))
.WhereIf(!string.IsNullOrEmpty(querySchemeRequest.PurchaserId), (ps, p) => ps.PurchaserId == querySchemeRequest.PurchaserId)
.WhereIf(querySchemeRequest.PurchasePlatform != null, (ps, p) => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform);
select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, ps => ps.ShopId == querySchemeRequest.ShopId)
.WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, ps => querySchemeRequest.SkuIdList.Contains(ps.SkuId));
//.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform);
}
var purchaseSchemeList = select.ToList((ps, p) => new PurchaseSchemeResponse
{
Id = ps.Id,
ProductId = ps.ProductId,
SkuId = ps.SkuId,
ShopId = ps.ShopId,
PurchaserId = p.Id,
PurchaserId2 = p.Id2,
PurchaserName = p.Name,
PurchaserLocation = p.Location,
DefaultCost = ps.DefaultCost,
RealCost = ps.RealCost,
CreateTime = ps.CreateTime,
PurchasePlatform = ps.PurchasePlatform,
LastPurchaseTime = ps.LastPurchaseTime
});
var purchaseSchemeList = select.ToList<PurchaseSchemeResponse>();
if (purchaseSchemeList.Count > 0)
{
var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList();
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId))
.ToList().Map<List<PurchaseSchemeProductResponse>>();
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct, Purchaser>()
.InnerJoin((psp, p) => psp.PurchaserId == p.Id)
.Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId))
.ToList((psp, p) => new PurchaseSchemeProductResponse
{
CreateTime = psp.CreateTime,
Id = psp.Id,
ProductId = psp.ProductId,
PurchaseProductId = psp.PurchaseProductId,
PurchaseUrl = psp.PurchaseUrl,
SkuId = psp.SkuId,
SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId,
PurchaserId = p.Id,
PurchaserId2 = p.Id2,
PurchaserLocation = p.Location,
PurchaserName = p.Name,
PurchasePlatform = p.Platform,
});
var purchaseSchemeProductSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId))
.ToList().Map<List<PurchaseSchemeProductSkuResponse>>();
@ -198,6 +209,23 @@ namespace BBWYB.Server.Business
schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList);
}
}
#region 封装采购商
foreach (var schemeProduct in schemeProductList)
{
if (!scheme.PurchaserList.Any(p => p.Id == schemeProduct.PurchaserId))
{
scheme.PurchaserList.Add(new Purchaser()
{
Id = schemeProduct.PurchaserId,
Id2 = schemeProduct.PurchaserId2,
Location = schemeProduct.PurchaserLocation,
Name = schemeProduct.PurchaserName,
Platform = schemeProduct.PurchasePlatform
});
}
}
#endregion
}
}
return purchaseSchemeList;
@ -212,29 +240,33 @@ namespace BBWYB.Server.Business
List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>();
foreach (var purchaseScheme in purchaseSchemeList)
{
var purchaseProductIds = purchaseScheme.PurchaseSchemeProductList.Select(p => p.PurchaseProductId).ToArray();
var purchaseSkuIds = new List<string>();
foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList)
var amount = 0M;
var purchasePlatformGroups = purchaseScheme.PurchaseSchemeProductList.GroupBy(p => p.PurchasePlatform);
foreach (var purchasePlatformGroup in purchasePlatformGroups)
{
purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId));
}
var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest()
{
FirstApiMode = Enums.PurchaseProductAPIMode.Spider,
PriceMode = Enums.PurchaseOrderMode.,
Params = new List<BatchPurchaseSkuBasicInfoParamRequest>()
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>()
{
new BatchPurchaseSkuBasicInfoParamRequest()
{
Platform = purchaseScheme.PurchasePlatform,
Platform = purchasePlatformGroup.Key.Value,
PurchaseProductIds = purchaseProductIds,
PurchaseSkuIds = purchaseSkuIds
}
}
});
});
amount += purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price));
}
var amount = purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price));
if (purchaseScheme.DefaultCost != amount)
{
purchaseScheme.DefaultCost = amount;
@ -255,34 +287,34 @@ namespace BBWYB.Server.Business
return purchaseSchemeList;
}
/// <summary>
/// 获取共同拥有的采购商
/// </summary>
/// <param name="querySchemeRequest"></param>
/// <returns></returns>
public IList<Purchaser> GetSharePurchaser(QuerySchemeRequest querySchemeRequest)
{
var skuCount = querySchemeRequest.SkuIdList.Count();
var purchaseSchemeList = fsql.Select<PurchaseScheme, Purchaser>().InnerJoin((ps, p) => ps.PurchaserId == p.Id)
.Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId)
.Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId))
.ToList();
if (purchaseSchemeList.Count() == 0)
return null;
var group = purchaseSchemeList.GroupBy(p => p.PurchaserId);
var sharePurchaserIdList = new List<string>();
foreach (var g in group)
{
if (g.Count() == skuCount)
sharePurchaserIdList.Add(g.Key);
}
if (sharePurchaserIdList.Count == 0)
return null;
return fsql.Select<Purchaser>().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList();
}
///// <summary>
///// 获取共同拥有的采购商
///// </summary>
///// <param name="querySchemeRequest"></param>
///// <returns></returns>
//public IList<Purchaser> GetSharePurchaser(QuerySchemeRequest querySchemeRequest)
//{
// var skuCount = querySchemeRequest.SkuIdList.Count();
// var purchaseSchemeList = fsql.Select<PurchaseScheme, Purchaser>().InnerJoin((ps, p) => ps.PurchaserId == p.Id)
// .Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId)
// .Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId))
// .ToList();
// if (purchaseSchemeList.Count() == 0)
// return null;
// var group = purchaseSchemeList.GroupBy(p => p.PurchaserId);
// var sharePurchaserIdList = new List<string>();
// foreach (var g in group)
// {
// if (g.Count() == skuCount)
// sharePurchaserIdList.Add(g.Key);
// }
// if (sharePurchaserIdList.Count == 0)
// return null;
// return fsql.Select<Purchaser>().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList();
//}
public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
{

4
BBWYB.Server.Model/BBWYB.Server.Model.csproj

@ -12,4 +12,8 @@
<PackageReference Include="FreeSql" Version="3.2.690" />
</ItemGroup>
<ItemGroup>
<Folder Include="Dto\Request\PurchaseScheme\v2\" />
</ItemGroup>
</Project>

14
BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs

@ -29,11 +29,11 @@ namespace BBWYB.Server.Model
[Column(StringLength = 50, IsNullable = false)]
public string ProductId { get; set; }
/// <summary>
/// 采购商Id
/// </summary>
[Column(StringLength = 20)]
public string PurchaserId { get; set; }
///// <summary>
///// 采购商Id
///// </summary>
//[Column(StringLength = 20)]
//public string PurchaserId { get; set; }
/// <summary>
/// 采购实际成本
@ -51,8 +51,8 @@ namespace BBWYB.Server.Model
/// </summary>
public DateTime? LastPurchaseTime { get; set; }
[Column(MapType = typeof(int), DbType = "int(1)")]
public Enums.Platform PurchasePlatform { get; set; }
//[Column(MapType = typeof(int), DbType = "int(1)")]
//public Enums.Platform PurchasePlatform { get; set; }
[Column(IsIgnore = true)]
public List<PurchaseSchemeProduct> PurchaseSchemeProductList { get; set; }

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

@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWYB.Server.Model.Dto
namespace BBWYB.Server.Model.Dto
{
public class InputPurchaseSchemeProductRequest
{
@ -11,17 +7,37 @@ namespace BBWYB.Server.Model.Dto
/// </summary>
public string ProductId { get; set; }
/// <summary>
/// 店铺商品Skull
/// 店铺商品SkuId
/// </summary>
public string SkuId { get; set; }
/// <summary>
/// 采购商品id
/// 采购商品Id
/// </summary>
public string PurchaseProductId { get; set; }
/// <summary>
/// 采购链接
/// </summary>
public string PurchaseUrl { get; set; }
/// <summary>
/// 采购商Id
/// </summary>
public string PurchaserId { get; set; }
/// <summary>
/// 采购商Id
/// </summary>
public string PurchaserId2 { get; set; }
/// <summary>
/// 采购商名称
/// </summary>
public string PurchaserName { get; set; }
/// <summary>
/// 采购商发货地
/// </summary>
public string PurchaserLocation { get; set; }
public IList<InputPurchaseSchemeProductSkuRequest> PurchaseSchemeProductSkuList { get; set; }
}
}

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

@ -15,24 +15,24 @@ namespace BBWYB.Server.Model.Dto
/// 采购实际成本
/// </summary>
public decimal? RealCost { get; set; }
/// <summary>
/// 采购商Id
/// </summary>
public string PurchaserId { get; set; }
///// <summary>
///// 采购商Id
///// </summary>
//public string PurchaserId { get; set; }
/// <summary>
/// 采购商Id
/// </summary>
public string PurchaserId2 { get; set; }
///// <summary>
///// 采购商Id
///// </summary>
//public string PurchaserId2 { get; set; }
/// <summary>
/// 采购商名称
/// </summary>
public string PurchaserName { get; set; }
/// <summary>
/// 采购商发货地
/// </summary>
public string PurchaserLocation { get; set; }
///// <summary>
///// 采购商名称
///// </summary>
//public string PurchaserName { get; set; }
///// <summary>
///// 采购商发货地
///// </summary>
//public string PurchaserLocation { get; set; }
/// <summary>
/// 采购平台
/// </summary>

16
BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs

@ -18,14 +18,14 @@ namespace BBWYB.Server.Model.Dto
public IList<string> SkuIdList { get; set; }
/// <summary>
/// 采购商Id, 可空
/// </summary>
public string PurchaserId { get; set; }
///// <summary>
///// 采购商Id, 可空
///// </summary>
//public string PurchaserId { get; set; }
/// <summary>
/// 采购平台
/// </summary>
public Enums.Platform? PurchasePlatform { get; set; }
///// <summary>
///// 采购平台
///// </summary>
//public Enums.Platform? PurchasePlatform { get; set; }
}
}

8
BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs

@ -6,6 +6,14 @@ namespace BBWYB.Server.Model.Dto
{
public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct
{
public string PurchaserName { get; set; }
public string PurchaserId2 { get; set; }
public string PurchaserLocation { get; set; }
public Enums.Platform? PurchasePlatform { get; set; }
public new List<PurchaseSchemeProductSkuResponse> PurchaseSchemeProductSkuList { get; set; }
public PurchaseSchemeProductResponse()

9
BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs

@ -6,17 +6,20 @@ namespace BBWYB.Server.Model.Dto
{
public class PurchaseSchemeResponse : PurchaseScheme
{
public string PurchaserName { get; set; }
//public string PurchaserName { get; set; }
public string PurchaserId2 { get; set; }
//public string PurchaserId2 { get; set; }
public string PurchaserLocation { get; set; }
//public string PurchaserLocation { get; set; }
public new List<PurchaseSchemeProductResponse> PurchaseSchemeProductList { get; set; }
public List<Purchaser> PurchaserList { get; set; }
public PurchaseSchemeResponse()
{
PurchaseSchemeProductList = new List<PurchaseSchemeProductResponse>();
PurchaserList = new List<Purchaser>();
}
}
}

Loading…
Cancel
Save