Browse Source

以分组形式返回采购方案

yijia
shanji 2 years ago
parent
commit
53cc41c449
  1. 13
      BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
  2. 88
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  3. 4
      BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
  4. 20
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeAndGroupRequest.cs
  5. 22
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
  6. 2
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/RefreshSchemeRequest.cs
  7. 9
      BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeGroupResponse.cs

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

@ -1,5 +1,4 @@
using BBWYB.Server.Business;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
@ -38,6 +37,17 @@ namespace BBWYB.Server.API.Controllers
return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
}
/// <summary>
/// 获取采购分组和采购方案
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public IList<PurchaseSchemeGroupResponse> GetPurchaseSchemeAndGroupList(QuerySchemeAndGroupRequest request)
{
return purchaseSchemeBusiness.GetPurchaseSchemeAndGroupList(request);
}
/// <summary>
/// 获取Sku采购方案数量
/// </summary>
@ -49,6 +59,7 @@ namespace BBWYB.Server.API.Controllers
return purchaseSchemeBusiness.GetPurchaseSchemeCountList(request);
}
///// <summary>
///// 删除采购商
///// </summary>

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

@ -199,24 +199,46 @@ namespace BBWYB.Server.Business
/// <returns></returns>
public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest request)
{
var select = fsql.Select<PurchaseScheme>();
if (request.SchemeId != null && request.SchemeId != 0)
select = select.Where(ps => ps.Id == request.SchemeId);
#region 处理条件优先级
if (request.SchemeId != null)
{
request.SchemeIdList?.Clear();
request.SchemeGroupIdList?.Clear();
request.SkuIdList?.Clear();
request.ProductIdList?.Clear();
}
else if (request.SchemeIdList != null && request.SchemeIdList.Count() > 0)
select = select.Where(ps => request.SchemeIdList.Contains(ps.Id));
else
{
select = select.WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId)
.WhereIf(request.SkuIdList != null && request.SkuIdList.Count() > 0, ps => request.SkuIdList.Contains(ps.SkuId));
request.SchemeGroupIdList?.Clear();
request.SkuIdList?.Clear();
request.ProductIdList?.Clear();
}
else if (request.SchemeGroupIdList != null && request.SchemeGroupIdList.Count() > 0)
{
request.SkuIdList?.Clear();
request.ProductIdList?.Clear();
}
else if (request.SkuIdList != null && request.SkuIdList.Count() > 0)
{
request.ProductIdList?.Clear();
}
#endregion
if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId))
{
select = select.Where(ps => fsql.Select<PurchaseSchemeProduct, Purchaser>()
.InnerJoin((psp, p) => psp.PurchaserId == p.Id)
.WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform)
.WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId)
.Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any());
}
var select = fsql.Select<PurchaseScheme>()
.WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId)
.WhereIf(request.SchemeId != null && request.SchemeId != 0, ps => ps.Id == request.SchemeId)
.WhereIf(request.SchemeIdList != null && request.SchemeIdList.Count() > 0, ps => request.SchemeIdList.Contains(ps.Id))
.WhereIf(request.SchemeGroupIdList != null && request.SchemeGroupIdList.Count() > 0, ps => request.SchemeGroupIdList.Contains(ps.SchemeGroupId))
.WhereIf(request.SkuIdList != null && request.SkuIdList.Count() > 0, ps => request.SkuIdList.Contains(ps.SkuId))
.WhereIf(request.ProductIdList != null && request.ProductIdList.Count() > 0, ps => request.ProductIdList.Contains(ps.ProductId));
if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId))
{
select = select.Where(ps => fsql.Select<PurchaseSchemeProduct, Purchaser>()
.InnerJoin((psp, p) => psp.PurchaserId == p.Id)
.WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform)
.WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId)
.Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any());
}
var sql = select.ToSql();
var purchaseSchemeList = select.OrderByDescending(ps => ps.CreateTime).ToList<PurchaseSchemeResponse>();
@ -322,6 +344,26 @@ namespace BBWYB.Server.Business
return purchaseSchemeList;
}
public IList<PurchaseSchemeGroupResponse> GetPurchaseSchemeAndGroupList(QuerySchemeAndGroupRequest request)
{
var purchaseSchemeGroupsList = fsql.Select<PurchaseSchemeGroup>()
.Where(psg => psg.ShopId == request.ShopId &&
request.ProductIdList.Contains(psg.ProductId))
.ToList<PurchaseSchemeGroupResponse>();
if (purchaseSchemeGroupsList.Count() > 0)
{
var groupIds = purchaseSchemeGroupsList.Select(g => g.Id).ToList();
var purchaseSchemeList = GetPurchaseSchemeList(new QuerySchemeRequest()
{
IncludePurchaseSkuBasicInfo = request.IncludePurchaseSkuBasicInfo,
SchemeGroupIdList = groupIds
});
foreach (var psg in purchaseSchemeGroupsList)
psg.PurchaseSchemeList = purchaseSchemeList.Where(ps => ps.SchemeGroupId == psg.Id).ToList();
}
return purchaseSchemeGroupsList;
}
public IList<PurchaseSchemeCountResponse> GetPurchaseSchemeCountList(QuerySchemeCountRequest request)
{
var list = fsql.Select<PurchaseScheme>().Where(ps => request.SkuIdList.Contains(ps.SkuId))
@ -467,21 +509,5 @@ namespace BBWYB.Server.Business
}
return list;
}
//public void EditPurchaseRatio(EditPurchaseRatioAndActualPriceRequest request)
//{
// if (request.Ratio < 1)
// request.Ratio = 1;
// fsql.Update<PurchaseSchemeProductSku>().Set(pss => pss.PurchaseRatio, request.Ratio)
// .Set(pss => pss.ActualPrice, request.ActualPrice)
// .Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId &&
// pss.SkuId == request.SkuId &&
// pss.PurchaseSkuId == request.PurchaseSkuId)
// .ExecuteAffrows();
//}
}
}

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

