LotAutoMonitorReqDaoImpl.java
package com.mycim.server.automonitor.dao.impl;
import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.utils.beans.BeanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.server.automonitor.dao.LotAutoMonitorReqDao;
import com.mycim.valueobject.automonitor.entity.*;
import com.mycim.valueobject.bas.TransactionLog;
import com.mycim.valueobject.consts.DataBaseNames;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.stereotype.Repository;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author finatice.yang
* @date 2021/8/25
**/
@Repository
public class LotAutoMonitorReqDaoImpl implements LotAutoMonitorReqDao {
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public void deleteLotMonitorJobStore(Long lotRrn) {
StringBuilder sql = new StringBuilder(DataBaseNames.DELETE_FROM);
sql.append(DataBaseNames.AUTO_MONITOR_LOT_STORE);
sql.append(" WHERE LOT_RRN = ? ");
jdbcTemplate.update(sql.toString(), lotRrn);
}
@Override
public void insertLotMonitorJobStore(LotMonitorJobStore store) {
StringBuilder sql = new StringBuilder(DataBaseNames.INSERT_INTO);
sql.append(DataBaseNames.AUTO_MONITOR_LOT_STORE);
sql.append(" (LOT_RRN,LOT_ID, BASE_LOT_RRN,BASE_LOT_ID, QTY1, EQUIPMENT_RRN,EQUIPMENT_ID, ITEM_TYPE, ");
sql.append(" PROCESS_RRN,PROCESS_ID, PROCESS_VERSION, JOB_STATUS, ");
sql.append(" WORKFLOW_RRN, WORKFLOW_VERSION, WORKFLOW_ID, WFL_STEP, MERGE_WFL_STEP, ");
sql.append(" MONITOR_CARRIER_RRN, MONITOR_CARRIER_ID) ");
sql.append(" VALUES (:lotRrn,:lotId,:baseLotRrn,:baseLotId,:qty,:eqptRrn,:eqptId,:itemType,:processRrn,");
sql.append(" :processId,:processVersion,:jobStatus,:workflowRrn,:workflowVersion,:workflowId,");
sql.append(" :wflStep,:mergeWflStep,:monitorCarrierRrn,:monitorCarrierId)");
jdbcTemplate.update(sql.toString(), new BeanPropertySqlParameterSource(store));
}
@Override
public void insertLotMonitorJobStoreHistory(TransactionLog transactionLog, LotMonitorJobStore store) {
StringBuilder sql = new StringBuilder(DataBaseNames.INSERT_INTO);
sql.append(DataBaseNames.AUTO_MONITOR_LOT_STORE_H);
sql.append(" (TRANS_RRN,TRANS_ID,TRANS_TIME,TRANS_USER_ID,TRANS_COMMENTS,");
sql.append(" LOT_RRN, LOT_ID, BASE_LOT_RRN,BASE_LOT_ID, QTY1, EQUIPMENT_RRN,EQUIPMENT_ID, ITEM_TYPE, ");
sql.append(" PROCESS_RRN,PROCESS_ID, PROCESS_VERSION, PRODUCT_RRN,PRODUCT_ID, JOB_STATUS, ");
sql.append(" WORKFLOW_RRN, WORKFLOW_VERSION, WORKFLOW_ID, WFL_STEP, MERGE_WFL_STEP, ");
sql.append(" MONITOR_CARRIER_RRN, MONITOR_CARRIER_ID, CARRIER_RRN, CARRIER_ID) ");
sql.append(" VALUES (:transRrn,:transId,:transStartTimestamp,:transPerformedBy,:comments,");
sql.append(" :lotRrn,:lotId,:baseLotRrn,:baseLotId,:qty,:eqptRrn,:eqptId,:itemType,");
sql.append(" :processRrn,:processId,:processVersion,:productRrn,:productId,:jobStatus,");
sql.append(" :workflowRrn,:workflowVersion,:workflowId,:wflStep,:mergeWflStep,");
sql.append(" :monitorCarrierRrn,:monitorCarrierId,:carrierRrn,:carrierId)");
Map<String, Object> paramMap = BeanUtils.copyBeanToMap(store);
BeanUtils.copyBeanToMap(paramMap, transactionLog);
jdbcTemplate.update(sql.toString(), paramMap);
}
@Override
public void updateLotMonitorJobStore(LotMonitorJobStore store) {
Map<String, Object> paramMap = MapUtils.newHashMap();
StringBuilder sql = new StringBuilder(DataBaseNames.UPDATE);
sql.append(DataBaseNames.AUTO_MONITOR_LOT_STORE).append(" SET ");
StringBuilder setSql = new StringBuilder("");
if (StringUtils.isNotBlank(store.getJobStatus())) {
setSql.append(" JOB_STATUS = :jobStatus ,");
paramMap.put("jobStatus", store.getJobStatus());
}
if (StringUtils.isNotBlank(setSql)) {
sql.append(setSql.substring(0, setSql.lastIndexOf(StringUtils.COMMA_SIGN)));
}
sql.append(" WHERE LOT_RRN = :lotRrn ");
paramMap.put("lotRrn", store.getLotRrn());
jdbcTemplate.update(sql.toString(), paramMap);
}
@Override
public void insertLotMonitorStepEdcInfo(List<LotMonitorJobStepEdcInfo> stepEdcInfoList) {
StringBuilder sql = new StringBuilder(DataBaseNames.INSERT_INTO);
sql.append(DataBaseNames.AUTO_MONITOR_LOT_EDC_INFO);
sql.append(" (TRANS_RRN,LOT_RRN,LOT_ID, STEP_SEQUENCE,SEQUENCE, UNIT_RRN,UNIT_ID, ");
sql.append(" SPC_JOB_ID,SPC_JOB_NAME,DATA_VALUE,FORMULA,VIO_INFO) ");
sql.append(" VALUES (:transRrn,:lotRrn,:lotId,:lotStepSequence,:sequence,:unitRrn,:unitId,");
sql.append(" :spcJobId,:spcJobName,:dataValue,:formula,:vioInfo)");
Map<String, Object>[] batchValues = stepEdcInfoList.stream().map(step -> {
return BeanUtils.copyBeanToMap(step);
}).collect(Collectors.toList()).toArray(new Map[stepEdcInfoList.size()]);
jdbcTemplate.batchUpdate(sql.toString(), batchValues);
}
@Override
public void insertMonitorCarrierMapping(List<MonitorCarrierMapping> monitorCarrierMappings) {
StringBuffer sql = new StringBuffer(DataBaseNames.INSERT_INTO);
sql.append(DataBaseNames.AUTO_MONITOR_CARRIER_MAPPING);
sql.append(" (MONITOR_CARRIER_RRN, MONITOR_CARRIER_ID, UNIT_RRN, UNIT_ID, ");
sql.append(" POSITION, SOURCE_POSITION, LOT_RRN, LOT_ID) ");
sql.append(" VALUES (:monitorCarrierRrn,:monitorCarrierId,:unitRrn,:unitId,");
sql.append(" :position,:sourcePosition,:lotRrn,:lotId) ");
Map<String, Object>[] batchValues = monitorCarrierMappings.stream().map(mapping -> {
return BeanUtils.copyBeanToMap(mapping);
}).collect(Collectors.toList()).toArray(new Map[monitorCarrierMappings.size()]);
jdbcTemplate.batchUpdate(sql.toString(), batchValues);
}
@Override
public void deleteMonitorCarrierMappingByLot(Long lotRrn) {
StringBuffer sql = new StringBuffer(DataBaseNames.DELETE_FROM);
sql.append(DataBaseNames.AUTO_MONITOR_CARRIER_MAPPING);
sql.append(" WHERE LOT_RRN = ? ");
jdbcTemplate.update(sql.toString(), new Object[]{lotRrn});
}
@Override
public void deleteMonitorCarrierMappingByCarrier(Long monitorCarrierRrn) {
StringBuffer sql = new StringBuffer(DataBaseNames.DELETE_FROM);
sql.append(DataBaseNames.AUTO_MONITOR_CARRIER_MAPPING);
sql.append(" WHERE MONITOR_CARRIER_RRN = ? ");
jdbcTemplate.update(sql.toString(), new Object[]{monitorCarrierRrn});
}
@Override
public void insertAutoMonitorUnit(List<AutoMonitorUnitInfo> unitInfoList) {
StringBuilder sql = new StringBuilder(DataBaseNames.INSERT_INTO);
sql.append(DataBaseNames.AUTO_MONITOR_UNIT);
sql.append(" (LOT_RRN,LOT_ID,UNIT_RRN,UNIT_ID,CARRIER_RRN,CARRIER_ID,POSITION,");
sql.append(" MONITOR_CARRIER_RRN,MONITOR_CARRIER_ID,MONITOR_CARRIER_POSITION) ");
sql.append(" VALUES ");
sql.append(" (:lotRrn,:lotId,:unitRrn,:unitId,:carrierRrn,:carrierId,:position,");
sql.append(" :monitorCarrierRrn,:monitorCarrierId,:monitorCarrierPosition) ");
Map<String, Object>[] batchValues = unitInfoList.stream().map(unitInfo -> {
return BeanUtils.copyBeanToMap(unitInfo);
}).collect(Collectors.toList()).toArray(new Map[unitInfoList.size()]);
jdbcTemplate.batchUpdate(sql.toString(), batchValues);
}
}