直接写存贮过程,适合Excel批量导入

package com.eastcom_sw.dsv.special.gde.dao.assetsManage;

import com.eastcom_sw.baseframe.jdbc.dao.JdbcDaoSupport;
import com.eastcom_sw.dsv.special.gde.dao.interfaceManage.RegisterInterfaceDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author tangkk
 * @ClassName AssetsImportDaoImpl
 * @Description 资产导入
 * @Date 2020/8/11 13:46
 * @Version 1.0
 **/
@Component
@SuppressWarnings({"rawtypes"})
public class AssetsImportDaoImpl extends JdbcDaoSupport implements AssetsImportDao {

    public JdbcTemplate jdbcTemplate;

    @Resource(name = "ipmsdmDataSource")
    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    @Autowired
    private RegisterInterfaceDaoImpl registerInterfaceDao;

    /**
     * @param
     * @return
     * @Description
     * @Title 导入指标
     * @Date 2020/9/30 16:32
     * @Version 1.0
     **/
    @Override
    public Map<String, Integer> addBatchData(String userCn, String flag, final Map<String, List<Map<String, String>>>
            map) {
        // 注册指标
        List<Map<String, String>> base = map.get("base");
        if (base != null) {
            String[] split = userCn.split("-");
            String s = split[1];
            addKpi(s, base);
        }
        // 相关报表
        List<Map<String, String>> relyReport = map.get("relyReport");
        if (relyReport != null) {
            addKpiReport(relyReport);
        }
        // 依赖模型
        List<Map<String, String>> relyTable = map.get("relyModel");
        if (relyTable != null) {
            addKpiRelyTable(relyTable);
        }
        // 依赖指标
        List<Map<String, String>> relyKpi = map.get("relyKpi");
        if (relyKpi != null) {
            addKpiRelyKpi(relyKpi);
        }
        Map returnMap = new HashMap();
        returnMap.put("base", base != null ? base.size() : 0);
        returnMap.put("relyReport", relyReport != null ? relyReport.size() : 0);
        returnMap.put("relyModel", relyTable != null ? relyTable.size() : 0);
        returnMap.put("relyKpi", relyKpi != null ? relyKpi.size() : 0);
        return returnMap;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 导入模型
     * @Date 2020/9/30 16:33
     * @Version 1.0
     **/
    @Override
    public Map<String, Integer> addModelData(String userCn, String flag, final Map<String, List<Map<String, String>>>
            map) {
        List list = map.get("base");
        String[] split = userCn.split("-");
        String s = split[1];
        if (list != null) {
            addModel(s, list);
        }
        List<Map<String, String>> property = map.get("property");
        if (property != null) {
            addProperty(property);
        }
        List<Map<String, String>> dblink = map.get("dblink");
        if (dblink != null) {
            addLink(dblink);
        }
        List<Map<String, String>> relyTable = map.get("relyTable");
        if (relyTable != null) {
            addRelyTable(relyTable);
        }
        // 依赖接口
        List<Map<String, String>> relyInterface = map.get("relyInterface");
        if (relyInterface != null) {
            addRelyInterface(relyInterface);
        }
        Map returnMap = new HashMap();
        returnMap.put("base", list != null ? list.size() : 0);
        returnMap.put("property", property != null ? property.size() : 0);
        returnMap.put("dblink", dblink != null ? dblink.size() : 0);
        returnMap.put("relyTable", relyTable != null ? relyTable.size() : 0);
        returnMap.put("relyInterface", relyInterface != null ? relyInterface.size() : 0);
        return returnMap;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 导入接口服务
     * @Date 2020/9/30 16:33
     * @Version 1.0
     **/
    @Override
    public Map<String, Integer> addInterfaceData(String userCn, String flag, Map<String, List<Map<String, String>>>
            map) {
        String[] split = userCn.split("-");
        String s = split[1];
        // 注册指标
        List<Map<String, String>> base = map.get("base");
        if (base != null) {
            addInterface(s, base);
        }
        // 接口属性
        List<Map<String, String>> relyReport = map.get("relyReport");
        if (relyReport != null) {
            addPropertyInterface(relyReport);
        }
        Map returnMap = new HashMap();
        returnMap.put("base", base != null ? base.size() : 0);
        returnMap.put("relyReport", relyReport != null ? relyReport.size() : 0);
        return returnMap;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title
     * @Date 2020/9/15 16:39
     * @Version 1.0
     **/
    @Override
    public Map<String, Integer> addDservData(String userCn, String flag, Map<String, List<Map<String, String>>> map) {
        String[] split = userCn.split("-");
        String s = split[1];
        // 注册指标
        List<Map<String, String>> base = map.get("base");
        if (base != null) {
            addDserv(s, base);
        }
        // 接口属性
        List<Map<String, String>> relyReport = map.get("relyReport");
        if (relyReport != null) {
            addPropertyDserv(relyReport);
        }
        Map returnMap = new HashMap();
        returnMap.put("base", base != null ? base.size() : 0);
        returnMap.put("relyReport", relyReport != null ? relyReport.size() : 0);
        return returnMap;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增模型
     * @Date 2020/8/23 18:49
     * @Version 1.0
     **/
    public String addModel(String userCn, final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "TABLE_ID,THEME_ID,SUB_THEME_ID,LAYER_ID,DATA_SOURCES_ID,ASSET_PERSON,IS_MAIN_DATA,ASSET_LEVEL," +
                "TABLE_DESC,MODEL_TYPE," +
                "TABLE_ID,TABLE_NAME,THEME_ID,SUB_THEME_ID,LAYER_ID,DATA_SOURCES_ID,ASSET_PERSON,IS_MAIN_DATA," +
                "ASSET_LEVEL,TABLE_DESC,MODEL_TYPE,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_TABLE_INFO T1 USING (SELECT ? TABLE_ID FROM DUAL) T2 " +
                " ON (T1.TABLE_ID=T2.TABLE_ID)" +
                "WHEN MATCHED THEN UPDATE SET T1.THEME_ID = ?, " +
                "T1.SUB_THEME_ID = ?, T1.LAYER_ID = ?," +
                " T1.DATA_SOURCES_ID = ?, T1.ASSET_PERSON = ?, T1.IS_MAIN_DATA = ?, " +
                "T1.ASSET_LEVEL = ?, T1.TABLE_DESC =?, " +
                " T1.MODEL_TYPE = ?" +
                " WHEN NOT MATCHED THEN INSERT (TABLE_ID,TABLE_NAME,THEME_ID,SUB_THEME_ID,LAYER_ID,DATA_SOURCES_ID," +
                "ASSET_PERSON,IS_MAIN_DATA,ASSET_LEVEL,TABLE_DESC,MODEL_TYPE,UUID,ASSET_REG_USER,ASSET_STATUS," +
                "REG_TIME)" +
                " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,'" + userCn + "',0,to_number( to_char( SYSDATE, 'yyyymmdd' ) || " +
                "'0000' ))";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            if (k == 6 || k == 7 || k == 9 || k == 17 || k == 18 || k == 20) {
                                pstat.setInt(k + 1, Integer.valueOf(value));
                            } else {
                                pstat.setString(k + 1, value);
                            }
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }

            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增指标
     * @Date 2020/8/23 18:49
     * @Version 1.0
     **/
    public String addKpi(String userCn, final List<Map<String, String>> list) {

        String result = "", sql = "", question = "";
        question = "KPI_ID,KPI_NAME,KPI_NAME_EN,BUSI_CALIBER,TECH_CALIBER,BUSI_TYPE,SUB_BUSI_TYPE,DATA_SOURCES_ID," +
                "MAINT_VENDER," +
                "MAINT_USER,UNIT_ID,UPDATE_CYCLE,STORAGE_CYCLE,BUSI_DIRECTOR,TECH_DIRECTOR,BUSI_DEPT_ID," +
                "MAINT_DEPT_ID," +
                "PROVIDE_DEPT_ID,CHECK_TYPE,VITAL_LEVEL,KPI_TYPE,DEVELOP_VENDER,DEVELOP_USER," +
                "KPI_ID,KPI_NAME,KPI_NAME_EN,BUSI_CALIBER," +
                "TECH_CALIBER,BUSI_TYPE,SUB_BUSI_TYPE,DATA_SOURCES_ID,MAINT_VENDER,MAINT_USER,UNIT_ID,UPDATE_CYCLE," +
                "STORAGE_CYCLE,BUSI_DIRECTOR," +
                "TECH_DIRECTOR,BUSI_DEPT_ID,MAINT_DEPT_ID, " +
                "PROVIDE_DEPT_ID,CHECK_TYPE,VITAL_LEVEL,KPI_TYPE,DEVELOP_VENDER,DEVELOP_USER,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_KPI_INFO T1 USING (SELECT ? KPI_ID FROM DUAL) T2 " +
                " ON (T1.KPI_ID=T2.KPI_ID)" +
                "WHEN MATCHED THEN UPDATE SET T1.KPI_NAME = ?,T1.KPI_NAME_EN = ?, " +
                "T1.BUSI_CALIBER = ?, T1.TECH_CALIBER = ?," +
                " T1.BUSI_TYPE = ?, T1.SUB_BUSI_TYPE = ?, T1.DATA_SOURCES_ID = ?, " +
                "T1.MAINT_VENDER = ?, T1.MAINT_USER =?, " +
                " T1.UNIT_ID = ?," +
                "T1.UPDATE_CYCLE = ?, T1.STORAGE_CYCLE =?, " +
                "T1.BUSI_DIRECTOR = ?, T1.TECH_DIRECTOR =?, " +
                "T1.BUSI_DEPT_ID = ?, T1.MAINT_DEPT_ID =?, " +
                "T1.PROVIDE_DEPT_ID = ?, T1.CHECK_TYPE =?, " +
                "T1.VITAL_LEVEL = ?, T1.KPI_TYPE =?, " +
                "T1.DEVELOP_VENDER = ?, " +
                "T1.DEVELOP_USER = ? " +
                " WHEN NOT MATCHED THEN INSERT (KPI_ID,KPI_NAME,KPI_NAME_EN,BUSI_CALIBER,TECH_CALIBER,BUSI_TYPE," +
                "SUB_BUSI_TYPE," +
                "DATA_SOURCES_ID,MAINT_VENDER,MAINT_USER,UNIT_ID,UPDATE_CYCLE,STORAGE_CYCLE,BUSI_DIRECTOR," +
                "TECH_DIRECTOR," +
                "BUSI_DEPT_ID,MAINT_DEPT_ID,PROVIDE_DEPT_ID,CHECK_TYPE,VITAL_LEVEL,KPI_TYPE,DEVELOP_VENDER," +
                "DEVELOP_USER,UUID,ASSET_REG_USER,ASSET_STATUS,REG_TIME)" +
                " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'" + userCn + "',0,to_number( to_char( " +
                "SYSDATE, 'yyyymmdd' ) || '0000' ))";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }
            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }


    /**
     * 新增数据分布
     */
    public String addLink(final List<Map<String, String>> list) {

        String result = "", sql = "", question = "";
        question = "TABLE_ID,SYS_ID,DB_NAME,DB_ACCOUNT,TABLE_TYPE," +
                "TABLE_ID,SYS_ID,DB_NAME,DB_ACCOUNT,TABLE_TYPE,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_TABLE_BD_LINK T1 USING (SELECT ? TABLE_ID,? SYS_ID,? DB_NAME FROM DUAL) T2 " +
                " ON (T1.TABLE_ID=T2.TABLE_ID AND T1.SYS_ID=T2.SYS_ID AND T1.DB_NAME=T2.DB_NAME)" +
                "WHEN MATCHED THEN UPDATE SET T1.DB_ACCOUNT = ?, " +
                " T1.TABLE_TYPE = ?" +
                " WHEN NOT MATCHED THEN INSERT (TABLE_ID,SYS_ID,DB_NAME,DB_ACCOUNT,TABLE_TYPE,UUID)" +
                " VALUES(?,?,?,?,?,?)";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }

            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 新增依赖模型
     */
    public String addRelyTable(final List<Map<String, String>> list) {

        String result = "", sql = "", question = "";
        question = "PARENT_ID,TABLE_ID,PARENT_ID,TABLE_ID,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_TAB_TAB_REL T1 USING (SELECT ? PARENT_ID,? TABLE_ID FROM DUAL) T2 " +
                " ON (T1.TABLE_ID=T2.PARENT_ID AND T1.REL_TABLE_ID=T2.TABLE_ID)" +
                " WHEN NOT MATCHED THEN INSERT (TABLE_ID,REL_TABLE_ID,UUID)" +
                " VALUES(?,?,?)";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }

            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }


    /**
     * @param
     * @return
     * @Description
     * @Title 新增依赖接口
     * @Date 2020/8/23 20:59
     * @Version 1.0
     **/
    public String addRelyInterface(final List<Map<String, String>> list) {
        String sql = "", question = "", result = "true";
        question = "TABLE_ID,IF_ID,TABLE_ID,IF_ID,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_TAB_IF_REL T1 USING (SELECT ? TABLE_ID,? IF_ID FROM DUAL) T2 " +
                " ON (T1.TABLE_ID=T2.TABLE_ID AND T1.REL_IF_ID=T2.IF_ID)" +
                " WHEN NOT MATCHED THEN INSERT (TABLE_ID,REL_IF_ID,UUID)" +
                " VALUES(?,?,?)";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }
            });
            result = "true";
        } catch (Exception e) {
            e.printStackTrace();
            result = "false";
        }
        return result;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增接口
     * @Date 2020/8/29 12:43
     * @Version 1.0
     **/
    public String addInterface(String userCn, final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "IF_ID,IF_NAME,IF_L1_TYPE,IF_L2_TYPE,IF_L3_TYPE,IS_ACCESS,REQ_TYPE,TIMELEVEL_ID,FILE_NAME," +
                "FILE_SEP,DB_TYPE,COLLECT_TIME," +
                "SERVERS_IP,D_ADDRESS,IF_TYPE,DATA_SOURCES_ID,VENDER_ID,VENDER_USER,MSISDN,DB_ACCOUNTS,DB_PASSWORD," +
                "IF_DESC," +
                "IF_ID,IF_NAME,IF_L1_TYPE,IF_L2_TYPE,IF_L3_TYPE,IS_ACCESS,REQ_TYPE,TIMELEVEL_ID,FILE_NAME,FILE_SEP," +
                "DB_TYPE,COLLECT_TIME," +
                "SERVERS_IP,D_ADDRESS,IF_TYPE,DATA_SOURCES_ID,VENDER_ID,VENDER_USER,MSISDN,DB_ACCOUNTS,DB_PASSWORD," +
                "IF_DESC,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_IF_INFO T1 USING (SELECT ? IF_ID FROM DUAL) T2 " +
                " ON (T1.IF_ID=T2.IF_ID)" +
                "WHEN MATCHED THEN UPDATE SET T1.IF_NAME = ?, " +
                "T1.IF_L1_TYPE = ?, T1.IF_L2_TYPE = ?," +
                " T1.IF_L3_TYPE = ?, T1.IS_ACCESS = ?, T1.REQ_TYPE = ?, " +
                "T1.TIMELEVEL_ID = ?, T1.FILE_NAME =?, " +
                " T1.FILE_SEP = ?, T1.DB_TYPE = ?, T1.COLLECT_TIME = ?, T1.SERVERS_IP = ?, T1.D_ADDRESS = ?, " +
                "T1.IF_TYPE = ?, " +
                "T1.DATA_SOURCES_ID = ?, T1.VENDER_ID = ?, T1.VENDER_USER = ?, T1.MSISDN = ?, T1.DB_ACCOUNTS = ?, " +
                "T1.DB_PASSWORD = ?, T1.IF_DESC = ?" +
                " WHEN NOT MATCHED THEN INSERT (IF_ID,IF_NAME,IF_L1_TYPE,IF_L2_TYPE,IF_L3_TYPE,IS_ACCESS,REQ_TYPE," +
                "TIMELEVEL_ID,FILE_NAME,FILE_SEP,DB_TYPE," +
                "COLLECT_TIME,SERVERS_IP,D_ADDRESS,IF_TYPE,DATA_SOURCES_ID,VENDER_ID,VENDER_USER,MSISDN,DB_ACCOUNTS," +
                "DB_PASSWORD,IF_DESC,UUID,ASSET_REG_USER,ASSET_STATUS,REG_TIME) " +
                "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'" + userCn + "',0,to_number( to_char( SYSDATE," +
                " 'yyyymmdd' ) || '0000' ))";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            if (k == 5 || k == 26 || k == 6 || k == 27) {
                                pstat.setInt(k + 1, Integer.valueOf(value));
                            } else {
                                pstat.setString(k + 1, value);
                            }
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }
            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增接口
     * @Date 2020/8/29 12:43
     * @Version 1.0
     **/
    public String addDserv(String userCn, final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "SERV_ID,SERV_NAME,SERV_L1_TYPE,SERV_L2_TYPE,SOURCE_TABLE,TAR_SERVER,TAR_PATH,TIME_LEVEL," +
                "PROCESS_NAME,FILE_SEP,FILE_SERV_NAME,TRANSFER_TIME,IF_TYPE,D_SYS,DB_ACCOUNTS,DB_PASSWORD," +
                "CODED_FORMAT," +
                "SERV_ID,SERV_NAME,SERV_L1_TYPE,SERV_L2_TYPE,SOURCE_TABLE,TAR_SERVER,TAR_PATH,TIME_LEVEL," +
                "PROCESS_NAME,FILE_SEP,FILE_SERV_NAME,TRANSFER_TIME,IF_TYPE,D_SYS,DB_ACCOUNTS,DB_PASSWORD," +
                "CODED_FORMAT,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_DSERV_INFO T1 USING (SELECT ? SERV_ID FROM DUAL) T2 " +
                " ON (T1.SERV_ID=T2.SERV_ID)" +
                "WHEN MATCHED THEN UPDATE SET T1.SERV_NAME = ?, " +
                "T1.SERV_L1_TYPE = ?, T1.SERV_L2_TYPE = ?," +
                " T1.SOURCE_TABLE = ?, T1.TAR_SERVER = ?, T1.TAR_PATH = ?, " +
                "T1.TIME_LEVEL = ?, T1.PROCESS_NAME =?, " +
                " T1.FILE_SEP = ?, T1.FILE_SERV_NAME = ?, T1.TRANSFER_TIME = ?, T1.IF_TYPE = ?, T1.D_SYS = ?, " +
                "T1.DB_ACCOUNTS = ?, " +
                "T1.DB_PASSWORD = ?, T1.CODED_FORMAT = ? " +
                " WHEN NOT MATCHED THEN INSERT (SERV_ID,SERV_NAME,SERV_L1_TYPE,SERV_L2_TYPE,SOURCE_TABLE,TAR_SERVER," +
                "TAR_PATH,TIME_LEVEL,PROCESS_NAME,FILE_SEP,FILE_SERV_NAME,TRANSFER_TIME,IF_TYPE,D_SYS,DB_ACCOUNTS," +
                "DB_PASSWORD,CODED_FORMAT,UUID,ASSET_REG_USER,ASSET_STATUS,REG_TIME) " +
                "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'" + userCn + "',0,to_number( to_char( SYSDATE," +
                " 'yyyymmdd' ) || '0000' ))";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }
            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }

    /**
     * @author tangkk
     * @ClassName AssetsImportDaoImpl
     * @Description
     * @Date 2020/8/29 12:43
     * @Version 1.0
     **/
    public String addPropertyInterface(final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "PARENT_ID,PRO_CN_NAME,PRO_EN_NAME,PARENT_ID,PRO_CN_NAME,PRO_EN_NAME,DATA_TYPE,UNIT_ID," +
                "DEFAULT_VAL,SAMPLE_DATA,PRO_DESC,UUID";
        sql = " MERGE INTO IPMSDW.DW_GDE_IF_PROPERTY T1 USING (SELECT ? PARENT_ID,? PRO_CN_NAME, ? PRO_EN_NAME FROM " +
                "DUAL ) T2  " +
                " ON (T1.PARENT_ID = T2.PARENT_ID AND T1.PRO_CN_NAME = T2.PRO_CN_NAME AND T1.PRO_EN_NAME = " +
                "T2.PRO_EN_NAME ) " +
                " WHEN NOT MATCHED THEN INSERT ( PARENT_ID, PRO_CN_NAME, PRO_EN_NAME, DATA_TYPE, UNIT_ID, " +
                "DEFAULT_VAL, SAMPLE_DATA, PRO_DESC,UUID ) VALUES(?,?,?,?,?,?,?,?,? ) ";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            if (k == 7) {
                                pstat.setNull(k + 1, Types.NUMERIC);
                            } else {
                                pstat.setNull(k + 1, Types.CHAR);
                            }
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }
            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }

    /**
     * @author tangkk
     * @ClassName AssetsImportDaoImpl
     * @Description
     * @Date 2020/8/29 12:43
     * @Version 1.0
     **/
    public String addPropertyDserv(final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "PARENT_ID,PRO_CN_NAME,PRO_EN_NAME,PARENT_ID,PRO_CN_NAME,PRO_EN_NAME,DATA_TYPE,REMARK,UUID";
        sql = " MERGE INTO IPMSDW.DW_GDE_DSERV_PROPERTY T1 USING (SELECT ? PARENT_ID,? PRO_CN_NAME, ? PRO_EN_NAME " +
                "FROM " +
                "DUAL ) T2  " +
                " ON (T1.PARENT_ID = T2.PARENT_ID AND T1.PRO_CN_NAME = T2.PRO_CN_NAME AND T1.PRO_EN_NAME = " +
                "T2.PRO_EN_NAME ) " +
                " WHEN NOT MATCHED THEN INSERT ( PARENT_ID, PRO_CN_NAME, PRO_EN_NAME, DATA_TYPE, REMARK,UUID ) VALUES" +
                "(?,?,?,?,?,?) ";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }
            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增属性
     * @Date 2020/9/30 16:34
     * @Version 1.0
     **/
    public String addProperty(final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "PRO_CN_NAME,PRO_EN_NAME,PARENT_ID,PRO_CN_NAME,PRO_EN_NAME,DATA_TYPE,PRO_DESC,BUSI_CALIBRE," +
                "PARENT_ID,UUID,SECRECY_LEVEL";
        sql = "MERGE INTO IPMSDW.DW_GDE_TABLE_PROPERTY T1 USING (SELECT ? PRO_CN_NAME,? PRO_EN_NAME,? PARENT_ID FROM " +
                "DUAL) T2 " +
                " ON (T1.PRO_CN_NAME=T2.PRO_CN_NAME AND T1.PRO_EN_NAME=T2.PRO_EN_NAME AND T1.PARENT_ID=T2.PARENT_ID)" +
                " WHEN NOT MATCHED THEN INSERT (PRO_CN_NAME,PRO_EN_NAME,DATA_TYPE,PRO_DESC,BUSI_CALIBRE,PARENT_ID," +
                "UUID,SECRECY_LEVEL) VALUES(?,?,?,?,?,?,?,?)";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }

            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }

        return result;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增指标报表
     * @Date 2020/9/30 16:34
     * @Version 1.0
     **/
    public String addKpiReport(final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "KPI_ID,report_name,report_path,KPI_ID,report_name,report_path,report_desc,report_id,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_KPI_RF_REL T1 USING (SELECT ? KPI_ID,? report_name,? report_path FROM DUAL) " +
                "T2 " +
                " ON (T1.PARENT_ID=T2.KPI_ID AND T1.REPORT_NAME=T2.report_name AND T1.REPORT_PATH=T2.report_path)" +
                " WHEN NOT MATCHED THEN INSERT (PARENT_ID,REPORT_NAME,REPORT_PATH,REPORT_DESC,REPORT_ID,UUID) VALUES" +
                "(?,?,?,?,?,?)";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }

            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }

        return result;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增依赖模型
     * @Date 2020/9/30 16:34
     * @Version 1.0
     **/
    public String addKpiRelyTable(final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "KPI_ID,TABLE_ID,KPI_ID,TABLE_ID,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_KPI_TAB_ERL T1 USING (SELECT ? KPI_ID,? TABLE_ID FROM DUAL) T2 " +
                " ON (T1.KPI_ID=T2.KPI_ID AND T1.TABLE_ID=T2.TABLE_ID)" +
                " WHEN NOT MATCHED THEN INSERT (KPI_ID,TABLE_ID,UUID) VALUES(?,?,?)";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }

            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }

        return result;
    }

    /**
     * @param
     * @return
     * @Description
     * @Title 新增指标依赖指标
     * @Date 2020/9/30 16:35
     * @Version 1.0
     **/
    public String addKpiRelyKpi(final List<Map<String, String>> list) {
        String result = "", sql = "", question = "";
        question = "KPI_ID,REL_KPI_ID,KPI_ID,REL_KPI_ID,UUID";
        sql = "MERGE INTO IPMSDW.DW_GDE_KPI_KPI_REL T1 USING (SELECT ? KPI_ID,? REL_KPI_ID FROM DUAL) T2 " +
                " ON (T1.KPI_ID=T2.KPI_ID AND T1.REL_KPI_ID=T2.REL_KPI_ID)" +
                " WHEN NOT MATCHED THEN INSERT (KPI_ID,REL_KPI_ID,UUID) VALUES(?,?,?)";

        final String[] questionList = question.split(",");
        try {
            // 执行操作
            jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

                @Override
                public void setValues(PreparedStatement pstat, int i) throws SQLException {
                    Map<String, String> dataMap = list.get(i);
                    for (int k = 0; k < questionList.length; k++) {
                        String value = dataMap.containsKey(questionList[k]) ?
                                (StringUtils.isBlank(dataMap.get(questionList[k])) || dataMap.get(questionList[k]) ==
                                        null ? "" : dataMap.get(questionList[k])).replace("#", "") : "";
                        if (StringUtils.isBlank(value)) {
                            pstat.setNull(k + 1, Types.CHAR);
                        } else {
                            pstat.setString(k + 1, value);
                        }
                    }
                }

                @Override
                public int getBatchSize() {
                    // 设置本批次一共多少组数据,隐含的就是循环几次
                    return list.size();
                }
            });
            result = "true";
        } catch (Exception e) {
            result = "false";
            e.printStackTrace();
        }
        return result;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值