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

📄 wfstartableprocessdao.java

📁 公司自己开发的工作流引擎
💻 JAVA
字号:
package cn.com.iaspec.workflow.engine.dao;

/**
 * <p>Title: 启动流程DAO</p>
 * <p>Description: 深圳市劳动仲裁信息管理系统</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: 永泰软件工程有限公司</p>
 * @author syj
 * @version 1.0
 */
import java.sql.*;
import java.util.*;
import org.apache.log4j.*;
import cn.com.iaspec.workflow.db.*;
import cn.com.iaspec.workflow.engine.*;
import cn.com.iaspec.workflow.util.*;
import cn.com.iaspec.workflow.vo.workflow.*;

public class WfStartableProcessDAO{
  private static Logger logger=Logger.getLogger(WfStartableProcessDAO.class);
  private Connection con=null;
  public WfStartableProcessDAO(){
  }

  /**
   * 设置数据库连接
   * @param con Connection
   */
  public void setConection(Connection con){
    this.con=con;
  }

  /**
   * 根据user_id取得工作流ID集合
   * @param userInfo UserInfo
   * @throws SQLException
   * @return ArrayList
   */
  public static ArrayList getStartableProcessListDAO(String userid)
      throws NotGetProcessdefineException,SQLException{
    ArrayList list=new ArrayList();
    ResultSet rs=null;
    java.sql.PreparedStatement prep=null;
    Connection conn=null;
    String sql=
        "select distinct a.atd_prdid,a.atd_prdename,a.prd_uid from wf_actidefinition a"+
        " where prd_uid in(select process_define_uid from la_startable_process_user "+" where role_id in(select t.role_id from wf_org_user_role t where user_id=? and role_id!=0) )";
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sql);
      prep.setString(1,userid);
      rs=prep.executeQuery();
      while(rs.next()){
        ProcessDefine processdefine=new ProcessDefine();
        processdefine.setProcessDefineId(rs.getLong("atd_prdid"));
        processdefine.setProcessDefineName(rs.getString("atd_prdename"));
        list.add(processdefine);
      }

    }
    catch(SQLException e){
      e.printStackTrace();
      throw new NotGetProcessdefineException("根据user_id取得工作流程定义ID集合出错:"+
          e.getMessage());
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }

    return list;
  }

  /**
   * 取得待办任务个数
   * @param proInstanceID long
   * @return Task
   * @throws GetTaskBaseInfoException
   */
  public long getTaskListCount(UserInfo userinfo)
      throws Exception{
    long count=0;
    ResultSet rs=null;
    java.sql.PreparedStatement prep=null;
    Connection conn=null;
    String sql=
        "select count(*) as count from view_tasklist  Where wki_state in(1,2,4) and "+
        "(wki_user=?  And wki_state='1' And wka_applyman Is Null) "+
        "Or ((atd_tamid =1 and wki_user=?  And wki_state='4' and wka_applyman Is Null) "+"Or (atd_tamid =2 and wki_user=?  And wki_state='4' and wka_applyman=wki_user)) "+
        "Or (wka_applyman=? And wki_state='2')";
    logger.info("sql is:"+sql);
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sql);
      prep.setString(1,userinfo.getUserId());
      prep.setString(2,userinfo.getUserId());
      prep.setString(3,userinfo.getUserId());
      prep.setString(4,userinfo.getUserId());
      rs=prep.executeQuery();
      if(rs.next()){
        count=rs.getLong("count");
      }
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);

    }
    return count;
  }

  /**
   * 根据流程实例ID查询案件信息,并且
   * @param proInstanceID long
   * @return Task
   * @throws GetTaskBaseInfoException
   */
  public ArrayList getTaskListla_baseinfoDAO(UserInfo userinfo)
      throws GetTaskBaseInfoException{
    ArrayList arraylist=new ArrayList();
    ResultSet rs=null;
    java.sql.PreparedStatement prep=null;
    Connection conn=null;
    String sq="select * from view_tasklist  Where wki_state in(1,2,4) and "+
        "(wki_user=?  And wki_state='1' And wka_applyman Is Null) "+
        "Or ((atd_tamid =1 and wki_user=?  And wki_state='4' and wka_applyman Is Null) "+"Or (atd_tamid =2 and wki_user=?  And wki_state='4' and wka_applyman=wki_user)) "+
        "Or (wka_applyman=? And wki_state='2') order by wki_checkouttime Desc";
    logger.info("sq is:"+sq);
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sq);
      prep.setString(1,userinfo.getUserId());
      prep.setString(2,userinfo.getUserId());
      prep.setString(3,userinfo.getUserId());
      prep.setString(4,userinfo.getUserId());
      rs=prep.executeQuery();
      while(rs.next()){
        Task task=new Task();
        task.setRegisterNo(ChangeTrim.changeCharacter(rs.getString(
            "register_No")));
        task.setIsImportanCase(ChangeTrim.changeCharacter(rs.getString(
            "is_importan")));
        task.setIsCollect(ChangeTrim.changeCharacter(rs.getString("scope_id")));
        task.setCase_no(ChangeTrim.changeCharacter(rs.getString("case_no")));
        task.setDisputedKind(ChangeTrim.changeCharacter(rs.getString("mz")));
        task.setCasedescription(ChangeTrim.changeCharacter(rs.getString(
            "appeal_id"))+" 诉 "+
            ChangeTrim.changeCharacter(rs.getString("lawer_id")));
        if(task.getCasedescription()!=null&&
            task.getCasedescription().equals(" 诉 ")){
          task.setCasedescription("");
        }
        task.setSendUserName(ChangeTrim.changeCharacter(rs.getString(
            "user_name")));
        task.setFlowActivityName(ChangeTrim.changeCharacter(rs.getString(
            "from_activity_name")));
        task.setWorkItemName(ChangeTrim.changeCharacter(rs.getString("wki_name")));
        task.setWorkItemID(rs.getLong("wki_id"));
        task.setProDefinitionID(rs.getLong("pri_prdid"));
        task.setProDefinitionName(ChangeTrim.changeCharacter(rs.getString(
            "pri_prdname")));
        task.setProInstanceID(rs.getLong("pri_id"));
        task.setProInstanceName(ChangeTrim.changeCharacter(rs.getString(
            "pri_name")));
        task.setInstanceState(WorkitemStateName.getInstanceState(rs.getInt(
            "pri_state")));
        task.setDescriptionURL(ChangeTrim.changeCharacter(rs.getString(
            "wki_desc")));
        task.setWorkState(WorkitemStateName.getWorkitemStateStr(rs.getInt(
            "wki_state")));
        task.setWorkStateId(rs.getInt("wki_state"));
        task.setInstanceStartTime(rs.getTimestamp("wki_createtime"));
        task.setWki_checkintime(rs.getTimestamp("wki_checkintime"));
        task.setTransactionTime(rs.getLong("atd_estimatetime"));
        task.setTransactionTimeName(Double.toString(ConvertWorkitemDatetime.
            getWorkDatetime(rs.getLong("atd_estimatetime"))));
        //取得工作项所属的活动定义ID
        task.setAttid(rs.getLong("atd_id"));
        //  取得工作项所属的活动定义执行方式
        task.setActMethod(rs.getInt("atd_tamid"));
        //设置工作项状态
        task.setState(WorkitemStateName.getStateName(rs.getLong("time_left")));
        //保存剩余时间
        double Surplustime=ConvertWorkitemDatetime.
            getLocalWorkDatetimeToWorkDate(rs.getLong("time_left"));
        task.setSurplusTime(Surplustime);
        arraylist.add(task);

      }
    }
    catch(SQLException e){
      e.printStackTrace();
      logger.error("----查询失败---"+e.getMessage());
      throw new GetTaskBaseInfoException("----根据user_id查询代办任务信息失败");
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);

    }

    return arraylist;
  }

  /**
   * 取得案件的简要描述信息
   * @param task Task
   * @return Task
   */
  public Task getCase_infoDAO(Task task)
      throws GetTaskBaseInfoException{
    ResultSet rs=null;
    java.sql.PreparedStatement prep=null;
    Connection conn=null;
    String appeal_name=null;
    String lawer_name=null;
    String Case_info=null;
    int count=0;

    String sql=
        "select a.peopinfo_name,b.unit_name from la_peopinfo a,la_unitinfo b "+
        " where a.register_no=? and b.register_no=?";
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();;
      prep=conn.prepareStatement(sql);
      prep.setString(1,task.getRegisterNo());
      prep.setString(2,task.getRegisterNo());
      rs=prep.executeQuery();
      while(rs.next()){
        count++;
        appeal_name=rs.getString("peopinfo_name");
        lawer_name=rs.getString("unit_name");
      }
      if(count>1){
        Case_info=appeal_name+" 等诉 "+lawer_name;
      }
      else{
        Case_info=appeal_name+" 诉 "+lawer_name;
      }
      task.setCasedescription(Case_info);

    }
    catch(SQLException e){
      e.printStackTrace();
      throw new GetTaskBaseInfoException("根据流程的实例ID查询数据库案件信息失败。");
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
    }

    return task;
  }

  /**
   * 查询工作项信息表
   * @param task Task
   * @return Task
   * @throws GetTaskBaseInfoException
   */
  public Task getWorkflowCaseInfoDAO(Task task)
      throws GetTaskBaseInfoException{
    String sql="select b.user_name,a.from_activity_name,a.to_activity_name from wf_workitem_rel a,wf_user b where "+
        " to_item_id=? and b.user_id=a.from_user_id";
    ResultSet rs=null;
    java.sql.PreparedStatement prep=null;
    Connection conn=null;

    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();;
      prep=conn.prepareStatement(sql);
      prep.setLong(1,task.getWorkItemID());
      rs=prep.executeQuery();
      while(rs.next()){
        task.setSendUserName(rs.getString("user_name"));
        task.setFlowActivityName(rs.getString("from_activity_name"));
        task.setWorkItemName(rs.getString("to_activity_name"));

      }

    }
    catch(SQLException e){
      e.printStackTrace();
      throw new GetTaskBaseInfoException("根据工作项ID查询工作项信息关联表失败。");
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      //WorkflowDBConnectionManager.getInstance().close(conn);

    }

    return task;

  }

  /**
   * 查询工作项活动定义ID
   * @param workItemName String
   * @param proDefinitionID long
   * @return long
   * @throws GetTaskBaseInfoException
   */
  public long getActivityDefID(String workItemName,long proDefinitionID)
      throws GetTaskBaseInfoException{
    String sql=
        "select a.atd_id from  actidefinition a  where a.atd_name=? and a.atd_prdid=?";
    ResultSet rs=null;
    java.sql.PreparedStatement prep=null;
    Connection connection=null;
    long atd_id=0;
    try{
      connection=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=connection.prepareStatement(sql);
      prep.setString(1,workItemName);
      prep.setLong(2,proDefinitionID);
      rs=prep.executeQuery();
      while(rs.next()){
        atd_id=rs.getLong("atd_id");
      }

    }
    catch(SQLException e){
      e.printStackTrace();
      throw new GetTaskBaseInfoException("查询工作项活动定义ID失败。");
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(connection);

    }
    return atd_id;
  }

  /**
   * 分案查询(条件是流程实例ID)
   * @param proInstanceID long
   * @return TaskCase
   * @throws GetTaskBaseInfoException
   */
  public TaskCase getTaskCaseDAO(long proInstanceID)
      throws GetTaskBaseInfoException{
    String sql=
        "select b.register_no,b.case_no from wf_process_case_info a,la_baseinfo b "+
        " where a.pro_inst_id=? and b.register_no=a.case_register_id";
    ResultSet rs=null;
    java.sql.PreparedStatement prep=null;
    Connection connection=null;
    TaskCase taskcase=new TaskCase();
    try{
      connection=WorkflowDBConnectionManager.getInstance().getConnection();;
      prep=connection.prepareStatement(sql);
      prep.setLong(1,proInstanceID);
      rs=prep.executeQuery();
      while(rs.next()){
        taskcase.setCase_no(rs.getString("case_no"));
        taskcase.setRegisterNo(rs.getString("register_no"));
      }

    }
    catch(SQLException e){
      e.printStackTrace();
      throw new GetTaskBaseInfoException("分案查询(条件是流程实例ID)失败。");
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
    }
    return taskcase;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -