/// <summary> /// 获取之前节点集合 /// </summary> /// <param name="directions">方向集合</param> /// <param name="nodeId">节点ID</param> /// <returns>节点集合</returns> private static void GetPreNodeList(IList <DIRECTION> directions, int nodeId, List <FlowNode> result) { var node = NodeService.GetNode(nodeId); result.Add(node); foreach (var direction in directions) { if (result.Where(x => x.NodeID == direction.NODE).Count() > 0) { continue; } if (direction.TONODE == nodeId) { var fromNode = NodeService.GetNode(direction.NODE.Value); if (fromNode != null) { result.Add(fromNode); } if (directions.Where(x => x.TONODE == direction.NODE && result.Where(y => y.NodeID == x.NODE).Count() == 0).Count() > 0) { GetPreNodeList(directions, direction.NODE.Value, result); } } } }
/// <summary> /// 获取节点以前的审批意见 /// </summary> /// <param name="bwaID">办文案ID</param> /// <param name="nodeID">节点ID</param> /// <returns>审批意见列表</returns> public static List <ApproveOpinion> GetOpinionOfPreviousNode(int bwaID, int nodeID) { //var dao = new ApproveOpinionDAO(); var entities = DataContextNH.GetBySQL <ApproveOpinion, ApproveOpinion>(string.Format("SELECT * FROM WF_SYS_ApproveOpinion WHERE Work_id='{0}'", bwaID)).ToList(); var nodeList = NodeService.GetPreviousNodeList(nodeID); entities = entities.Where(x => nodeList.Where(y => y.NodeID == int.Parse(x.Node_id)).Count() > 0).ToList(); return(entities); }
/// <summary> /// 获取节点以前的节点集合 /// </summary> /// <param name="nodeId">节点ID</param> /// <returns>节点集合</returns> public static List <FlowNode> GetPreviousNodeList(int nodeId) { var node = NodeService.GetNode(nodeId); var directions = FlowService.GetDirectionsByFlowNo(node.FK_Flow); directions = directions.Where(x => x.NODE != x.TONODE).ToList(); var result = new List <FlowNode>(); GetPreNodeList(directions, nodeId, result); return(result); }
/// <summary> /// 创建空白流程,流程状态为0 /// </summary> /// <param name="flowNo">流程编号</param> /// <param name="userName">用户名</param> /// <returns>流程工作标识</returns> public static long CreateBlankWork(string flowNo, string userName) { try { UserLogin(userName); var workID = BP.WF.Dev2Interface.Node_CreateBlankWork(flowNo, null, null, userName, null); var nodeID = BP.WF.Dev2Interface.Node_GetCurrentNodeID(flowNo, workID); var node = NodeService.GetNode(nodeID); return(workID); } catch { return(-1); } }