EquipmentConstrainInfoDAOImpl.java
package com.mycim.server.constrain.dao.impl;
import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.lang.StringUtils;
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.constrain.dao.EquipmentConstrainInfoDAO;
import com.mycim.server.constrain.dao.mapper.EquipmentConstrainRowMapper;
import com.mycim.server.constrain.dao.mapper.EquipmentConstrainTmpRowMapper;
import com.mycim.valueobject.SystemConstant;
import com.mycim.valueobject.prp.EquipmentConstrainInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.sql.Timestamp;
import java.util.*;
@Repository
public class EquipmentConstrainInfoDAOImpl implements EquipmentConstrainInfoDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<EquipmentConstrainInfo> qryEnableEquipmentConstrains(List<String> constrainRules, String equipmentId,
String constrainAction) {
List<String> params = new ArrayList();
String sql = buildSqlForEnableEquipmentConstrains(params, equipmentId, constrainRules, constrainAction);
return jdbcTemplate.query(sql, params.toArray(), new EquipmentConstrainRowMapper());
}
@Override
public EquipmentConstrainInfo getEquipmentConstrainInfoForCheck(EquipmentConstrainInfo equipmentConstrainInfo) {
String sql = " SELECT " + getEquipConstrainsTmpSql() + " FROM EQUIPMENT_CONSTRAIN_INFO_TMP WHERE " +
"FACILITY_RRN = ? AND EQUIPMENT_ID = ? AND" + " CONSTRAIN_SEQ = ? AND CONSTRAIN_TYPE=?";
Object[] args = new Object[]{equipmentConstrainInfo.getFacilityRrn(), equipmentConstrainInfo.getEquipmentId()
, NumberUtils.toLong(
equipmentConstrainInfo.getConstrainSeq()), equipmentConstrainInfo.getConstrainType()};
List equipmentConstrainInfos = jdbcTemplate.query(sql, args, new EquipmentConstrainTmpRowMapper());
if (equipmentConstrainInfos.isEmpty()) {
return null;
} else {
return (EquipmentConstrainInfo) equipmentConstrainInfos.get(0);
}
}
@Override
public EquipmentConstrainInfo getEquipmentConstrainInfoForCheck(Long constrainInfoRrn) {
String sql = " SELECT " + getEquipConstrainsTmpSql() + " FROM EQUIPMENT_CONSTRAIN_INFO_TMP WHERE " +
"CONSTRAIN_RRN = ?";
return (EquipmentConstrainInfo) jdbcTemplate
.queryForObject(sql, new Object[]{constrainInfoRrn}, new EquipmentConstrainTmpRowMapper());
}
@Override
public EquipmentConstrainInfo getEquipmentConstrainInfo(Long constrainInfoRrn) {
String sql = " SELECT " + getEquipConstrainsSql() + " FROM EQUIPMENT_CONSTRAIN_INFO WHERE CONSTRAIN_RRN = ?";
return jdbcTemplate
.queryForObjectWithNull(sql, new Object[]{constrainInfoRrn}, new EquipmentConstrainRowMapper());
}
@Override
public EquipmentConstrainInfo getEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo) {
String sql = " select " + getEquipConstrainsSql() + " from equipment_constrain_info where facility_rrn = ? " +
"and equipment_id = ? and " + "constrain_seq = ? and constrain_type=?";
Object[] args = new Object[]{equipmentConstrainInfo.getFacilityRrn(), equipmentConstrainInfo.getEquipmentId()
, NumberUtils.toLong(
equipmentConstrainInfo.getConstrainSeq()), equipmentConstrainInfo.getConstrainType()};
List equipmentConstrainInfos = jdbcTemplate.query(sql, args, new EquipmentConstrainRowMapper());
if (equipmentConstrainInfos.isEmpty()) {
return null;
} else {
return (EquipmentConstrainInfo) equipmentConstrainInfos.get(0);
}
}
@Override
public void insertEquipmentConstrainInfoTmp(EquipmentConstrainInfo equipmentConstrainInfo) {
String sql = " insert into equipment_constrain_info_tmp(facility_rrn,constrain_rrn,product_id," +
"process_id,operation_id,recipe_id,lot_id,equipment_id,constrain_action,constrain_type," +
"constrain_status,remark,create_by,modify_by,constrain_seq,create_time,modify_time,route_id," +
"stage_id,customer_id,expire_date,DAILY_WAFER_COUNT,TOTAL_WAFER_COUNT,PARENT_EQUIPMENT_ID," +
"PARENT_EQUIPMENT_RRN,trans_Name,effective_date, lot_type,eqpgroup_id,DAILY_LOT_COUNT," +
"TOTAL_LOT_COUNT," +
"AUTO_SWITCH_TIME_INTERVAL,LOT_PRIORITY,INTERNAL_PRIORITY,EXCEPT_PRODUCT_ID,EXCEPT_PROCESS_ID," +
"EXCEPT_LOT_ID,EXCEPT_OPERATION_ID,EXCEPT_STAGE_ID,EXCEPT_RECIPE_ID,EXCEPT_CUSTOMER_ID," +
"EXCEPT_LOT_TYPE," + "EXCEPT_LOT_PRIORITY, EXCEPT_INTERNAL_PRIORITY, EXCEPT_EQPGROUP_ID,QE_FLAG)" +
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate," + "sysdate,?,?,?,to_timestamp(?,'" +
DateUtils.DATE_FORMAT24 + "'),?,?,?,?,?,to_timestamp(?,'" + DateUtils.DATE_FORMAT24 +
"'),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Object[] objectArgs = new Object[]{equipmentConstrainInfo.getFacilityRrn(),
equipmentConstrainInfo.getConstrainRrn(),
equipmentConstrainInfo.getProductId(), equipmentConstrainInfo.getProcessId(),
equipmentConstrainInfo.getOperationId(),
equipmentConstrainInfo.getRecipeId(), equipmentConstrainInfo.getLotId(),
equipmentConstrainInfo.getEquipmentId(),
equipmentConstrainInfo.getConstrainAction(),
equipmentConstrainInfo.getConstrainType(),
equipmentConstrainInfo.getConstrainStatus(),
equipmentConstrainInfo.getRemark(), equipmentConstrainInfo.getCreateBy(),
equipmentConstrainInfo.getCreateBy(),
NumberUtils.toLong(equipmentConstrainInfo.getConstrainSeq()),
equipmentConstrainInfo.getRouteId(), equipmentConstrainInfo.getStageId(),
equipmentConstrainInfo.getCustomerId(),
equipmentConstrainInfo.getExpireDate(),
equipmentConstrainInfo.getDailyWaferCount(),
equipmentConstrainInfo.getTotalWaferCount(),
equipmentConstrainInfo.getParentEquipmentId(),
equipmentConstrainInfo.getParentEquipmentRrn(),
equipmentConstrainInfo.getTransName(),
equipmentConstrainInfo.getEffectiveDate(),
equipmentConstrainInfo.getLotType(), equipmentConstrainInfo.getEqpGroupId(),
equipmentConstrainInfo.getDailyLotCount(),
equipmentConstrainInfo.getTotalLotCount(),
DateUtils.getSecondsTime(equipmentConstrainInfo.getAutoSwitchTimeInterval()),
equipmentConstrainInfo.getLotPriority(),
equipmentConstrainInfo.getInternalPriority(),
equipmentConstrainInfo.getExceptProductId(),
equipmentConstrainInfo.getExceptProcessId(),
equipmentConstrainInfo.getExceptLotId(),
equipmentConstrainInfo.getExceptOperationId(),
equipmentConstrainInfo.getExceptStageId(),
equipmentConstrainInfo.getExceptRecipeId(),
equipmentConstrainInfo.getExceptCustomerId(),
equipmentConstrainInfo.getExceptLotType(),
equipmentConstrainInfo.getExceptLotPriority(),
equipmentConstrainInfo.getExceptInternalPriority(),
equipmentConstrainInfo.getExceptEqpGroupId(),
equipmentConstrainInfo.getQeFlag()};
jdbcTemplate.update(sql, objectArgs);
}
@Override
public void insertEquipmentConstrainHistory(EquipmentConstrainInfo equipmentConstrainInfo, long transRrn) {
String sql = " INSERT INTO EQUIPMENT_CONSTRAIN_HISTORY(TRANS_RRN,FACILITY_RRN,CONSTRAIN_RRN,PRODUCT_ID," +
"PROCESS_ID,OPERATION_ID,RECIPE_ID,LOT_ID," + "EQUIPMENT_ID,CONSTRAIN_ACTION,CONSTRAIN_TYPE," +
"CONSTRAIN_STATUS,REMARK,CREATE_BY," + "MODIFY_BY,CONSTRAIN_SEQ,CREATE_TIME,MODIFY_TIME,ROUTE_ID," +
"STAGE_ID,CUSTOMER_ID," + "EXPIRE_DATE,EFFECTIVE_DATE,DAILY_WAFER_COUNT,TOTAL_WAFER_COUNT," +
"PARENT_EQUIPMENT_ID, PARENT_EQUIPMENT_RRN, DAILY_LOT_COUNT, TOTAL_LOT_COUNT, " +
"AUTO_SWITCH_TIME_INTERVAL,LOT_PRIORITY,INTERNAL_PRIORITY,EXCEPT_PRODUCT_ID,EXCEPT_PROCESS_ID, " +
"EXCEPT_LOT_ID, EXCEPT_OPERATION_ID, EXCEPT_STAGE_ID,EXCEPT_RECIPE_ID,EXCEPT_CUSTOMER_ID," +
"EXCEPT_LOT_TYPE, EXCEPT_LOT_PRIORITY,EXCEPT_INTERNAL_PRIORITY, EXCEPT_EQPGROUP_ID,QE_FLAG)"
// + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,now(),now())";
+ " SELECT ?,FACILITY_RRN,CONSTRAIN_RRN,PRODUCT_ID,PROCESS_ID,OPERATION_ID,RECIPE_ID,LOT_ID," + " " +
"EQUIPMENT_ID,CONSTRAIN_ACTION,CONSTRAIN_TYPE,CONSTRAIN_STATUS,REMARK,CREATE_BY," + "MODIFY_BY," +
"CONSTRAIN_SEQ,CREATE_TIME,MODIFY_TIME,ROUTE_ID,STAGE_ID,CUSTOMER_ID," + "EXPIRE_DATE,EFFECTIVE_DATE," +
"DAILY_WAFER_COUNT,TOTAL_WAFER_COUNT,PARENT_EQUIPMENT_ID,PARENT_EQUIPMENT_RRN, " +
"DAILY_LOT_COUNT,TOTAL_LOT_COUNT,AUTO_SWITCH_TIME_INTERVAL,LOT_PRIORITY,INTERNAL_PRIORITY," +
"EXCEPT_PRODUCT_ID, EXCEPT_PROCESS_ID, EXCEPT_LOT_ID, EXCEPT_OPERATION_ID, EXCEPT_STAGE_ID, " +
"EXCEPT_RECIPE_ID,EXCEPT_CUSTOMER_ID, EXCEPT_LOT_TYPE,EXCEPT_LOT_PRIORITY,EXCEPT_INTERNAL_PRIORITY," +
"EXCEPT_EQPGROUP_ID,QE_FLAG FROM EQUIPMENT_CONSTRAIN_INFO_TMP WHERE CONSTRAIN_RRN=?";
Object[] objectArgs = new Object[]{transRrn, equipmentConstrainInfo.getConstrainRrn()};
jdbcTemplate.update(sql, objectArgs);
}
@Override
public void modifyEquipmentConstrainInfoTmp(EquipmentConstrainInfo equipmentConstrainInfo) {
String sql = " update equipment_constrain_info_tmp set facility_rrn=?,product_id=?,process_id=?," +
"operation_id=?,recipe_id=?,lot_id=?," + " equipment_id=?,constrain_action=?,constrain_type=?," +
"constrain_status=?,remark=?," + "modify_by=?,constrain_seq=?," + " modify_time=sysdate,route_id=?," +
"stage_id = ?, customer_id= ?,expire_date = " + "to_timestamp" + "(?,'" + DateUtils.DATE_FORMAT24 +
"'),DAILY_WAFER_COUNT=?,TOTAL_WAFER_COUNT=?," + "PARENT_EQUIPMENT_ID = ?,PARENT_EQUIPMENT_RRN = ? ," +
"trans_name=?,effective_date = to_timestamp(?,'" + DateUtils.DATE_FORMAT24 +
"'),LOT_TYPE=?,EQPGROUP_ID=?, DAILY_LOT_COUNT = ?,TOTAL_LOT_COUNT = ?,AUTO_SWITCH_TIME_INTERVAL = ?, " +
" LOT_PRIORITY=?, INTERNAL_PRIORITY=?,EXCEPT_PRODUCT_ID=?, EXCEPT_PROCESS_ID=?, EXCEPT_LOT_ID=?, " +
"EXCEPT_OPERATION_ID=?,EXCEPT_STAGE_ID=?,EXCEPT_RECIPE_ID=?,EXCEPT_CUSTOMER_ID=?,EXCEPT_LOT_TYPE=?," +
"EXCEPT_LOT_PRIORITY=?,EXCEPT_INTERNAL_PRIORITY=?,EXCEPT_EQPGROUP_ID=?,QE_FLAG=? where constrain_rrn=?";
Object[] objectArgs = new Object[]{equipmentConstrainInfo.getFacilityRrn(),
equipmentConstrainInfo.getProductId(), equipmentConstrainInfo.getProcessId(),
equipmentConstrainInfo.getOperationId(),
equipmentConstrainInfo.getRecipeId(),
equipmentConstrainInfo.getLotId(), equipmentConstrainInfo.getEquipmentId(),
equipmentConstrainInfo.getConstrainAction(),
equipmentConstrainInfo.getConstrainType(),
equipmentConstrainInfo.getConstrainStatus(),
equipmentConstrainInfo.getRemark(), equipmentConstrainInfo.getModifyBy(),
NumberUtils.toLong(equipmentConstrainInfo.getConstrainSeq()),
equipmentConstrainInfo.getRouteId(), equipmentConstrainInfo.getStageId(),
equipmentConstrainInfo.getCustomerId(),
equipmentConstrainInfo.getExpireDate(),
equipmentConstrainInfo.getDailyWaferCount(),
equipmentConstrainInfo.getTotalWaferCount(),
equipmentConstrainInfo.getParentEquipmentId(),
equipmentConstrainInfo.getParentEquipmentRrn(),
equipmentConstrainInfo.getTransName(),
equipmentConstrainInfo.getEffectiveDate(),
equipmentConstrainInfo.getLotType(), equipmentConstrainInfo.getEqpGroupId(),
equipmentConstrainInfo.getDailyLotCount(),
equipmentConstrainInfo.getTotalLotCount(),
DateUtils.getSecondsTime(equipmentConstrainInfo.getAutoSwitchTimeInterval()),
equipmentConstrainInfo.getLotPriority(),
equipmentConstrainInfo.getInternalPriority(),
equipmentConstrainInfo.getExceptProductId(),
equipmentConstrainInfo.getExceptProcessId(),
equipmentConstrainInfo.getExceptLotId(),
equipmentConstrainInfo.getExceptOperationId(),
equipmentConstrainInfo.getExceptStageId(),
equipmentConstrainInfo.getExceptRecipeId(),
equipmentConstrainInfo.getExceptCustomerId(),
equipmentConstrainInfo.getExceptLotType(),
equipmentConstrainInfo.getExceptLotPriority(),
equipmentConstrainInfo.getExceptInternalPriority(),
equipmentConstrainInfo.getExceptEqpGroupId(),
equipmentConstrainInfo.getQeFlag(),
equipmentConstrainInfo.getConstrainRrn()};
jdbcTemplate.update(sql, objectArgs);
}
@Override
public Page qryEquipmentConstrainsForCheck(Page equipmentConstrainPage, Map conditionMap) {
List<Object> params = new ArrayList<>();
String equipmentId = MapUtils.getString(conditionMap, "equipmentId");
Collection constrainRules = (Collection) conditionMap.get("constrainRule");
StringBuilder sql = new StringBuilder("SELECT * FROM (");
for (Iterator iterator = constrainRules.iterator(); iterator.hasNext(); ) {
String constrainRule = (String) iterator.next();
if (StringUtils.equals(constrainRule, EquipmentConstrainInfo.NORMAL_EQUIPMENT_RULE)) {
sql.append(" SELECT ").append(getEquipConstrainsTmpSql())
.append(" FROM EQUIPMENT_CONSTRAIN_INFO_TMP WHERE ")
.append("CONSTRAIN_TYPE='0' ");
if (StringUtils.isNotEmpty(equipmentId)) {
sql.append(" AND EQUIPMENT_ID LIKE ? ");
params.add(equipmentId);
}
if (MapUtils.getBooleanValue(conditionMap, "isQeUser")) {
sql.append(" AND QE_FLAG = 'on' ");
}
} else if (StringUtils.equals(constrainRule, EquipmentConstrainInfo.FREE_EQUIPMENT_RULE)) {
sql.append(" SELECT ").append(getEquipConstrainsTmpSql())
.append(" FROM EQUIPMENT_CONSTRAIN_INFO_TMP WHERE ")
.append("CONSTRAIN_TYPE='1' ");
}
if (iterator.hasNext()) {
sql.append(" UNION ALL ");
}
}
sql.append(" ) temp_1 WHERE LENGTH(TRANS_NAME) > 0 ");
this.buildArgs(conditionMap, sql);
sql.append(" ORDER BY EQUIPMENT_ID ,CONSTRAIN_SEQ ,CONSTRAIN_TYPE ");
return jdbcTemplate.queryForPage(equipmentConstrainPage, sql.toString(), params.toArray(),
new EquipmentConstrainTmpRowMapper());
}
@Override
public Page qryEquipmentConstrains(Page equipmentConstrainPage, Map conditionMap) {
List<Object> params = new ArrayList<>();
String sql = buildSqlForEquipmentConstrains(params, conditionMap);
return jdbcTemplate
.queryForPage(equipmentConstrainPage, sql, params.toArray(), new EquipmentConstrainRowMapper());
}
@Override
public List<EquipmentConstrainInfo> validationEquipmentConstrains(Map condtionMap) {
Collection params = new ArrayList();
String sql = validationSqlForEquipmentConstrains(params, condtionMap);
return jdbcTemplate.query(sql, params.toArray(), new EquipmentConstrainTmpRowMapper());
}
@Override
public void insertEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo) {
String sql = " insert into equipment_constrain_info(facility_rrn,constrain_rrn,product_id,process_id," +
"operation_id,recipe_id,lot_id, equipment_id,constrain_action,constrain_type,constrain_status," +
"remark,create_by,modify_by, constrain_seq,create_time,modify_time,route_id,stage_id," +
"customer_id,expire_date,effective_date,DAILY_WAFER_COUNT,TOTAL_WAFER_COUNT,PARENT_EQUIPMENT_ID," +
"PARENT_EQUIPMENT_RRN,LOT_TYPE,EQPGROUP_ID,DAILY_LOT_COUNT, TOTAL_LOT_COUNT," +
"AUTO_SWITCH_TIME_INTERVAL,LOT_PRIORITY,INTERNAL_PRIORITY,EXCEPT_PRODUCT_ID,EXCEPT_PROCESS_ID," +
"EXCEPT_LOT_ID, EXCEPT_OPERATION_ID,EXCEPT_STAGE_ID, EXCEPT_RECIPE_ID,EXCEPT_CUSTOMER_ID, " +
"EXCEPT_LOT_TYPE, EXCEPT_LOT_PRIORITY,EXCEPT_INTERNAL_PRIORITY, EXCEPT_EQPGROUP_ID,QE_FLAG) " +
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate,sysdate,?,?,?,to_timestamp" + "(?,'" +
DateUtils.DATE_FORMAT24 + "'),to_timestamp(?,'" + DateUtils.DATE_FORMAT24 +
"'),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Object[] objectArgs = new Object[]{equipmentConstrainInfo.getFacilityRrn(),
new Long(equipmentConstrainInfo.getConstrainRrn()),
equipmentConstrainInfo.getProductId(), equipmentConstrainInfo.getProcessId(),
equipmentConstrainInfo.getOperationId(),
equipmentConstrainInfo.getRecipeId(), equipmentConstrainInfo.getLotId(),
equipmentConstrainInfo.getEquipmentId(),
equipmentConstrainInfo.getConstrainAction(),
equipmentConstrainInfo.getConstrainType(),
equipmentConstrainInfo.getConstrainStatus(),
equipmentConstrainInfo.getRemark(), equipmentConstrainInfo.getCreateBy(),
equipmentConstrainInfo.getCreateBy(),
NumberUtils.toLong(equipmentConstrainInfo.getConstrainSeq()),
equipmentConstrainInfo.getRouteId(), equipmentConstrainInfo.getStageId(),
equipmentConstrainInfo.getCustomerId(),
equipmentConstrainInfo.getExpireDate(),
equipmentConstrainInfo.getEffectiveDate(),
equipmentConstrainInfo.getDailyWaferCount(),
equipmentConstrainInfo.getTotalWaferCount(),
equipmentConstrainInfo.getParentEquipmentId(),
equipmentConstrainInfo.getParentEquipmentRrn(),
equipmentConstrainInfo.getLotType(), equipmentConstrainInfo.getEqpGroupId(),
equipmentConstrainInfo.getDailyLotCount(),
equipmentConstrainInfo.getTotalLotCount(),
DateUtils.getSecondsTime(equipmentConstrainInfo.getAutoSwitchTimeInterval()),
equipmentConstrainInfo.getLotPriority(),
equipmentConstrainInfo.getInternalPriority(),
equipmentConstrainInfo.getExceptProductId(),
equipmentConstrainInfo.getExceptProcessId(),
equipmentConstrainInfo.getExceptLotId(),
equipmentConstrainInfo.getExceptOperationId(),
equipmentConstrainInfo.getExceptStageId(),
equipmentConstrainInfo.getExceptRecipeId(),
equipmentConstrainInfo.getExceptCustomerId(),
equipmentConstrainInfo.getExceptLotType(),
equipmentConstrainInfo.getExceptLotPriority(),
equipmentConstrainInfo.getExceptInternalPriority(),
equipmentConstrainInfo.getExceptEqpGroupId(),
equipmentConstrainInfo.getQeFlag()};
jdbcTemplate.update(sql, objectArgs);
}
@Override
public void modifyEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo) {
String sql = " update equipment_constrain_info set facility_rrn=?,product_id=?,process_id=?," +
"operation_id=?,recipe_id=?,lot_id=?," + " equipment_id=?,constrain_action=?,constrain_type=?," +
"constrain_status=?,remark=?," + "modify_by=?," + "constrain_seq=?,modify_time=sysdate,route_id=?," +
"stage_id = ?, customer_id= ?," + "expire_date = to_timestamp(?,'" + DateUtils.DATE_FORMAT24 + "')," +
"effective_date = to_timestamp(?,'" + DateUtils.DATE_FORMAT24 + "'),daily_Wafer_Count = ?, " +
"total_Wafer_Count = ?" + ",PARENT_EQUIPMENT_ID = ?,PARENT_EQUIPMENT_RRN = ?," +
"LOT_TYPE=?,EQPGROUP_ID=?,DAILY_LOT_COUNT = ?, TOTAL_LOT_COUNT = ?, AUTO_SWITCH_TIME_INTERVAL = ?, " +
"LOT_PRIORITY=?, INTERNAL_PRIORITY = ?,EXCEPT_PRODUCT_ID=?, EXCEPT_PROCESS_ID=?, " +
"EXCEPT_LOT_ID=?, EXCEPT_OPERATION_ID=?,EXCEPT_STAGE_ID=?, EXCEPT_RECIPE_ID=?," +
"EXCEPT_CUSTOMER_ID=?, EXCEPT_LOT_TYPE=?,EXCEPT_LOT_PRIORITY=?,EXCEPT_INTERNAL_PRIORITY=?, " +
"EXCEPT_EQPGROUP_ID=?, QE_FLAG=? where constrain_rrn=?";
Object[] objectArgs = new Object[]{equipmentConstrainInfo.getFacilityRrn(),
equipmentConstrainInfo.getProductId(), equipmentConstrainInfo.getProcessId(),
equipmentConstrainInfo.getOperationId(),
equipmentConstrainInfo.getRecipeId(), equipmentConstrainInfo.getLotId(),
equipmentConstrainInfo.getEquipmentId(),
equipmentConstrainInfo.getConstrainAction(),
equipmentConstrainInfo.getConstrainType(),
equipmentConstrainInfo.getConstrainStatus(),
equipmentConstrainInfo.getRemark(), equipmentConstrainInfo.getModifyBy(),
NumberUtils.toLong(equipmentConstrainInfo.getConstrainSeq()),
equipmentConstrainInfo.getRouteId(), equipmentConstrainInfo.getStageId(),
equipmentConstrainInfo.getCustomerId(),
equipmentConstrainInfo.getExpireDate(),
equipmentConstrainInfo.getEffectiveDate(),
equipmentConstrainInfo.getDailyWaferCount(),
equipmentConstrainInfo.getTotalWaferCount(),
equipmentConstrainInfo.getParentEquipmentId(),
equipmentConstrainInfo.getParentEquipmentRrn(),
equipmentConstrainInfo.getLotType(), equipmentConstrainInfo.getEqpGroupId(),
equipmentConstrainInfo.getDailyLotCount(),
equipmentConstrainInfo.getTotalLotCount(),
DateUtils.getSecondsTime(equipmentConstrainInfo.getAutoSwitchTimeInterval()),
equipmentConstrainInfo.getLotPriority(),
equipmentConstrainInfo.getInternalPriority(),
equipmentConstrainInfo.getExceptProductId(),
equipmentConstrainInfo.getExceptProcessId(),
equipmentConstrainInfo.getExceptLotId(),
equipmentConstrainInfo.getExceptOperationId(),
equipmentConstrainInfo.getExceptStageId(),
equipmentConstrainInfo.getExceptRecipeId(),
equipmentConstrainInfo.getExceptCustomerId(),
equipmentConstrainInfo.getExceptLotType(),
equipmentConstrainInfo.getExceptLotPriority(),
equipmentConstrainInfo.getExceptInternalPriority(),
equipmentConstrainInfo.getExceptEqpGroupId(),
equipmentConstrainInfo.getQeFlag(),
new Long(equipmentConstrainInfo.getConstrainRrn())};
jdbcTemplate.update(sql, objectArgs);
}
@Override
public void deleteEquipmentConstrainInfoTmp(Long constrainInfoRrn) {
String sql = "DELETE FROM EQUIPMENT_CONSTRAIN_INFO_TMP L WHERE L.CONSTRAIN_RRN=?";
jdbcTemplate.update(sql, new Object[]{constrainInfoRrn});
}
@Override
public void deleteEquipmentConstrainInfo(Long constrainInfoRrn) {
String sql = "DELETE FROM EQUIPMENT_CONSTRAIN_INFO L WHERE L.CONSTRAIN_RRN=?";
jdbcTemplate.update(sql, new Object[]{constrainInfoRrn});
}
@Override
public Integer getMaxConstrainSeqByEqpt(String eqptId) {
String sql = "SELECT NVL(MAX(CONSTRAIN_SEQ),0) FROM EQUIPMENT_CONSTRAIN_INFO_TMP WHERE " + "EQUIPMENT_ID=?";
return jdbcTemplate.queryForObjectWithNull(sql, new Object[]{eqptId}, Integer.class);
}
@Override
public void changeEquipmentConstantToEnable() {
String sql = "UPDATE EQUIPMENT_CONSTRAIN_INFO SET CONSTRAIN_STATUS = 'ENABLE', MODIFY_TIME = ?," +
" EFFECTIVE_DATE = ? WHERE AUTO_SWITCH_TIME_INTERVAL > 0 AND (TO_DATE(?, '" + DateUtils.DATE_FORMAT24 +
"') - MODIFY_TIME) * 24 * 60 * 60 > AUTO_SWITCH_TIME_INTERVAL AND CONSTRAIN_STATUS = 'DISABLE'";
Timestamp now = new Timestamp(System.currentTimeMillis());
jdbcTemplate.update(sql, now, now, DateUtils.formatDate(now, DateUtils.DATE_FORMAT));
}
private String buildSqlForEnableEquipmentConstrains(List<String> params, String equipmentId,
List<String> constrainRules, String constrainAction) {
StringBuffer bufferSql = new StringBuffer("SELECT * FROM (");
for (Iterator iterator = constrainRules.iterator(); iterator.hasNext(); ) {
String constrainRule = (String) iterator.next();
if (StringUtils.equals(constrainRule, EquipmentConstrainInfo.NORMAL_EQUIPMENT_RULE)) {
bufferSql.append(" select * from equipment_constrain_info where constrain_type='0' and " +
"constrain_status = 'ENABLE' ");
if (StringUtils.isNotEmpty(equipmentId)) {
bufferSql.append(" AND equipment_id = ? ");
params.add(equipmentId);
}
if (StringUtils.isNotBlank(constrainAction)) {
bufferSql.append(" and constrain_action = ? ");
params.add(constrainAction);
}
}
if (StringUtils.equals(constrainRule, EquipmentConstrainInfo.FREE_EQUIPMENT_RULE)) {
bufferSql.append(" select * from equipment_constrain_info where constrain_type='1' and " +
"constrain_status = 'ENABLE' ");
if (StringUtils.isNotBlank(constrainAction)) {
bufferSql.append(" and constrain_action = ? ");
params.add(constrainAction);
}
}
if (iterator.hasNext()) {
bufferSql.append(" UNION ALL ");
}
}
bufferSql.append(" ) constrain ");
bufferSql.append(" ORDER BY CONSTRAIN_SEQ,CONSTRAIN_TYPE ");
return bufferSql.toString();
}
private String validationSqlForEquipmentConstrains(Collection params, Map condtionMap) {
Collection constrainRules = (Collection) condtionMap.get("constrainRule");
String equipmentId = MapUtils.getString(condtionMap, "equipmentId");
String productId = MapUtils.getString(condtionMap, "productId");
String processId = MapUtils.getString(condtionMap, "processId");
String lotId = MapUtils.getString(condtionMap, "lotId");
String operationId = MapUtils.getString(condtionMap, "operationId");
String recipeId = MapUtils.getString(condtionMap, "recipeId");
String constrainSeq = MapUtils.getString(condtionMap, "constrainSeq");
String routeId = MapUtils.getString(condtionMap, "routeId");
String customerId = MapUtils.getString(condtionMap, "customerId");
String stageId = MapUtils.getString(condtionMap, "stageId");
String lotType = MapUtils.getString(condtionMap, "lotType");
String eqpGroupId = MapUtils.getString(condtionMap, "eqpGroupId");
String lotPriority = MapUtils.getString(condtionMap, "lotPriority");
String internalPriority = MapUtils.getString(condtionMap, "internalPriority");
String exceptProductId = MapUtils.getString(condtionMap, "exceptProductId");
String exceptProcessId = MapUtils.getString(condtionMap, "exceptProcessId");
String exceptLotId = MapUtils.getString(condtionMap, "exceptLotId");
String exceptOperationId = MapUtils.getString(condtionMap, "exceptOperationId");
String exceptStageId = MapUtils.getString(condtionMap, "exceptStageId");
String exceptRecipeId = MapUtils.getString(condtionMap, "exceptRecipeId");
String exceptCustomerId = MapUtils.getString(condtionMap, "exceptCustomerId");
String exceptLotType = MapUtils.getString(condtionMap, "exceptLotType");
String exceptLotPriority = MapUtils.getString(condtionMap, "exceptLotPriority");
String exceptInternalPriority = MapUtils.getString(condtionMap, "exceptInternalPriority");
String exceptEqpGroupId = MapUtils.getString(condtionMap, "exceptEqpGroupId");
StringBuffer bufferSql = new StringBuffer("SELECT * FROM (");
for (Iterator iterator = constrainRules.iterator(); iterator.hasNext(); ) {
String constrainRule = (String) iterator.next();
if (StringUtils.equals(constrainRule, EquipmentConstrainInfo.NORMAL_EQUIPMENT_RULE) ||
StringUtils.equals(constrainRule, EquipmentConstrainInfo.FREE_EQUIPMENT_RULE)) {
bufferSql
.append(" select " + getEquipConstrainsTmpSql() + " from equipment_constrain_info_tmp where ");
bufferSql.append(" equipment_id = ? ");
params.add(equipmentId);
if (StringUtils.isNotEmpty(constrainSeq)) {
bufferSql.append(" AND (constrain_seq = ? or (");
params.add(constrainSeq);
}
if (StringUtils.isNotEmpty(productId)) {
bufferSql.append(" product_id = ? ");
params.add(productId);
} else {
bufferSql.append(" product_id is null ");
}
if (StringUtils.isNotEmpty(processId)) {
bufferSql.append(" AND process_id = ? ");
params.add(processId);
} else {
bufferSql.append(" AND process_id is null ");
}
if (StringUtils.isNotEmpty(lotId)) {
bufferSql.append(" AND lot_id = ? ");
params.add(lotId);
} else {
bufferSql.append(" AND lot_id is null ");
}
if (StringUtils.isNotEmpty(operationId)) {
bufferSql.append(" AND operation_id = ? ");
params.add(operationId);
} else {
bufferSql.append(" AND operation_id is null ");
}
if (StringUtils.isNotEmpty(recipeId)) {
bufferSql.append(" AND recipe_id = ? ");
params.add(recipeId);
} else {
bufferSql.append(" AND recipe_id is null ");
}
if (StringUtils.isNotEmpty(routeId)) {
bufferSql.append(" AND route_id = ? ");
params.add(recipeId);
} else {
bufferSql.append(" AND route_id is null ");
}
if (StringUtils.isNotEmpty(stageId)) {
bufferSql.append(" AND stage_id = ? ");
params.add(stageId);
} else {
bufferSql.append(" AND stage_id is null ");
}
if (StringUtils.isNotEmpty(customerId)) {
bufferSql.append(" AND customer_id = ? ");
params.add(customerId);
} else {
bufferSql.append(" AND customer_id is null ");
}
if (StringUtils.isNotEmpty(lotType)) {
bufferSql.append(" AND lot_type = ? ");
params.add(customerId);
} else {
bufferSql.append(" AND lot_type is null ");
}
if (StringUtils.isNotEmpty(eqpGroupId)) {
bufferSql.append(" AND eqpgroup_id = ? ");
params.add(customerId);
} else {
bufferSql.append(" AND eqpgroup_id is null ");
}
if (StringUtils.isNotEmpty(lotPriority)) {
bufferSql.append(" AND LOT_PRIORITY = ? ");
params.add(lotPriority);
} else {
bufferSql.append(" AND LOT_PRIORITY is null ");
}
if (StringUtils.isNotEmpty(internalPriority)) {
bufferSql.append(" AND INTERNAL_PRIORITY = ? ");
params.add(internalPriority);
} else {
bufferSql.append(" AND INTERNAL_PRIORITY is null ");
}
if (StringUtils.isNotEmpty(exceptProductId)) {
bufferSql.append(" AND EXCEPT_PRODUCT_ID = ? ");
params.add(exceptProductId);
} else {
bufferSql.append(" AND EXCEPT_PRODUCT_ID is null ");
}
if (StringUtils.isNotEmpty(exceptProcessId)) {
bufferSql.append(" AND EXCEPT_PROCESS_ID = ? ");
params.add(exceptProcessId);
} else {
bufferSql.append(" AND EXCEPT_PROCESS_ID is null ");
}
if (StringUtils.isNotEmpty(exceptLotId)) {
bufferSql.append(" AND EXCEPT_LOT_ID = ? ");
params.add(exceptLotId);
} else {
bufferSql.append(" AND EXCEPT_LOT_ID is null ");
}
if (StringUtils.isNotEmpty(exceptOperationId)) {
bufferSql.append(" AND EXCEPT_OPERATION_ID = ? ");
params.add(exceptOperationId);
} else {
bufferSql.append(" AND EXCEPT_OPERATION_ID is null ");
}
if (StringUtils.isNotEmpty(exceptStageId)) {
bufferSql.append(" AND EXCEPT_STAGE_ID = ? ");
params.add(exceptStageId);
} else {
bufferSql.append(" AND EXCEPT_STAGE_ID is null ");
}
if (StringUtils.isNotEmpty(exceptRecipeId)) {
bufferSql.append(" AND EXCEPT_RECIPE_ID = ? ");
params.add(exceptRecipeId);
} else {
bufferSql.append(" AND EXCEPT_RECIPE_ID is null ");
}
if (StringUtils.isNotEmpty(exceptCustomerId)) {
bufferSql.append(" AND EXCEPT_CUSTOMER_ID = ? ");
params.add(exceptCustomerId);
} else {
bufferSql.append(" AND EXCEPT_CUSTOMER_ID is null ");
}
if (StringUtils.isNotEmpty(exceptLotType)) {
bufferSql.append(" AND EXCEPT_LOT_TYPE = ? ");
params.add(exceptLotType);
} else {
bufferSql.append(" AND EXCEPT_LOT_TYPE is null ");
}
if (StringUtils.isNotEmpty(exceptLotPriority)) {
bufferSql.append(" AND EXCEPT_LOT_PRIORITY = ? ");
params.add(exceptLotPriority);
} else {
bufferSql.append(" AND EXCEPT_LOT_PRIORITY is null ");
}
if (StringUtils.isNotEmpty(exceptInternalPriority)) {
bufferSql.append(" AND EXCEPT_INTERNAL_PRIORITY = ? ");
params.add(exceptInternalPriority);
} else {
bufferSql.append(" AND EXCEPT_INTERNAL_PRIORITY is null ");
}
if (StringUtils.isNotEmpty(exceptEqpGroupId)) {
bufferSql.append(" AND EXCEPT_EQPGROUP_ID = ? ");
params.add(exceptEqpGroupId);
} else {
bufferSql.append(" AND EXCEPT_EQPGROUP_ID is null ");
}
if (StringUtils.isNotEmpty(constrainSeq)) {
bufferSql.append(" ))");
}
}
if (iterator.hasNext()) {
bufferSql.append(" UNION ALL ");
}
}
bufferSql.append(" ) constrain ");
bufferSql.append(" ORDER BY CONSTRAIN_SEQ,CASE WHEN CONSTRAIN_ACTION='" + EquipmentConstrainInfo.REJECTSTOP +
"' THEN " + "0 ELSE 1 END ,CONSTRAIN_TYPE");
return bufferSql.toString();
}
private String buildSqlForEquipmentConstrains(List<Object> params, Map conditionMap) {
Collection constrainRules = (Collection) conditionMap.get("constrainRule");
String equipmentId = MapUtils.getString(conditionMap, "equipmentId");
StringBuilder bufferSql = new StringBuilder("SELECT * FROM (");
for (Iterator iterator = constrainRules.iterator(); iterator.hasNext(); ) {
String constrainRule = (String) iterator.next();
if (StringUtils.equals(constrainRule, EquipmentConstrainInfo.NORMAL_EQUIPMENT_RULE)) {
bufferSql.append(" select ").append(getEquipConstrainsSql())
.append(" from equipment_constrain_info where ").append("constrain_type='0' ");
if (StringUtils.isNotEmpty(equipmentId)) {
bufferSql.append(" AND equipment_id LIKE ? ");
params.add(equipmentId);
}
}
if (StringUtils.equals(constrainRule, EquipmentConstrainInfo.FREE_EQUIPMENT_RULE)) {
bufferSql.append(" select ").append(getEquipConstrainsSql())
.append(" from equipment_constrain_info where ")
.append("constrain_type='1' ");
}
if (iterator.hasNext()) {
bufferSql.append(" UNION ALL ");
}
}
bufferSql.append(" ) constrain WHERE 1=1 ");
this.buildArgs(conditionMap, bufferSql);
bufferSql.append(" ORDER BY EQUIPMENT_ID ,CONSTRAIN_SEQ ,CASE WHEN CONSTRAIN_ACTION='" + EquipmentConstrainInfo.REJECTSTOP +
"' THEN 0 ELSE 1 END ,CONSTRAIN_TYPE");
return bufferSql.toString();
}
private void buildArgs(Map conditionMap, StringBuilder bufferSql) {
String condition;
if (StringUtils.isNotBlank(condition = MapUtils.getString(conditionMap, "runFunc"))){
bufferSql.append(" AND CONSTRAIN_ACTION = '")
.append(StringUtils.equalsIgnoreCase(condition, "RN")?EquipmentConstrainInfo.REJECTSTOP:EquipmentConstrainInfo.ACCEPT)
.append("'");
}
if (StringUtils.isNotBlank(condition = MapUtils.getString(conditionMap, "isExpired"))){
bufferSql.append(" AND EXPIRE_DATE ")
.append(StringUtils.equalsIgnoreCase(condition, "YES")?SystemConstant.Str.MORE_THAN:SystemConstant.Str.LESS_THAN)
.append("SYSDATE ");
}
}
private String getEquipConstrainsTmpSql() {
return getEquipConstrainsSql() + ",trans_Name";
}
private String getEquipConstrainsSql() {
return " FACILITY_RRN,CONSTRAIN_RRN,PRODUCT_ID,PROCESS_ID,OPERATION_ID,RECIPE_ID,LOT_ID,"
+ "EQUIPMENT_ID,CONSTRAIN_ACTION,CONSTRAIN_TYPE,CONSTRAIN_STATUS,REMARK,CREATE_BY,"
+ "MODIFY_BY,CREATE_TIME,MODIFY_TIME,ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,"
+ "ATTRIBUTE_DATA4,ATTRIBUTE_DATA5,CONSTRAIN_SEQ,ROUTE_ID,STAGE_ID,CUSTOMER_ID,EXPIRE_DATE,"
+ "EFFECTIVE_DATE,DAILY_WAFER_COUNT,TOTAL_WAFER_COUNT,PARENT_EQUIPMENT_ID,PARENT_EQUIPMENT_RRN,"
+ "LOT_TYPE, EQPGROUP_ID, DAILY_LOT_COUNT,TOTAL_LOT_COUNT,AUTO_SWITCH_TIME_INTERVAL,LOT_PRIORITY,"
+ "INTERNAL_PRIORITY,EXCEPT_PRODUCT_ID, EXCEPT_PROCESS_ID, EXCEPT_LOT_ID,EXCEPT_OPERATION_ID, "
+ "EXCEPT_STAGE_ID, EXCEPT_RECIPE_ID, EXCEPT_CUSTOMER_ID, EXCEPT_LOT_TYPE, EXCEPT_LOT_PRIORITY, "
+ "EXCEPT_INTERNAL_PRIORITY, EXCEPT_EQPGROUP_ID,QE_FLAG ";
}
}