📄 selectactorservice.java
字号:
package cn.com.iaspec.workflow.organize.business;
import cn.com.iaspec.workflow.organize.dao.WfUserDAO;
import cn.com.iaspec.workflow.organize.dao.WfOrganizationDAO;
import java.util.List;
import cn.com.iaspec.workflow.organize.dao.WfRoleDAO;
import cn.com.iaspec.workflow.engine.dao.ActiParticipantDAO;
import cn.com.iaspec.workflow.vo.db.ActiParticipant;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import cn.com.iaspec.workflow.vo.workflow.SelectActorParam;
import cn.com.iaspec.workflow.organize.dao.SelectActorDAO;
import cn.com.iaspec.workflow.vo.db.WfUser;
import cn.com.iaspec.workflow.organize.tree.SelectActorTree;
import cn.com.iaspec.workflow.vo.db.WfRole;
import cn.com.iaspec.workflow.vo.db.WfOrganization;
import java.util.Iterator;
import cn.com.iaspec.workflow.organize.tree.SortSelectActorTree;
import java.util.Collections;
import cn.com.iaspec.workflow.util.CommonUtil;
import cn.com.iaspec.workflow.vo.workflow.NextActivityInfo;
import cn.com.iaspec.workflow.engine.dao.ActivityAclDAO;
import cn.com.iaspec.workflow.engine.dao.ActivityTransferDAO;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Vector;
import cn.com.iaspec.workflow.engine.dao.ProcessWorkflowDAO;
import cn.com.iaspec.workflow.helper.SystemConfigurations;
/**
* <p>Title:选择参与者应用服务类</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: IASPEC Technologies</p>
* @author xiesonglin
* @version 1.0
*/
public class SelectActorService{
private static Logger logger=Logger.getLogger(SelectActorService.class);
private List userList;
private List roleList;
private List orgList;
public SelectActorService(){
}
/**
* 取出要返回活动的办理人(可能有多个)
* @param workitemId 当前流程实例id
* @param returnToActId 要返回的活动定义id
* @return Vector
* @throws Exception
*/
public ArrayList getReturnActorsActorTree(long proInstId,
long returnToActDefId)
throws Exception{
ArrayList resultList=new ArrayList();
ProcessWorkflowDAO dao=new ProcessWorkflowDAO();
Vector actorVector=dao.getReturnActors(proInstId,returnToActDefId);
if(actorVector!=null&&actorVector.size()>0){
for(int i=0;i<actorVector.size();i++){
if(actorVector.get(i)!=null){
String userId=(String)actorVector.get(i);
SelectActorTree node=new SelectActorTree();
WfUserDAO userDAO=new WfUserDAO();
WfUser user=userDAO.getUserInfo(userId);
node.setConsignUserName("");
node.setCosignUserId("");
node.setIfAgen(false);
node.setLevel(0);
node.setParentName("");
node.setParentType("0");
node.setParentType("user");
node.setTreeId(userId);
node.setTreeType("user");
if(user!=null){
node.setTreeName(user.getUserName());
node.setOrder(user.getUserOrder());
}
resultList.add(node);
}
}
}
if(resultList!=null){
SortSelectActorTree sort=new SortSelectActorTree();
//排序
Collections.sort(resultList,sort);
}
return resultList;
}
/**
* 将参与者信息列表排列成树状
* @param treeList ArrayList
* @return ArrayList
*/
public ArrayList arrangeActorTree(ArrayList treeList){
if(treeList==null||treeList.size()<0){
return null;
}
ArrayList list=new ArrayList();
Vector vector=new Vector();
//首先取得第一层节点
ArrayList firstList=(ArrayList)getChildTreeByTreeList(treeList,"-1","");
if(firstList!=null&&firstList.size()>0){
//设置第一层节点的级别
for(int k=0;k<firstList.size();k++){
SelectActorTree node=(SelectActorTree)firstList.get(k);
node.setLevel(1);
vector.add(node);
}
if(vector!=null&&vector.size()>0){
for(int i=0;i<vector.size();i++){
SelectActorTree node=(SelectActorTree)vector.get(i);
//取得当前节点的子节点
if(!node.isHasChild()){
continue;
}
ArrayList tempList=(ArrayList)getChildTreeByTreeList(treeList,
node.getTreeId(),node.getTreeType());
if(tempList!=null&&tempList.size()>0){
//设置子节点级别
for(int j=0;j<tempList.size();j++){
SelectActorTree tempNode=(SelectActorTree)tempList.get(j);
tempNode.setLevel(node.getLevel()+1);
tempList.set(j,tempNode);
}
//在当前节点后加入子节点信息
if((i+1)<vector.size()){
vector.addAll(i+1,tempList);
}
else{
vector.addAll(tempList);
}
}
}
}
}
list.addAll(vector);
return list;
}
/**
* 根据参与者列表数据取出指定节点的所有子节点
* @param treeList 参与者列表数据
* @param id 树节点id
* @param type 树节点类型
* @return 子节点列表
*/
public List getChildTreeByTreeList(List treeList,String id,String type){
List list=new ArrayList();
String treeType=type==null?"":type;
if(id!=null&&treeList!=null){
//取出树的第一层节点
if(id.equals("-1")){
for(int i=0;i<treeList.size();i++){
SelectActorTree tree=(SelectActorTree)treeList.get(i);
//检查节点tree在treeList存在是否存在父节点
if(!checkExistParentNode(treeList,tree)){
//不存在父节点的树节点即为树的第一层节点
list.add(tree);
}
}
}
else{
for(int i=0;i<treeList.size();i++){
SelectActorTree tree=(SelectActorTree)treeList.get(i);
//找出parentId,parentType等于id,type的树节点
if(tree.getParentId()!=null&&tree.getParentType()!=null&&
tree.getParentId().equals(id)&&
tree.getParentType().equals(treeType)){
list.add(tree);
}
}
}
}
if(list!=null){
SortSelectActorTree sort=new SortSelectActorTree();
//排序
Collections.sort(list,sort);
}
return list;
}
/**
* 根据参与者列表数据取出指定节点的信息
* @param treeList 参与者列表数据
* @param treeId 树节点id
* @param treeType 树节点id
* @return SelectActorTree 参与者信息
*/
public SelectActorTree getTreeByTreeList(List treeList,String treeId,
String treeType){
SelectActorTree tree=null;
if(treeList!=null&&treeList.size()>0&&treeId!=null&&!treeId.equals("")&&
treeType!=null&&!treeType.equals("")){
for(int i=0;i<treeList.size();i++){
SelectActorTree treeTemp=(SelectActorTree)treeList.get(i);
if(treeId.equals(treeTemp.getTreeId())&&
treeType.equals(treeTemp.getTreeType())){
tree=treeTemp;
break;
}
}
}
return tree;
}
/**
* 检查节点tree在treeList存在是否存在父节点
* @param treeList 树节点列表
* @param tree 树节点
* @return boolean
*/
private boolean checkExistParentNode(List treeList,SelectActorTree tree){
boolean bResult=false;
logger.debug("begin checkExistParentNode...");
if(treeList!=null&&treeList.size()>0&&tree!=null){
Iterator it=treeList.iterator();
while(it.hasNext()){
SelectActorTree tempTree=(SelectActorTree)it.next();
if(tempTree.getTreeType()!=null&&tempTree.getTreeId()!=null&&
tree.getParentType()!=null&&tree.getParentId()!=null&&
tree.getParentId().equals(tempTree.getTreeId())&&
tree.getParentType().equals(tempTree.getTreeType())){
bResult=true;
break;
}
}
}
return bResult;
}
/**
* 取得活动的固定角色
* @param activityId 活动id
* @return 角色WfRole列表
* @throws Exception
*/
public List getFixedRoleInfo(long activityId)
throws Exception{
logger.debug("begin getFixedRoleInfo...");
List list=null;
String fixedRoleId=getActivityFixedRole(activityId);
if(fixedRoleId!=null&&!fixedRoleId.trim().equals("")){
String whereSQL=" where role_state='1' and role_id in "+fixedRoleId;
WfRoleDAO dao=new WfRoleDAO();
list=dao.query(whereSQL);
}
return list;
}
/**
* 取得活动的固定组织
* @param activityId 活动id
* @return 组织WfOrg列表
* @throws Exception
*/
public List getFixedOrgInfo(long activityId)
throws Exception{
List list=null;
String fixedOrgId=getActivityFixedOrg(activityId);
if(fixedOrgId!=null&&!fixedOrgId.trim().equals("")){
String whereSQL=" where org_state='1' and org_id in "+fixedOrgId;
WfOrganizationDAO dao=new WfOrganizationDAO();
list=dao.query(whereSQL);
}
return list;
}
/**
* 取得活动的固定用户
* @param activityId 活动id
* @return 用户WfUser列表
* @throws Exception
*/
public List getFixedUserInfo(long activityId)
throws Exception{
List list=null;
String fixedUserId=getActivityFixedUser(activityId);
if(fixedUserId!=null&&!fixedUserId.trim().equals("")){
String whereSQL=" where user_state='1' and user_id in "+fixedUserId;
WfUserDAO dao=new WfUserDAO();
list=dao.queryWhere(whereSQL);
}
return list;
}
/**
* 取得固定角色id
* @param activityId long
* @return String
* @throws Exception
*/
private String getActivityFixedRole(long activityId)
throws Exception{
logger.debug("begin getActivityFixedRole...");
String roleIds="";
ActiParticipantDAO dao=new ActiParticipantDAO();
ActiParticipant parti=new ActiParticipant();
parti.setAtpAtdId(activityId);
//按角色类型
parti.setAtpPartiType(2);
//设定类型为直接指定
parti.setAtpSettingMode(0);
List list=dao.query(parti);
if(list!=null&&list.size()>0){
for(int i=0;i<list.size();i++){
ActiParticipant actParti=(ActiParticipant)list.get(i);
roleIds=roleIds+",'"+actParti.getAtpParticipantId()+"'";
}
if(roleIds!=null&&!roleIds.equals("")){
//去掉“,”
roleIds=roleIds.substring(1);
roleIds=" ("+roleIds+") ";
}
}
logger.info("roleIds is:"+roleIds);
return roleIds;
}
/**
* 取得固定部门id
* @param activityId long
* @return String
* @throws Exception
*/
private String getActivityFixedOrg(long activityId)
throws Exception{
logger.debug("begin getActivityFixedOrg...");
String orgIds="";
ActiParticipantDAO dao=new ActiParticipantDAO();
ActiParticipant parti=new ActiParticipant();
parti.setAtpAtdId(activityId);
//按组织类型
parti.setAtpPartiType(3);
//设定类型为直接指定
parti.setAtpSettingMode(0);
List list=dao.query(parti);
if(list!=null&&list.size()>0){
for(int i=0;i<list.size();i++){
ActiParticipant actParti=(ActiParticipant)list.get(i);
orgIds=orgIds+",'"+actParti.getAtpParticipantId()+"'";
}
if(orgIds!=null&&!orgIds.equals("")){
//去掉“,”
orgIds=orgIds.substring(1);
orgIds=" ("+orgIds+") ";
}
}
logger.info("orgIds is:"+orgIds);
return orgIds;
}
/**
* 取得固定用户id
* @param activityId long
* @return String
* @throws Exception
*/
private String getActivityFixedUser(long activityId)
throws Exception{
logger.debug("begin getActivityFixedUser...");
String userIds="";
ActiParticipantDAO dao=new ActiParticipantDAO();
ActiParticipant parti=new ActiParticipant();
parti.setAtpAtdId(activityId);
//按组织类型
parti.setAtpPartiType(1);
//设定类型为直接指定
parti.setAtpSettingMode(0);
List list=dao.query(parti);
if(list!=null&&list.size()>0){
for(int i=0;i<list.size();i++){
ActiParticipant actParti=(ActiParticipant)list.get(i);
userIds=userIds+",'"+actParti.getAtpParticipantId()+"'";
}
if(userIds!=null&&!userIds.equals("")){
//去掉“,”
userIds=userIds.substring(1);
userIds=" ("+userIds+") ";
}
}
logger.info("userIds is:"+userIds);
return userIds;
}
/**
* 将部门列表信息加入到目标部门列表信息中去
* @param targetOrgList 源部门列表信息
* @param srcOrgList 目标部门列表信息
*/
private void addToOrgList(List targetOrgList,List srcOrgList){
if(targetOrgList==null){
targetOrgList=new ArrayList();
}
if(srcOrgList!=null&&srcOrgList.size()>0){
for(int i=0;i<srcOrgList.size();i++){
WfOrganization org=(WfOrganization)srcOrgList.get(i);
int iTag=0;
for(int j=0;j<targetOrgList.size();j++){
WfOrganization orgTemp=(WfOrganization)targetOrgList.get(j);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -