EquipmentConstrainPairDAOImpl.java

package com.mycim.server.constrain.dao.impl;

import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.oid.IDGenerators;
import com.mycim.framework.oid.type.IDNames;
import com.mycim.framework.oid.type.SequenceNames;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.server.constrain.dao.EquipmentConstrainPairDAO;
import com.mycim.server.constrain.dao.mapper.EquipmentConstrainPairDetailMapper;
import com.mycim.server.constrain.dao.mapper.EquipmentConstrainPairMapper;
import com.mycim.server.constrain.dao.mapper.LotConstrainTriggerMapper;
import com.mycim.valueobject.ems.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author shijie.deng
 * @version 6.0.0
 * @date 2019/9/9
 **/
@Repository
public class EquipmentConstrainPairDAOImpl implements EquipmentConstrainPairDAO {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public long insertConstrainPair(EquipmentConstrainPair constrain) {
        Long rrn = Long.valueOf(IDGenerators.get(IDNames.SEQUENCE).generateId(SequenceNames.MODULE_SEQ_OBJECT_RRN));
        constrain.setConstrainPairRrn(rrn);

        final String sql = "INSERT INTO EQUIPMENT_CONSTRAIN_PAIR (CONSTRAIN_PAIR_RRN,FACILITY_RRN,PRODUCT_RRN," +
                "PROCESS_RRN,LOT_RRN,TYPE," + "REMARK,STATUS,VERSION,CREATE_BY," + "CREATE_TIME,MODIFY_BY," +
                "MODIFY_TIME,ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3," + "ATTRIBUTE_DATA4,ATTRIBUTE_DATA5)" +
                " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        Object[] args = {constrain.getConstrainPairRrn(), constrain.getFacilityRrn(), constrain.getProductRrn(),
                constrain.getProcessRrn(), constrain.getLotRrn(), constrain.getType(), constrain.getRemark(),
                constrain.getStatus(), constrain.getVersion(), constrain.getCreateBy(), constrain.getCreateTime(),
                constrain.getModifyBy(), constrain.getModifyTime(), constrain.getAttributeData1(),
                constrain.getAttributeData2(), constrain.getAttributeData3(), constrain.getAttributeData4(),
                constrain.getAttributeData5()};

