要按照部门和项目展开表单列表,本来表单和部门是没有直接关系,但是通过人员可以建立关系。
1、部门下面有人员 userUnderDepSet。
2、表单涉及到的人员usersCusRequesSet:创建人、表单流程定义涉及的node-》node所涉及到的处理人员。
如果部门下的人员userUnderDepSet存在与表单usersCusRequesSet中,那么表单和部门就建立关系了,关系分为以下几种:
1、直属项目下的表单;2、非直属项目下的表单;3、不属于任何项目下的表单。
在部门下增加表单的流程可以大致描述为:
取得所有表单,然后取得表单和人员的映射Map<表单,人员set> cusRequestUserMap;
判断directlyUserSet中人员所关联的表单directlyCusrequestSet的方法为:
对directlyUserSet中的每一个人,查看cusRequestUserMap中每个cusrequest对应的人员set,如果其存在于其中,则把cusreqest加入到directlyCusrequestSet中去。
1、首先得到当前人员所管辖的部门树。
这时需要准备的变量还有:1、当前部门父部门下的直接人员(如果是第一次调用为null):grandUserSet
2、当前部门下的所有表单(如果是第一次调用为null):grandCusrequestSet
2、根据部门得到部门下的直接人员 directlyUserSet、部门下的项目projSet
1)如果grandUserSet不为空,在directlyUserSet中去掉存在与grandUserSet的人员,得到新的directlyUserSet。
2)在directlyUserSet不为空的前提下,取得directlyUserSet中人员所关联的表单directlyCusrequestSet。
3)去掉directlyCusrequestSet中也存在与grandCusrequestSet中的元素。
就得到了(人员--表单)directlyCusrequestSet,对应directlyCusrequestSet中的每一个元素
1)如果表单所属的项目,是当前部门下的直接项目,则增加《项目,表单list》映射
2)如果表单所属的项目,是当前部门的子、祖孙部门下的直接项目,则不计入。否则增加《项目,表单list》映射
3)如果表单的项目为null,建立《不属于任何项目,表单列表》映射