Browse Source

良库通知接口

liangku_skuoptimazation
shanji 1 year ago
parent
commit
d5d1dc9ab9
  1. 66
      BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs
  2. 130
      BBWYB.Server.Model/Db/BBWY/PurchaseOrderSku.cs

66
BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs

@ -2,6 +2,7 @@
using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Db.BBWY;
using BBWYB.Server.Model.Dto;
using FreeSql;
using Yitter.IdGenerator;
@ -16,11 +17,76 @@ namespace BBWYB.Server.Business
this.fsqlManager = fsqlManager;
}
public Enums.TriggerOptimizationReason? GetOptimizationReason(SpuTotalSaleInfo s)
{
if (s.IsFirstPurchaseCompleted == false)
return Enums.TriggerOptimizationReason.;
if (s.IsFirstPurchaseCompleted == true &&
s.IsFirstOptimizationCompleted == false &&
s.ItemCount - s.FirstPurchaseCompletedItemCount >= 20)
return Enums.TriggerOptimizationReason.;
if (s.IsFirstOptimizationCompleted == true && s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2)
return Enums.TriggerOptimizationReason.;
return null;
}
public void LKInventoryAlertNotification(BatchLKInventoryAlertRequest request)
{
#region 确定JDSKU对应的拳探SKU和拳探SPU
var jdSkuIdList = request.Items.Select(x => x.Sku).Distinct().ToList();
var jdqtskuList = fsqlManager.BBWYCfsql.Select<PurchaseOrderSku>()
.Where(ps1 => ps1.ShopId == request.ShopId && jdSkuIdList.Contains(ps1.SkuId))
.GroupBy(ps1 => ps1.SkuId)
.WithTempQuery(g => new { MaxId = g.Max(g.Value.Id) })
.From<PurchaseOrderSku>()
.InnerJoin((ps1, ps2) => ps1.MaxId == ps2.Id)
.ToList((ps1, ps2) => ps2);
var qtSkuIdList = jdqtskuList.Select(x => x.PurchaseSkuIds).Distinct().ToList();
var productSkuList = fsql.Select<Model.Db.ProductSku>(qtSkuIdList).ToList();
var productIdList = productSkuList.Select(ps => ps.ProductId).Distinct().ToList();
var spuTotalInfoList = fsql.Select<SpuTotalSaleInfo>().Where(spi => productIdList.Contains(spi.ProductId)).ToList();
#endregion
//查询已存在未结束的优化任务
var dbSkuOptimizationTaskList = fsql.Select<SkuOptimizationTask>()
.Where(t => t.ShopId == request.ShopId &&
t.IsOptimizationCompleted == false &&
qtSkuIdList.Contains(t.SkuId))
.ToList();
foreach (var reqItem in request.Items)
{
var qtsku = jdqtskuList.FirstOrDefault(x => x.SkuId == reqItem.Sku);
if (qtsku == null)
continue;
var qtskuId = qtsku.PurchaseSkuIds; //拳探skuId
if (dbSkuOptimizationTaskList.Any(s => s.SkuId == qtskuId)) //过滤未结束的sku
continue;
var productSku = productSkuList.FirstOrDefault(ps => ps.Id == qtskuId);
if (productSku == null)
continue;
var spuTotalInfo = spuTotalInfoList.FirstOrDefault(psi=>psi.ProductId == productSku.ProductId); //spu销量
if (spuTotalInfo == null)
continue;
var reason = GetOptimizationReason(spuTotalInfo); //过滤不需要优化的spu
if (reason == null)
continue;
}
}
/// <summary>
/// 完成优化
/// </summary>

130
BBWYB.Server.Model/Db/BBWY/PurchaseOrderSku.cs

@ -0,0 +1,130 @@
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;
namespace BBWYB.Server.Model.Db.BBWY
{
/// <summary>
/// 采购商品表
/// </summary>
[Table(Name = "purchaseordersku", DisableSyncStructure = true)]
public partial class PurchaseOrderSku
{
[Column(IsPrimary = true)]
public long Id { get; set; }
/// <summary>
/// 打包耗材费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? ConsumableAmount { get; set; } = 0.00M;
/// <summary>
/// 创建时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 头程运费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 入仓费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? InStorageAmount { get; set; } = 0.00M;
/// <summary>
/// Sku Logo
/// </summary>
public string Logo { get; set; }
/// <summary>
/// 单价
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? Price { get; set; } = 0.00M;
/// <summary>
/// 采购货款
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? ProductAmount { get; set; }
[Column(StringLength = 100)]
public string ProductId { get; set; }
/// <summary>
/// 采购金额(采购货款+采购运费)
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? PurchaseAmount { get; set; }
/// <summary>
/// 采购运费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? PurchaseFreight { get; set; }
/// <summary>
/// 采购单Id
/// </summary>
[Column(StringLength = 100)]
public string PurchaseOrderId { get; set; }
/// <summary>
/// 采购方案Id
/// </summary>
public long? PurchaseSchemeId { get; set; }
/// <summary>
/// 采购SkuId串
/// </summary>
[Column(StringLength = 500)]
public string PurchaseSkuIds { get; set; }
/// <summary>
/// 质检费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? QualityInspectionAmount { get; set; } = 0.00M;
/// <summary>
/// 采购数量
/// </summary>
public int? Quantity { get; set; }
/// <summary>
/// 店铺Id
/// </summary>
public long? ShopId { get; set; }
[Column(StringLength = 100)]
public string SkuId { get; set; }
/// <summary>
/// Sku标题
/// </summary>
public string SkuTitle { get; set; }
[Column(MapType = typeof(int?))]
public Enums.StockType? StockType { get; set; }
/// <summary>
/// 齐库任务Id
/// </summary>
public long? QiKuTaskId { get; set; }
}
}
Loading…
Cancel
Save