Ejemplo n.º 1
0
        /// <summary>
        /// 审批结果通知
        /// </summary>
        /// <param name="sendAppAuditResultMessageModel"></param>
        public void AddAppAuditResultMessage(SendAppAuditResultMessageModel sendAppAuditResultMessageModel)
        {
            SendAppMessageModel sendAppMessageModel = sendAppAuditResultMessageModel;

            _addSendAppMessageBll.AddAppMessage(sendAppMessageModel);
        }
Ejemplo n.º 2
0
        public DoAduitOrderResultModel DoAduitOrder(DoAduitOrderModel doAduit)
        {
            BaseDealAduitModel query = new BaseDealAduitModel()
            {
                DealCid      = doAduit.DealCid,
                AduitOrderId = doAduit.AduitOrderId,
                DealOid      = doAduit.DealOid,
                IsAgree      = doAduit.IsAgree,
                DealSource   = doAduit.DealSource,
                AduitReason  = doAduit.AduitReason,
                CurrentFlow  = doAduit.CurrentFlow
            };

            try
            {
                BaseDealAduitResultModel reuslt = _corpAduitBll.DoAduit(query);

                #region 推送app消息
                if (reuslt.IsFinished)
                {
                    _addSendAppMessageBll.AddAppMessage(new SendAppMessageModel()
                    {
                        Cid       = reuslt.CreateAduitOrderCid,
                        OrderId   = reuslt.AduitOrderId,
                        OrderType = OrderSourceTypeEnum.AduitOrder,
                        SendType  = SendAppMessageTypeEnum.AuditResultNotice
                    });
                }
                else
                {
                    foreach (var cid in reuslt.NextFlowCidList)
                    {
                        _addSendAppMessageBll.AddAppMessage(new SendAppMessageModel()
                        {
                            Cid       = cid,
                            OrderId   = reuslt.AduitOrderId,
                            OrderType = OrderSourceTypeEnum.AduitOrder,
                            SendType  = SendAppMessageTypeEnum.WaitAuditNotice
                        });
                    }
                }
                #endregion

                return(new DoAduitOrderResultModel()
                {
                    IsSuccessed = reuslt.IsSuccessed,
                    DetailList = reuslt.DetailList,
                    CreateAduitOrderCid = reuslt.CreateAduitOrderCid,
                    IsFinished = reuslt.IsFinished
                });
            }
            catch (MojoryException ex)//捕捉到取消订单异常
            {
                if (ex.Code == MojoryApiResponseCode.AduitCancelOrder)
                {
                    //推送APP消息
                    _addSendAppMessageBll.AddAppMessage(new SendAppMessageModel()
                    {
                        Cid       = ex.OtherId,
                        OrderId   = query.AduitOrderId,
                        OrderType = OrderSourceTypeEnum.AduitOrder,
                        SendType  = SendAppMessageTypeEnum.AuditOrderDeleteNotice
                    });
                }
                throw;
            }
        }
        public bool Submit(SubmitCorpAduitOrderModel submitModel)
        {
            /**
             * 送审分为以下情况
             * 1 审批规则为无需审批
             * 2 审批规则为符合差旅政策情况
             * 3 审批规则为违背差旅政策
             * 4 没有审批规则
             * */
            BaseSubmitAduiBll submitAduiBll = null;

            if (submitModel.AduitConfigId.HasValue)
            {
                #region 存在审批规则
                CorpAduitConfigEntity aduitConfigEntity =
                    _corpAduitConfigDal.Find <CorpAduitConfigEntity>(submitModel.AduitConfigId.Value);
                if (aduitConfigEntity == null)
                {
                    throw new Exception("未找到对应的审批规则");
                }

                if (aduitConfigEntity.IsNeedAduit == 0)
                {
                    //1.当前审批规则为无需审批
                    submitAduiBll = new NoNeedSubmitAduitBll(submitModel);
                }
                else
                {
                    #region 当前审批规则为需要审批
                    if (!submitModel.PolicyId.HasValue)
                    {
                        throw new Exception("当前送审条件需要差旅政策Id");
                    }

                    if (!submitModel.IsViolatePolicy.HasValue)
                    {
                        throw new Exception("缺少是否违反差旅政策判断");
                    }

                    submitAduiBll = new NeedSubmitAduitBll(submitModel);
                    #endregion
                }
                #endregion
            }
            else
            {
                //4.没有审批规则情况
                submitAduiBll = new NoRuleSubmitAduitBll(submitModel);
            }

            ISubmitAduitVisitor submitAduitVisitor = new SubmitAduitVisitor(_corpAduitBll);
            bool flag = submitAduiBll.DoSubmit(submitAduitVisitor);

            #region 推送app消息

            if (submitAduitVisitor.SubmitResult != null && submitAduitVisitor.SubmitResult.IsSuccessed &&
                !submitAduitVisitor.SubmitResult.IsFinished && submitAduitVisitor.SubmitResult.NextFlowCidList != null &&
                submitAduitVisitor.SubmitResult.NextFlowCidList.Count > 0)
            {
                IsSendAduit = true;
                foreach (var cid in submitAduitVisitor.SubmitResult.NextFlowCidList)
                {
                    _addSendAppMessageBll.AddAppMessage(new SendAppMessageModel()
                    {
                        Cid       = cid,
                        OrderId   = submitAduitVisitor.SubmitResult.AduitOrderId,
                        OrderType = OrderSourceTypeEnum.AduitOrder,
                        SendType  = SendAppMessageTypeEnum.WaitAuditNotice
                    });
                }
            }
            else
            {
                //新增提醒出票邮件推送
                //AddNeSendMessage(submitModel);
            }

            #endregion

            return(flag);
        }