public OPC_SKU Sync(int productId, int colorValueId, int sizeValueId) { using (var db = new YintaiHZhouContext()) { var skuExt = db.OPC_SKU.FirstOrDefault(p => p.ColorValueId == colorValueId && p.SizeValueId == sizeValueId && p.ProductId == productId); // 如果已经存在SKU记录直接返回 if (skuExt != null) { return(skuExt); } // 创建新的Sku并返回 var newSku = new OPC_SKU() { ProductId = productId, ColorValueId = colorValueId, SizeValueId = sizeValueId }; db.OPC_SKU.Add(newSku); db.SaveChanges(); return(newSku); } }
private static void Process(OPC_SKU sku) { var list = new List <IStockAttregateProcessor>(); list.Add(new Set4SaleProcessor()); list.Add(new AggregateToInveontoryProcessor()); var handler = new DefaultStockHandler(list); IStockAggregator aggregator = new DefaultStockAggregator(); handler.Process(aggregator.Aggregate(QueryStocks(sku.Id))); }
public Inventory Sync(OPC_SKU sku) { using (var db = new YintaiHZhouContext()) { var stocks = db.OPC_Stock.Where(x => x.SkuId == sku.Id); if (!stocks.Any()) { return(null); } int amount = 0; if (stocks.Any(x => x.Count > 0)) { var price = stocks.Where(x => x.Count >= 0).Min(x => x.Price); var cnt = stocks.Where(x => x.Price == price).Sum(x => x.Count); if (cnt.HasValue) { amount = cnt.Value; } } var inventory = db.Inventories.FirstOrDefault(x => x.ProductId == sku.ProductId && x.PColorId == sku.ColorValueId && x.PSizeId == sku.SizeValueId); if (inventory == null) { inventory = db.Inventories.Add(new Inventory() { ProductId = sku.ProductId, PColorId = sku.ColorValueId, PSizeId = sku.SizeValueId, UpdateDate = DateTime.Now, UpdateUser = SystemDefine.SystemUser, ChannelInventoryId = 0, Amount = amount }); } else { inventory.UpdateDate = DateTime.Now; inventory.UpdateUser = SystemDefine.SystemUser; inventory.Amount = amount; } db.SaveChanges(); return(inventory); } }