ElogSheetQueryDAOImpl.java
package com.mycim.server.wip.dao.impl;
import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.server.wip.dao.ElogSheetQueryDAO;
import com.mycim.server.wip.dao.mapper.ElogSheetMapper;
import com.mycim.server.wip.dao.mapper.ElogSubSheetMapper;
import com.mycim.valueobject.consts.DataBaseNames;
import com.mycim.valueobject.wip.ElogSheet;
import com.mycim.valueobject.wip.ElogSubSheet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author finatice.yang
* @date 2021/7/20
**/
@Repository
public class ElogSheetQueryDAOImpl implements ElogSheetQueryDAO {
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public ElogSheet getElogSheetEvent(Long elogSheetRrn) {
StringBuilder sql = getElogSheetEventSql();
sql.append(" WHERE elog_sheet_rrn = ?");
return jdbcTemplate.queryForObjectWithNull(sql.toString(), new Object[]{elogSheetRrn}, new ElogSheetMapper());
}
@Override
public List<ElogSheet> getElogSheetEventList(ElogSheet queryInfo) {
StringBuilder sql = getElogSheetEventSql();
sql.append(" WHERE 1=1");
List<Object> argList = new ArrayList<>();
if (queryInfo.getEquipmentRrn() != null && queryInfo.getEquipmentRrn().longValue() > 0) {
sql.append(" AND equipment_rrn = ?");
argList.add(queryInfo.getEquipmentRrn());
}
if (queryInfo.getLotRrn() != null && queryInfo.getLotRrn().longValue() > 0) {
sql.append(" AND lot_rrn = ?");
argList.add(queryInfo.getLotRrn());
}
return jdbcTemplate.query(sql.toString(), new ElogSheetMapper(), argList.toArray());
}
@Override
public ElogSubSheet getElogSubSheetEventBySubSheetRrn(Long elogSubSheetRrn) {
StringBuilder sql = getSubSheetEventSql();
sql.append(" WHERE elog_sub_sheet_rrn = ?");
return jdbcTemplate
.queryForObjectWithNull(sql.toString(), new Object[]{elogSubSheetRrn}, new ElogSubSheetMapper());
}
@Override
public List<ElogSubSheet> getElogSubSheetEventList(Long elogSheetRrn) {
StringBuilder sql = getSubSheetEventSql();
sql.append(" WHERE elog_sheet_rrn = ?");
return jdbcTemplate.query(sql.toString(), new ElogSubSheetMapper(), new Object[]{elogSheetRrn});
}
@Override
public List<ElogSubSheet> getElogSubSheetEventList(ElogSubSheet queryInfo) {
StringBuilder sql = getSubSheetEventSql();
sql.append(" WHERE 1=1");
List<Object> argList = new ArrayList<>();
if (queryInfo.getEquipmentRrn() != null && queryInfo.getEquipmentRrn().longValue() > 0) {
sql.append(" AND equipment_rrn = ?");
argList.add(queryInfo.getEquipmentRrn());
}
return jdbcTemplate.query(sql.toString(), new ElogSubSheetMapper(), argList.toArray());
}
@Override
public List<Map<String, Object>> getElogChamberSheet(String lotRrn, String eqptId) {
StringBuilder sql = new StringBuilder("SELECT ");
sql.append(" b.CHAMBER_TYPE, b.EQUIPMENT_ID, b.LOT_ID, ESS.UNIT_ID FROM ( SELECT CHAMBER_TYPE, ");
sql.append(" EQUIPMENT_ID, LOT_ID, ELOG_SHEET_RRN FROM ( SELECT ESC.CHAMBER_TYPE, ESC.EQUIPMENT_ID, ESC.LOT_ID, ");
sql.append(" ESC.ELOG_SHEET_RRN FROM ELOG_SHEET_CHAMBER ESC WHERE ESC.LOT_ID = ? AND ESC.EQUIPMENT_ID = ? ");
sql.append(" ORDER BY esc.PROCESS_END_TIME DESC ) WHERE rownum = 1 ) b LEFT JOIN ELOG_SUB_SHEET ESS ON ");
sql.append(" b.LOT_ID = ESS.LOT_ID AND b.EQUIPMENT_ID = ESS.EQUIPMENT_ID AND b.ELOG_SHEET_RRN = ESS.ELOG_SHEET_RRN ");
List args = new ArrayList();
args.add(lotRrn);
args.add(eqptId);
return jdbcTemplate.query(sql.toString(), args.toArray(),
(RowMapper<Map<String, Object>>) (rs, rowNum) -> {
HashMap<String, Object> elogSheetInfo = MapUtils.newHashMap();
elogSheetInfo.put("chamberType",rs.getString("CHAMBER_TYPE"));
elogSheetInfo.put("lotId",rs.getString("LOT_ID"));
elogSheetInfo.put("eqptId",rs.getString("EQUIPMENT_ID"));
elogSheetInfo.put("unitId",rs.getString("UNIT_ID"));
return elogSheetInfo;
});
}
private StringBuilder getElogSheetEventSql() {
StringBuilder sql = new StringBuilder("SELECT ");
sql.append("elog_sheet_rrn,equipment_id,equipment_rrn,equipment_group_id,chamber_type,lot_rrn,lot_id,");
sql.append("step_sequence,lot_type,qty,chamber_qty,batch_id,recipe_id,RECIPE_PHYSICAL_ID,hot_flag,priority,");
sql.append("carrier_id,product_id,product_version,process_id,process_version,route_id,step_id,");
sql.append("flow_seq,stage_id,reticle_group_id,reticle_id,process_location,pollution_level,customer_id,");
sql.append("workarea,process_start_user_id,process_start_time,process_end_user_id,process_end_time");
sql.append(" FROM ").append(DataBaseNames.ELOG_SHEET_EVENT);
return sql;
}
private StringBuilder getSubSheetEventSql() {
StringBuilder sql = new StringBuilder("SELECT ");
sql.append("elog_sub_sheet_rrn,elog_sheet_rrn,equipment_id,equipment_rrn,chamber_type,chamber_flow,lot_rrn,");
sql.append("lot_id,step_sequence,slot,batch_id,recipe_id,RECIPE_PHYSICAL_ID,unit_id,unit_qty,carrier_id,");
sql.append("process_start_user_id,process_start_time,process_end_user_id,process_end_time");
sql.append(" FROM ").append(DataBaseNames.ELOG_SUB_SHEET_EVENT);
return sql;
}
}