コード例 #1
0
        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));
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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
                });
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        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
                });
            }
        }