ResistEqptMappingDAOImpl.java

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

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.time.DateUtils;
import com.mycim.server.resist.dao.ResistEqptMappingDAO;
import com.mycim.server.resist.dao.mapper.ResistEqptMappingRowMapper;
import com.mycim.valueobject.consts.DataBaseNames;
import com.mycim.valueobject.ems.Resist;
import com.mycim.valueobject.ems.ResistEqptMapping;
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.List;

/**
 * @author yanbing.chen
 * @version 6.0.0
 * @date 2019/10/31
 **/
@Repository
public class ResistEqptMappingDAOImpl implements ResistEqptMappingDAO {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public Page qryResistEqptMappingByPage(ResistEqptMapping mapping, Page page) {
        StringBuffer sql = new StringBuffer("SELECT ");
        sql.append("R.RESIST_NO, R.EQPTID, R.PRPIPE, R.UNIT, R.CREATE_BY, R.CREATE_TIME, R.MODIFY_BY, R")
           .append(".MODIFY_TIME ,R.RESIST_EQPT_BARCODE ");
        sql.append("FROM ");
        sql.append(DataBaseNames.RESIST_EQPT_MAPPING);
        sql.append(" R ");
        sql.append("WHERE 1=1 ");

        List<Object> argList = new ArrayList<>();
        if (StringUtils.isNotBlank(mapping.getResistNo())) {
            sql.append("AND R.RESIST_NO LIKE ? ");
            argList.add(mapping.getResistNo());
        }
        if (StringUtils.isNotBlank(mapping.getEqptId())) {
            sql.append("AND R.EQPTID LIKE ? ");
            argList.add(mapping.getEqptId());
        }
        if (StringUtils.isNotBlank(mapping.getPrPipe())) {
            sql.append("AND R.PRPIPE LIKE ? ");
            argList.add(mapping.getPrPipe());
        }
        if (StringUtils.isNotBlank(mapping.getUnit())) {
            sql.append("AND R.UNIT LIKE ? ");
            argList.add(mapping.getUnit());
        }

        sql.append("ORDER BY R.CREATE_TIME DESC ");

        return jdbcTemplate.queryForPage(page, sql.toString(), argList.toArray(), new ResistEqptMappingRowMapper());
    }

    @Override
    public void addResistEqptMapping(ResistEqptMapping mapping) {
        StringBuffer sql = new StringBuffer("INSERT INTO ");
        sql.append(DataBaseNames.RESIST_EQPT_MAPPING);
        sql.append(" (RESIST_NO, EQPTID, PRPIPE, UNIT, CREATE_BY, MODIFY_BY, CREATE_TIME, MODIFY_TIME, RESIST_EQPT_BARCODE) ");
        sql.append("VALUES (?, ?, ?, ?, ?, ?, sysdate, sysdate,?) ");
        jdbcTemplate.update(sql.toString(),
                            new Object[]{mapping.getResistNo(), mapping.getEqptId(), mapping.getPrPipe(),
                                    mapping.getUnit(), mapping.getCreateBy(), mapping.getCreateBy(), mapping.getResistEqptBarcode()});
    }

    @Override
    public void addResistEqptMappingH(long transRrn, int transSequence, ResistEqptMapping mapping) {
        StringBuffer sql = new StringBuffer("INSERT INTO ");
        sql.append(DataBaseNames.RESIST_EQPT_MAPPING_H);
        sql.append(" (TRANS_RRN, TRANS_SEQUENCE, RESIST_NO, EQPTID, PRPIPE, UNIT, RESIST_EQPT_BARCODE) ");
        sql.append("VALUES (?, ?, ?, ?, ?, ?, ?) ");
        jdbcTemplate.update(sql.toString(),
                            new Object[]{transRrn, transSequence, mapping.getResistNo(), mapping.getEqptId(),
                                    mapping.getPrPipe(), mapping.getUnit(), mapping.getResistEqptBarcode()});
    }

    @Override
    public void deleteResistEqptMapping(ResistEqptMapping mapping) {
        StringBuilder sql = new StringBuilder("DELETE ");
        sql.append("FROM RESIST_EQPT_MAPPING R ");
        sql.append("WHERE R.EQPTID = ? AND R.PRPIPE = ? AND R.UNIT = ? AND R.RESIST_NO = ? ");

        jdbcTemplate.update(sql.toString(),
                            new Object[]{mapping.getEqptId(), mapping.getPrPipe(), mapping.getUnit(),
                                    mapping.getResistNo()});
    }

    @Override
    public void modifyResistEqptMapping(ResistEqptMapping mapping) {
        StringBuffer sql = new StringBuffer("UPDATE ");
        sql.append("RESIST_EQPT_MAPPING SET RESIST_NO = ?, MODIFY_BY = ?, MODIFY_TIME = sysdate ");
        sql.append("WHERE EQPTID = ? AND PRPIPE = ? AND UNIT = ? ");

        jdbcTemplate.update(sql.toString(),
                            new Object[]{mapping.getResistNo(), mapping.getModifyBy(), mapping.getEqptId(),
                                    mapping.getPrPipe(), mapping.getUnit()});
    }

