Beispiel #1
0
        public ResultModel RepoUpdateHandle(UserModel user, int repoId, string sids, string memo)
        {
            ResultModel result = new ResultModel();
            DAL.RepoDetailDAL repoDetailDAL = new RepoDetailDAL();
            NFMT.WareHouse.DAL.StockDAL stockDAL = new StockDAL();
            NFMT.WareHouse.Model.Stock stock = new Stock();
            NFMT.WareHouse.DAL.RepoApplyDetailDAL repoApplyDetailDAL = new RepoApplyDetailDAL();

            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
                {
                    result = repoDAL.Get(user, repoId);
                    if (result.ResultStatus != 0)
                        return result;

                    Model.Repo repo = result.ReturnValue as Model.Repo;
                    if (repo == null)
                    {
                        result.ResultStatus = -1;
                        return result;
                    }

                    repo.Memo = memo;

                    //更新回购
                    result = repoDAL.Update(user, repo);
                    if (result.ResultStatus != 0)
                        return result;

                    //作废所有该回购下的明细
                    result = repoDetailDAL.InvalidAll(user, repoId);
                    if (result.ResultStatus != 0)
                        return result;

                    string[] splits = sids.Split(',');
                    if (splits != null && splits.Length > 0)
                    {
                        foreach (string str in splits)
                        {
                            //获取库存信息
                            result = stockDAL.Get(user, Convert.ToInt32(str));
                            if (result.ResultStatus != 0)
                                return result;

                            stock = result.ReturnValue as NFMT.WareHouse.Model.Stock;
                            if (stock == null)
                            {
                                result.ResultStatus = -1;
                                return result;
                            }

                            result = repoApplyDetailDAL.GetDetailId(user, repo.RepoApplyId, Convert.ToInt32(str));
                            if (result.ResultStatus != 0)
                                return result;

                            int detailId = (int)result.ReturnValue;

                            //写入质押明细表
                            result = repoDetailDAL.Insert(user, new RepoDetail()
                            {
                                RepoId = repoId,
                                RepoApplyDetailId = detailId,
                                StockId = Convert.ToInt32(str),
                                RepoWeight = stock.GrossAmount,
                                Unit = stock.UintId
                            });
                            if (result.ResultStatus != 0)
                                return result;
                        }
                        scope.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
            }
            finally
            {
                if (result.ResultStatus != 0)
                    log.ErrorFormat("{0} {1},类型序号:{2}", user.EmpName, result.Message, result.ReturnValue);
                else if (log.IsInfoEnabled)
                    log.InfoFormat("{0} {1},类型序号:{2}", user.EmpName, result.Message, result.ReturnValue);
            }

            return result;
        }