Esempio n. 1
0
        public AuditResultModel RunAudit(AuditFltOrderQueryModel query)
        {
            FltOrderEntity orderEntity = _fltOrderDal.Find <FltOrderEntity>(query.Id);
            FltOrderModel  orderModel  = Mapper.Map <FltOrderEntity, FltOrderModel>(orderEntity);

            if (orderModel == null)
            {
                throw new MojoryException(MojoryApiResponseCode.NoFindOrder);
            }
            query.FltOrder = orderModel;
            //进行验证
            _validataAuditInfoBll.Validata(query);


            //进行审批
            AuditResultModel code    = new AuditResultModel();
            IRunAuditVisitor visitor = new RunAuditVisitor(_fltOrderDal, _fltOrderLogDal, query);

            if (query.AuditStep == FltOrderCheckStatusEnum.T.ToString())//待一级审批
            {
                AuditOrderAbstract auditOrderFirst = new AuditOrderFirst();
                code = auditOrderFirst.RunAudit(visitor);
            }
            else if (query.AuditStep == FltOrderCheckStatusEnum.S.ToString())//待二级审批
            {
                AuditOrderAbstract auditOrderSecond = new AuditOrderSecond();
                code = auditOrderSecond.RunAudit(visitor);
            }

            return(code);
        }
Esempio n. 2
0
        /// <summary>
        /// (有参构造)取得当前步骤的审批结果
        /// </summary>
        /// <param name="step">审核步骤</param>
        /// <param name="userId">用户ID</param>
        /// <returns></returns>
        public AuditResultModel GetAuditResult(int step, int userId)
        {
            AuditResultModel arm = new AuditResultModel();
            var ads = ap.ApplyDetails.Where(a => a.step == step);

            if (ap.success != null)
            {
                //已结束的
                var ad = ads.Where(a => a.user_id == userId).OrderByDescending(a => a.pass).First(); //优先取已审批记录
                arm.canAudit    = false;
                arm.auditResult = ad.pass == null ? "已结束" : ad.pass == true ? "已同意" : "已NG";
                arm.comment     = ad.comment;
            }
            else
            {
                if (ads.Where(a => a.pass == true).Count() == 0)
                {
                    //本轮还没人审批
                    arm.canAudit = true;
                }
                else
                {
                    //本轮已有人审批
                    var ad = ads.Where(a => a.user_id == userId).OrderBy(a => a.pass).First(); //优先取未审批记录
                    if (ad.countersign == true)
                    {
                        //会签
                        if (ad.pass == null)
                        {
                            arm.canAudit = true;
                        }
                        else
                        {
                            arm.canAudit    = false;
                            arm.auditResult = ad.pass == true ? "已通过" : "已NG";
                            arm.comment     = ad.comment;
                        }
                    }
                    else
                    {
                        //不是会签
                        ad              = ads.Where(a => a.user_id == userId).OrderByDescending(a => a.pass).First(); //优先取已审批记录
                        arm.canAudit    = false;
                        arm.auditResult = ad.pass == null ? "已结束" : ad.pass == true ? "已同意" : "已NG";
                        arm.comment     = ad.comment;
                    }
                }
            }

            return(arm);
        }
Esempio n. 3
0
        public AuditOrderResponseViewModel RunAudit(AuditOrderRequestViewModel request)
        {
            //1.根据Cid查询客户信息
            CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid);

            if (string.IsNullOrEmpty(customerModel.IsCheckPerson) || customerModel.IsCheckPerson.ToUpper() != "T")
            {
                throw new Exception("当前用户无权审批");
            }

            AuditOrderResponseViewModel responseViewModel = new AuditOrderResponseViewModel();
            AuditTypeQueryModel         query             = new AuditTypeQueryModel()
            {
                OrderSourceType = request.OrderSourceType,
                Cid             = request.Cid,
                Id            = request.Id,
                AuditCustomer = customerModel,
                IsAgree       = request.IsAgree,
                AuditStep     = request.AuditStep
            };

            //机票类型审批
            List <OrderSourceTypeEnum> fltOrderSourceTypeList = new List <OrderSourceTypeEnum>()
            {
                OrderSourceTypeEnum.Flt,
                OrderSourceTypeEnum.FltModApply,
                OrderSourceTypeEnum.FltRetApply
            };

            if (fltOrderSourceTypeList.Contains(query.OrderSourceType))
            {
                using (var transaction = this.Context.Database.BeginTransaction())
                {
                    try
                    {
                        //1.进行审批
                        AuditResultModel auditResultModel = _auditFltOrderServiceBll.RunAudit(query);
                        responseViewModel.Code = auditResultModel.Code;
                        if (auditResultModel.OwnCid != 0)
                        {
                            #region 推送app信息

                            /**
                             * 这里推送app消息分为两种:
                             * 1.推送审核结果给订单所属用户
                             * 2.如果存在下一级审核并且当前审核通过,则推送审核给下一级审核人
                             * */
                            //1.推送审核结果给订单所属用户
                            _addSendAppMessageServiceBll.AddAppAuditResultMessage(new SendAppAuditResultMessageModel()
                            {
                                IsAgree     = request.IsAgree,
                                AuditResult = auditResultModel.AuditResult,
                                Cid         = auditResultModel.OwnCid,
                                OrderId     = auditResultModel.Id,
                                OrderType   = auditResultModel.OrderType,
                                SendType    = SendAppMessageTypeEnum.AuditResultNotice
                            });

                            //2.如果存在下一级审核并且当前审核通过,则推送审核给下一级审核人
                            if (auditResultModel.NextAuditCid.HasValue && request.IsAgree)
                            {
                                _addSendAppMessageServiceBll.AddAppWaitAuditMessage(new SendAppAuditResultMessageModel()
                                {
                                    Cid       = auditResultModel.NextAuditCid.Value,
                                    OrderId   = auditResultModel.Id,
                                    OrderType = auditResultModel.OrderType,
                                    SendType  = SendAppMessageTypeEnum.WaitAuditNotice
                                });
                            }
                            #endregion
                        }

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
            else
            {
                throw new Exception("审批类型不正确!");
            }



            return(responseViewModel);
        }