ResistMappingDAOImpl.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.collections.MapUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.server.resist.dao.ResistMappingDAO;
import com.mycim.server.resist.dao.mapper.ResistMappingRowMapper;
import com.mycim.valueobject.ems.ResistMapping;
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/10/29
 **/
@Repository
public class ResistMappingDAOImpl implements ResistMappingDAO {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public ResistMapping getResistMappingByResistNo(String resistNo) {

        StringBuilder sb = new StringBuilder(" SELECT ");

        sb.append(" RESIST_NO,RESIST_NAME,MATERIAL_NO,LIFETIME_TYPE,DEFROST_TIME,");
        sb.append(" BUFFER_DAYS,CREATE_BY,MODIFY_BY,CREATE_TIME,MODIFY_TIME ");
        sb.append(" FROM RESIST_MAPPING ");
        sb.append("  WHERE RESIST_NO = ? ");

        return jdbcTemplate.queryForObjectWithNull(sb.toString(), new Object[]{resistNo}, new ResistMappingRowMapper());
    }

    @Override
    public Page qryResistMappingByPage(Page page, Map<String, String> argMap) {

        String resistNo = MapUtils.getString(argMap, "resistNo");
        String resistName = MapUtils.getString(argMap, "resistName");
        String materialNo = MapUtils.getString(argMap, "materialNo");

        List<String> args = new ArrayList<>();

        StringBuilder sb = new StringBuilder(" SELECT ");

        sb.append(" RESIST_NO,RESIST_NAME,MATERIAL_NO,LIFETIME_TYPE,DEFROST_TIME,");
        sb.append(" BUFFER_DAYS,CREATE_BY,MODIFY_BY,CREATE_TIME,MODIFY_TIME ");
        sb.append(" FROM RESIST_MAPPING ");
        sb.append(" WHERE 1 = 1 ");

        if (StringUtils.isNotBlank(resistNo)) {
            sb.append("  AND RESIST_NO LIKE ? ");
            args.add(StringUtils.replace(resistNo, "*", "%").toString());

        }
        if (StringUtils.isNotBlank(resistName)) {
            sb.append("  AND RESIST_NAME LIKE ? ");
            args.add(StringUtils.replace(resistName, "*", "%").toString());

        }

        if (StringUtils.isNotBlank(materialNo)) {
            sb.append(" AND MATERIAL_NO LIKE ? ");
            args.add(StringUtils.replace(materialNo, "*", "%").toString());

        }
        return jdbcTemplate.queryForPage(page, sb.toString(), args.toArray(), new ResistMappingRowMapper());
    }

    @Override
    public void addResistMapping(ResistMapping resistMapping) {
        String sql = "INSERT INTO RESIST_MAPPING (RESIST_NO, MATERIAL_NO, RESIST_NAME," + " LIFETIME_TYPE, " +
                "DEFROST_TIME,DEFROST_TIME_SEC,BUFFER_DAYS, CREATE_BY, MODIFY_BY, " + " CREATE_TIME, MODIFY_TIME)" +
                "VALUES (?,?,?, ?, ?, ?, ?, ?, ?,sysdate,sysdate)";

        jdbcTemplate.update(sql,
                            new Object[]{resistMapping.getResistNo(), resistMapping.getMaterialNo(),
                                    resistMapping.getResistName(), resistMapping.getLifeTimeType(),
                                    resistMapping.getDefrostTime(), resistMapping.getDefrosTimsec(),
                                    resistMapping.getBufferDays(), resistMapping.getCreateBy(),
                                    resistMapping.getModifyBy()});
    }

    @Override
    public void addResistMappingH(Long transRrn, Integer transSequence, String resistNo) {
        String sql = "INSERT INTO RESIST_MAPPING_H (TRANS_RRN,TRANS_SEQUENCE,RESIST_NO," + " MATERIAL_NO, " +
                "RESIST_NAME, LIFETIME_TYPE, DEFROST_TIME,DEFROST_TIME_SEC,BUFFER_DAYS, " + " CREATE_BY, MODIFY_BY, " +
                "CREATE_TIME, MODIFY_TIME)" + "SELECT ?, ?,RESIST_NO, MATERIAL_NO, RESIST_NAME, LIFETIME_TYPE, " +
                "DEFROST_TIME,DEFROST_TIME_SEC,BUFFER_DAYS, CREATE_BY, MODIFY_BY," + " CREATE_TIME, MODIFY_TIME FROM " +
                "RESIST_MAPPING WHERE RESIST_NO =? ";

        jdbcTemplate.update(sql, new Object[]{transRrn, transSequence, resistNo});
    }

    @Override
    public void addResistMappingH(ResistMapping resistMapping) {
        String sql = "INSERT INTO RESIST_MAPPING_H (TRANS_RRN,TRANS_SEQUENCE,RESIST_NO, MATERIAL_NO, RESIST_NAME," +
                " LIFETIME_TYPE, DEFROST_TIME,DEFROST_TIME_SEC,BUFFER_DAYS, CREATE_BY, MODIFY_BY, " + " CREATE_TIME, " +
                "MODIFY_TIME)VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,to_timestamp(?,'" + DateUtils.DATE_FORMAT24 +
                "'),to_timestamp(?,'" + DateUtils.DATE_FORMAT24 + "'))";

        jdbcTemplate.update(sql,
                            new Object[]{resistMapping.getTransRrn(), resistMapping.getTransSequence(),
                                    resistMapping.getResistNo(), resistMapping.getMaterialNo(),
                                    resistMapping.getResistName(), resistMapping.getLifeTimeType(),
                                    resistMapping.getDefrostTime(), resistMapping.getDefrosTimsec(),
                                    resistMapping.getBufferDays(), resistMapping.getCreateBy(),
                                    resistMapping.getModifyBy(), DateUtils.formatDate(
                                    resistMapping.getCreateTime(), DateUtils.DATE_FORMAT4DATE), DateUtils.formatDate(
                                    resistMapping.getModifyTime(), DateUtils.DATE_FORMAT4DATE)});
    }