    @Override
    public Page qryResistEqptMappingHByPage(ResistEqptMapping mapping, Page page) {
        StringBuffer sql = new StringBuffer("SELECT ");
        sql.append("T.TRANS_ID, H.RESIST_NO, H.EQPTID, H.PRPIPE, H.UNIT, H.RESIST_EQPT_BARCODE, T.TRANS_PERFORMED_BY, T" +
                           ".TRANS_START_TIMESTAMP ");
        sql.append("FROM RESIST_EQPT_MAPPING_H H, TRANSACTION_LOG T ");
        sql.append("WHERE H.TRANS_RRN = T.TRANS_RRN ");

        List<Object> argList = new ArrayList<Object>();
        if (StringUtils.isNotBlank(mapping.getResistNo())) {
            sql.append("AND H.RESIST_NO LIKE ? ");
            argList.add(mapping.getResistNo());
        }
        if (StringUtils.isNotBlank(mapping.getEqptId())) {
            sql.append("AND H.EQPTID LIKE ? ");
            argList.add(mapping.getEqptId());
        }
        if (StringUtils.isNotBlank(mapping.getPrPipe())) {
            sql.append("AND H.PRPIPE LIKE ? ");
            argList.add(mapping.getPrPipe());
        }
        if (StringUtils.isNotBlank(mapping.getUnit())) {
            sql.append("AND H.UNIT LIKE ? ");
            argList.add(mapping.getUnit());
        }
        if (StringUtils.isNotBlank(mapping.getTransPerformedBy())) {
            sql.append("AND T.TRANS_PERFORMED_BY LIKE ? ");
            argList.add(mapping.getTransPerformedBy());
        }
        if (StringUtils.isNotBlank(mapping.getTransStartTime())) {
            sql.append(" AND T.TRANS_START_TIMESTAMP > to_timestamp (?,'" + DateUtils.DATE_FORMAT24 + "')");
            argList.add(mapping.getTransStartTime() + " 00:00:00");
        }

        if (StringUtils.isNotBlank(mapping.getTransEndTime())) {
            sql.append(" AND T.TRANS_START_TIMESTAMP <= to_timestamp (?,'" + DateUtils.DATE_FORMAT24 + "')");
            argList.add(mapping.getTransEndTime() + " 23:59:59");
        }

        sql.append("ORDER BY T.TRANS_START_TIMESTAMP DESC, H.TRANS_SEQUENCE DESC ");

        return jdbcTemplate.queryForPage(page, sql.toString(), argList.toArray(), new RowMapper<ResistEqptMapping>() {

            @Override
            public ResistEqptMapping mapRow(ResultSet rs, int rowNum) throws SQLException {
                ResistEqptMapping mapping = new ResistEqptMapping();
                mapping.setTransId(rs.getString("TRANS_ID"));
                mapping.setResistNo(rs.getString("RESIST_NO"));
                mapping.setEqptId(rs.getString("EQPTID"));
                mapping.setPrPipe(rs.getString("PRPIPE"));
                mapping.setUnit(rs.getString("UNIT"));
                mapping.setCreateBy(rs.getString("TRANS_PERFORMED_BY"));
                mapping.setCreateTime(
                        DateUtils.parse(rs.getString("TRANS_START_TIMESTAMP"), DateUtils.DATE_FORMAT4DATE));
                mapping.setResistEqptBarcode(rs.getString("RESIST_EQPT_BARCODE"));
                return mapping;
            }
        });
    }

    @Override
    public ResistEqptMapping getResistEqptMappingByResist(Resist resist) {
        StringBuilder sql = new StringBuilder(" SELECT ");
        sql.append("R.RESIST_NO, R.EQPTID, R.PRPIPE, R.UNIT, R.CREATE_BY, R.CREATE_TIME, R.MODIFY_BY, R");
        sql.append(".MODIFY_TIME ,R.RESIST_EQPT_BARCODE ");
        sql.append("FROM ");
        sql.append(DataBaseNames.RESIST_EQPT_MAPPING);
        sql.append(" R ");
        sql.append(" WHERE R.RESIST_NO = ? AND R.EQPTID = ? AND R.PRPIPE = ? AND R.UNIT = ?");
        List args = new ArrayList();
        args.add(resist.getResistNo());
        args.add(resist.getEqptId());
        args.add(resist.getPrPipe());
        args.add(resist.getUnit());
        return jdbcTemplate.queryForObject(sql.toString(), args.toArray(), new ResistEqptMappingRowMapper());

    }

}