/// <summary> /// 单审 /// </summary> /// <returns></returns> private bool SingleAduit(BaseDealAduitModel model, CorpAduitOrderEntity corpAduitOrderEntity, CorpAduitOrderFlowEntity corpAduitOrderFlowEntity, ref List <int> nextFlowCidList) { if (corpAduitOrderFlowEntity == null) { throw new Exception("当前审批单流程异常"); } if (corpAduitOrderFlowEntity.FlowCid != model.DealCid) { throw new Exception("无权操作"); } corpAduitOrderFlowEntity.DealResult = (model.IsAgree ? (int)AduitDealResultEnum.F : (int)AduitDealResultEnum.C); #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, AduitReason = model.AduitReason }; log.AduitType = (log.Source == "O" ? (int)AduitTypeEnum.T : (int)AduitTypeEnum.N); _corpAduitOrderLogDal.Insert <CorpAduitOrderLogEntity>(log); #endregion //审批不通过 if (corpAduitOrderFlowEntity.DealResult == (int)AduitDealResultEnum.C) { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.J; } else { if (corpAduitOrderEntity.FinalFlow == corpAduitOrderEntity.CurrentFlow) { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.F;//设置完成 } else { /*******当前环节+1*****/ corpAduitOrderEntity.CurrentFlow = corpAduitOrderEntity.CurrentFlow + 1; #region 判断下一环节是否汇审 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.P; } else if (corpAduitOrderFlowEntities.Count > 1)//下一环节多个处理人,认为是汇审 { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.P1; } 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" }); return(true); }
/// <summary> /// 汇审 /// </summary> /// <returns></returns> private bool TogetherAduit(BaseDealAduitModel model, CorpAduitOrderEntity corpAduitOrderEntity, List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities, ref List <int> nextFlowCidList) { if (corpAduitOrderFlowEntities == null || corpAduitOrderFlowEntities.Count == 0) { throw new Exception("当前审批单流程异常"); } List <int> flowCidList = new List <int>(); corpAduitOrderFlowEntities.ForEach(n => { flowCidList.Add(n.FlowCid); }); if (!flowCidList.Contains(model.DealCid)) { throw new Exception("无权操作"); } //根据审批人获取当前审批环节 CorpAduitOrderFlowEntity corpAduitOrderFlowEntity = corpAduitOrderFlowEntities.Find(n => n.FlowCid == model.DealCid && n.AduitOrderId == model.AduitOrderId); if (corpAduitOrderFlowEntity.DealResult.HasValue) { throw new Exception("您已经审批过了"); } var isDealFlow = corpAduitOrderFlowEntities.Find(n => !n.DealResult.HasValue && n.FlowCid != model.DealCid); //获取当前环节没有处理的 corpAduitOrderFlowEntity.DealResult = (model.IsAgree ? (int)AduitDealResultEnum.F : (int)AduitDealResultEnum.C); #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, AduitReason = model.AduitReason }; log.AduitType = (log.Source == "O" ? (int)AduitTypeEnum.T : (int)AduitTypeEnum.N); _corpAduitOrderLogDal.Insert <CorpAduitOrderLogEntity>(log); #endregion //审批不通过,则取消审批单 if (corpAduitOrderFlowEntity.DealResult == (int)AduitDealResultEnum.C) { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.J; } else { if (isDealFlow != null) { //有存在除开自己的没处理人 CorpAduitConfigEntity corpAduitConfigEntity = _corpAduitConfigDal.Find <CorpAduitConfigEntity>(corpAduitOrderEntity.AduitConfigId); if (corpAduitConfigEntity.TogetherAduitType == 0) //判断是否需要全部审批 { //设置汇审中 corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.P2; } else { if (corpAduitOrderEntity.FinalFlow == corpAduitOrderEntity.CurrentFlow) { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.F;//设置完成 } else { /*******当前环节+1*****/ corpAduitOrderEntity.CurrentFlow = corpAduitOrderEntity.CurrentFlow + 1; #region 判断下一环节是否汇审 List <CorpAduitOrderFlowEntity> nextFlowList = _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>( n => n.Flow == corpAduitOrderEntity.CurrentFlow && n.AduitOrderId == model.AduitOrderId, true).ToList(); if (nextFlowList.Count == 1)//下一环节只有一个处理人 { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.P; } else if (nextFlowList.Count > 1)//下一环节多个处理人,认为是汇审 { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.P1; } else { throw new Exception("送审阶段异常"); } nextFlowCidList = corpAduitOrderFlowEntities.Select(n => n.FlowCid).ToList(); #endregion } } } else { //只有当前审批人没有处理的情况 if (corpAduitOrderEntity.FinalFlow == corpAduitOrderEntity.CurrentFlow) { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.F;//设置完成 } else { /*******当前环节+1*****/ corpAduitOrderEntity.CurrentFlow = corpAduitOrderEntity.CurrentFlow + 1; #region 判断下一环节是否汇审 List <CorpAduitOrderFlowEntity> nextFlowList = _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>( n => n.Flow == corpAduitOrderEntity.CurrentFlow && n.AduitOrderId == model.AduitOrderId, true).ToList(); if (nextFlowList.Count == 1)//下一环节只有一个处理人 { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.P; } else if (nextFlowList.Count > 1)//下一环节多个处理人,认为是汇审 { corpAduitOrderEntity.Status = (int)CorpAduitOrderStatusEnum.P1; } 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" }); return(true); }
/// <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); }