    @Override
    public void modifyResistMapping(ResistMapping resistMapping) {
        String sql = "UPDATE RESIST_MAPPING SET" + " MATERIAL_NO = ?, RESIST_NAME = ?, LIFETIME_TYPE = ?, " +
                "DEFROST_TIME = ?," + "DEFROST_TIME_SEC = ?, BUFFER_DAYS = ?, " + " MODIFY_BY = ?, MODIFY_TIME = " +
                "sysdate WHERE RESIST_NO = ?";

        jdbcTemplate.update(sql,
                            new Object[]{resistMapping.getMaterialNo(), resistMapping.getResistName(),
                                    resistMapping.getLifeTimeType(), resistMapping.getDefrostTime(),
                                    resistMapping.getDefrosTimsec(), resistMapping.getBufferDays(),
                                    resistMapping.getModifyBy(), resistMapping.getResistNo()});
    }

    @Override
    public void deleteResistMapping(String resistNo) {
        String sql = "DELETE FROM RESIST_MAPPING WHERE RESIST_NO = ?";
        jdbcTemplate.update(sql, resistNo);
    }

    @Override
    public Page qryResistMappingHistByPage(Page page, Map<String, String> argMap) {
        String resistNo = MapUtils.getString(argMap, "resistNo");
        String resistName = MapUtils.getString(argMap, "resistName");
        String materialNo = MapUtils.getString(argMap, "materialNo");
        String transPerformedBy = MapUtils.getString(argMap, "transPerformedBy");
        String startDate = MapUtils.getString(argMap, "startDate");
        String endDate = MapUtils.getString(argMap, "endDate");

        List<String> args = new ArrayList<String>();

        StringBuilder sb = new StringBuilder(" SELECT ");

        sb.append(" RESIST_NO,RESIST_NAME,MATERIAL_NO,LIFETIME_TYPE,DEFROST_TIME,");
        sb.append(" BUFFER_DAYS,CREATE_BY,MODIFY_BY,CREATE_TIME,MODIFY_TIME, ");
        sb.append(" TR.TRANS_ID,TR.TRANS_START_TIMESTAMP,TR.TRANS_PERFORMED_BY ");
        sb.append(" FROM RESIST_MAPPING_H RPH,TRANSACTION_LOG TR ");
        sb.append(" WHERE RPH.TRANS_RRN=TR.TRANS_RRN ");

        if (StringUtils.isNotBlank(resistNo)) {
            sb.append(" AND RPH.RESIST_NO LIKE ?");
            args.add(StringUtils.replace(resistNo, "*", "%").toString());
        }

        if (StringUtils.isNotBlank(resistName)) {
            sb.append(" AND RPH.RESIST_NAME LIKE ?");
            args.add(StringUtils.replace(resistName, "*", "%").toString());

        }

        if (StringUtils.isNotBlank(materialNo)) {
            sb.append(" AND RPH.MATERIAL_NO LIKE ? ");
            args.add(StringUtils.replace(materialNo, "*", "%").toString());
        }

        if (StringUtils.isNotBlank(transPerformedBy)) {
            sb.append(" AND TR.TRANS_PERFORMED_BY LIKE ? ");
            args.add(StringUtils.replace(transPerformedBy, "*", "%").toString());

        }
        if (StringUtils.isNotBlank(startDate)) {
            sb.append(" AND TR.TRANS_START_TIMESTAMP > to_timestamp (?,'" + DateUtils.DATE_FORMAT24 + "')");
            args.add(startDate + " 00:00:00");
        }

        if (StringUtils.isNotBlank(endDate)) {
            sb.append(" AND TR.TRANS_START_TIMESTAMP <= to_timestamp (?,'" + DateUtils.DATE_FORMAT24 + "')");
            args.add(endDate + " 23:59:59");
        }

        sb.append(" ORDER BY TR.TRANS_START_TIMESTAMP DESC, RPH.TRANS_SEQUENCE DESC ");

        return jdbcTemplate.queryForPage(page, sb.toString(), args.toArray(), new RowMapper<Map>() {

            @Override
            public Map<String, String> mapRow(ResultSet rs, int rowNum) throws SQLException {
                Map<String, String> resistMappingHist = new HashMap<>();

                resistMappingHist.put("resistNo", rs.getString("RESIST_NO"));
                resistMappingHist.put("resistName", rs.getString("RESIST_NAME"));
                resistMappingHist.put("materialNo", rs.getString("MATERIAL_NO"));
                resistMappingHist.put("lifetimeType", rs.getString("LIFETIME_TYPE"));
                resistMappingHist.put("defrostTime", rs.getString("DEFROST_TIME"));
                resistMappingHist.put("bufferDays", rs.getString("BUFFER_DAYS"));
                resistMappingHist.put("transStartTimestamp", rs.getString("TRANS_START_TIMESTAMP"));
                resistMappingHist.put("transPerformedBy", rs.getString("trans_performed_by"));
                resistMappingHist.put("transId", rs.getString("TRANS_ID"));
                return resistMappingHist;
            }
        });
    }

}