public async Task <IActionResult> Create() { var vm = new InStorageViewModel(); await Init(vm); List <InStorDetailViewModel> inStorDetails = new List <InStorDetailViewModel>(); HttpContext.Session.Set("InStorDetail", SerializeHelper.SerializeToBinary(inStorDetails)); return(View(vm)); }
public async Task Init(InStorageViewModel vm) { vm.Suppliers = await _basicInfoServices.GetSuppliers(GetAccount()); vm.Suppliers.Insert(0, new SelectListItem() { Value = "0", Text = "" }); //vm.Goods = await _basicInfoServices.GetGoods(GetAccount()); //vm.Customers = await _basicInfoServices.GetCustomers(GetAccount()); //vm.Measures = await _basicInfoServices.GetMeasures(GetAccount()); }
public async Task <ServiceResponseBase> Create(InStorageViewModel vm, List <InStorDetailViewModel> inStorDetails, AccountViewModel account) { try { var inStorage = Mapper.Map <InStorage>(vm); var supId = Convert.ToInt32(vm.SupNum); var sup = await _context.Supplier.FirstOrDefaultAsync(o => o.Id == supId); inStorage.SupName = sup.SupName; inStorage.Status = (int)InOpStatus.待入库; inStorage.Num = inStorDetails.Sum(o => o.Num); inStorage.CreateTime = DateTime.Now; inStorage.CreateUser = account.Name; inStorage.CompanyId = account.CompanyId; inStorage.StorageNum = account.BranchId.ToString(); await _context.InStorage.AddAsync(inStorage); foreach (var inStorDetail in inStorDetails) { var entry = Mapper.Map <InStorDetail>(inStorDetail); entry.OrderNum = inStorage.OrderNum; entry.CreateTime = DateTime.Now; entry.BarCode = entry.BarCode; entry.SnNum = Guid.NewGuid().ToString("N"); await _context.InStorDetail.AddAsync(entry); } await _context.SaveChangesAsync(); return(new ServiceResponseBase() { Status = Status.ok }); } catch (Exception ex) { _logger.LogError(ex.Message, ex); return(new ServiceResponseBase() { Status = Status.error, Message = ex.Message }); } }
public async Task <IActionResult> Edit(int id, InStorageViewModel vm) { List <InStorDetailViewModel> inStorDetails = new List <InStorDetailViewModel>(); byte[] inStorDetailsByte = null; if (HttpContext.Session.TryGetValue("InStorDetail", out inStorDetailsByte)) { inStorDetails = (List <InStorDetailViewModel>)SerializeHelper.DeserializeWithBinary(inStorDetailsByte); } var result = await _inStorageServices.Update(vm, inStorDetails, GetAccount()); if (result.Status == Status.ok) { return(RedirectToAction(nameof(Index))); } else { ModelState.AddModelError("", "保存失败: " + result.Message); await Init(vm); return(View(vm)); } }
public async Task <ServiceResponseBase> Update(InStorageViewModel vm, List <InStorDetailViewModel> inStorDetails, AccountViewModel account) { try { var inStorage = await _context.InStorage.FirstOrDefaultAsync(o => o.Id == vm.Id); inStorage.InType = vm.InType; inStorage.SupNum = vm.SupNum; var supId = Convert.ToInt32(vm.SupNum); var sup = await _context.Supplier.FirstOrDefaultAsync(o => o.Id == supId); inStorage.SupName = sup.SupName; inStorage.ContactName = vm.ContactName; inStorage.Phone = vm.Phone; inStorage.Remark = vm.Remark; var status = (InOpStatus)inStorage.Status; if (status == InOpStatus.待入库) { inStorage.Num = inStorDetails.Sum(o => o.Num); } _context.Entry(inStorage).State = EntityState.Modified; var _inStorDetails = await _context.InStorDetail.Where(o => o.OrderNum == inStorage.OrderNum).ToListAsync(); foreach (var _inStorDetail in _inStorDetails) { var inStorDetail = inStorDetails.FirstOrDefault(o => o.ProductNum == _inStorDetail.ProductNum && o.LocalNum == _inStorDetail.LocalNum); if (inStorDetail == null) { _context.InStorDetail.Remove(_inStorDetail); } } foreach (var inStorDetail in inStorDetails) { var _inStorDetail = _inStorDetails.FirstOrDefault(o => o.ProductNum == inStorDetail.ProductNum && o.LocalNum == inStorDetail.LocalNum); if (_inStorDetail != null) { if (status == InOpStatus.待入库) { _inStorDetail.Num = inStorDetail.Num; } if (status == InOpStatus.已入库) { _inStorDetail.RealNum = inStorDetail.Num; } if (status == InOpStatus.已上架) { _inStorDetail.PutRealNum = inStorDetail.Num; } _inStorDetail.InPrice = inStorDetail.InPrice; } else { var entry = Mapper.Map <InStorDetail>(inStorDetail); entry.OrderNum = inStorage.OrderNum; entry.CreateTime = DateTime.Now; entry.BarCode = entry.ProductNum; entry.SnNum = Guid.NewGuid().ToString("N"); if (status == InOpStatus.待入库) { entry.Num = inStorDetail.Num; } if (status == InOpStatus.已入库) { entry.RealNum = inStorDetail.Num; } if (status == InOpStatus.已上架) { entry.PutRealNum = inStorDetail.Num; } await _context.InStorDetail.AddAsync(entry); } } await _context.SaveChangesAsync(); return(new ServiceResponseBase() { Status = Status.ok }); } catch (Exception ex) { _logger.LogError(ex.Message, ex); return(new ServiceResponseBase() { Status = Status.error, Message = ex.Message }); } }