📄 wfstartableprocessdao.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 + -