예제 #1
0
파일: StockLogBLL.cs 프로젝트: weiliji/NFMT
        /// <summary>
        /// 库存处理(此方法不包含事务,必须在事务下执行)
        /// </summary>
        /// <param name="stockLog">库存流水</param>
        /// <param name="stockLogAttach">库存流水附件</param>
        /// <param name="user">当前用户</param>
        /// <param name="bdStyleDetail">库存操作类型</param>
        /// <returns></returns>
        public NFMT.Common.ResultModel StockHandle(NFMT.Common.UserModel user, NFMT.WareHouse.Model.StockLog stockLog, List<NFMT.WareHouse.Model.StockLogAttach> stockLogAttachs, StockOperateEnum stockOperate)
        {
            NFMT.Common.ResultModel result = new NFMT.Common.ResultModel();

            //result = CheckUser(user);
            //if (result.ResultStatus != 0)
            //    return result;

            try
            {
                //获取stock
                NFMT.WareHouse.BLL.StockBLL stockBLL = new NFMT.WareHouse.BLL.StockBLL();
                result = stockBLL.Get(user, stockLog.StockId);
                if (result.ResultStatus != 0)
                    return result;

                NFMT.WareHouse.Model.Stock stock = result.ReturnValue as NFMT.WareHouse.Model.Stock;

                //根据库存处理类型修改库存状态
                result = stockBLL.UpdateStockStatus(user, stock, stockOperate);
                if (result.ResultStatus != 0)
                    return result;

                //写库存流水
                NFMT.WareHouse.DAL.StockLogDAL stockLogDAL = new StockLogDAL();
                result = stockLogDAL.Insert(user, stockLog);
                if (result.ResultStatus != 0)
                    return result;

                int stockLogId = (int)result.ReturnValue;

                //写库存流水附件
                if (stockLogAttachs != null)
                {
                    NFMT.WareHouse.DAL.StockLogAttachDAL stockLogAttachDAL = new StockLogAttachDAL();
                    foreach (NFMT.WareHouse.Model.StockLogAttach stockLogAttach in stockLogAttachs)
                    {
                        stockLogAttach.StockLogId = stockLogId;
                        result = stockLogAttachDAL.Insert(user, stockLogAttach);
                        if (result.ResultStatus != 0)
                            return result;
                    }
                }
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                result.ResultStatus = -1;
            }
            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;
        }
예제 #2
0
파일: StockBLL.cs 프로젝트: weiliji/NFMT
        public ResultModel UpdateStockStatus(UserModel user, Stock stock, StockOperateEnum operate)
        {
            ResultModel result = new ResultModel();

            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
                {
                    ResultModel stockResult = this.Get(user, stock.StockId);
                    stock = stockResult.ReturnValue as Stock;

                    if (stock == null || stock.StockId <= 0)
                    {
                        result.Message = "库存不存在";
                        result.ResultStatus = -1;
                        return result;
                    }

                    switch (operate)
                    {
                        case StockOperateEnum.出库:
                            if (stock.StockStatus != StockStatusEnum.在库正常)
                            {
                                result.Message = "非正常库存不能进行出库操作";
                                return result;
                            }
                            result = stockDAL.UpdateStockStatus(stock, StockStatusEnum.预售库存);
                            break;
                        case StockOperateEnum.入库:
                            result = stockDAL.UpdateStockStatus(stock, StockStatusEnum.预入库存);
                            break;
                        case StockOperateEnum.质押:
                            if (stock.StockStatus != StockStatusEnum.在库正常)
                            {
                                result.Message = "非正常库存不能进行质押操作";
                                return result;
                            }
                            result = stockDAL.UpdateStockStatus(stock, StockStatusEnum.预押库存);
                            break;
                        case StockOperateEnum.回购:
                            if (stock.StockStatus != StockStatusEnum.质押库存)
                            {
                                result.Message = "非质押库存不能进行回购操作";
                                return result;
                            }
                            result = stockDAL.UpdateStockStatus(stock, StockStatusEnum.预回购库存);
                            break;
                        default:
                            result.Message = "不存在库存操作类型";
                            result.ResultStatus = -1;
                            break;
                    }

                    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;
        }