public ActionResult AddProduct([ModelBinder(typeof(JsonBinder<List<LocalProductEntity>>))] List<LocalProductEntity> list) { List<OutStoDetailEntity> ListCache = Session[CacheKey.TEMPDATA_CACHE_OUTSTORDETAIL] as List<OutStoDetailEntity>; ListCache = ListCache.IsNull() ? new List<OutStoDetailEntity>() : ListCache; if (!list.IsNullOrEmpty()) { List<ProductEntity> ListSource = new ProductProvider().GetListByCache(); foreach (LocalProductEntity item in list) { ProductEntity product = ListSource.FirstOrDefault(a => a.SnNum == item.ProductNum); if (product.IsNotNull()) { if (!ListCache.Exists(a => a.ProductNum == item.ProductNum && a.BatchNum == item.BatchNum && a.LocalNum == item.LocalNum)) { OutStoDetailEntity entity = new OutStoDetailEntity(); entity.SnNum = SequenceProvider.GetSequence(typeof(OutStoDetailEntity)); entity.ProductName = product.ProductName; entity.BarCode = product.BarCode; entity.BatchNum = item.BatchNum; entity.ProductNum = product.SnNum; entity.LocalNum = item.LocalNum; entity.LocalName = item.LocalName; entity.StorageNum = this.DefaultStore; entity.Num = item.Num; entity.IsPick = (int)EBool.No; entity.Size = product.Size.IsEmpty() ? "" : product.Size; entity.RealNum = 0; entity.OutPrice = product.InPrice; entity.Amount = product.InPrice * entity.Num; entity.CreateTime = DateTime.Now; ListCache.Add(entity); } else { OutStoDetailEntity entity = ListCache.First(a => a.ProductNum == item.ProductNum && a.BatchNum == item.BatchNum && a.LocalNum == item.LocalNum); entity.Num += item.Num; entity.OutPrice = product.InPrice; entity.Amount = product.InPrice * entity.Num; entity.CreateTime = DateTime.Now; } } } } if (!ListCache.IsNullOrEmpty()) { Session[CacheKey.TEMPDATA_CACHE_OUTSTORDETAIL] = ListCache; } return Content(string.Empty); }
public ActionResult Edit() { string orderNum = WebUtil.GetQueryStringValue<string>("OrderNum", string.Empty); Bill<CheckStockEntity, CheckStockInfoEntity> bill = new CheckOrder(); CheckStockEntity entity = new CheckStockEntity(); entity.OrderNum = orderNum; entity = bill.GetOrder(entity); if (entity.IsNull()) { return Redirect("/Check/Product/List"); } string checkType = EnumHelper.GetOptions<ECheckType>(entity.Type); ViewBag.CheckType = checkType; ViewBag.ProductType = EnumHelper.GetOptions<EProductType>(entity.ProductType); ViewBag.Entity = entity; CheckStockInfoEntity info = new CheckStockInfoEntity(); info.OrderNum = orderNum; List<CheckStockInfoEntity> list = bill.GetOrderDetail(info); List<ProductEntity> ListProducts = new List<ProductEntity>(); List<ProductEntity> ListSource = new ProductProvider().GetListByCache(); if (!list.IsNullOrEmpty()) { Parallel.ForEach(list, item => { if (ListSource.Exists(a => a.SnNum == item.TargetNum)) { ProductEntity target = ListSource.FirstOrDefault(a => a.SnNum == item.TargetNum); ListProducts.Add(target); } }); } Session[CacheKey.JOOSHOW_CHECKDETAIL_CACHE] = ListProducts; return View(); }