private bool Submit(SubmitCorpAduitOrderModel submit) { if (submit.AduitConfigId.HasValue) { //提交审批单 int aduitOrderId = _corpAduitBll.SubmitAduit(new SubmitAduitModel() { OrderInfoList = submit.OrderInfoList, AduitConfigId = submit.AduitConfigId.Value, DealSource = submit.Source, SubmitCid = submit.SubmitCid, SubmitOid = submit.SubmitOid, IsViolatePolicy = submit.IsViolatePolicy ?? false, OrderType = submit.OrderType }); if (aduitOrderId > 0) { //送审 SubmitResult = _corpAduitBll.DeliveAduit(new DeliveAduitModel { DealCid = submit.SubmitCid, DealOid = submit.SubmitOid, AduitOrderId = aduitOrderId, DealSource = submit.Source }); } return(true); } return(false); }
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; } }
/// <summary> /// 审批 /// </summary> /// <param name="model"></param> /// <returns></returns> public BaseDealAduitResultModel DoAduit(BaseDealAduitModel model) { CorpAduitOrderEntity corpAduitOrderEntity = _corpAduitOrderDal.Find <CorpAduitOrderEntity>(model.AduitOrderId); List <int> statusList = new List <int>() { (int)CorpAduitOrderStatusEnum.W, (int)CorpAduitOrderStatusEnum.P, (int)CorpAduitOrderStatusEnum.W1, (int)CorpAduitOrderStatusEnum.P1, (int)CorpAduitOrderStatusEnum.P2 }; if (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.J) { throw new Exception("当前审批已被拒绝"); } if (!statusList.Contains(corpAduitOrderEntity.Status)) { throw new Exception("当前审批单状态异常"); } if (corpAduitOrderEntity.CurrentFlow != model.CurrentFlow) { throw new Exception("当前审批环节异常"); } //获取当前环节信息 List <CorpAduitOrderFlowEntity> flowList = _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>(n => n.AduitOrderId == model.AduitOrderId) .ToList(); //判断当前审批单订单是否已经被取消 if (!CheckOrderIsCancel(corpAduitOrderEntity)) { throw new MojoryException(MojoryApiResponseCode.AduitCancelOrder, "审批单中的订单已经被取消,系统自动设置审批单过期", flowList.Find(n => n.Flow == -1).FlowCid); } List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities = flowList.FindAll(n => n.Flow == corpAduitOrderEntity.CurrentFlow); List <int> nextFlowCidList = new List <int>(); if (corpAduitOrderFlowEntities.Count == 1) { SingleAduit(model, corpAduitOrderEntity, corpAduitOrderFlowEntities[0], ref nextFlowCidList); } else if (corpAduitOrderFlowEntities.Count > 1) { TogetherAduit(model, corpAduitOrderEntity, corpAduitOrderFlowEntities, ref nextFlowCidList); } List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities = _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(n => n.AduitOrderId == model.AduitOrderId, true).ToList(); BaseDealAduitResultModel resultModel = new BaseDealAduitResultModel() { AduitOrderId = model.AduitOrderId, IsSuccessed = true, DetailList = new List <BaseDealAduitResultDetailModel>(), CreateAduitOrderCid = flowList.Find(n => n.Flow == -1).FlowCid, IsFinished = (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.F || corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.J), NextFlowCidList = nextFlowCidList, AduitOrderStatus = corpAduitOrderEntity.Status.ValueToEnum <CorpAduitOrderStatusEnum>() }; corpAduitOrderDetailEntities.ForEach(n => { resultModel.DetailList.Add(new BaseDealAduitResultDetailModel() { OrderId = n.OrderId, OrderSourceType = n.OrderType.ValueToEnum <OrderSourceTypeEnum>() }); }); return(resultModel); }
/// <summary> /// 送审 /// </summary> /// <param name="model"></param> /// <returns></returns> public BaseDealAduitResultModel DeliveAduit(DeliveAduitModel model) { //获取审批单信息 CorpAduitOrderEntity corpAduitOrderEntity = _corpAduitOrderDal.Find <CorpAduitOrderEntity>(model.AduitOrderId); if (corpAduitOrderEntity.Status != (int)CorpAduitOrderStatusEnum.N) { throw new Exception("当前审批单状态异常"); } corpAduitOrderEntity.CurrentFlow = corpAduitOrderEntity.CurrentFlow + 1;//设置下一级 CorpAduitOrderFlowEntity corpAduitOrderFlowEntity = _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>( n => n.Flow == corpAduitOrderEntity.CurrentFlow && n.AduitOrderId == model.AduitOrderId) .FirstOrDefault(); if (corpAduitOrderFlowEntity == null) { throw new Exception("当前审批单流程异常"); } if (corpAduitOrderFlowEntity.FlowCid != model.DealCid) { throw new Exception("无权操作"); } corpAduitOrderFlowEntity.DealResult = (int)AduitDealResultEnum.W; //设置送审 #region 记日志 CorpAduitOrderLogEntity log = new CorpAduitOrderLogEntity() { LogTime = DateTime.Now, Source = model.DealSource, AduitOrderId = corpAduitOrderEntity.AduitOrderId, DealOid = model.DealOid, DealCid = model.DealCid, DealResult = (int)corpAduitOrderFlowEntity.DealResult, AduitFlow = corpAduitOrderEntity.CurrentFlow }; log.AduitType = (log.Source == "O" ? (int)AduitTypeEnum.T : (int)AduitTypeEnum.N); _corpAduitOrderLogDal.Insert <CorpAduitOrderLogEntity>(log); #endregion List <int> nextFlowCidList = new List <int>(); //判断当前状态是否等于最终状态,如果相同则设置终结状态 if (corpAduitOrderEntity.FinalFlow == corpAduitOrderEntity.CurrentFlow) { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.F; //设置完成 } else { #region 判断下一环节是否汇审 corpAduitOrderEntity.CurrentFlow = corpAduitOrderEntity.CurrentFlow + 1;//设置下一级 List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities = _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>( n => n.Flow == corpAduitOrderEntity.CurrentFlow && n.AduitOrderId == model.AduitOrderId, true) .ToList(); if (corpAduitOrderFlowEntities.Count == 1)//下一环节只有一个处理人 { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.W; } else if (corpAduitOrderFlowEntities.Count > 1)//下一环节多个处理人,认为是汇审 { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.W1; } else { throw new Exception("送审阶段异常"); } nextFlowCidList = corpAduitOrderFlowEntities.Select(n => n.FlowCid).ToList(); #endregion } //保存审批单修改 _corpAduitOrderDal.Update <CorpAduitOrderEntity>(corpAduitOrderEntity, new string[] { "Status", "CurrentFlow" }); //设置环节结果 _corpAduitOrderFlowDal.Update <CorpAduitOrderFlowEntity>(corpAduitOrderFlowEntity, new string[] { "DealResult" }); BaseDealAduitResultModel resultModel = new BaseDealAduitResultModel() { AduitOrderId = model.AduitOrderId, IsSuccessed = true, CreateAduitOrderCid = model.DealCid, IsFinished = false, NextFlowCidList = nextFlowCidList }; return(resultModel); }