/// <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); }
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); }