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

📄 workitemreledatadao.java

📁 公司自己开发的工作流引擎
💻 JAVA
字号:
package cn.com.iaspec.workflow.engine.dao;
import java.sql.*;
import java.util.*;
import org.apache.log4j.*;
import cn.com.iaspec.workflow.db.*;
import cn.com.iaspec.workflow.*;
import cn.com.iaspec.workflow.vo.db.*;
import cn.com.iaspec.workflow.vo.workflow.ActivityVariable;

public class WorkItemReleDataDAO{
  private static Logger logger=Logger.getLogger(WorkItemReleDataDAO.class);
  public WorkItemReleDataDAO(){
  }

  /**
   * 查询LaWorkItemRel信息
   * @param info LaWorkItemRel
   * @throws SQLException
   * @return List
   */
  public List query(WorkItemReleData data)
      throws SQLException{
    Connection conn=null;
    Statement stm=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      stm=conn.createStatement();
      String sql=" select * from workitemreledata ";
      StringBuffer sbWhere=getQueryString(data);
      sql=sql+sbWhere.toString();
      logger.info("......query sql:"+sql);
      ResultSet rs=stm.executeQuery(sql);
      List list=this.resultsetToWorkItemReleData(rs);
      return list;
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(stm,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }

  /**
   * 更新ActiInsReleData信息
   * @param info LaWorkItemRel
   * @throws SQLException
   * @return List
   */
  public void update(WorkItemReleData newData,WorkItemReleData oldData)
      throws SQLException{
    Connection conn=null;
    Statement stm=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      stm=conn.createStatement();
      String sql=" update workitemreledata set ";
      StringBuffer sbWhere=getQueryString(oldData);
      StringBuffer sbUpdata=getQueryString(newData);
      if(sbWhere.length()<=0||sbUpdata.length()<=0){
        throw new SQLException("更新数据为空!");
      }
      sql=sql+sbUpdata.toString()+sbWhere.toString();
      logger.info("......query sql:"+sql);
      stm.execute(sql);
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(stm,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }

  /**
   * 更新信息
   * @param newDataList List
   * @param oldDataList List
   * @throws SQLException
   */
  public void update(List newDataList,List oldDataList)
      throws Exception{
    Connection conn=null;
    Statement stm=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      stm=conn.createStatement();
      StringBuffer sbSql=new StringBuffer();
      if(newDataList==null||oldDataList==null){
        throw new SQLException("更新数据为空!");
      }
      for(int i=0;i<newDataList.size();i++){
        WorkItemReleData newData=(WorkItemReleData)newDataList.get(i);
        WorkItemReleData oldData=(WorkItemReleData)oldDataList.get(i);
        String sql=" update workitemreledata set ";
        StringBuffer sbWhere=this.getQueryString(oldData);
        StringBuffer sbUpdata=this.getStrInsertValues(newData);
        if(sbWhere.length()<=0||sbUpdata.length()<=0){
          throw new SQLException("更新数据为空!");
        }
        sql=sql+sbUpdata.toString()+sbWhere.toString();
        sbSql.append(sql);
        sbSql.append(";");
      }
      //删除最后一个;号
      if(sbSql.length()>0){
        sbSql.delete(sbSql.length()-1,sbSql.length());
        logger.info("......query sql:"+sbSql.toString());
        stm.execute(sbSql.toString());
      }

    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(stm,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }

  private List resultsetToWorkItemReleData(ResultSet rs)
      throws SQLException{
    List list=new ArrayList();
    while(rs.next()){
      WorkItemReleData data=new WorkItemReleData();
      data.setWkrWkiId(rs.getLong("wkr_wkiid"));
      data.setWkrClassPath(rs.getString("wkr_classpath"));
      data.setWkrDirection(rs.getString("wkr_direction"));
      data.setWkrGlobalName(rs.getString("wkr_globalname"));
      data.setWkrId(rs.getLong("wkr_id"));
      data.setWkrNumbValue(rs.getDouble("wkr_numbvalue"));
      data.setWkrObjectValue(null);
      data.setWkrRemark(rs.getString("wkr_remark"));
      data.setWkrStringValue(rs.getString("wkr_stringvalue"));
      data.setWkrVariableName(rs.getString("wkr_variablename"));
      data.setWkrVariableType(rs.getInt("wkr_variabletype"));
      list.add(data);
    }
    return list;
  }

  /**
   * 取得查询条件
   * @param rel LaWorkItemRel
   * @return StringBuffer
   */
  private StringBuffer getQueryString(WorkItemReleData data){
    StringBuffer sb=new StringBuffer();
    if(data!=null){
      if(data.getWkrWkiId()!=WorkflowConstant.LONG_INIT_VALUE){
        sb.append(" wkr_wkiid = "+data.getWkrWkiId()+" ");
        sb.append(" and ");
      }
      if(data.getWkrClassPath()!=null&&!data.getWkrClassPath().equals("")){
        sb.append(" wkr_classpath = '"+data.getWkrClassPath()+"' ");
        sb.append(" and ");
      }
      if(data.getWkrDirection()!=null&&!data.getWkrDirection().equals("")){
        sb.append(" wkr_direction = '"+data.getWkrDirection()+"' ");
        sb.append(" and ");
      }
      if(data.getWkrGlobalName()!=null&&!data.getWkrGlobalName().equals("")){
        sb.append(" wkr_globalname = '"+data.getWkrGlobalName()+"' ");
        sb.append(" and ");
      }
      if(data.getWkrId()!=WorkflowConstant.LONG_INIT_VALUE){
        sb.append(" wkr_id = "+data.getWkrId()+" ");
        sb.append(" and ");
      }
      if(data.getWkrNumbValue()!=WorkflowConstant.DOUBLE_INIT_VALUE){
        sb.append(" wkr_numbvalue = "+data.getWkrNumbValue()+" ");
        sb.append(" and ");
      }

      if(data.getWkrRemark()!=null&&!data.getWkrRemark().equals("")){
        sb.append(" wkr_remark = '"+data.getWkrRemark()+"' ");
        sb.append(" and ");
      }

      if(data.getWkrStringValue()!=null&&!data.getWkrStringValue().equals("")){
        sb.append(" wkr_stringvalue = '"+data.getWkrStringValue()+"' ");
        sb.append(" and ");
      }

      if(data.getWkrVariableName()!=null&&!data.getWkrVariableName().equals("")){
        sb.append(" wkr_variablename = '"+data.getWkrVariableName()+"' ");
        sb.append(" and ");
      }

      if(data.getWkrVariableType()!=WorkflowConstant.INT_INIT_VALUE){
        sb.append(" wkr_variabletype = "+data.getWkrVariableType()+" ");
        sb.append(" and ");
      }
    }
    if(sb.length()>0){
      //增加查询条件关键字
      sb.insert(0," where ");
      //去除最后一个" AND "操作符
      sb.delete(sb.length()-5,sb.length());
    }
    return sb;
  }

  /**
   * 根据data取得update语句
   * @param data ActiInsReleData
   * @throws Exception
   * @return StringBuffer
   */
  private StringBuffer getStrInsertValues(WorkItemReleData data)
      throws Exception{
    StringBuffer sbSQL=new StringBuffer();
    if(data.getWkrWkiId()!=WorkflowConstant.LONG_INIT_VALUE){
      sbSQL.append("wkr_wkiid =");
      sbSQL.append(data.getWkrWkiId());
      sbSQL.append(",");
    }
    if(data.getWkrClassPath()!=null&&!data.getWkrClassPath().equals("")){
      sbSQL.append("wkr_classpath ='");
      sbSQL.append(data.getWkrClassPath());
      sbSQL.append("',");
    }
    if(data.getWkrDirection()!=null&&!data.getWkrDirection().equals("")){
      sbSQL.append("wkr_direction ='");
      sbSQL.append(data.getWkrDirection());
      sbSQL.append("',");
    }

    if(data.getWkrGlobalName()!=null&&!data.getWkrDirection().equals("")){
      sbSQL.append("wkr_globalname ='");
      sbSQL.append(data.getWkrGlobalName());
      sbSQL.append("',");
    }
    if(data.getWkrId()!=WorkflowConstant.LONG_INIT_VALUE){
      sbSQL.append("wkr_id =");
      sbSQL.append(data.getWkrId());
      sbSQL.append(",");
    }
    if(data.getWkrNumbValue()!=WorkflowConstant.DOUBLE_INIT_VALUE){
      sbSQL.append("wkr_numbvalue =");
      sbSQL.append(data.getWkrNumbValue());
      sbSQL.append(",");
    }
    if(data.getWkrRemark()!=null&&!data.getWkrRemark().equals("")){
      sbSQL.append("wkr_remark ='");
      sbSQL.append(data.getWkrRemark());
      sbSQL.append("',");
    }
    if(data.getWkrStringValue()!=null&&!data.getWkrStringValue().equals("")){
      sbSQL.append("wkr_stringvalue ='");
      sbSQL.append(data.getWkrStringValue());
      sbSQL.append("',");
    }
    if(data.getWkrVariableName()!=null&&!data.getWkrVariableName().equals("")){
      sbSQL.append("wkr_variablename ='");
      sbSQL.append(data.getWkrVariableName());
      sbSQL.append("',");
    }
    if(data.getWkrVariableType()!=WorkflowConstant.INT_INIT_VALUE){
      sbSQL.append("wkr_variabletype =");
      sbSQL.append(data.getWkrNumbValue());
      sbSQL.append(",");
    }

    //删除最后一个逗号
    if(sbSQL.length()>0){
      sbSQL.delete(sbSQL.length()-1,sbSQL.length());
    }
    return sbSQL;
  }

  public void updateWKIReleData(List variableList,long actiInstId)throws Exception{
    ActivityVariable variableInst = null,variableDef = null;
    String updateField = null;
    ActiInsReleDataDAO actiReleDao = new ActiInsReleDataDAO();
    if (variableList!=null&&variableList.size()>0){
      for(int i=0;i<variableList.size();i++){
        variableInst=(ActivityVariable)variableList.get(i);
        if (variableInst==null)
          continue;
        variableDef=actiReleDao.getActiInstVar(actiInstId,
            variableInst.getAttributeName());
        if (variableDef==null)
          continue;
        //变量是不映射
        if(variableDef.getDirection()==3){
          updateField=this.buildSql(variableDef.attributeType);
          if(updateField!=null){
            doUpdate(updateField,variableInst.getStringValue(),
                variableInst.getAttributeName(),actiInstId);
          }
          else{
            logger.info("变量 "+variableInst.getAttributeName()+
                " 的值是对象类型,赋值操作不成功!");
          }
        }
      }
    }
  }

  private void doUpdate(String updateField,String updateValue,String variableName,long actiInstId)
      throws SQLException{
    StringBuffer sql = new StringBuffer("update workitemReledata ")
        .append("set #update_field# = ? ")
        .append("where wkr_wkiid In (Select wki_id From workitem Where wki_atiid = ?) and wkr_variableName = ?");

    Connection conn = null;
    PreparedStatement ptmt = null;

    try{
      sql.replace(sql.indexOf("#update_field#"),
          sql.indexOf("#update_field#")+"#update_field#".length(),updateField);

      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      ptmt = conn.prepareStatement(sql.toString());

      ptmt.setString(1,updateValue);
      ptmt.setLong(2,actiInstId);
      ptmt.setString(3,variableName);

      ptmt.execute();
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(ptmt,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }

  private String buildSql(int valueType){
    String updateField = null;

    switch(valueType){
      case 1:
      case 2:
      case 3:
      case 5:
      case 6:
        updateField = "wkr_numbValue";
        break;
      case 4:
        updateField = "wkr_stringValue";
        break;
      default:
        return null;
    }

    return updateField;
  }

  public static void main(String[] args){
    StringBuffer sql = new StringBuffer("update workitemReledata ")
        .append("set #update_field# = ? ")
        .append("where wkr_atiid = ? and wkr_variableName = ?");

    sql.replace(sql.indexOf("#update_field#"),
        sql.indexOf("#update_field#")+"#update_field#".length(),"field");

    System.out.println(sql);

  }
}

⌨️ 快捷键说明

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