public async Task <ServiceResponseBase> Update(BadReportViewModel vm, List <BadReportDetailViewModel> details, AccountViewModel account) { try { var badReport = await _context.BadReport.FirstOrDefaultAsync(o => o.Id == vm.Id); badReport.BadType = vm.BadType; badReport.Remark = vm.Remark; badReport.CompanyId = account.CompanyId; badReport.Num = details.Sum(o => o.Num); _context.Entry(badReport).State = EntityState.Modified; var _details = await _context.BadReportDetail.Where(o => o.OrderNum == badReport.OrderNum).ToListAsync(); foreach (var _detail in _details) { var detail = details.FirstOrDefault(o => o.ProductNum == _detail.ProductNum && o.FromLocalNum == _detail.FromLocalNum); if (detail == null) { _context.BadReportDetail.Remove(_detail); } } foreach (var detail in details) { var _detail = _details.FirstOrDefault(o => o.ProductNum == detail.ProductNum && o.FromLocalNum == detail.FromLocalNum); if (_detail != null) { _detail.Num = detail.Num; } else { var entry = Mapper.Map <BadReportDetail>(detail); entry.OrderNum = badReport.OrderNum; entry.CreateTime = DateTime.Now; entry.BarCode = entry.BarCode; entry.SnNum = Guid.NewGuid().ToString("N"); entry.Num = detail.Num; await _context.BadReportDetail.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> Create() { var vm = new BadReportViewModel(); List <BadReportDetailViewModel> storDetails = new List <BadReportDetailViewModel>(); HttpContext.Session.Set("StorDetail", SerializeHelper.SerializeToBinary(storDetails)); return(View(vm)); }
public async Task <IActionResult> Edit(int id, BadReportViewModel vm) { List <BadReportDetailViewModel> storDetails = new List <BadReportDetailViewModel>(); byte[] storDetailsByte = null; if (HttpContext.Session.TryGetValue("StorDetail", out storDetailsByte)) { storDetails = (List <BadReportDetailViewModel>)SerializeHelper.DeserializeWithBinary(storDetailsByte); } var result = await _badReportServices.Update(vm, storDetails, GetAccount()); if (result.Status == Status.ok) { return(RedirectToAction(nameof(Index))); } else { ModelState.AddModelError("", "保存失败: " + result.Message); return(View(vm)); } }
public async Task <ServiceResponseBase> Create(BadReportViewModel vm, List <BadReportDetailViewModel> details, AccountViewModel account) { try { var badReport = Mapper.Map <BadReport>(vm); badReport.Num = details.Sum(o => o.Num); badReport.CompanyId = account.CompanyId; badReport.CreateTime = DateTime.Now; badReport.CreateUser = account.Name; badReport.StorageNum = account.BranchId.ToString(); badReport.Status = (int)BadStatus.等待审核; await _context.BadReport.AddAsync(badReport); foreach (var detail in details) { var entry = Mapper.Map <BadReportDetail>(detail); entry.OrderNum = badReport.OrderNum; entry.CreateTime = DateTime.Now; entry.BarCode = entry.BarCode; entry.SnNum = Guid.NewGuid().ToString("N"); await _context.BadReportDetail.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 }); } }