@ -67,8 +67,8 @@ namespace BBWYB.Server.Model
/// <summary>
/// 分组Id
/// </summary>
[Column(DbType = "bigint", IsNullable = true)]
public long? SchemeGroupId { get; set; }
[Column(DbType = "bigint")]
public long SchemeGroupId { get; set; } = 0;
[Column(IsIgnore = true)]
public List<PurchaseSchemeProduct> PurchaseSchemeProductList { get; set; }

20
BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeAndGroupRequest.cs

@ -0,0 +1,20 @@
namespace BBWYB.Server.Model.Dto
{
public class QuerySchemeAndGroupRequest
{
/// <summary>
/// 店铺Id
/// </summary>
public long ShopId { get; set; }
/// <summary>
/// 店铺商品Id列表
/// </summary>
public IList<string> ProductIdList { get; set; }
/// <summary>
/// 是否包含采购配件的基本信息(单价,Logo,标题等) 是=1 否=0或null
/// </summary>
public int? IncludePurchaseSkuBasicInfo { get; set; }
}
}

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

@ -5,18 +5,32 @@ namespace BBWYB.Server.Model.Dto
public class QuerySchemeRequest
{
/// <summary>
/// 采购方案Id
/// 采购方案Id,有值则忽略SchemeIdList,SchemeGroupIdList,SkuIdList,ProductIdList
/// </summary>
public long? SchemeId { get; set; }
/// <summary>
/// 采购方案Id集合
/// 采购方案Id集合,有值则忽略SchemeGroupIdList,SkuIdList,ProductIdList
/// </summary>
public IList<long> SchemeIdList { get; set; }
public List<long> SchemeIdList { get; set; }
/// <summary>
/// 采购方案分组Id集合,有值则忽略SkuIdList,ProductIdList
/// </summary>
public List<long> SchemeGroupIdList { get; set; }
/// <summary>
/// skuId集合,有值则忽略ProductIdList
/// </summary>
public List<string> SkuIdList { get; set; }
/// <summary>
/// spuId集合,有值则忽略
/// </summary>
public List<string> ProductIdList { get; set; }
public long? ShopId { get; set; }
public IList<string> SkuIdList { get; set; }
/// <summary>
/// 采购商Id, 只要其中一个采购商品满足采购商条件则命中查询

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

@ -2,6 +2,6 @@
{
public class RefreshSchemeRequest
{
public IList<long> SchemeIdList { get; set; }
public List<long> SchemeIdList { get; set; }
}
}

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

@ -0,0 +1,9 @@
using BBWYB.Server.Model.Db;
namespace BBWYB.Server.Model.Dto
{
public class PurchaseSchemeGroupResponse : PurchaseSchemeGroup
{
public IList<PurchaseSchemeResponse> PurchaseSchemeList { get; set; }
}
}
Loading…
Cancel
Save