EquipmentChartDAOImpl.java
package com.mycim.server.edcchart.dao.impl;
import com.fa.sesa.threadlocal.LocalContext;
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.MapUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.server.edcchart.dao.EquipmentChartDAO;
import com.mycim.server.edcchart.dao.mapper.EquipmentChartInfoHistoryRowMapper;
import com.mycim.server.edcchart.dao.mapper.EquipmentChartInfoRowMapper;
import com.mycim.valueobject.edcspc.EquipmentChartInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author yanbing.chen
* @version 6.0.0
* @date 2019/12/13
**/
@Repository
public class EquipmentChartDAOImpl implements EquipmentChartDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public Page getEquipmentChartInfoPage(Page page, Map<String, Object> condition) {
long facilityRrn = LocalContext.getFacilityRrn();
StringBuilder sql = new StringBuilder("SELECT ");
sql.append(" EQUIPMENT_RRN, CHART_ID, FACILITY_RRN, EQUIPMENT_ID, CHART_NAME, ");
sql.append(" AREA_ID, DERIVE_CHART_NAME, USER_NAME, RECIPE_LIST, PROD_LIST, TIME_INTERVAL, ");
sql.append(" WARNING_TIME, FORMULA, LAST_UPLOAD_TIMESTAMP, EXPIRED_TIMESTAMP, MAIL_SEND_TIMESTAMP ");
sql.append(" FROM EQUIPMENT_CHART_INFO ");
sql.append(" WHERE FACILITY_RRN = ? ");
List<Object> args = new ArrayList<>();
args.add(facilityRrn);
if (condition != null) {
long longTemp = MapUtils.getLongValue(condition, "equipmentRrn");
if (longTemp > 0) {
sql.append(" AND EQUIPMENT_RRN = ? ");
args.add(longTemp);
}
String stringTemp = MapUtils.getString(condition, "equipmentId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND EQUIPMENT_ID LIKE ? ");
args.add(StringUtils.trimToUpperCase(stringTemp.replace("*", "%")));
}
stringTemp = MapUtils.getString(condition, "chartName");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND CHART_NAME = ? ");
args.add(stringTemp.replace("*", "%"));
}
stringTemp = MapUtils.getString(condition, "areaId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND AREA_ID = ? ");
args.add(stringTemp.replace("*", "%"));
}
}
sql.append(" ORDER BY EQUIPMENT_ID, CHART_NAME, AREA_ID ");
return jdbcTemplate.queryForPage(page, sql.toString(), args.toArray(), new RowMapper<Map<String, Object>>() {
@Override
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
Map<String, Object> map = new HashMap<>();
map.put("equipmentRrn", rs.getLong("EQUIPMENT_RRN"));
map.put("chartId", rs.getString("CHART_ID"));
map.put("equipmentId", rs.getString("EQUIPMENT_ID"));
map.put("chartName", rs.getString("CHART_NAME"));
map.put("areaId", rs.getString("AREA_ID"));
map.put("deriveChartName", StringUtils.defaultString(rs.getString("DERIVE_CHART_NAME")));
map.put("userName", rs.getString("USER_NAME"));
map.put("recipeList", StringUtils.defaultString(rs.getString("RECIPE_LIST")));
map.put("prodList", StringUtils.defaultString(rs.getString("PROD_LIST")));
map.put("timeInterval", rs.getFloat("TIME_INTERVAL"));
map.put("warningTime", rs.getFloat("WARNING_TIME"));
map.put("formula", StringUtils.defaultString(rs.getString("FORMULA")));
if (rs.getTimestamp("LAST_UPLOAD_TIMESTAMP") != null) {
map.put("lastUploadTimestamp", DateUtils.formatDate(rs.getTimestamp("LAST_UPLOAD_TIMESTAMP")));
} else {
map.put("lastUploadTimestamp", "");
}
if (rs.getTimestamp("EXPIRED_TIMESTAMP") != null) {
map.put("expiredTimestamp", DateUtils.formatDate(rs.getTimestamp("EXPIRED_TIMESTAMP")));
} else {
map.put("expiredTimestamp", "");
}
return map;
}
});
}
@Override
public Page getEquipmentChartInfoHistoryPage(Page page, Map<String, Object> condition) {
long facilityRrn = LocalContext.getFacilityRrn();
StringBuilder sql = new StringBuilder("SELECT ");
sql.append(" tl.TRANS_RRN, tl.TRANS_ID, tl.TRANS_START_TIMESTAMP, tl.TRANS_END_TIMESTAMP, tl" +
".TRANS_PERFORMED_BY, tl.COMMENTS, ");
sql.append(
" eci.TRANS_SEQUENCE, eci.EQUIPMENT_RRN, eci.CHART_ID, eci.FACILITY_RRN, eci.EQUIPMENT_ID, " + "eci" +
".CHART_NAME, ");
sql.append(" eci.AREA_ID, eci.DERIVE_CHART_NAME, eci.USER_NAME, eci.RECIPE_LIST, eci.PROD_LIST, ");
sql.append(" eci.TIME_INTERVAL, eci.WARNING_TIME, eci.FORMULA, eci.LAST_UPLOAD_TIMESTAMP, " + " eci" +
".EXPIRED_TIMESTAMP, eci.MAIL_SEND_TIMESTAMP ");
sql.append(" FROM EQUIPMENT_CHART_INFO_H eci, TRANSACTION_LOG tl ");
sql.append(" WHERE eci.TRANS_RRN = tl.TRANS_RRN AND eci.FACILITY_RRN = ? ");
List<Object> args = new ArrayList<>();
args.add(facilityRrn);
if (condition != null) {
long longTemp = MapUtils.getLongValue(condition, "equipmentRrn");
if (longTemp > 0) {
sql.append(" AND eci.EQUIPMENT_RRN = ? ");
args.add(longTemp);
}
String stringTemp = MapUtils.getString(condition, "equipmentId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND eci.EQUIPMENT_ID LIKE ? ");
args.add(StringUtils.trimToUpperCase(stringTemp.replace("*", "%")));
}
stringTemp = MapUtils.getString(condition, "chartName");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND eci.CHART_NAME = ? ");
args.add(stringTemp);
}
stringTemp = MapUtils.getString(condition, "areaId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND eci.AREA_ID = ? ");
args.add(stringTemp);
}
}
sql.append(" ORDER BY tl.TRANS_START_TIMESTAMP DESC, eci.TRANS_SEQUENCE DESC ");
return jdbcTemplate
.queryForPage(page, sql.toString(), args.toArray(), new EquipmentChartInfoHistoryRowMapper());
}
@Override
public List<Map<String, Object>> getEquipmentChartInfoHistoryList(Map<String, Object> condition) {
long facilityRrn = LocalContext.getFacilityRrn();
StringBuilder sql = new StringBuilder("SELECT ");
sql.append(" tl.TRANS_RRN, tl.TRANS_ID, tl.TRANS_START_TIMESTAMP, tl.TRANS_END_TIMESTAMP, tl" +
".TRANS_PERFORMED_BY, tl.COMMENTS, ");
sql.append(
" eci.TRANS_SEQUENCE, eci.EQUIPMENT_RRN, eci.CHART_ID, eci.FACILITY_RRN, eci.EQUIPMENT_ID, " + "eci" +
".CHART_NAME, ");
sql.append(" eci.AREA_ID, eci.DERIVE_CHART_NAME, eci.USER_NAME, eci.RECIPE_LIST, eci.PROD_LIST, ");
sql.append(" eci.TIME_INTERVAL, eci.WARNING_TIME, eci.FORMULA, eci.LAST_UPLOAD_TIMESTAMP, " + "eci" +
".EXPIRED_TIMESTAMP, eci.MAIL_SEND_TIMESTAMP ");
sql.append(" FROM EQUIPMENT_CHART_INFO_H eci, TRANSACTION_LOG tl ");
sql.append(" WHERE eci.TRANS_RRN = tl.TRANS_RRN AND eci.FACILITY_RRN = ? ");
List<Object> args = new ArrayList<>();
args.add(facilityRrn);
if (condition != null) {
long longTemp = MapUtils.getLongValue(condition, "equipmentRrn");
if (longTemp > 0) {
sql.append(" AND eci.EQUIPMENT_RRN = ? ");
args.add(longTemp);
}
String stringTemp = MapUtils.getString(condition, "equipmentId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND eci.EQUIPMENT_ID = ? ");
args.add(stringTemp);
}
stringTemp = MapUtils.getString(condition, "chartName");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND eci.CHART_NAME = ? ");
args.add(stringTemp);
}
stringTemp = MapUtils.getString(condition, "areaId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND eci.AREA_ID = ? ");
args.add(stringTemp);
}
}
sql.append(" ORDER BY tl.TRANS_START_TIMESTAMP DESC, eci.TRANS_SEQUENCE DESC ");
return jdbcTemplate.query(sql.toString(), args.toArray(), new EquipmentChartInfoHistoryRowMapper());
}
@Override
public EquipmentChartInfo getEquipmentChartInfo(Long equipmentRrn, String chartId) {
StringBuilder sql = new StringBuilder("SELECT ");
sql.append(" EQUIPMENT_RRN, CHART_ID, FACILITY_RRN, EQUIPMENT_ID, CHART_NAME, AREA_ID, ");
sql.append(" DERIVE_CHART_NAME, USER_NAME, RECIPE_LIST, PROD_LIST, TIME_INTERVAL,");
sql.append(" WARNING_TIME, FORMULA, LAST_UPLOAD_TIMESTAMP, EXPIRED_TIMESTAMP, MAIL_SEND_TIMESTAMP ");
sql.append(" FROM EQUIPMENT_CHART_INFO ");
sql.append(" WHERE EQUIPMENT_RRN = ? AND CHART_ID = ? ");
return jdbcTemplate.queryForObjectWithNull(sql.toString(), new Object[]{equipmentRrn, chartId},
new EquipmentChartInfoRowMapper());
}
@Override
public void updateEquipmentChartInfo(EquipmentChartInfo equipmentChartInfo) {
StringBuilder sql = new StringBuilder("UPDATE ");
sql.append(" EQUIPMENT_CHART_INFO ");
sql.append(" SET LAST_UPLOAD_TIMESTAMP = ?, EXPIRED_TIMESTAMP = ?, MAIL_SEND_TIMESTAMP = ? ");
sql.append(" WHERE EQUIPMENT_RRN = ? AND CHART_ID = ? ");
jdbcTemplate.update(sql.toString(), equipmentChartInfo.getLastUploadTimestamp(),
equipmentChartInfo.getExpiredTimestamp(), equipmentChartInfo.getMailSendTimestamp(),
equipmentChartInfo.getEquipmentRrn(), equipmentChartInfo.getChartId());
}
@Override
public void insertEquipmentChartInfoHistoryByBatch(Long transRrn, List<EquipmentChartInfo> equipmentChartInfos) {
StringBuilder sql = new StringBuilder("INSERT INTO ");
sql.append(" EQUIPMENT_CHART_INFO_H ");
sql.append(" (TRANS_RRN, TRANS_SEQUENCE, EQUIPMENT_RRN, CHART_ID, ");
sql.append(" FACILITY_RRN, EQUIPMENT_ID, CHART_NAME, AREA_ID, DERIVE_CHART_NAME, ");
sql.append(" USER_NAME, RECIPE_LIST, PROD_LIST, TIME_INTERVAL, WARNING_TIME, ");
sql.append(" FORMULA, LAST_UPLOAD_TIMESTAMP, EXPIRED_TIMESTAMP, MAIL_SEND_TIMESTAMP) ");
sql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
List<Object[]> args = new ArrayList<>();
int seq = 1;
for (EquipmentChartInfo equipmentChartInfo : equipmentChartInfos) {
args.add(
new Object[]{transRrn, seq++, equipmentChartInfo.getEquipmentRrn(),
equipmentChartInfo.getChartId(), equipmentChartInfo.getFacilityRrn(),
equipmentChartInfo.getEquipmentId(), equipmentChartInfo.getChartName(),
equipmentChartInfo.getAreaId(), equipmentChartInfo.getDeriveChartName(),
equipmentChartInfo.getUserName(), equipmentChartInfo.getRecipeList(),
equipmentChartInfo.getProdList(), equipmentChartInfo.getTimeInterval(),
equipmentChartInfo.getWarningTime(), equipmentChartInfo.getFormula(),
equipmentChartInfo.getLastUploadTimestamp(), equipmentChartInfo.getExpiredTimestamp(),
equipmentChartInfo.getMailSendTimestamp()});
}
jdbcTemplate.batchUpdate(sql.toString(), args);
}
@Override
public void insertEquipmentChartInfoByBatch(List<EquipmentChartInfo> equipmentChartInfos) {
StringBuilder sql = new StringBuilder("INSERT INTO ");
sql.append(" EQUIPMENT_CHART_INFO ");
sql.append(" (EQUIPMENT_RRN, CHART_ID, FACILITY_RRN, EQUIPMENT_ID, CHART_NAME, ");
sql.append(" AREA_ID, DERIVE_CHART_NAME, USER_NAME, RECIPE_LIST, PROD_LIST, ");
sql.append(" TIME_INTERVAL, WARNING_TIME, FORMULA, LAST_UPLOAD_TIMESTAMP, EXPIRED_TIMESTAMP) ");
sql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
List<Object[]> args = new ArrayList<>();
for (EquipmentChartInfo equipmentChartInfo : equipmentChartInfos) {
args.add(
new Object[]{equipmentChartInfo.getEquipmentRrn(), equipmentChartInfo.getChartId(),
equipmentChartInfo.getFacilityRrn(), equipmentChartInfo.getEquipmentId(),
equipmentChartInfo.getChartName(), equipmentChartInfo.getAreaId(),
equipmentChartInfo.getDeriveChartName(), equipmentChartInfo.getUserName(),
equipmentChartInfo.getRecipeList(), equipmentChartInfo.getProdList(),
equipmentChartInfo.getTimeInterval(), equipmentChartInfo.getWarningTime(),
equipmentChartInfo.getFormula(), equipmentChartInfo.getLastUploadTimestamp(),
equipmentChartInfo.getExpiredTimestamp()});
}
jdbcTemplate.batchUpdate(sql.toString(), args);
}
@Override
public void updateEquipmentChartInfoByBatch(List<EquipmentChartInfo> equipmentChartInfos) {
StringBuilder sql = new StringBuilder("UPDATE ");
sql.append(" EQUIPMENT_CHART_INFO ");
sql.append(" SET CHART_NAME = ?, AREA_ID = ?, DERIVE_CHART_NAME = ?, USER_NAME = ?, ");
sql.append(" RECIPE_LIST = ?, PROD_LIST = ?, TIME_INTERVAL = ?, WARNING_TIME = ?, FORMULA = ?, ");
sql.append(" LAST_UPLOAD_TIMESTAMP = ?, EXPIRED_TIMESTAMP = ?, MAIL_SEND_TIMESTAMP = ? ");
sql.append(" WHERE EQUIPMENT_RRN = ? AND CHART_ID = ? ");
List<Object[]> args = new ArrayList<>();
for (EquipmentChartInfo equipmentChartInfo : equipmentChartInfos) {
args.add(
new Object[]{equipmentChartInfo.getChartName(), equipmentChartInfo.getAreaId(),
equipmentChartInfo.getDeriveChartName(), equipmentChartInfo.getUserName(),
equipmentChartInfo.getRecipeList(), equipmentChartInfo.getProdList(),
equipmentChartInfo.getTimeInterval(), equipmentChartInfo.getWarningTime(),
equipmentChartInfo.getFormula(), equipmentChartInfo.getLastUploadTimestamp(),
equipmentChartInfo.getExpiredTimestamp(), equipmentChartInfo.getMailSendTimestamp(),
equipmentChartInfo.getEquipmentRrn(), equipmentChartInfo.getChartId()});
}
jdbcTemplate.batchUpdate(sql.toString(), args);
}
@Override
public int[] deleteEquipmentChartInfoByBatch(List<EquipmentChartInfo> equipmentChartInfos) {
StringBuilder sql = new StringBuilder("DELETE ");
sql.append(" FROM EQUIPMENT_CHART_INFO ");
sql.append(" WHERE EQUIPMENT_RRN = ? AND CHART_ID = ? ");
List<Object[]> args = new ArrayList<>();
for (EquipmentChartInfo equipmentChartInfo : equipmentChartInfos) {
args.add(new Object[]{equipmentChartInfo.getEquipmentRrn(), equipmentChartInfo.getChartId()});
}
return jdbcTemplate.batchUpdate(sql.toString(), args);
}
@Override
public List<EquipmentChartInfo> getEquipAndChamberChart(long instanceRrn) {
String sql = "SELECT * FROM EQUIPMENT_CHART_INFO WHERE EQUIPMENT_RRN IN" + " (SELECT EN.ENTITY_RRN FROM " +
"ENTITY EN WHERE EN.ENTITY_RRN=?" + " UNION SELECT CEN.ENTITY_RRN FROM ENTITY CEN WHERE CEN" +
".PARENT_ENTITY_RRN=?)";
return jdbcTemplate
.query(sql.toString(), new Object[]{instanceRrn, instanceRrn}, new EquipmentChartInfoRowMapper());
}
@Override
public List<EquipmentChartInfo> getEquipChart(long instanceRrn) {
String sql = "SELECT * FROM EQUIPMENT_CHART_INFO WHERE EQUIPMENT_RRN = ?";
return jdbcTemplate.query(sql.toString(), new Object[]{instanceRrn}, new EquipmentChartInfoRowMapper());
}
@Override
public List<EquipmentChartInfo> getEquipmentChartInfoList(Map condition) {
StringBuilder sql = new StringBuilder("SELECT ");
sql.append(" EQUIPMENT_RRN, CHART_ID, FACILITY_RRN, EQUIPMENT_ID, CHART_NAME, ");
sql.append(" AREA_ID, DERIVE_CHART_NAME, USER_NAME, RECIPE_LIST, PROD_LIST,TIME_INTERVAL, ");
sql.append(" WARNING_TIME, FORMULA, LAST_UPLOAD_TIMESTAMP, EXPIRED_TIMESTAMP, MAIL_SEND_TIMESTAMP ");
sql.append(" FROM EQUIPMENT_CHART_INFO ");
sql.append(" WHERE 1 = 1 ");
List<Object> args = new ArrayList<>();
if (condition != null) {
long longTemp = MapUtils.getLongValue(condition, "equipmentRrn");
if (longTemp > 0) {
sql.append(" AND EQUIPMENT_RRN = ? ");
args.add(longTemp);
}
String stringTemp = MapUtils.getString(condition, "equipmentId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND EQUIPMENT_ID LIKE ? ");
args.add(StringUtils.trimToUpperCase(stringTemp.replace("*", "%")));
}
stringTemp = MapUtils.getString(condition, "chartName");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND CHART_NAME = ? ");
args.add(stringTemp.replace("*", "%"));
}
stringTemp = MapUtils.getString(condition, "areaId");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND AREA_ID = ? ");
args.add(stringTemp.replace("*", "%"));
}
stringTemp = MapUtils.getString(condition, "mailSendFlag");
if (StringUtils.isNotEmpty(stringTemp)) {
sql.append(" AND MAIL_SEND_TIMESTAMP IS NULL ");
}
}
sql.append(" ORDER BY EQUIPMENT_ID, CHART_NAME, AREA_ID ");
return jdbcTemplate.query(sql.toString(), args.toArray(), new EquipmentChartInfoRowMapper());
}
}