/// <summary> /// 判断当前审批单中的单据是否被取消 /// </summary> private bool CheckOrderIsCancel(CorpAduitOrderEntity corpAduitOrderEntity) { bool isCancel = false; List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities = _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(n => n.AduitOrderId == corpAduitOrderEntity.AduitOrderId, true).ToList(); List <BaseDealAduitResultDetailModel> list = new List <BaseDealAduitResultDetailModel>(); corpAduitOrderDetailEntities.ForEach(n => { list.Add(new BaseDealAduitResultDetailModel() { OrderId = n.OrderId, OrderSourceType = n.OrderType.ValueToEnum <OrderSourceTypeEnum>() }); }); foreach (BaseDealAduitResultDetailModel orderModel in list) { if (orderModel.OrderSourceType == OrderSourceTypeEnum.Flt) { FltOrderEntity orderEntity = base.Context.Set <FltOrderEntity>().Find(orderModel.OrderId); if (orderEntity?.Orderstatus == "C" || orderEntity?.Orderstatus == "c") { isCancel = true; } } else if (orderModel.OrderSourceType == OrderSourceTypeEnum.FltModApply || orderModel.OrderSourceType == OrderSourceTypeEnum.FltRetApply) { FltRetModApplyEntity flightApplyEntity = base.Context.Set <FltRetModApplyEntity>().Find(orderModel.OrderId); if (flightApplyEntity?.OrderStatus == "C" || flightApplyEntity?.OrderStatus == "c") { isCancel = true; } } else if (orderModel.OrderSourceType == OrderSourceTypeEnum.Tra) { TraOrderStatusEntity orderStatusEntity = base.Context.Set <TraOrderStatusEntity>().FirstOrDefault(n => n.OrderId == orderModel.OrderId); if (orderStatusEntity?.IsCancle == 1) { isCancel = true; } } } if (isCancel) { corpAduitOrderEntity.IsDel = 1; _corpAduitOrderDal.Update <CorpAduitOrderEntity>(corpAduitOrderEntity, new string[] { "IsDel" }); return(false); } return(true); }
public CorpAduitOrderInfoModel GetAduitOrderInfoById(int aduitOrderId) { CorpAduitOrderEntity corpAduitOrderEntity = _corpAduitOrderDal.Find <CorpAduitOrderEntity>(aduitOrderId); CorpAduitOrderInfoModel corpAduitOrderInfoModel = Mapper.Map <CorpAduitOrderEntity, CorpAduitOrderInfoModel>(corpAduitOrderEntity); //审批单与订单关联信息 List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities = _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>( n => n.AduitOrderId == corpAduitOrderEntity.AduitOrderId, true).ToList(); corpAduitOrderInfoModel.OrderDetailList = Mapper.Map <List <CorpAduitOrderDetailEntity>, List <CorpAduitOrderDetailModel> >( corpAduitOrderDetailEntities); //审批环节信息 List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities = _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>( n => n.AduitOrderId == corpAduitOrderEntity.AduitOrderId, true).ToList(); corpAduitOrderInfoModel.FlowList = Mapper.Map <List <CorpAduitOrderFlowEntity>, List <CorpAduitOrderFlowModel> >( corpAduitOrderFlowEntities); //审批日志信息 List <CorpAduitOrderLogEntity> corpAduitOrderLogEntities = _corpAduitOrderLogDal.Query <CorpAduitOrderLogEntity>( n => n.AduitOrderId == corpAduitOrderEntity.AduitOrderId, true).ToList(); corpAduitOrderInfoModel.LogList = Mapper.Map <List <CorpAduitOrderLogEntity>, List <CorpAduitOrderLogModel> >( corpAduitOrderLogEntities); List <CustomerModel> customerModels = _getCustomerBll.GetCustomerByCidList(corpAduitOrderInfoModel.AduitCidList); if (corpAduitOrderInfoModel.FlowList != null && corpAduitOrderInfoModel.FlowList.Count > 0) { corpAduitOrderInfoModel.FlowList.ForEach(n => { n.FlowCustomerName = customerModels?.Find(x => x.Cid == n.FlowCid)?.RealName; }); } if (corpAduitOrderInfoModel.LogList != null && corpAduitOrderInfoModel.LogList.Count > 0) { corpAduitOrderInfoModel.LogList.ForEach(n => { if (n.DealCid.HasValue) { n.DealCustomerName = customerModels?.Find(x => x.Cid == n.DealCid.Value)?.RealName; } }); } return(corpAduitOrderInfoModel); }
/// <summary> /// 审批结果通知 /// </summary> /// <param name="sendAppMessageModel"></param> private void GetAuditResultMessage(SendAppMessageModel sendAppMessageModel) { if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.AduitOrder) { CorpAduitOrderEntity corpAduitOrderEntity = _corpAduitOrderDal.Find <CorpAduitOrderEntity>(sendAppMessageModel.OrderId); if (corpAduitOrderEntity == null) { return; } List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities = _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>( n => n.AduitOrderId == sendAppMessageModel.OrderId, true).ToList(); if (corpAduitOrderDetailEntities == null || corpAduitOrderDetailEntities.Count == 0) { return; } string orderType = corpAduitOrderDetailEntities[0].OrderType.ValueToDescription <OrderSourceTypeEnum>(); string orderId = corpAduitOrderDetailEntities[0].OrderId.ToString(); if (sendAppMessageModel.SendType == SendAppMessageTypeEnum.AuditResultNotice) { if (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.J) { sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}被审批人驳回,请您确认", orderType, (orderType.Contains("申请") ? "" : "订单"), orderId); } else if (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.F) { sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}已完成审批,准备为您{3}", orderType, (orderType.Contains("申请") ? "" : "订单"), orderId, (orderType.Contains("退票") ? "退票" : "出票")); if (!orderType.Contains("退票") && orderType.Contains("机票") && sendAppMessageModel.SendAppMessageType == SendAppMessageTypeEnum.SendRunPrintFltTicketEmail) { FltOrderEntity fltOrderEntity = base.Context.Set <FltOrderEntity>().Find(Convert.ToInt32(orderId)); if (fltOrderEntity != null) { string oid = string.IsNullOrEmpty(fltOrderEntity.CreateOid) ? "sys" : fltOrderEntity.CreateOid.ToUpper(); OperatorEntity operatorEntity = base.Context.Set <OperatorEntity>().Where(n => n.Oid.ToUpper() == oid).FirstOrDefault(); sendAppMessageModel.IsRunOutTicket = true; sendAppMessageModel.Email = operatorEntity?.Email; string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsServer); string url = string.Format( "http://192.168.1.117/orderprocess/Flt_order.asp?orderid={0}", orderId); if (isServer == "T") { url = string.Format("http://192.168.1.188/orderprocess/Flt_order.asp?orderid={0}", orderId); } sendAppMessageModel.SendContent = string.Format("订单<a href='{0}'>{1}</a>已审核,请出票", url, orderId); sendAppMessageModel.EmailTitle = string.Format("订单{0}已审核,请出票", orderId); } } } else if (corpAduitOrderEntity.Status > (int)CorpAduitOrderStatusEnum.N) { sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}已通过审批,待下级为您继续审批", orderType, (orderType.Contains("申请") ? "" : "订单"), orderId); } } else if (sendAppMessageModel.SendType == SendAppMessageTypeEnum.AuditOrderDeleteNotice) { sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}由于已经取消,所以审批自动过期", orderType, (orderType.Contains("申请") ? "" : "订单"), orderId); } } }
/// <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 int SubmitAduit(SubmitAduitModel model) { CorpAduitConfigEntity corpAduitConfigEntity = _corpAduitConfigDal.Find <CorpAduitConfigEntity>(model.AduitConfigId); if (corpAduitConfigEntity.IsNeedAduit == 0) { return(0); } #region 判断待审批订单是否存在没有处理的审批流程 List <int> orderidList = new List <int>(); model.OrderInfoList.ForEach(n => { orderidList.Add(n.OrderId); }); List <CorpAduitOrderDetailEntity> checkList = (from n in base.Context.Set <CorpAduitOrderDetailEntity>() join o in base.Context.Set <CorpAduitOrderEntity>() on n.AduitOrderId equals o.AduitOrderId where o.Status != 6 && o.Status != 7 && orderidList.Contains(n.OrderId) select n).ToList(); if (checkList != null && checkList.Count > 0) { return(0); } #endregion #region 生成审批单 #region 获取审批规则环节 List <CorpAduitConfigDetailEntity> corpAduitConfigDetailEntities = _corpAduitConfigDetailDal.Query <CorpAduitConfigDetailEntity>( n => n.ConfigId == model.AduitConfigId && n.OrderType == (int)model.OrderType, true).OrderBy(n => n.AduitLevel).ToList(); if (corpAduitConfigDetailEntities == null || corpAduitConfigDetailEntities.Count == 0) { return(0); } List <CorpAduitConfigDetailEntity> aduitConfigDetailList = new List <CorpAduitConfigDetailEntity>(); //判断当前是不是存在审批环节 foreach (var corpAduitConfigDetailEntity in corpAduitConfigDetailEntities) { if (model.IsViolatePolicy) //当前订单违背差旅政策 { if ((corpAduitConfigDetailEntity.PolicyTypeAduit & (int)PolicyTypeAduitEnum.V) == (int)PolicyTypeAduitEnum.V) { aduitConfigDetailList.Add(corpAduitConfigDetailEntity); } } else //当前订单符合差旅政策 { if ((corpAduitConfigDetailEntity.PolicyTypeAduit & (int)PolicyTypeAduitEnum.A) == (int)PolicyTypeAduitEnum.A) { aduitConfigDetailList.Add(corpAduitConfigDetailEntity); } } } if (aduitConfigDetailList.Count == 0) { return(0); } #endregion #region 新增审批单 //int finalFlow = aduitConfigDetailList[aduitConfigDetailList.Count - 1].AduitLevel; CorpAduitOrderEntity corpAduitOrderEntity = new CorpAduitOrderEntity() { AduitConfigId = model.AduitConfigId, Status = (int)CorpAduitOrderStatusEnum.N, CurrentFlow = -1, FinalFlow = 0, CreateTime = DateTime.Now }; corpAduitOrderEntity = _corpAduitOrderDal.Insert <CorpAduitOrderEntity>(corpAduitOrderEntity); #endregion #region 新增审批单与订单的关系 foreach (var detail in model.OrderInfoList) { _corpAduitOrderDetailDal.Insert <CorpAduitOrderDetailEntity>(new CorpAduitOrderDetailEntity() { OrderId = detail.OrderId, OrderType = (int)detail.OrderType, AduitOrderId = corpAduitOrderEntity.AduitOrderId }); } #endregion #region 新增审批环节 //1.创建审批环节 _corpAduitOrderFlowDal.Insert <CorpAduitOrderFlowEntity>(new CorpAduitOrderFlowEntity() { AduitOrderId = corpAduitOrderEntity.AduitOrderId, Flow = -1, FlowCid = model.SubmitCid, DealResult = (int)AduitDealResultEnum.S }); //2.送审环节 _corpAduitOrderFlowDal.Insert <CorpAduitOrderFlowEntity>(new CorpAduitOrderFlowEntity() { AduitOrderId = corpAduitOrderEntity.AduitOrderId, Flow = 0, FlowCid = model.SubmitCid }); /*** * 3.审批人审批环节 * 重新对审批人环节进行了排序 * **/ int nLevel = 1; int?nowLevel = null; foreach (var aduitConfigDetail in aduitConfigDetailList) { if (nowLevel.HasValue) { if (nowLevel.Value != aduitConfigDetail.AduitLevel) { nLevel++; nowLevel = aduitConfigDetail.AduitLevel; } } else { nowLevel = aduitConfigDetail.AduitLevel; } _corpAduitOrderFlowDal.Insert <CorpAduitOrderFlowEntity>(new CorpAduitOrderFlowEntity() { AduitOrderId = corpAduitOrderEntity.AduitOrderId, Flow = nLevel, FlowCid = aduitConfigDetail.AduitCid }); } #endregion corpAduitOrderEntity.FinalFlow = nLevel; _corpAduitOrderDal.Update <CorpAduitOrderEntity>(corpAduitOrderEntity, new string[] { "FinalFlow" }); #region 新增送审日志 CorpAduitOrderLogEntity log = new CorpAduitOrderLogEntity() { LogTime = DateTime.Now, Source = model.DealSource, AduitOrderId = corpAduitOrderEntity.AduitOrderId, DealCid = model.SubmitCid, DealOid = model.SubmitOid, DealResult = (int)AduitDealResultEnum.S, AduitFlow = corpAduitOrderEntity.CurrentFlow }; log.AduitType = (log.Source == "O" ? (int)AduitTypeEnum.T : (int)AduitTypeEnum.N); _corpAduitOrderLogDal.Insert <CorpAduitOrderLogEntity>(log); #endregion #endregion return(corpAduitOrderEntity.AduitOrderId); }
/// <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> /// <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); }
public int Copy(int copyFromOrderId, int newOrderId) { CorpAduitOrderDetailEntity copyAduitOrderDetailEntity = _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>( n => n.OrderId == copyFromOrderId, true).FirstOrDefault(); if (copyAduitOrderDetailEntity != null) { #region 获取原始审批单 CorpAduitOrderEntity copyCorpAduitOrderEntity = _corpAduitOrderDal.Find <CorpAduitOrderEntity>(copyAduitOrderDetailEntity.AduitOrderId); List <CorpAduitOrderDetailEntity> copyCorpAduitOrderDetailEntities = _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>( n => n.AduitOrderId == copyCorpAduitOrderEntity.AduitOrderId, true).ToList(); List <CorpAduitOrderFlowEntity> copyCorpAduitOrderFlowEntities = _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>( n => n.AduitOrderId == copyCorpAduitOrderEntity.AduitOrderId, true).ToList(); List <CorpAduitOrderLogEntity> copyCorpAduitOrderLogEntities = _corpAduitOrderLogDal.Query <CorpAduitOrderLogEntity>( n => n.AduitOrderId == copyCorpAduitOrderEntity.AduitOrderId, true).ToList(); #endregion #region 制原始审批单 CorpAduitOrderEntity corpAduitOrderEntity = Mapper.Map <CorpAduitOrderEntity, CorpAduitOrderEntity>(copyCorpAduitOrderEntity); corpAduitOrderEntity = _corpAduitOrderDal.Insert(corpAduitOrderEntity); List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities = Mapper.Map <List <CorpAduitOrderDetailEntity>, List <CorpAduitOrderDetailEntity> >( copyCorpAduitOrderDetailEntities); foreach (var corpAduitOrderDetailEntity in corpAduitOrderDetailEntities) { corpAduitOrderDetailEntity.AduitOrderId = corpAduitOrderEntity.AduitOrderId; corpAduitOrderDetailEntity.OrderId = newOrderId; _corpAduitOrderDetailDal.Insert(corpAduitOrderDetailEntity); } List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities = Mapper.Map <List <CorpAduitOrderFlowEntity>, List <CorpAduitOrderFlowEntity> >( copyCorpAduitOrderFlowEntities); foreach (var corpAduitOrderFlowEntity in corpAduitOrderFlowEntities) { corpAduitOrderFlowEntity.AduitOrderId = corpAduitOrderEntity.AduitOrderId; _corpAduitOrderFlowDal.Insert(corpAduitOrderFlowEntity); } List <CorpAduitOrderLogEntity> corpAduitOrderLogEntities = Mapper.Map <List <CorpAduitOrderLogEntity>, List <CorpAduitOrderLogEntity> >( copyCorpAduitOrderLogEntities); foreach (var corpAduitOrderLogEntity in corpAduitOrderLogEntities) { corpAduitOrderLogEntity.AduitOrderId = corpAduitOrderEntity.AduitOrderId; _corpAduitOrderLogDal.Insert(corpAduitOrderLogEntity); } #endregion return(corpAduitOrderEntity.AduitOrderId); } return(0); }