⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectactorservice.java

📁 公司自己开发的工作流引擎
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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 + -