/// <summary> /// 为最后的流程增加阅办步骤(根据selprocuser增加1~n步) /// </summary> /// <param name="applyId">申请单ID</param> /// <param name="selprocuser">流程用户ID字符串,如:1,2,3</param> /// <returns></returns> public bool AddReadAppFlow(string applyId, string selprocuser) { if (string.IsNullOrEmpty(applyId) || string.IsNullOrEmpty(selprocuser)) { return(false); } IApplyFlow dal = baseDal as IApplyFlow; ApplyFlowInfo currentFlowInfo = dal.GetLastCompletedFlow(applyId); int orderno = currentFlowInfo.OrderNo + 1; #region 为流程中每个用户创建一个阅办流程, 并增加流程处理人ApplyUser信息 string[] userArray = selprocuser.Split(','); foreach (string userId in userArray) { ApplyFlowInfo addFlowInfo = new ApplyFlowInfo(); addFlowInfo.ApplyId = applyId; addFlowInfo.FlowName = "阅办"; addFlowInfo.IsAdd = 1; addFlowInfo.ProcType = (int)ProcType.阅办; //阅办 addFlowInfo.ProcUser = userId; //该步骤的处理人 addFlowInfo.OrderNo = orderno++; baseDal.Insert(addFlowInfo); } foreach (string userId in userArray) { var userInfo = new ApplyUserInfo(applyId, Convert.ToInt32(userId.Trim())); BLLFactory <ApplyUser> .Instance.Insert(userInfo); } #endregion return(true); }
/// <summary> /// 在当前的流程上增加一个流程 /// </summary> /// <param name="applyId">申请单ID</param> /// <param name="selprocuser">流程用户</param> /// <returns>增加成功返回True,否则False</returns> public bool AddAppFlowByPrevious(string applyId, string selprocuser) { IApplyFlow dal = baseDal as IApplyFlow; ApplyFlowInfo currentFlowInfo = dal.GetLastCompletedFlow(applyId); if (currentFlowInfo == null) { return(false); } string condition = string.Format(" Apply_id='{0}' and Order_no>{1} ", currentFlowInfo.ApplyId, currentFlowInfo.OrderNo); string orderBy = " order by Order_no "; List <ApplyFlowInfo> appFlowAfter = baseDal.Find(condition, orderBy);//原有在当前步骤之后的所有步骤 if (appFlowAfter != null) { try { #region 增加一流程,顺序为当前流程+1 //复制当前流程的数据 ApplyFlowInfo addFlowInfo = new ApplyFlowInfo(); addFlowInfo.ApplyId = currentFlowInfo.ApplyId; addFlowInfo.CanBack = currentFlowInfo.CanBack; addFlowInfo.CanBeBack = currentFlowInfo.CanBeBack; addFlowInfo.CanSms = currentFlowInfo.CanSms; addFlowInfo.CondVerify = currentFlowInfo.CondVerify; addFlowInfo.FlowName = currentFlowInfo.FlowName; addFlowInfo.IsAdd = 1; addFlowInfo.MayAddflow = currentFlowInfo.MayAddflow; addFlowInfo.MayMsgsend = currentFlowInfo.MayMsgsend; addFlowInfo.MaySelproc = currentFlowInfo.MaySelproc; addFlowInfo.MsgSendTo = currentFlowInfo.MsgSendTo; addFlowInfo.ProcType = currentFlowInfo.ProcType; addFlowInfo.ProcUser = selprocuser;//该步骤的处理人 addFlowInfo.SmsProc = currentFlowInfo.SmsProc; addFlowInfo.OrderNo = currentFlowInfo.OrderNo + 1; bool added = baseDal.Insert(addFlowInfo); #endregion if (added) { //在原有流程顺序上增加1 foreach (ApplyFlowInfo info in appFlowAfter) { info.OrderNo += 1; baseDal.Update(info, info.ID.ToString()); } return(true); } } catch { return(false); } } return(false); }
/// <summary> /// 获取对应表单下的所有流程,根据order_no由小到大排序 /// </summary> /// <param name="applyId">申请单ID</param> /// <returns></returns> public List <ApplyFlowInfo> GetAllByApplyId(string applyId) { IApplyFlow dal = baseDal as IApplyFlow; return(dal.GetAllByApplyId(applyId)); }
/// <summary> /// 设置流程为已处理并增加意见 /// </summary> /// <param name="id">流程ID</param> /// <param name="apply_id">申请单ID</param> /// <param name="opinion">处理意见</param> /// <returns></returns> public bool HandleFlowWithOpinion(string id, string apply_id, string opinion) { IApplyFlow dal = baseDal as IApplyFlow; return(dal.HandleFlowWithOpinion(id, apply_id, opinion)); }
/// <summary> /// 获取下一个未被处理的流程记录 /// </summary> /// <param name="applyId">申请单ID</param> /// <param name="flowId">当前流程ID</param> /// <returns></returns> public ApplyFlowInfo GetNextUnHandledFlow(string applyId, string flowId) { IApplyFlow dal = baseDal as IApplyFlow; return(dal.GetNextUnHandledFlow(applyId, flowId)); }
/// <summary> /// 获取最后一条完成的流程 /// </summary> /// <param name="applyId">申请单ID</param> /// <returns></returns> public ApplyFlowInfo GetLastCompletedFlow(string applyId) { IApplyFlow dal = baseDal as IApplyFlow; return(dal.GetLastCompletedFlow(applyId)); }