EdcSpcDaoImpl.java
package com.mycim.server.edcchart.dao.impl;
import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.jdbc.mapper.RowMapper;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.server.edcchart.dao.EdcSpcDAO;
import com.mycim.valueobject.consts.DataBaseNames;
import com.mycim.valueobject.edcspc.*;
import com.mycim.valueobject.edcspc.dto.nonrt.NonRTUploadDetailDTO;
import com.mycim.valueobject.spc.RunCardRawDataInfo;
import com.mycim.valueobject.wip.SRCLotSpecialStep;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
/**
* @author zhi.cai
* @version 6.0.0
* @date 2019/12/14
**/
@Repository
public class EdcSpcDaoImpl implements EdcSpcDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void insertNonRTUploadHistory(List<NonRTUploadDataInfo> list, Long transRrn) {
String sql = "INSERT INTO NON_RT_DATA_HISTORY (TRANS_RRN,FACILITY_RRN,EQPT_ID,EQPT_RRN,LOT_ID,LOT_RRN," +
"UNIT_ID,SPC_JOB_ID,NON_RT_KEY," + "RETEST_FLAG,SUBGROUP_SIZE_FLAG,AREA,PRO1,PRO2,PRO3,PRO4,PRO5," +
"DATA_VALUES,CREATE_USER_ID," + "CREATE_TIME,SPC_JOB_NAME,VIOLATION_INFO,VALUE_TYPE,TIME_DATA_VALUE," +
"FORMULA,FORMULA_PARA,FORMULA_TYPE,IMPORT_TYPE,UNIT_SHOW,COMMENTS,VALID_HIGH, VALID_LOW)" +
" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate,?,?,?,?,?,?,?,?,?,?,?,?)";
List<Object[]> batchArgs = new ArrayList<Object[]>();
for (int i = 0; i < list.size(); i++) {
NonRTUploadDataInfo data = list.get(i);
String dataValues = "";
if (data.getValueList() != null) {
for (double value : data.getValueList()) {
String valueStr = "";
if (value - Math.floor(value) < 1e-10) {
valueStr = new Double(value).intValue() + "";
} else {
valueStr = value + "";
}
if (StringUtils.isBlank(valueStr)) {
valueStr = "0";
}
dataValues += valueStr + ",";
}
if (StringUtils.isNotBlank(dataValues)) {
dataValues = dataValues.substring(0, dataValues.length() - 1);
} else {
dataValues = "0";
}
}
Object[] args = new Object[]{transRrn, data.getFacilityRrn(), data.getEqptId(), data.getEqptRrn(),
data.getLotId(), data.getLotRrn(), data.getUnitId(), data.getJobId(), data.getNonRTKey(),
data.getRetestFlag(), data.getSubgroupSizeFlag(), data.getArea(), data.getPro1(), data.getPro2(),
data.getPro3(), data.getPro4(), data.getPro5(), dataValues, data.getCreateUser(),
data.getJobName(), data.getViolationInfo(), data.getValueType(), data.getTime(),
data.getFormula(), data.getFormulaPara(), data.getFormulaType(), data.getImportType(),
data.getUnitShow(), data.getComment(), data.getValidHigh(), data.getValidLow()};
batchArgs.add(args);
}
jdbcTemplate.batchUpdate(sql, batchArgs);
}
@Override
public List getActiveParameterSetVersion(long instanceRrn, int instanceVersion) {
ArrayList parameterSetVersions = new ArrayList();
// get the value object by object rrn
String sql = "SELECT PARAMETER_SEQUENCE," + DataBaseNames.PARAMETER + ".PARAMETER_RRN AS PARAMETER_RRN," + " " +
"DATA_TYPE,FILE_COLLECTION_FLAG,UNIT_OF_MEASURE,PRECISION," + " DERIVED_FLAG,LOT_COLLECTION_FLAG," +
"VALIDATE_AGAINST," + " LIMIT_CHECKING_AGAINST,APPLY_CALCULATION_TO, PARAMETER_UNIT, " + " " +
"COLLECTION_LEVEL,INSTANCE_ID,INSTANCE_DESC," + " MEASURE_TYPE ,OPTIONAL_FLAG,TARGET_VALUE," + " " +
"CHECK_UPPER_LIMIT_FLAG,CHECK_LOWER_LIMIT_FLAG ," + " LOWER_WARNING_LIMIT,UPPER_WARNING_LIMIT," + " " +
"WARNING_ALARM_ID,LOWER_CONTROL_LIMIT ," + " UPPER_CONTROL_LIMIT,CONTROL_ALARM_ID," + " " +
"LOWER_SHUTDOWN_LIMIT,UPPER_SHUTDOWN_LIMIT ," + " SHUTDOWN_ALARM_ID,LOWER_SPECIFICATION_LIMIT," +
DataBaseNames.PARAMETER + ".CP_PARA," + DataBaseNames.PARAMETER + ".KEY_CHART_FLAG," +
" UPPER_SPECIFICATION_LIMIT,SPECIFICATION_ALARM_ID, RULE_TYPE " + " FROM " +
DataBaseNames.PARAMETER_SET_VERSION + "," + DataBaseNames.PARAMETER + "," + DataBaseNames.NAMEDOBJECT +
" WHERE PARAMETER_SET_RRN = ? and parameter_set_version = ? and " +
DataBaseNames.PARAMETER_SET_VERSION + ".parameter_rrn=" + " " + DataBaseNames.PARAMETER +
".parameter_rrn" + " and " + DataBaseNames.PARAMETER + ".parameter_rrn = instance_rrn" +
" order by PARAMETER_SEQUENCE";
SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, new Object[]{instanceRrn, instanceVersion});
int calDataTypeNumber = 0;
// if parameterSetVersion table does exist in the value object
// table, throw a GetterException
// that means orphan or malformed data existed
while (rs.next()) {
// construct the value object
Parameter parameter = new Parameter();
ParameterSetVersion parameterSetVersion = new ParameterSetVersion();
parameter.setInstanceId(rs.getString("INSTANCE_ID"));
parameter.setInstanceDesc(rs.getString("INSTANCE_DESC"));
parameter.setInstanceRrn(rs.getInt("PARAMETER_RRN"));
parameter.setDataType(rs.getString("DATA_TYPE"));
parameter.setFileCollectionFlag(rs.getString("FILE_COLLECTION_FLAG"));
parameter.setUnitOfMeasure(rs.getString("UNIT_OF_MEASURE"));
parameter.setPrecision(new Long(rs.getLong("PRECISION")));
parameter.setDerivedFlag(rs.getString("DERIVED_FLAG"));
parameter.setLotCollectionFlag(rs.getString("LOT_COLLECTION_FLAG"));
parameter.setValidateAgainst(rs.getString("VALIDATE_AGAINST"));
parameter.setLimitCheckingAgainst(rs.getString("LIMIT_CHECKING_AGAINST"));
parameter.setApplyCalculationTo(rs.getString("APPLY_CALCULATION_TO"));
parameter.setParameterUnit(rs.getString("PARAMETER_UNIT"));
parameter.setCpPara(rs.getString("CP_PARA"));
parameter.setKeyChartFlag(rs.getString("KEY_CHART_FLAG"));
parameterSetVersion.setInstanceRrn(instanceRrn);
parameterSetVersion.setInstanceVersion(instanceVersion);
parameterSetVersion.setParameterRrn(parameter.getInstanceRrn());
parameterSetVersion.setParameterId(rs.getString("INSTANCE_ID"));
parameterSetVersion.setParameterSequence(rs.getInt("PARAMETER_SEQUENCE"));
parameterSetVersion.setCollectionLevel(rs.getString("COLLECTION_LEVEL"));
parameterSetVersion.setMeasureType(rs.getString("MEASURE_TYPE"));
parameterSetVersion.setOptionalFlag(rs.getString("OPTIONAL_FLAG"));
parameterSetVersion.setRuleType(rs.getString("RULE_TYPE"));
rs.getDouble("TARGET_VALUE");
parameterSetVersion.setTargetValue(rs.wasNull() ? null : (new Double(rs.getDouble("TARGET_VALUE"))));
parameterSetVersion.setCheckUpperLimitFlag(rs.getString("CHECK_UPPER_LIMIT_FLAG"));
parameterSetVersion.setCheckLowerLimitFlag(rs.getString("CHECK_LOWER_LIMIT_FLAG"));
rs.getDouble("LOWER_WARNING_LIMIT");
parameterSetVersion
.setLowerWarningLimit(rs.wasNull() ? null : (new Double(rs.getDouble("LOWER_WARNING_LIMIT"))));
rs.getDouble("UPPER_WARNING_LIMIT");
parameterSetVersion
.setUpperWarningLimit(rs.wasNull() ? null : (new Double(rs.getDouble("UPPER_WARNING_LIMIT"))));
parameterSetVersion.setWarningAlarmId(rs.getString("WARNING_ALARM_ID"));
rs.getDouble("LOWER_CONTROL_LIMIT");
parameterSetVersion
.setLowerControlLimit(rs.wasNull() ? null : (new Double(rs.getDouble("LOWER_CONTROL_LIMIT"))));
rs.getDouble("UPPER_CONTROL_LIMIT");
parameterSetVersion
.setUpperControlLimit(rs.wasNull() ? null : (new Double(rs.getDouble("UPPER_CONTROL_LIMIT"))));
parameterSetVersion.setControlAlarmId(rs.getString("CONTROL_ALARM_ID"));
rs.getDouble("LOWER_SHUTDOWN_LIMIT");
parameterSetVersion
.setLowerShutdownLimit(rs.wasNull() ? null : (new Double(rs.getDouble("LOWER_SHUTDOWN_LIMIT"))));
rs.getDouble("UPPER_SHUTDOWN_LIMIT");
parameterSetVersion
.setUpperShutdownLimit(rs.wasNull() ? null : (new Double(rs.getDouble("UPPER_SHUTDOWN_LIMIT"))));
parameterSetVersion.setShutdownAlarmId(rs.getString("SHUTDOWN_ALARM_ID"));
rs.getDouble("LOWER_SPECIFICATION_LIMIT");
parameterSetVersion.setLowerSpecificationLimit(
rs.wasNull() ? null : (new Double(rs.getDouble("LOWER_SPECIFICATION_LIMIT"))));
rs.getDouble("UPPER_SPECIFICATION_LIMIT");
parameterSetVersion.setUpperSpecificationLimit(
rs.wasNull() ? null : (new Double(rs.getDouble("UPPER_SPECIFICATION_LIMIT"))));
parameterSetVersion.setSpecificationAlarmId(rs.getString("SPECIFICATION_ALARM_ID"));
parameterSetVersion.setParameters(new ArrayList());
parameterSetVersion.getParameters().add(parameter);
String dataType = rs.getString("DATA_TYPE");
if ("AVERAGE".equalsIgnoreCase(dataType) || "STDDEVIATION".equalsIgnoreCase(dataType) ||
"UNIFORMITY-1".equalsIgnoreCase(dataType) || "UNIFORMITY-2".equalsIgnoreCase(dataType)) {
calDataTypeNumber++;
parameterSetVersions.add(parameterSetVersion);
} else {
parameterSetVersions.add(parameterSetVersions.size() - calDataTypeNumber, parameterSetVersion);
}
}
Iterator it = parameterSetVersions.iterator();
while (it.hasNext()) {
ParameterSetVersion parameterSetVersion = (ParameterSetVersion) it.next();
Parameter parameter = (Parameter) parameterSetVersion.getParameters().iterator().next();
// nsi reading 没有版本管理,取parameter的reading
sql = "SELECT PARAMETER_SET_RRN,PARAMETER_SET_VERSION,PARAMETER_RRN,READING_SEQUENCE," + "READING_PROMPT," +
"INSTANCE_ID,INSTANCE_DESC FROM " + DataBaseNames.READING_PROMPTS + "," +
DataBaseNames.NAMEDOBJECT +
" WHERE PARAMETER_SET_RRN = 0 AND PARAMETER_SET_VERSION =0 AND PARAMETER_RRN=? AND " +
"READING_PROMPT=INSTANCE_RRN " + " AND OBJECT='LABEL' " + " ORDER BY READING_SEQUENCE ";
rs = jdbcTemplate.queryForRowSet(sql, new Object[]{parameter.getInstanceRrn()});
List readingPrompts = new ArrayList();
while (rs.next()) {
Prompt prompt = new Prompt();
prompt.setParameterSetRrn(new Long(rs.getLong("PARAMETER_SET_RRN")));
prompt.setParameterSetVersion(new Integer(rs.getInt("PARAMETER_SET_VERSION")));
prompt.setParameterRrn(new Long(rs.getLong("PARAMETER_RRN")));
prompt.setSequence(new Integer(rs.getInt("READING_SEQUENCE")));
prompt.setPromptRrn(new Long(rs.getLong("READING_PROMPT")));
prompt.setPromptId(rs.getString("INSTANCE_ID"));
prompt.setPromptDesc(rs.getString("INSTANCE_DESC"));
readingPrompts.add(prompt);
}
parameter.setReadingPrompts(readingPrompts);
parameter.setSamplePrompts(new ArrayList());
String dataType = parameter.getDataType();
if ("AVERAGE".equalsIgnoreCase(dataType) || "STDDEVIATION".equalsIgnoreCase(dataType) ||
"UNIFORMITY-1".equalsIgnoreCase(dataType) || "UNIFORMITY-2".equalsIgnoreCase(dataType)) {
List sourceParameters = this.getCalculateSourceParameters(parameterSetVersion.getInstanceRrn(),
parameterSetVersion.getInstanceVersion(),
parameter.getInstanceRrn());
parameter.setSourceParameters(sourceParameters);
}
}
return parameterSetVersions;
}
@Override
public String getParameterSetUseForumla(long parameterSetRrn) {
String sql = "SELECT " + " USE_FORUMLA " + " FROM PARAMETER_SET_EXT " + " WHERE PARAMETER_SET_RRN =?";
SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, new Object[]{parameterSetRrn});
if (rs.next()) {
return rs.getString("USE_FORUMLA");
} else {
return null;
}
}
@Override
public String getParameterSetMultiEqptMonitor(long parameterSetRrn) {
String sql = "SELECT " + " ATTRIBUTE_DATA3 " + " FROM PARAMETER_SET_EXT " + " WHERE PARAMETER_SET_RRN =?";
SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, new Object[]{parameterSetRrn});
if (rs.next()) {
return rs.getString("ATTRIBUTE_DATA3");
} else {
return null;
}
}
@Override
public List<NonRTUploadDataInfo> getNonRTDataValues(String spcJobName, Long lotRrn, List<String> unitList) {
StringBuilder sql = new StringBuilder("SELECT ");
sql.append("n.TRANS_RRN,n.FACILITY_RRN,n.EQPT_ID,n.EQPT_RRN,n.LOT_ID,n.LOT_RRN,n.UNIT_ID,");
sql.append("n.SPC_JOB_ID,n.SPC_JOB_NAME,n.NON_RT_KEY,n.RETEST_FLAG,n.SUBGROUP_SIZE_FLAG,n.AREA,N.DATA_VALUES,");
sql.append("n.PRO1,n.PRO2,N.PRO3,N.PRO4,N.PRO5,");
sql.append("n.VIOLATION_INFO,n.FORMULA,n.FORMULA_PARA,N.FORMULA_TYPE,N.VALUE_TYPE,N.TIME_DATA_VALUE,");
sql.append("N.IMPORT_TYPE ").append(" FROM ").append("non_rt_data_history n,");
sql.append("(select SPC_JOB_ID,lot_rrn,unit_id,value_type,max(create_time) as max_create_time ");
sql.append("from non_rt_data_history group by SPC_JOB_ID,lot_rrn,unit_id,value_type) g ");
sql.append("where n.spc_job_id=g.spc_job_id and n.lot_rrn = g.lot_rrn and n.unit_id = g.unit_id AND ");
sql.append("N.Value_Type=G.value_type and n.create_time = g.max_create_time ");
sql.append(" AND N.SPC_JOB_NAME = ? AND N.LOT_RRN = ? ");
List<Object> argList = new ArrayList<>();
argList.add(spcJobName);
argList.add(lotRrn);
StringBuilder unitBuilder = new StringBuilder("AND N.UNIT_ID IN (");
for(String unitId:unitList) {
unitBuilder.append("?,");
argList.add(unitId);
}
unitBuilder.delete(unitBuilder.lastIndexOf(StringUtils.COMMA_SIGN), unitBuilder.length()).append(")");
sql.append(unitBuilder);
List<NonRTUploadDataInfo> list = jdbcTemplate
.query(sql.toString(), argList.toArray(), new RowMapper<NonRTUploadDataInfo>() {
@Override
public NonRTUploadDataInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
NonRTUploadDataInfo data = new NonRTUploadDataInfo();
data.setFacilityRrn(rs.getLong("FACILITY_RRN"));
data.setEqptId(rs.getString("EQPT_ID"));
data.setEqptRrn(rs.getLong("EQPT_RRN"));
data.setLotId(rs.getString("LOT_ID"));
data.setLotRrn(rs.getLong("LOT_RRN"));
data.setUnitId(rs.getString("UNIT_ID"));
data.setJobId(rs.getString("SPC_JOB_ID"));
data.setJobName(rs.getString("SPC_JOB_NAME"));
data.setNonRTKey(rs.getString("NON_RT_KEY"));
data.setRetestFlag(rs.getString("RETEST_FLAG"));
data.setSubgroupSizeFlag(rs.getString("SUBGROUP_SIZE_FLAG"));
data.setArea(rs.getString("AREA"));
String dataValuesStr = rs.getString("DATA_VALUES");
String[] dataValues = dataValuesStr.split(",");
if (dataValues != null && dataValues.length > 0) {
double[] datavalues = new double[dataValues.length];
for (int i = 0; i < dataValues.length; i++) {
datavalues[i] = NumberUtils.toDouble(dataValues[i]);
}
data.setValueList(datavalues);
}
data.setDataValues(rs.getString("DATA_VALUES"));
data.setViolationInfo(rs.getString("VIOLATION_INFO"));
data.setValueType(rs.getString("VALUE_TYPE"));
data.setTime(rs.getString("TIME_DATA_VALUE"));
data.setFormula(rs.getString("FORMULA"));
data.setFormulaPara(rs.getString("FORMULA_PARA"));
data.setFormulaType(rs.getString("FORMULA_TYPE"));
data.setPro1(rs.getString("PRO1"));
data.setPro2(rs.getString("PRO2"));
data.setPro3(rs.getString("PRO3"));
data.setPro4(rs.getString("PRO4"));
data.setPro5(rs.getString("PRO5"));
data.setImportType(rs.getString("IMPORT_TYPE"));
return data;
}
});
return list;
}
@Override
public Page getNonRTUploadHistory(Page page) {
StringBuffer sql = new StringBuffer(
"SELECT TRANS_RRN,FACILITY_RRN,EQPT_ID,EQPT_RRN,LOT_ID,LOT_RRN,UNIT_ID,SPC_JOB_ID," + "NON_RT_KEY," +
"RETEST_FLAG," + "SUBGROUP_SIZE_FLAG,AREA,PRO1,PRO2,PRO3,PRO4,PRO5,DATA_VALUES," +
"CREATE_USER_ID," + "CREATE_TIME," + "SPC_JOB_NAME,VIOLATION_INFO," + "TIME_DATA_VALUE," +
"FORMULA,FORMULA_PARA,VALUE_TYPE,FORMULA_TYPE,IMPORT_TYPE,UNIT_SHOW," + "COMMENTS ,VALID_HIGH" +
" , VALID_LOW FROM NON_RT_DATA_HISTORY WHERE 1=1 ");
Map condition = page.getBaseInfo();
List args = new ArrayList();
if (StringUtils.isNotBlank(MapUtils.getString(condition, "eqptRrn"))) {
sql.append(" AND EQPT_RRN = ?");
args.add(MapUtils.getLongValue(condition, "eqptRrn"));
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "lotRrn"))) {
sql.append(" AND LOT_RRN = ?");
args.add(MapUtils.getLongValue(condition, "lotRrn"));
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "jobName"))) {
sql.append(" AND INSTR(SPC_JOB_NAME,?)>0");
args.add(MapUtils.getString(condition, "jobName"));
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "areaId"))) {
sql.append(" AND AREA= ?");
args.add(MapUtils.getString(condition, "areaId"));
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "startTime"))) {
sql.append(" AND CREATE_TIME > to_date(?,'yyyy-MM-dd HH24:mi:ss')");
args.add(MapUtils.getString(condition, "startTime"));
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "endTime"))) {
sql.append(" AND CREATE_TIME < to_date(?,'yyyy-MM-dd HH24:mi:ss')");
args.add(MapUtils.getString(condition, "endTime"));
}
sql.append(" ORDER BY CREATE_TIME DESC,UNIT_ID");
return jdbcTemplate.queryForPage(page, sql.toString(), args.toArray(), new RowMapper<NonRTUploadDataInfo>() {
@Override
public NonRTUploadDataInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
NonRTUploadDataInfo data = new NonRTUploadDataInfo();
data.setFacilityRrn(rs.getLong("FACILITY_RRN"));
data.setEqptId(rs.getString("EQPT_ID"));
data.setEqptRrn(rs.getLong("EQPT_RRN"));
data.setLotId(rs.getString("LOT_ID"));
data.setLotRrn(rs.getLong("LOT_RRN"));
data.setUnitId(rs.getString("UNIT_ID"));
data.setJobId(rs.getString("SPC_JOB_ID"));
data.setJobName(rs.getString("SPC_JOB_NAME"));
data.setNonRTKey(rs.getString("NON_RT_KEY"));
data.setRetestFlag(rs.getString("RETEST_FLAG"));
data.setSubgroupSizeFlag(rs.getString("SUBGROUP_SIZE_FLAG"));
data.setArea(rs.getString("AREA"));
String dataValuesStr = rs.getString("DATA_VALUES");
if (StringUtils.isNotBlank(dataValuesStr)) {
String[] dataValues = dataValuesStr.split(",");
if (dataValues != null && dataValues.length > 0) {
double[] datavalues = new double[dataValues.length];
for (int i = 0; i < dataValues.length; i++) {
datavalues[i] = NumberUtils.toDouble(dataValues[i]);
}
data.setValueList(datavalues);
}
}
data.setDataValues(rs.getString("DATA_VALUES"));
data.setViolationInfo(rs.getString("VIOLATION_INFO"));
data.setValueType(rs.getString("VALUE_TYPE"));
data.setTime(rs.getString("TIME_DATA_VALUE"));
data.setFormula(rs.getString("FORMULA"));
data.setFormulaPara(rs.getString("FORMULA_PARA"));
data.setFormulaType(rs.getString("FORMULA_TYPE"));
data.setPro1(rs.getString("PRO1"));
data.setPro2(rs.getString("PRO2"));
data.setPro3(rs.getString("PRO3"));
data.setPro4(rs.getString("PRO4"));
data.setPro5(rs.getString("PRO5"));
data.setCreateUser(rs.getString("CREATE_USER_ID"));
data.setCreateTime(DateUtils.formatDate(rs.getTimestamp("CREATE_TIME")));
data.setImportType(rs.getString("IMPORT_TYPE"));
data.setUnitShow(rs.getString("UNIT_SHOW"));
data.setComment(rs.getString("COMMENTS"));
data.setValidHigh(rs.getString("VALID_HIGH"));
data.setValidLow(rs.getString("VALID_LOW"));
return data;
}
});
}
@Override
public List getSamples(DataCollection dc) {
String sql = "select * from " + DataBaseNames.SAMPLE_DATA + " a where a.dcol_rrn=? and a.dcol_sequence=? " +
"order by a.sample_sequence";
List sampleList = new ArrayList();
SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, new Object[]{dc.getDcolRrn(), dc.getDcolSequence()});
while (rs.next()) {
Sample sample = new Sample();
sample.setDcolRrn(new Long(rs.getLong("DCOL_RRN")));
sample.setDcolSequence(Integer.valueOf(rs.getString("DCOL_SEQUENCE")));
sample.setSampleSequence(Integer.valueOf(rs.getString("SAMPLE_SEQUENCE")));
sample.setUnitRrn(new Long(rs.getLong("UNIT_RRN")));
sample.setSampleId(rs.getString("SAMPLE_ID"));
sample.setRecipeId(rs.getString("RECIPE_ID"));
rs.getDouble("SAMPLE_VALUE");
sample.setSampleValue(rs.wasNull() ? null : (new Double(rs.getDouble("SAMPLE_VALUE"))));
rs.getDouble("SUM_VALUE");
sample.setSumValue(rs.wasNull() ? null : (new Double(rs.getDouble("SUM_VALUE"))));
rs.getDouble("AVERAGE_VALUE");
sample.setAverageValue(rs.wasNull() ? null : (new Double(rs.getDouble("AVERAGE_VALUE"))));
rs.getDouble("RANGE_VALUE");
sample.setRangeValue(rs.wasNull() ? null : (new Double(rs.getDouble("RANGE_VALUE"))));
rs.getDouble("MINIMUM_VALUE");
sample.setMinimumValue(rs.wasNull() ? null : (new Double(rs.getDouble("MINIMUM_VALUE"))));
rs.getDouble("MAXIMUM_VALUE");
sample.setMaximumValue(rs.wasNull() ? null : (new Double(rs.getDouble("MAXIMUM_VALUE"))));
rs.getDouble("STANDARD_DEVIATION_VALUE");
sample.setStandardDeviationValue(
rs.wasNull() ? null : (new Double(rs.getDouble("STANDARD_DEVIATION_VALUE"))));
rs.getDouble("CUSTOM_VALUE");
sample.setCustomValue(rs.wasNull() ? null : (new Double(rs.getDouble("CUSTOM_VALUE"))));
sample.setComments(rs.getString("COMMENTS"));
List readings = this.getReadings4RawData(sample);
if (!readings.isEmpty()) {
sample.setReadings(readings);
}
sampleList.add(sample);
}
return sampleList;
}
@Override
public List getReadings4RawData(Sample sample) {
String sql = "select * from " + DataBaseNames.RAW_DATA + " a where a.dcol_rrn=? and a.dcol_sequence= ? and a" +
".sample_sequence=? order by" + " a.reading_sequence ";
List readsList = new ArrayList();
SqlRowSet rs = jdbcTemplate.queryForRowSet(sql,
new Object[]{sample.getDcolRrn(), sample.getDcolSequence(),
sample.getSampleSequence()});
while (rs.next()) {
Reading reading = new Reading();
reading.setDataPointRrn(new Long(rs.getLong("DATA_POINT_RRN")));
reading.setDcolRrn(new Long(rs.getLong("DCOL_RRN")));
reading.setDcolSequence(Integer.valueOf(rs.getString("DCOL_SEQUENCE")));
reading.setSampleSequence(Integer.valueOf(rs.getString("SAMPLE_SEQUENCE")));
reading.setReadingSequence(Integer.valueOf(rs.getString("READING_SEQUENCE")));
reading.setReadingId(rs.getString("READING_ID"));
rs.getDouble("DATA_VALUE");
reading.setDataValue(rs.wasNull() ? null : (new Double(rs.getDouble("DATA_VALUE"))));
reading.setCollectionTimestamp(String.valueOf(rs.getDate("COLLECTION_TIMESTAMP")));
reading.setOosFlag(rs.getString("OOS_FLAG"));
reading.setOowFlag(rs.getString("OOW_FLAG"));
reading.setPlotFlag(rs.getString("PLOT_FLAG"));
reading.setCalculationFlag(rs.getString("CALCULATION_FLAG"));
readsList.add(reading);
}
return readsList;
}
@Override
public Page getEdcPlanImportHistory(Page page) {
String sql = "SELECT p.trans_rrn,p.import_sequence,p.import_data_type,p.categroy,p.product_id,p" +
".product_rrn,p.process_id,p.process_rrn," + "p.flow_seq,p.operation_id,p.operation_rrn,p" +
".operation_desc,p.edc_plan,p.meas_spec,p" + ".sequence,p.meas_desc,p.prompt,p.data_type," + "p.unit," +
"p.meas_type,p.dept,p.units,p.sites,p.is_derived,p.edc_operator,p.operand1,p" + ".operand2,p" +
".auto_exclude,p.uscr,p.uspec,p.target,p.lspec,p.lscr," + "p.chart_id,p.chart_desc,p.chart_template,p" +
".allow_partial_required,p" + ".receive_violations,p" + ".rule_violoca,p.spec_violoca,p.ocap,p" +
".measurement_type," + "p.NUMBER_of_units,p.NUMBER_of_sites,p.sub_group_style,p.sub_group_size,p" +
".trend_usl," + "p.trend_ucl,p.trend_cl,p.trend_lcl,p.trend_lsl,p.trend_rules,p.xbar_usl,p.xbar_ucl," +
"p.xbar_cl,p.xbar_lcl," +
"p.xbar_lsl,p.xbar_rules,p.rs_usl,p.rs_ucl,p.rs_cl,p.rs_lcl,p.rs_lsl,p.rs_rules," +
"t.trans_id,t.trans_end_timestamp,t.trans_performed_by,cp_para,key_chart_flag" +
" FROM EDC_PLAN_IMPORT_HISTORY P left join TRANSACTION_LOG T " +
"on p.trans_rrn=t.trans_rrn where 1=1 ";
Map condition = page.getBaseInfo();
/*if (StringUtils.isNotBlank(MapUtils.getString(condition, "productRrn"))) {
sql += " AND p.PRODUCT_RRN = " + MapUtils.getLongValue(condition, "productRrn");
}*/
if (StringUtils.isNotBlank(MapUtils.getString(condition, "productId"))) {
sql += " AND p.PRODUCT_ID = '" + MapUtils.getString(condition, "productId") + "'";
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "edcPlan"))) {
sql += " AND p.EDC_PLAN = '" + MapUtils.getString(condition, "edcPlan") + "'";
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "transId"))) {
sql += " AND T.TRANS_ID= '" + MapUtils.getString(condition, "transId") + "'";
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "impDataType"))) {
sql += " AND p.import_data_type= '" + MapUtils.getString(condition, "impDataType") + "'";
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "startTime"))) {
sql += " AND t.trans_start_timestamp > to_date('" + MapUtils.getString(condition, "startTime") +
"','yyyy-MM-dd " + "HH24:mi:ss')";
}
if (StringUtils.isNotBlank(MapUtils.getString(condition, "endTime"))) {
sql += " AND t.trans_end_timestamp < to_date('" + MapUtils.getString(condition, "endTime") +
"','yyyy-MM-dd " + "HH24:mi:ss')";
}
sql = "SELECT * FROM(SELECT T.*" + " FROM (SELECT * FROM (" + sql + ") n ORDER BY trans_end_timestamp DESC," +
"import_sequence) T )";
Object[] args = new Object[]{};
Page resultPage = jdbcTemplate
.queryForPage(page, sql, args, new org.springframework.jdbc.core.RowMapper<EDCPlanExcelData>() {
@Override
public EDCPlanExcelData mapRow(ResultSet rs, int rowNum) throws SQLException {
EDCPlanExcelData data = new EDCPlanExcelData();
data.setCategory(rs.getString("categroy"));
data.setProductId(rs.getString("product_id"));
data.setProductRrn(rs.getLong("product_rrn"));
data.setProcessId(rs.getString("process_id"));
data.setProcessRrn(rs.getLong("process_rrn"));
data.setStepSeq(rs.getString("flow_seq"));
data.setStepId(rs.getString("operation_id"));
data.setStepRrn(rs.getLong("operation_rrn"));
data.setStepDes(rs.getString("operation_desc"));
data.setEdcplan(rs.getString("edc_plan"));
data.setMeasspec(rs.getString("meas_spec"));
data.setSequence(rs.getString("sequence"));
data.setMeasdes(rs.getString("meas_desc"));
data.setPrompt(rs.getString("prompt"));
data.setDataType(rs.getString("data_type"));
data.setUnit(rs.getString("unit"));
data.setMeasType(rs.getString("meas_type"));
data.setDept(rs.getString("dept"));
data.setUnits(rs.getString("units"));
data.setSites(rs.getString("sites"));
data.setIsDerived(rs.getString("is_derived"));
data.setEdcOperator(rs.getString("edc_operator"));
data.setOperand1(rs.getString("operand1"));
data.setOperand2(rs.getString("operand2"));
data.setAutoExclude(rs.getString("auto_exclude"));
data.setChartId(rs.getString("chart_id"));
data.setChartDes(rs.getString("chart_desc"));
data.setChartTemplate(rs.getString("chart_template"));
data.setAllowPartialRequired(rs.getString("allow_partial_required"));
data.setReceiveViolations(rs.getString("receive_violations"));
data.setRulevioloca(rs.getString("rule_violoca"));
data.setSpecvioloca(rs.getString("spec_violoca"));
data.setOcap(rs.getString("ocap"));
data.setMeasurementType(rs.getString("measurement_type"));
data.setNumberOfUnits(rs.getString("NUMBER_of_units"));
data.setNumberOfSites(rs.getString("NUMBER_of_sites"));
data.setSubgroupStyle(rs.getString("sub_group_style"));
data.setSubgroupSize(rs.getString("sub_group_size"));
data.setTrend_USL(rs.getString("trend_usl"));
data.setTrend_UCL(rs.getString("trend_ucl"));
data.setTrend_CL(rs.getString("trend_cl"));
data.setTrend_LCL(rs.getString("trend_lcl"));
data.setTrend_LSL(rs.getString("trend_lsl"));
data.setTrend_rules(rs.getString("trend_rules"));
data.setXBAR_USL(rs.getString("xbar_usl"));
data.setXBAR_UCL(rs.getString("xbar_ucl"));
data.setXBAR_CL(rs.getString("xbar_cl"));
data.setXBAR_LCL(rs.getString("xbar_lcl"));
data.setXBAR_LSL(rs.getString("xbar_lsl"));
data.setXBAR_RULES(rs.getString("xbar_rules"));
data.setRS_USL(rs.getString("rs_usl"));
data.setRS_UCL(rs.getString("rs_ucl"));
data.setRS_CL(rs.getString("rs_cl"));
data.setRS_LCL(rs.getString("rs_lcl"));
data.setRS_LSL(rs.getString("rs_lsl"));
data.setRS_rules(rs.getString("rs_rules"));
data.setImpType(rs.getString("trans_id"));
data.setImpUser(rs.getString("trans_performed_by"));
data.setImpSeq(rs.getInt("import_sequence"));
data.setImpTime(DateUtils.formatDate(rs.getTimestamp("trans_end_timestamp"),
DateUtils.DATE_FORMAT4DATE));
data.setImpDataType(rs.getString("import_data_type"));
data.setCpPara(rs.getString("cp_para"));
data.setKeyChartFlag(rs.getString("KEY_CHART_FLAG"));
return data;
}
});
return resultPage;
}
@Override
public void insertEdcPlanImportHistory(List<EDCPlanExcelData> list, long transRrn) {
String sql = "INSERT INTO EDC_PLAN_IMPORT_HISTORY (trans_rrn,import_sequence,import_data_type,categroy," +
"product_id,product_rrn,process_id,process_rrn," + "flow_seq,operation_id,operation_rrn," +
"operation_desc,edc_plan,meas_spec,sequence," + "meas_desc,prompt,data_type," + "unit,meas_type,dept," +
"units,sites,is_derived,edc_operator,operand1,operand2,auto_exclude," + "chart_id,chart_desc," +
"chart_template,allow_partial_required,receive_violations," + "rule_violoca,spec_violoca,ocap," +
"measurement_type," + "NUMBER_of_units,NUMBER_of_sites,sub_group_style,sub_group_size," + "trend_usl," +
"trend_ucl,trend_cl,trend_lcl,trend_LSL,trend_rules,trend_SPEC,XBAR_USL," + "xbar_ucl,xbar_cl," +
"xbar_lcl,XBAR_LSL,xbar_rules,XBAR_SPEC,RS_USL,rs_ucl," + "rs_cl,rs_lcl,RS_LSL,rs_rules,RS_SPEC," +
"cp_para,key_chart_flag)" + " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?," + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
List<Object[]> batchArgs = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
EDCPlanExcelData data = list.get(i);
Object[] args = new Object[]{transRrn, i +
1, data.getImpDataType(), data.getCategory(), data.getProductId(), data.getProductRrn(),
data.getProcessId(), data.getProcessRrn(), data.getStepSeq(), data.getStepId(), data.getStepRrn()
, data.getStepDes(), data.getEdcplan(), data.getMeasspec(), NumberUtils.toLong(
data.getSequence()), data.getMeasdes(), data.getPrompt(), data.getDataType(), data.getUnit(),
data.getMeasType(), data.getDept(), data.getUnits(), data.getSites(), data.getIsDerived(),
data.getEdcOperator(), data.getOperand1(), data.getOperand2(), data.getAutoExclude(),
data.getChartId(), data.getChartDes(), data.getChartTemplate(), data.getAllowPartialRequired(),
data.getReceiveViolations(), data.getRulevioloca(), data.getSpecvioloca(), data.getOcap(),
data.getMeasurementType(), data.getNumberOfUnits(), data.getNumberOfSites(),
data.getSubgroupStyle(), data.getSubgroupSize(), data.getTrend_USL(), data.getTrend_UCL(),
data.getTrend_CL(), data.getTrend_LCL(), data.getTrend_LSL(), data.getTrend_rules(),
data.getTrend_SPEC(), data.getXBAR_USL(), data.getXBAR_UCL(), data.getXBAR_CL(),
data.getXBAR_LCL(), data.getXBAR_LSL(), data.getXBAR_RULES(), data.getXBAR_SPEC(),
data.getRS_USL(), data.getRS_UCL(), data.getRS_CL(), data.getRS_LCL(), data.getRS_LSL(),
data.getRS_rules(), data.getRS_SPEC(), data.getCpPara(), data.getKeyChartFlag()};
batchArgs.add(args);
}
jdbcTemplate.batchUpdate(sql, batchArgs);
}
@Override
public void deleteParameterSetVersion(Long parameterSetRrn, Integer parameterSetVersion) {
String sql = "DELETE FROM " + DataBaseNames.PARAMETER_SET_VERSION + " WHERE parameter_set_rrn = ? and " +
"parameter_set_version = ?";
jdbcTemplate.update(sql, new Object[]{parameterSetRrn, parameterSetVersion});
}
@Override
public void deleteSamplePromptsForAll(Long parameterSetRrn, Integer parameterSetVersion) {
String sql = "DELETE FROM " + DataBaseNames.SAMPLE_PROMPTS + " WHERE parameter_set_rrn = ? and " +
"parameter_set_version = ?";
jdbcTemplate.update(sql, new Object[]{parameterSetRrn, parameterSetVersion});
}
@Override
public void deleteReadingPromptsForAll(Long parameterSetRrn, Integer parameterSetVersion) {
String sql = "DELETE FROM " + DataBaseNames.READING_PROMPTS + " WHERE PARAMETER_SET_RRN = ? AND " +
"PARAMETER_SET_VERSION = ?";
jdbcTemplate.update(sql, new Object[]{parameterSetRrn, parameterSetVersion});
}
@Override
public void deleteDataCollectionRuleForAll(Long parameterSetRrn, Integer parameterSetVersion) {
String sql = "DELETE FROM DATA_COLLECTION_RULE WHERE PARAMETER_SET_RRN = ? AND " + "PARAMETER_SET_VERSION = ? ";
jdbcTemplate.update(sql, parameterSetRrn, parameterSetVersion);
}
@Override
public List<RunCardRawDataInfo> getRunCardRawDataInfoList(Long lotRrn, Long stepSequence) {
StringBuilder sql = new StringBuilder("SELECT ");
sql.append(" UNIT_ID,UNIT_RRN,RUNCARD_ID,RUNCARD_RRN,RECIPE_ID,PARAMETER_ID,DATA_VALUES ");
sql.append(" FROM ").append(DataBaseNames.SRC_SAMPLE_RAWDATA);
sql.append(" WHERE LOT_RRN= ? AND STEP_SEQUENCE = ?");
Object[] args = new Object[]{lotRrn, stepSequence};
return jdbcTemplate.query(sql.toString(), args, new RowMapper<RunCardRawDataInfo>() {
@Override
public RunCardRawDataInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
RunCardRawDataInfo rawDataInfo = new RunCardRawDataInfo();
rawDataInfo.setUnitId(rs.getString("UNIT_ID"));
rawDataInfo.setUnitRrn(rs.getLong("UNIT_RRN"));
rawDataInfo.setRunCardId(rs.getString("RUNCARD_ID"));
rawDataInfo.setRunCardRrn(rs.getLong("RUNCARD_RRN"));
rawDataInfo.setRecipeId(rs.getString("RECIPE_ID"));
rawDataInfo.setParameterId(rs.getString("PARAMETER_ID"));
rawDataInfo.setDataValues(rs.getString("DATA_VALUES"));
return rawDataInfo;
}
});
}
@Override
public void insertSrcSampleRawdata(List<RunCardRawDataInfo> rawDataInfoList) {
StringBuilder sql = new StringBuilder("INSERT INTO ");
sql.append(DataBaseNames.SRC_SAMPLE_RAWDATA);
sql.append(" (lot_special_step_rrn,runcard_id,runcard_rrn,lot_rrn,step_sequence,unit_id,unit_rrn,");
sql.append(" eqpt_id,eqpt_Rrn,step_no,recipe_id,parameter_set_rrn,parameter_id,parameter_rrn,data_values)");
sql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
List<Object[]> batchArgs = new ArrayList<Object[]>();
for (RunCardRawDataInfo rawDataInfo : rawDataInfoList) {
Object[] args = new Object[]{rawDataInfo.getLotSpecialStepRrn(), rawDataInfo.getRunCardId(),
rawDataInfo.getRunCardRrn(), rawDataInfo.getLotRrn(),
rawDataInfo.getStepSequence(), rawDataInfo.getUnitId(),
rawDataInfo.getUnitRrn(), rawDataInfo.getEquipmentId(),
rawDataInfo.getEquipmentRrn(), rawDataInfo.getStepNo(),
rawDataInfo.getRecipeId(), rawDataInfo.getParameterSetRrn(),
rawDataInfo.getParameterId(), rawDataInfo.getParameterRrn(),
rawDataInfo.getDataValues()};
batchArgs.add(args);
}
jdbcTemplate.batchUpdate(sql.toString(), batchArgs);
}
@Override
public void updateNonRTUploadHistoryWithOcapId(String ocapId, Long transRrn) {
StringBuffer sql = new StringBuffer();
sql.append("UPDATE NON_RT_DATA_HISTORY SET OCAP_ID = ?");
sql.append(" WHERE TRANS_RRN = ? ");
Object[] args = new Object[]{ocapId, transRrn};
jdbcTemplate.update(sql.toString(), args);
}
@Override
public String queryOfflineUnitList(String jobId, String lotId, String ocapId) {
StringBuffer sql = new StringBuffer();
sql.append(" SELECT DISTINCT UNIT_ID FROM NON_RT_DATA_HISTORY L WHERE ");
sql.append(
" L.CREATE_TIME = (SELECT MAX(CREATE_TIME) FROM NON_RT_DATA_HISTORY L WHERE L.SPC_JOB_ID = " + "? " +
"AND L.LOT_ID = ? AND L.OCAP_ID = ?) ORDER BY UNIT_ID");
List<String> unitList = jdbcTemplate.query(sql.toString(), String.class, new Object[]{jobId, lotId, ocapId});
StringBuffer units = new StringBuffer();
String unitIds = StringUtils.EMPTY;
if (CollectionUtils.isNotEmpty(unitList)) {
for (String unitId : unitList) {
units.append(unitId).append(",");
}
unitIds = units.substring(0, units.lastIndexOf(","));
}
return unitIds;
}
@Override
public void insertNonRTUploadHistory(List<NonRTUploadDetailDTO> uploadDetails, long transRrn, String ocapId) {
StringBuffer sql = new StringBuffer(
"INSERT INTO NON_RT_DATA_HISTORY (TRANS_RRN,FACILITY_RRN,EQPT_ID,EQPT_RRN,LOT_ID,LOT_RRN," +
"UNIT_ID,SPC_JOB_ID,NON_RT_KEY,");
sql.append(" RETEST_FLAG,SUBGROUP_SIZE_FLAG,AREA,PRO1,PRO2,PRO3,PRO4,PRO5,DATA_VALUES,CREATE_USER_ID," +
"CREATE_TIME,SPC_JOB_NAME,VIOLATION_INFO,");
sql.append(" VALUE_TYPE,TIME_DATA_VALUE,FORMULA,FORMULA_PARA,FORMULA_TYPE,IMPORT_TYPE, OCAP_ID");
sql.append(") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate,?,?,?,?,?,?,?,?,?)");
List<Object[]> batchArgs = new ArrayList<Object[]>();
for (NonRTUploadDetailDTO detailDTO : uploadDetails) {
NonRTUploadDataInfo data = detailDTO.getUploadData();
String dataValues = "";
if (data.getValueList() != null) {
for (double value : data.getValueList()) {
String valueStr = "";
if (value - Math.floor(value) < 1e-10) {
valueStr = new Double(value).intValue() + "";
} else {
valueStr = value + "";
}
if (StringUtils.isBlank(valueStr)) {
valueStr = "0";
}
dataValues += valueStr + ",";
}
if (StringUtils.isNotBlank(dataValues)) {
dataValues = dataValues.substring(0, dataValues.length() - 1);
} else {
dataValues = "0";
}
}
Object[] args = new Object[]{transRrn, data.getFacilityRrn(), data.getEqptId(), data.getEqptRrn(),
data.getLotId(), data.getLotRrn(), data.getUnitId(), data.getJobId(), data.getNonRTKey(),
data.getRetestFlag(), data.getSubgroupSizeFlag(), data.getArea(), data.getPro1(), data.getPro2(),
data.getPro3(), data.getPro4(), data.getPro5(), dataValues, data.getCreateUser(),
data.getJobName(), data.getViolationInfo(), data.getValueType(), data.getTime(),
data.getFormula(), data.getFormulaPara(), data.getFormulaType(), data.getImportType(), ocapId};
batchArgs.add(args);
}
jdbcTemplate.batchUpdate(sql.toString(), batchArgs);
}
public List getCalculateSourceParameters(long parameterSetRrn, long parameterSetVersion, long parameterRrn) {
List sourceParameters = new ArrayList();
// get the value object by object rrn
String sql = "select SOURCE_PARAMETER_SEQUENCE,instance_id,instance_desc, SOURCE_PARAMETER " + "from " +
DataBaseNames.CALCULATE_SOURCE_PARAMETERS + "," + DataBaseNames.NAMEDOBJECT +
" where SOURCE_PARAMETER=instance_rrn and " +
" parameter_rrn=? and parameter_set_rrn= ? and parameter_set_version= ? order by " +
"SOURCE_PARAMETER_SEQUENCE";
SqlRowSet rs = jdbcTemplate
.queryForRowSet(sql, new Object[]{parameterRrn, parameterSetRrn, parameterSetVersion});
while (rs.next()) {
HashMap sourceParameter = new HashMap();
sourceParameter.put("SOURCE_PARAMETER_SEQUENCE", new Long(rs.getLong("SOURCE_PARAMETER_SEQUENCE")));
sourceParameter.put("SOURCE_PARAMETER_RRN", new Long(rs.getLong("SOURCE_PARAMETER")));
sourceParameter.put("INSTANCE_ID", rs.getString("instance_id"));
sourceParameter.put("INSTANCE_DESC", rs.getString("instance_desc"));
sourceParameters.add(sourceParameter);
}
return sourceParameters;
}
}