public async Task <Result> GetOrderList(In inData)
        {
            DBHelper   db            = new DBHelper();
            List <int> position_list = await PositionDao.GetChildId(db, inData.user.position_id);

            position_list.Add(inData.user.position_id);
            position_list = position_list.Distinct().ToList();
            List <t_procurement> order_list = await ProcurementDao.GetList(db, position_list.ToArray());

            List <OrderItemResult> order_result_list = new List <OrderItemResult>();

            foreach (var item in order_list)
            {
                order_result_list.Add(new OrderItemResult
                {
                    add_time        = item.add_time.ToString("yyyy-MM-dd HH:mm:ss"),
                    department_name = await DepartmentDao.GetDepartmentName(db, item.department_id),
                    position_name   = await Dao.User.PositionDao.GetPositionName(db, item.position_id),
                    name            = await UserDao.GetUserRealName(db, item.id),
                    order_sn        = item.order_sn,
                    remark          = item.remark,
                    status          = item.status
                });
            }

            Result <List <OrderItemResult> > result = new Result <List <OrderItemResult> > {
                result = true, msg = "OK", data = order_result_list
            };

            return(result);
        }
        /// <summary>
        /// 验证审核的订单
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private async Task <Result> VerifyAuditOrder(In <AuditOrder> inData)
        {
            var    data   = inData.data;
            Result result = new Result();

            if (data == null)
            {
                result.msg = "参数错误";
                return(result);
            }
            if (string.IsNullOrWhiteSpace(data.order_sn?.Trim()))
            {
                result.msg = "订单不存在";
                return(result);
            }
            data.order_sn = data.order_sn.Trim();
            DBHelper      db    = new DBHelper();
            t_procurement order = await ProcurementDao.GetOrder(db, data.order_sn);

            db.Close();
            if (order == null)
            {
                result.msg = "订单不存在";
                return(result);
            }
            int             pass_step = ProcurementConfig.PassStep(order.department_id, order.position_id);
            ProcurementItem step      = ProcurementConfig.CurrentStep(order.department_id, pass_step, order.audit_step);

            if (step == null || step.act != EProcurementAction.Apply || inData.user.position_id != step.id)
            {
                result.msg = "无权审批改订单";
                return(result);
            }
            if (string.IsNullOrWhiteSpace(data.flag?.Trim()) || !int.TryParse(data.flag, out int audit_flag) || !Enum.IsDefined(typeof(EAuditFlag), audit_flag))
            {
                result.msg = "审批状态错误";
                return(result);
            }
            data.flag = data.flag.Trim();

            if (audit_flag == (int)EAuditFlag.Reject && string.IsNullOrWhiteSpace(data.remark?.Trim()))
            {
                result.msg = "请填写拒绝理由";
                return(result);
            }
            data.remark = data.remark?.Trim();
            if (data.remark?.Length > 100)
            {
                result.msg = "拒绝理由最多100个字符";
                return(result);
            }

            result.result = true;
            return(result);
        }
        public async Task <Result> AddProcurement(In <ApplyOrderIn> inData)
        {
            Result result = VerifyAddProcurement(inData.data);

            if (!result.result)
            {
                return(result);
            }
            string   order_sn;
            DBHelper db = new DBHelper();

            do
            {
                order_sn = MakeCommon.MakeOrder("IN");
            } while (await ProcurementDao.IsExist(db, order_sn));

            try
            {
                db.BeginTransaction();
                //添加订单
                int order_id = await ProcurementDao.AddProcurement(db, order_sn, inData.user);

                if (order_id <= 0)
                {
                    db.Rollback();
                    result.msg = "操作失败[1]";
                    return(result);
                }

                bool add_product_flag = await ProcurementProductPreDao.AddProcurementProduct(db, order_sn, inData.data.product_list);

                if (!add_product_flag)
                {
                    db.Rollback();
                    result.msg = "操作失败[2]";
                    return(result);
                }

                db.Commit();
                result.result = true;
                result.msg    = "操作成功";
            }
            catch (Exception e)
            {
                db.Rollback();
                result.msg = e.Message;
            }
            return(result);
        }
        /// <summary>
        /// 拒绝审批
        /// </summary>
        /// <param name="inData"></param>
        /// <returns></returns>
        private async Task <Result> AuditReject(DBHelper db, In <AuditOrder> inData)
        {
            Result        result = new Result();
            t_procurement order  = await ProcurementDao.GetOrder(db, inData.data.order_sn);

            bool update_order_flag = await ProcurementDao.AuditRejectOrder(db, inData.data.order_sn, order.audit_step + 1);

            if (!update_order_flag)
            {
                result.msg = "审批失败[1]";
                return(result);
            }
            bool add_audit_log_flag = await AuditLogDao.AddAuditLog(db, order.order_sn, inData.user.user_id, EAuditFlag.Reject, inData.user.position_id, order.audit_step, inData.data.remark);

            if (!add_audit_log_flag)
            {
                result.msg = "审批失败[2]";
                return(result);
            }
            result.result = true;
            return(result);
        }