Example #1
0
        /// <summary>
        /// @xis 添加审批记录
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <bool> AddApplyLog(t_apply_log model)
        {
            string sql = g_sqlMaker.Insert <t_apply_log>(i => new
            {
                i.order_sn,
                i.position_id,
                i.remark,
                i.user_id,
                i.apply_status
            }).ToSQL();

            return(await g_dbHelper.ExecAsync(sql, model) > 0);
        }
Example #2
0
        public async Task <List <ApplyProcess> > GetApplyLogByOrderSnAsync(EnumOrderType _ot, string order_sn, int _depart, int _start_position)
        {
            string             sql            = g_sqlMaker.Select <t_apply_log>().Where("order_sn", "=", "@order_sn").ToSQL();
            List <t_apply_log> apply_log_list = await g_dbHelper.QueryListAsync <t_apply_log>(sql, new { order_sn });

            IPositionServer     positionServer  = new PositionServerImpl(g_dbHelper, g_logServer);
            IUserServer         userServer      = new UserServerImpl(g_dbHelper, g_logServer);
            List <ApplyProcess> apply_list      = new List <ApplyProcess>();
            IEnumerable <int>   apply_proc_list = GetApplyList(_ot, _depart, _start_position);

            foreach (var item in apply_proc_list)
            {
                t_apply_log apply_log_model = apply_log_list.FirstOrDefault(f => f.position_id == item);
                t_position  position_model  = await positionServer.GetPosition(s => new { s.position_name }, item);

                if (apply_log_model != null)
                {
                    t_user user_model = await userServer.GetUserById(s => new { s.real_name }, apply_log_model.user_id);

                    apply_list.Add(new ApplyProcess
                    {
                        audit_status      = apply_log_model.apply_status,
                        audit_status_desc = ((EnumAuditStatus)apply_log_model.apply_status).GetDesc(),
                        audit_time        = apply_log_model.add_time.Value.ToString("yyyy-MM-dd hh:mm") ?? "",
                        remark            = apply_log_model.remark,
                        position_name     = position_model.position_name,
                        auditer           = user_model.real_name,
                    });
                }
                else
                {
                    apply_list.Add(new ApplyProcess
                    {
                        position_name = position_model.position_name
                    });
                }
            }

            return(apply_list);
        }
Example #3
0
        /// <summary>
        /// @xis 入库审批
        /// </summary>
        /// <param name="reqmodel"></param>
        /// <returns></returns>
        public async Task <Result> StockInAuditAsync(reqmodel <AuditModel> reqmodel)
        {
            const string modelname = "StockServerImpl.StockInAuditAsync";
            Result       result    = new Result {
                code = ErrorCodeConst.ERROR_1037, status = ErrorCodeConst.ERROR_403
            };

            t_stock_in stock_in = await GetStockInByOrderSn(s => new
            {
                s.apply_process,
                s.apply_status,
                s.department_id
            }, reqmodel.Data.order_sn);

            if (stock_in == null)
            {
                result.code = ErrorCodeConst.ERROR_1038;
                g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单不存在", EnumLogType.Info);
                return(result);
            }
            stock_in.order_sn = reqmodel.Data.order_sn;

            if (stock_in.apply_status == (int)EnumApplyStatus.Agree)
            {
                result.code = ErrorCodeConst.ERROR_1039;
                g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},订单被审核完成", EnumLogType.Info);
                return(result);
            }
            if (stock_in.apply_status == (int)EnumApplyStatus.Reject)
            {
                result.code = ErrorCodeConst.ERROR_1041;
                g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},订单被驳回", EnumLogType.Info);
                return(result);
            }
            IAuditServer auditServer  = new AuditServerImpl(g_dbHelper, g_logServer);
            int?         next_applyer = auditServer.GetNextApplyer(EnumOrderType.IN, stock_in.department_id, stock_in.apply_process);

            if (next_applyer == null)
            {
                result.code = ErrorCodeConst.ERROR_1030;
                g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},流程错误", EnumLogType.Info);
                return(result);
            }

            if (next_applyer != reqmodel.User.position_id)
            {
                result.code = ErrorCodeConst.ERROR_1035;
                g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},无法进行审批", EnumLogType.Info);
                return(result);
            }

            t_apply_log apply_log = new t_apply_log
            {
                apply_status = reqmodel.Data.act,
                order_sn     = reqmodel.Data.order_sn,
                user_id      = reqmodel.User.user_id,
                position_id  = reqmodel.User.position_id
            };

            stock_in.apply_process = reqmodel.User.position_id;
            try
            {
                g_dbHelper.Transaction();
                //审批记录更新
                bool insert_apply_log_flag = await AddApplyLog(apply_log);

                if (!insert_apply_log_flag)
                {
                    g_dbHelper.Rollback();
                    result.code = ErrorCodeConst.ERROR_1030;
                    g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},添加审批记录失败", models.enums.EnumLogType.Info);
                    return(result);
                }

                //审批状态更新
                bool update_stock_in_flag;
                if (reqmodel.Data.act == 1)
                {
                    stock_in.apply_status = (int)EnumApplyStatus.Agree;
                }
                else
                {
                    //驳回
                    stock_in.apply_status = (int)EnumApplyStatus.Reject;
                }

                //最后一步或者拒绝则更新审批状态
                EnumApplyStepFlag step_flag = auditServer.GetApplyStepFlag(EnumOrderType.IN, stock_in.department_id, reqmodel.User.position_id);
                if (step_flag == EnumApplyStepFlag.End || stock_in.apply_status == (int)EnumApplyStatus.Reject)
                {
                    update_stock_in_flag = await UpdateStockInByOrderSn(u => new { u.apply_status, u.apply_process }, stock_in);
                }
                else
                {
                    update_stock_in_flag = await UpdateStockInByOrderSn(u => new { u.apply_process }, stock_in);
                }

                if (!update_stock_in_flag)
                {
                    g_dbHelper.Rollback();
                    result.code = ErrorCodeConst.ERROR_1030;
                    g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},更新审批状态失败", models.enums.EnumLogType.Info);
                    return(result);
                }

                //同意并且是最后一步审批,更新库存数量
                if (step_flag == EnumApplyStepFlag.End && stock_in.apply_status == (int)EnumApplyStatus.Agree)
                {
                    bool update_quality_flag = await StockInApplySuccess(stock_in.order_sn);

                    if (!update_quality_flag)
                    {
                        g_dbHelper.Rollback();
                        result.code = ErrorCodeConst.ERROR_1030;
                        g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},更新库存数量失败", models.enums.EnumLogType.Info);
                        return(result);
                    }
                }

                g_dbHelper.Commit();
            }
            catch (Exception ex)
            {
                g_dbHelper.Rollback();
                result.code = ErrorCodeConst.ERROR_1030;
                g_logServer.Log(modelname, "入库审批异常", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},异常信息:{ex.Message}", models.enums.EnumLogType.Error);
                return(result);
            }
            result.code   = ErrorCodeConst.ERROR_1029;
            result.status = ErrorCodeConst.ERROR_200;
            g_logServer.Log(modelname, "入库审批成功", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn}", models.enums.EnumLogType.Info);
            return(result);
        }