CheckListItemDaoImpl.java

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

import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.utils.MiscUtils;
import com.mycim.server.pms.dao.CheckListItemDao;
import com.mycim.valueobject.bas.TransactionLog;
import com.mycim.valueobject.consts.DataBaseNames;
import com.mycim.valueobject.ems.ChecklistItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * CheckListItemDaoImpl
 *
 * @author pinyan.song
 * @version 6.0.0
 * @date 2019-11-5
 **/
@Repository
public class CheckListItemDaoImpl implements CheckListItemDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public List<ChecklistItem> getChecklistItems(long checklistRrn) {
        String sql = " SELECT checklist_rrn, checklist_version, checklist_sequence," + " checklist_item_id, " +
                "checklist_item_desc, bor_rrn," + " data_type, upper_limit, lower_limit, parameter_set_rrn, unit, bool" + " FROM " +
                DataBaseNames.CHECKLIST_ITEM + " WHERE " + " checklist_rrn = " + checklistRrn + " order by " +
                "checklist_sequence ";

        return jdbcTemplate.query(sql, new RowMapper<ChecklistItem>() {
            @Override
            public ChecklistItem mapRow(ResultSet rs, int rowNum) throws SQLException {
                ChecklistItem checklistItem = new ChecklistItem();
                checklistItem.setChecklistRrn(rs.getLong("checklist_rrn"));
                checklistItem.setChecklistVersion(rs.getInt("checklist_version"));
                checklistItem.setChecklistSequence(rs.getInt("checklist_sequence"));
                checklistItem.setChecklistItemId(rs.getString("checklist_item_id"));
                checklistItem.setChecklistItemDesc(rs.getString("checklist_item_desc"));
                checklistItem.setBorRrn(rs.getLong("bor_rrn"));
                checklistItem.setDataType(rs.getString("data_type"));
                checklistItem.setUpperLimit(rs.getDouble("upper_limit"));
                checklistItem.setLowerLimit(rs.getDouble("lower_limit"));
                checklistItem.setParameterSetRrn(rs.getLong("parameter_set_rrn"));
                checklistItem.setUnit(rs.getString("unit"));
                checklistItem.setBool(rs.getString("bool"));
                return checklistItem;
            }
        });
    }

    @Override
    public List<ChecklistItem> getChecklistItems(long entityRrn, long checklistRrn) {
        String sql = " SELECT checklist_rrn, checklist_version, checklist_sequence," + " checklist_item_id, " +
                "checklist_item_desc, bor_rrn," + " data_type, upper_limit, lower_limit, parameter_set_rrn, unit, bool" + " FROM " +
                DataBaseNames.CHECKLIST_ITEM + " WHERE " + " checklist_rrn = " + checklistRrn + " and ENTITY_RRN = " +
                entityRrn + " order by checklist_sequence ";

        return jdbcTemplate.query(sql, new RowMapper<ChecklistItem>() {
            @Override
            public ChecklistItem mapRow(ResultSet rs, int rowNum) throws SQLException {
                ChecklistItem checklistItem = new ChecklistItem();
                checklistItem.setChecklistRrn(rs.getLong("checklist_rrn"));
                checklistItem.setChecklistVersion(rs.getInt("checklist_version"));
                checklistItem.setChecklistSequence(rs.getInt("checklist_sequence"));
                checklistItem.setChecklistItemId(rs.getString("checklist_item_id"));
                checklistItem.setChecklistItemDesc(rs.getString("checklist_item_desc"));
                checklistItem.setBorRrn(rs.getLong("bor_rrn"));
                checklistItem.setDataType(rs.getString("data_type"));
                checklistItem.setUpperLimit(rs.getDouble("upper_limit"));
                checklistItem.setLowerLimit(rs.getDouble("lower_limit"));
                checklistItem.setParameterSetRrn(rs.getLong("parameter_set_rrn"));
                checklistItem.setUnit(rs.getString("unit"));
                checklistItem.setBool(rs.getString("bool"));
                return checklistItem;
            }
        });
    }

    @Override
    public void insertChecklistItem(ChecklistItem checklistItem, TransactionLog transactionLog) {
        Object[] obj = {checklistItem.getChecklistItemId(), checklistItem.getChecklistItemDesc(),
                checklistItem.getBorRrn(), checklistItem.getDataType(), checklistItem.getUpperLimit(),
                checklistItem.getLowerLimit(), checklistItem.getParameterSetRrn(), checklistItem.getUnit(), checklistItem.getBool()};
        String sql = "INSERT INTO " + DataBaseNames.CHECKLIST_ITEM + " (checklist_rrn, checklist_version, " +
                "checklist_sequence," + " checklist_item_id, checklist_item_desc, bor_rrn," + " data_type, " +
                "upper_limit, lower_limit, parameter_set_rrn, unit, bool)" + " SELECT " + checklistItem.getChecklistRrn() + "," +
                checklistItem.getChecklistVersion() + "," + " NVL(MAX(checklist_sequence),0)+1," +
                MiscUtils.parseSQL(obj) + " from " + DataBaseNames.CHECKLIST_ITEM + " WHERE " + " checklist_rrn = " +
                checklistItem.getChecklistRrn() + " and " + " checklist_version = " +
                checklistItem.getChecklistVersion();

        String sqlh = "INSERT INTO " + DataBaseNames.CHECKLIST_ITEM_H + " (trans_rrn,checklist_rrn, " +
                "checklist_version, checklist_sequence," + " checklist_item_id, checklist_item_desc, bor_rrn," + " " +
                "data_type, upper_limit, lower_limit, parameter_set_rrn, unit, bool)" + " VALUES " + "(" +
                transactionLog.getTransRrn() + "," + checklistItem.getChecklistRrn() + "," +
                checklistItem.getChecklistVersion() + "," + checklistItem.getChecklistSequence() + "," +
                MiscUtils.parseSQL(obj) + ")";

        jdbcTemplate.execute(sql);
        jdbcTemplate.execute(sqlh);
    }

    @Override
    public void deleteChecklistItem(ChecklistItem checklistItem, TransactionLog transactionLog) {
        String sql = " DELETE FROM " + DataBaseNames.CHECKLIST_ITEM + " WHERE " + " checklist_rrn = " +
                checklistItem.getChecklistRrn() + " and " + " checklist_version = " +
                checklistItem.getChecklistVersion() + " and " + " checklist_sequence = " +
                checklistItem.getChecklistSequence();
        String sqlupdatesequence =
                " UPDATE " + DataBaseNames.CHECKLIST_ITEM + " SET checklist_sequence = " + "checklist_sequence - 1" +
                        " WHERE " + " checklist_rrn = " + checklistItem.getChecklistRrn() + " and " +
                        " checklist_version = " + checklistItem.getChecklistVersion() + " and " +
                        " checklist_sequence > " + checklistItem.getChecklistSequence();
        String sqlh = "INSERT INTO " + DataBaseNames.CHECKLIST_ITEM_H + "(trans_rrn, checklist_rrn, " +
                "checklist_version, checklist_sequence," + " checklist_item_id, checklist_item_desc, bor_rrn," + " " +
                "data_type, upper_limit, lower_limit, parameter_set_rrn, unit, bool)" + " SELECT " + transactionLog.getTransRrn() +
                ", checklist_rrn, checklist_version, checklist_sequence," +
                " checklist_item_id, checklist_item_desc, bor_rrn," +
                " data_type, upper_limit, lower_limit, parameter_set_rrn, unit, bool" + " FROM " + DataBaseNames.CHECKLIST_ITEM +
                " WHERE " + " checklist_rrn = " + checklistItem.getChecklistRrn() + " and " + " checklist_version = " +
                checklistItem.getChecklistVersion() + " and" + " checklist_sequence = " +
                checklistItem.getChecklistSequence();


        jdbcTemplate.execute(sqlh);
        jdbcTemplate.execute(sql);
        jdbcTemplate.execute(sqlupdatesequence);
    }

    @Override
    public void updateChecklistItem(ChecklistItem checklistItem, TransactionLog transactionLog) {
        Object[] obj = {checklistItem.getChecklistItemId(), checklistItem.getChecklistItemDesc(),
                checklistItem.getBorRrn(), checklistItem.getDataType(), checklistItem.getUpperLimit(),
                checklistItem.getLowerLimit(), checklistItem.getParameterSetRrn(), checklistItem.getUnit(), checklistItem.getBool()};


        String sql = " UPDATE " + DataBaseNames.CHECKLIST_ITEM + " SET " + " checklist_item_id =" +
                MiscUtils.parseSQL(checklistItem.getChecklistItemId()) + "," + " checklist_item_desc = " +
                MiscUtils.parseSQL(checklistItem.getChecklistItemDesc()) + "," + " bor_rrn = " +
                checklistItem.getBorRrn() + "," + " " + "data_type = " +
                MiscUtils.parseSQL(checklistItem.getDataType()) + "," + " upper_limit = " +
                checklistItem.getUpperLimit() + "," + " " + "lower_limit = " + checklistItem.getLowerLimit() + "," +
                " parameter_set_rrn = " + checklistItem.getParameterSetRrn() + ",unit = " +
                MiscUtils.parseSQL(checklistItem.getUnit())+ ", bool = " +
                MiscUtils.parseSQL(checklistItem.getBool())+ " WHERE " + " checklist_rrn = " +
                checklistItem.getChecklistRrn() + " and " + " checklist_version = " +
                checklistItem.getChecklistVersion() + " and" + " checklist_sequence = " +
                checklistItem.getChecklistSequence();

        String sqlh = "INSERT INTO " + DataBaseNames.CHECKLIST_ITEM_H + " (trans_rrn,checklist_rrn, " +
                "checklist_version, checklist_sequence," + " checklist_item_id, checklist_item_desc, bor_rrn," + " " +
                "data_type, upper_limit, lower_limit, parameter_set_rrn, unit, bool)" + " VALUES " + "(" +
                transactionLog.getTransRrn() + "," + checklistItem.getChecklistRrn() + "," +
                checklistItem.getChecklistVersion() + "," + checklistItem.getChecklistSequence() + "," +
                MiscUtils.parseSQL(obj) + ")";

        jdbcTemplate.execute(sql);
        jdbcTemplate.execute(sqlh);
    }

    @Override
    public void changeChecklistItemSeq(long checklistRrn, long aSeq, long bSeq) {
        Long maxSeq = 9999999L;

        String sql = "update checklist_item set checklist_sequence = ? where checklist_rrn=?" + " and " +
                "checklist_sequence = ? ";

        jdbcTemplate.update(sql, maxSeq, checklistRrn, aSeq);
        jdbcTemplate.update(sql, aSeq, checklistRrn, bSeq);
        jdbcTemplate.update(sql, bSeq, checklistRrn, maxSeq);
    }

    @Override
    public List<ChecklistItem> getChecklistJobItems(long checklistJobRrn, Long checklistRrn) {
        String sql = " SELECT checklist_rrn, checklist_version, checklist_sequence," + " checklist_item_id, " +
                "checklist_item_desc, bor_rrn," + " data_type, upper_limit, lower_limit, parameter_set_rrn, unit, bool" + " FROM " +
                "CHECKLIST_JOB_ITEM WHERE checklist_job_rrn=" + checklistJobRrn + " and checklist_rrn =" +
                checklistRrn + " order by checklist_sequence";

        return jdbcTemplate.query(sql, (resultSet, rowNum) -> {
            ChecklistItem checklistItem = new ChecklistItem();
            checklistItem.setChecklistRrn(resultSet.getLong("checklist_rrn"));
            checklistItem.setChecklistVersion(resultSet.getInt("checklist_version"));
            checklistItem.setChecklistSequence(resultSet.getInt("checklist_sequence"));
            checklistItem.setChecklistItemId(resultSet.getString("checklist_item_id"));
            checklistItem.setChecklistItemDesc(resultSet.getString("checklist_item_desc"));
            checklistItem.setBorRrn(resultSet.getLong("bor_rrn"));
            checklistItem.setDataType(resultSet.getString("data_type"));
            checklistItem.setUpperLimit(resultSet.getDouble("upper_limit"));
            checklistItem.setLowerLimit(resultSet.getDouble("lower_limit"));
            checklistItem.setParameterSetRrn(resultSet.getLong("parameter_set_rrn"));
            checklistItem.setUnit(resultSet.getString("unit"));
            checklistItem.setBool(resultSet.getString("bool"));
            return checklistItem;
        });

    }

}