        return jdbcTemplate.update(sql, args) > 0 ? rrn : 0L;
    }

    @Override
    public void updateConstrainPair(EquipmentConstrainPair constrain) {

        String sql = "UPDATE EQUIPMENT_CONSTRAIN_PAIR SET REMARK=?,STATUS=?,VERSION=?,MODIFY_BY=?,MODIFY_TIME=?," +
                "ATTRIBUTE_DATA1=?," + "ATTRIBUTE_DATA2=?,ATTRIBUTE_DATA3=?,ATTRIBUTE_DATA4=?,ATTRIBUTE_DATA5=? WHERE" +
                " " + "CONSTRAIN_PAIR_RRN=?";
        Object[] args = {constrain.getRemark(), constrain.getStatus(), constrain.getVersion(),
                constrain.getModifyBy(), constrain.getModifyTime(), constrain.getAttributeData1(),
                constrain.getAttributeData2(), constrain.getAttributeData3(), constrain.getAttributeData4(),
                constrain.getAttributeData5(), constrain.getConstrainPairRrn()};
        jdbcTemplate.update(sql, args);


    }

    @Override
    public EquipmentConstrainPair getConstrainPairByRrn(long constrainRrn) {
        String sql = "SELECT ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,ATTRIBUTE_DATA4," + "ATTRIBUTE_DATA5," +
                "CONSTRAIN_PAIR_RRN,CREATE_BY," + "CREATE_TIME,FACILITY_RRN,LOT_RRN,MODIFY_BY,MODIFY_TIME," +
                "PROCESS_RRN,PRODUCT_RRN," + "REMARK,STATUS,TYPE,VERSION FROM EQUIPMENT_CONSTRAIN_PAIR WHERE " +
                "CONSTRAIN_PAIR_RRN=?";
        Object[] args = {constrainRrn};
        EquipmentConstrainPair constrain = jdbcTemplate
                .queryForObjectWithNull(sql, args, new EquipmentConstrainPairMapper());
        return constrain;
    }

    @Override
    public void insertConstrainPairH(EquipmentConstrainPairHistory constrainHistory) {
        String sql = "INSERT INTO EQUIPMENT_CONSTRAIN_PAIR_H (TRANS_RRN,CONSTRAIN_RRN,FACILITY_RRN,PRODUCT_ID," +
                "PROCESS_ID," + "LOT_ID,REMARK,CREATE_BY,CREATE_TIME)" + " VALUES(?,?,?,?,?,?,?,?,?)";
        Object[] args = {constrainHistory.getTransRrn(), constrainHistory.getConstrainRrn(),
                constrainHistory.getFacilityRrn(), constrainHistory.getProductId(), constrainHistory.getProcessId(),
                constrainHistory.getLotId(), constrainHistory.getRemark(), constrainHistory.getCreateBy(),
                constrainHistory.getCreateTime()};
        jdbcTemplate.update(sql, args);
    }

    @Override
    public Long insertConstrainPairDetail(EquipmentConstrainPairDetail detail) {
        Long rrn = Long.valueOf(IDGenerators.get(IDNames.SEQUENCE).generateId(SequenceNames.MODULE_SEQ_OBJECT_RRN));
        final String sql = "INSERT INTO CONSTRAIN_PAIR_DETAIL (CONSTRAIN_DETAIL_RRN,CONSTRAIN_RRN,PRODUCT_RRN," +
                "PROCESS_RRN,ROUTE_ID," + "ROUTE_RRN,ROUTE_SEQ,OPERATION_ID," + "OPERATION_RRN,OPERATION_SEQ," +
                "RETICLEFAMILY_ID,LAYER_ID,ISBENCHMARK,PLANA,PLANB,PLANC," + "PLAND,PLANE,PLANF,PLANG,PLANH," +
                "ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,ATTRIBUTE_DATA4,ATTRIBUTE_DATA5)" + " VALUES(?,?,?," +
                "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        Object[] args = {rrn, detail.getConstrainRrn(), detail.getProductRrn(), detail.getProcessRrn(),
                detail.getRouteId(), detail.getRouteRrn(), detail.getRouteSeq(), detail.getOperationId(),
                detail.getOperationRrn(), detail.getOperationSeq(), detail.getReticlefamilyId(), detail.getLayerId(),
                detail.getIsBenchmark(), detail.getPlanA(), detail.getPlanB(), detail.getPlanC(), detail.getPlanD(),
                detail.getPlanE(), detail.getPlanF(), detail.getPlanG(), detail.getPlanH(),
                detail.getAttributeData1(), detail.getAttributeData2(), detail.getAttributeData3(),
                detail.getAttributeData4(), detail.getAttributeData5()};

        return jdbcTemplate.update(sql, args) > 0 ? rrn : 0L;
    }

    @Override
    public void updateConstrainPairDetail(EquipmentConstrainPairDetail detail) {

        String sql = "UPDATE CONSTRAIN_PAIR_DETAIL SET ISBENCHMARK=?,PLANA=?,PLANB=?,PLANC=?,PLAND=?,PLANE=?," +
                "PLANF=?,PLANG=?,PLANH=?," + "ATTRIBUTE_DATA1=?,ATTRIBUTE_DATA2=?,ATTRIBUTE_DATA3=?," +
                "ATTRIBUTE_DATA4=?," + "ATTRIBUTE_DATA5=? WHERE CONSTRAIN_DETAIL_RRN=?";
        Object[] args = {detail.getIsBenchmark(), detail.getPlanA(), detail.getPlanB(), detail.getPlanC(),
                detail.getPlanD(), detail.getPlanE(), detail.getPlanF(), detail.getPlanG(), detail.getPlanH(),
                detail.getAttributeData1(), detail.getAttributeData2(), detail.getAttributeData3(),
                detail.getAttributeData4(), detail.getAttributeData5(), detail.getConstrainDetailRrn()};
        jdbcTemplate.update(sql, args);


    }

    @Override
    public void insertConstrainPairDetailH(EquipmentConstrainPairDetailH detailhistory) {
        String sql = "INSERT INTO CONSTRAIN_PAIR_DETAIL_H (TRANS_RRN,CONSTRAIN_DETAIL_RRN,CONSTRAIN_RRN," +
                "PRODUCT_ID,PROCESS_ID,LOT_ID," + "OPERATION_DETAIL,REMARK)" + " VALUES(?,?,?,?,?,?,?,?)";
        Object[] args = {detailhistory.getTransRrn(), detailhistory.getConstrainDetailRrn(),
                detailhistory.getConstrainRrn(), detailhistory.getProductId(), detailhistory.getProcessId(),
                detailhistory.getLotId(), detailhistory.getOperationDetail(), detailhistory.getRemark()};
        jdbcTemplate.update(sql, args);
    }

    @Override
    public EquipmentConstrainPair getConstrainPairByProductAndProcess(long productRrn, long processRrn) {
        String sql = "SELECT ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,ATTRIBUTE_DATA4," + "ATTRIBUTE_DATA5," +
                "CONSTRAIN_PAIR_RRN,CREATE_BY," + "CREATE_TIME,FACILITY_RRN,LOT_RRN,MODIFY_BY,MODIFY_TIME," +
                "PROCESS_RRN,PRODUCT_RRN," + "REMARK,STATUS,TYPE,VERSION FROM EQUIPMENT_CONSTRAIN_PAIR WHERE  " +
                "PRODUCT_RRN=? AND " + "PROCESS_RRN=?";
        Object[] args = {productRrn, processRrn};
        EquipmentConstrainPair equipmentConstrainPair = jdbcTemplate
                .queryForObjectWithNull(sql, args, new EquipmentConstrainPairMapper());
        return equipmentConstrainPair;
    }

    @Override
    public EquipmentConstrainPair getConstrainPairByLot(long lotRrn) {

        String sql = "SELECT ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,ATTRIBUTE_DATA4," + "ATTRIBUTE_DATA5," +
                "CONSTRAIN_PAIR_RRN,CREATE_BY," + "CREATE_TIME,FACILITY_RRN,LOT_RRN,MODIFY_BY,MODIFY_TIME," +
                "PROCESS_RRN,PRODUCT_RRN," + "REMARK,STATUS,TYPE,VERSION FROM EQUIPMENT_CONSTRAIN_PAIR WHERE LOT_RRN=?";
        Object[] args = {lotRrn};
        EquipmentConstrainPair constrainPair = jdbcTemplate
                .queryForObjectWithNull(sql, args, new EquipmentConstrainPairMapper());
        return constrainPair;

    }

    @Override
    public List<EquipmentConstrainPairDetail> getConstrainPairDetailsByConstrainRrn(long constrainRrn) {
        String sql = "SELECT ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,ATTRIBUTE_DATA4," + "ATTRIBUTE_DATA5," +
                "CONSTRAIN_DETAIL_RRN,CONSTRAIN_RRN,ISBENCHMARK,LAYER_ID," + "OPERATION_ID,OPERATION_RRN," +
                "OPERATION_SEQ,PLANA,PLANB,PLANC,PLAND,PLANE,PLANF,PLANG," + "PLANH,PROCESS_RRN,PRODUCT_RRN," +
                "RETICLEFAMILY_ID,ROUTE_ID,ROUTE_RRN,ROUTE_SEQ FROM " + "CONSTRAIN_PAIR_DETAIL WHERE CONSTRAIN_RRN=?";

        List<EquipmentConstrainPairDetail> details = jdbcTemplate
                .query(sql, new EquipmentConstrainPairDetailMapper(), constrainRrn);
        return details;
    }

    @Override
    public void insertLotTrigger(LotConstrainTrigger trigger) {

        String sql = "INSERT INTO LOT_CONSTRAIN_TRIGGER (TRIGGER_RRN,LOT_ID,LOT_RRN,TRIGGER_ROUTE_ID," +
                "TRIGGER_ROUTE_SEQ," + "TRIGGER_OPERATION_ID,TRIGGER_OPERATION_SEQ,CONSTRAIN_RRN,PLAN,TRIGGER_TIME," +
                "STEP_SEQ)" + " VALUES(?,?,?,?,?,?,?,?,?,?,?)";
        Object[] args = {trigger.getTriggerRrn(), trigger.getLotId(), trigger.getLotRrn(),
                trigger.getTriggerRouteId(), trigger.getTriggerRouteSeq(), trigger.getTriggerOperationId(),
                trigger.getTriggerOperationSeq(), trigger.getConstrainRrn(), trigger.getPlan(), new java.sql.Date(
                trigger.getTriggerTime().getTime()), trigger.getStepSeq()};
        jdbcTemplate.update(sql, args);

    }

    @Override
    public EquipmentConstrainPairDetail getConstrainPairDetailByRunInfo(long constrainRrn, long routeRrn,
                                                                        long operationRrn, String routeSeq,
                                                                        String operationSeq) {
        String sql = "SELECT ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,ATTRIBUTE_DATA4," + "ATTRIBUTE_DATA5," +
                "CONSTRAIN_DETAIL_RRN,CONSTRAIN_RRN,ISBENCHMARK,LAYER_ID," + "OPERATION_ID,OPERATION_RRN," +
                "OPERATION_SEQ,PLANA,PLANB,PLANC,PLAND,PLANE,PLANF,PLANG," + "PLANH,PROCESS_RRN,PRODUCT_RRN," +
                "RETICLEFAMILY_ID,ROUTE_ID,ROUTE_RRN,ROUTE_SEQ from " + "CONSTRAIN_PAIR_DETAIL where CONSTRAIN_RRN=? " +
                "and ROUTE_RRN=? and OPERATION_RRN=? and" + " OPERATION_SEQ=?";
        Object[] args;
        if (StringUtils.isBlank(routeSeq)) {
            sql = sql + " and ROUTE_SEQ is null";
            args = new Object[]{constrainRrn, routeRrn, operationRrn, operationSeq};
        } else {
            sql = sql + " and ROUTE_SEQ = ?";
            args = new Object[]{constrainRrn, routeRrn, operationRrn, operationSeq, routeSeq};
        }
        EquipmentConstrainPairDetail detail = jdbcTemplate
                .queryForObjectWithNull(sql, args, new EquipmentConstrainPairDetailMapper());
        return detail;

    }

    @Override
    public LotConstrainTrigger getLotNewTrigger(long lotRrn, long constrainPairRrn) {
        String sql = "SELECT CONSTRAIN_RRN,LOT_ID,LOT_RRN,PLAN,STEP_SEQ,TRIGGER_OPERATION_ID," +
                "TRIGGER_OPERATION_SEQ,TRIGGER_ROUTE_ID,TRIGGER_ROUTE_SEQ,TRIGGER_RRN,TRIGGER_TIME " + "FROM " +
                "LOT_CONSTRAIN_TRIGGER WHERE STEP_SEQ=(SELECT MAX(STEP_SEQ) FROM " + "LOT_CONSTRAIN_TRIGGER WHERE " +
                "LOT_RRN=? AND CONSTRAIN_RRN=?)" + " AND LOT_RRN=? AND CONSTRAIN_RRN=?";
        Object[] args = {lotRrn, constrainPairRrn, lotRrn, constrainPairRrn};
        LotConstrainTrigger trigger = jdbcTemplate.queryForObjectWithNull(sql, args, new LotConstrainTriggerMapper());
        return trigger;
    }

    @Override
    public EquipmentConstrainPairDetail getBenchMarkByConstrainRrn(long constrainRrn) {
        String sql = "SELECT ATTRIBUTE_DATA1,ATTRIBUTE_DATA2,ATTRIBUTE_DATA3,ATTRIBUTE_DATA4," + "ATTRIBUTE_DATA5," +
                "CONSTRAIN_DETAIL_RRN,CONSTRAIN_RRN,ISBENCHMARK,LAYER_ID," + "OPERATION_ID,OPERATION_RRN," +
                "OPERATION_SEQ,PLANA,PLANB,PLANC,PLAND,PLANE,PLANF,PLANG," + "PLANH,PROCESS_RRN,PRODUCT_RRN," +
                "RETICLEFAMILY_ID,ROUTE_ID,ROUTE_RRN,ROUTE_SEQ FROM " + "CONSTRAIN_PAIR_DETAIL WHERE CONSTRAIN_RRN=? " +
                "AND ISBENCHMARK='true'";
        Object[] args = {constrainRrn};
        EquipmentConstrainPairDetail detail = jdbcTemplate
                .queryForObjectWithNull(sql, args, new EquipmentConstrainPairDetailMapper());
        return detail;
    }

    @Override
    public void deleteLotConstrainTrigger(Long triggerRrn) {
        String sql = "delete from lot_constrain_trigger where trigger_rrn = ?";
        jdbcTemplate.update(sql, new Object[]{triggerRrn});
    }

}