EdcQueryDAOImpl.java

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

import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.jdbc.mapper.RowMapper;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.server.wip.dao.EdcQueryDAO;
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 Johnson.Wang
 * @version 6.0.0
 * @date 2019/9/27
 **/
@Repository
public class EdcQueryDAOImpl implements EdcQueryDAO {

    private final JdbcTemplate jdbcTemplate;

    public EdcQueryDAOImpl(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Override
    public double getParamValByCondition(long lotRrn, long operationRrn, long productRrn, long processRrn,
                                         long parameterRrn, String puType) {
        double paramVal = 0;
        List<Object> args = new ArrayList<>();

        String sql = "select avg(r.data_value) from raw_data r," + "(select * from (select  dcol_rrn, dcol_sequence, " +
                "number_of_samples from " + "data_collection c" + " where c.dcol_rrn in (select dcol_rrn from " +
                "dcol_step_info" + " where 1=1 ";
        if (lotRrn > 0) {
            sql = sql + " and lot_rrn = ?";
            args.add(lotRrn);
        }
        if (operationRrn > 0) {
            sql = sql + " and manufacturing_oper_rrn = ?";
            args.add(operationRrn);
        }
        if (productRrn > 0) {
            sql = sql + "  and product_rrn = ?";
            args.add(productRrn);
        }
        if (processRrn > 0) {
            sql = sql + "  and process_rrn = ?";
            args.add(processRrn);
        }
        if (StringUtils.isNotBlank(puType)) {
            sql = sql + "  and manufacturing_eqpt_rrn in (select eqpt_rrn from entity_ext where " + "equipment_owner=" +
                    " ?)";
            args.add(puType);
        }
        if (parameterRrn > 0) {
            sql = sql + " and c.parameter_rrn = ?";
            args.add(parameterRrn);
        }
        sql = sql + ") order by c.collection_timestamp desc ) t1 where t1.rownum = 1) e where r.dcol_rrn = e" +
                ".dcol_rrn " + "and r.dcol_sequence = e.dcol_sequence and r.sample_sequence = e.number_of_samples";

        return jdbcTemplate.queryForObjectWithNull(sql, args.toArray(), double.class);
    }

    @Override
    public List<Map<String, Object>> getAllDataCollectionPointInfoByDcolRrn(Long dcolRrn) {
        StringBuilder sql = new StringBuilder("SELECT ");

        sql.append(" dc.dcol_rrn, dc.dcol_sequence, dc.parameter_set_rrn, dc.parameter_set_version, ");
        sql.append(" dc.parameter_rrn, dc.number_of_samples, sd.sample_sequence, ");
        sql.append(" sd.unit_rrn, sd.sample_id, rd.reading_sequence, rd.reading_id, rd.data_value ");
        sql.append(" FROM data_collection dc, sample_data sd, raw_data rd ");
        sql.append(" WHERE 1 = 1 ");
        sql.append(" AND dc.dcol_rrn = sd.dcol_rrn AND dc.dcol_sequence = sd.dcol_sequence ");
        sql.append(" AND sd.dcol_rrn = rd.dcol_rrn AND sd.dcol_sequence = rd.dcol_sequence ");
        sql.append(" AND sd.sample_sequence = rd.sample_sequence ");
        sql.append(" AND dc.dcol_rrn = ? ");

        sql.append(" ORDER BY dc.dcol_sequence, sd.sample_sequence, rd.reading_sequence ");

        return jdbcTemplate.query(sql.toString(), new Object[]{dcolRrn}, new RowMapper<Map<String, Object>>() {
            private Map<String, Object> map;

            @Override
            public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
                map = new HashMap<>();
                map.put("dcolRrn", rs.getLong("dcol_rrn"));
                map.put("dcolSequence", rs.getInt("dcol_sequence"));
                map.put("parameterSetRrn", rs.getLong("parameter_set_rrn"));
                map.put("parameterSetVersion", rs.getInt("parameter_set_version"));
                map.put("parameterRrn", rs.getLong("parameter_rrn"));
                map.put("numberOfSamples", rs.getInt("number_of_samples"));
                map.put("sampleSequence", rs.getInt("sample_sequence"));
                map.put("unitRrn", rs.getLong("unit_rrn"));
                map.put("sampleId", rs.getString("sample_id"));
                map.put("readingSequence", rs.getInt("reading_sequence"));
                map.put("readingId", rs.getString("reading_id"));
                map.put("dataValue", rs.getDouble("data_value"));
                return map;
            }
        });
    }

}