路泰机电科技体检——数据平台后端
zhaowenxuan
2025-06-12 493d39e60bae93a724448af7dd53e2ff10b927c8
src/main/java/com/example/utils/DictionaryUtil.java
@@ -1,10 +1,11 @@
package com.example.utils;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.*;
import java.net.HttpURLConnection;
@@ -20,91 +21,95 @@
 * @Author: zhaowenxuan
 * @Date: 2024/5/21 16:41
 */
@Slf4j
@Component
public class DictionaryUtil {
//    private static final String CONFIG_PATH = "/Users/chacca/开发相关/代码/ltkj_peis_sjpt/src/main/resources/config.properties";
//    private static final String CONFIG_PATH = "/Users/chacca/开发相关/代码/ltkj_peis_sjpt/src/main/resources/ltkj.properties";
    private static final String CONFIG_PATH = "D:\\ltkjprojectconf\\config.properties";
    private static final Logger log = LoggerFactory.getLogger(DictionaryUtil.class);
    private static String BASE_API_URL = "";
    // 请求代码总集合
    private static List<String> methods = new ArrayList<>();
//    private static final String url = "jdbc:mysql://localhost:3306/test_urlreq";
//    private static final String user = "root";
//    private static final String password = "Root_ltkj123";
    // 需要分页的代码集合
    private static List<String> limits = new ArrayList<>();
    /**
     * 暂时不做
     * 1.18 计费明细项目 MXJFXMZD
     * 1.90 门诊明细计费及组合计费项目 MZJFZHMXXM
     *
     */
// 分页每次1000条
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {}
        methods.add("JGDM");
        methods.add("ZDZYZ");
//        methods.add("YQZD");
//        methods.add("KSFLZD");
//        methods.add("BQZD");
//        methods.add("ZKKSZD");
//        methods.add("KSZD");
//        methods.add("YWCKZD");
//        methods.add("GHZLZD");
//        methods.add("YHZD");
//        methods.add("XYZDZD");
//        methods.add("ZYZDZD");
//        methods.add("SSZD");
        methods.add("YQZD");
        methods.add("KSFLZD");
        methods.add("BQZD");
        methods.add("ZKKSZD");
        methods.add("KSZD");
        methods.add("YWCKZD");
        methods.add("GHZLZD");
        methods.add("YHZD");
        methods.add("XYZDZD");
        methods.add("ZYZDZD");
        methods.add("SSZD");
        methods.add("ZLXTXZD");
//        methods.add("ZYZZZFZD");
//        methods.add("YJJFXMZD");
//        methods.add("EJJFXMZD");
//        methods.add("ZHFLXMZD");
//        methods.add("JFZHXMZD");
//        methods.add("JFZHGLMXJFXMZD");
//        methods.add("CFLXZD");
//        methods.add("YPZLZD");
//        methods.add("YPJXZD");
//        methods.add("YPGXZD");
//        methods.add("YPLXZD");
//        methods.add("JLDWZD");
//        methods.add("YFZD");
//        methods.add("YPZD");
//        methods.add("JYKSZD");
//        methods.add("JYYSZD");
//        methods.add("JYFZZD");
//        methods.add("JYFLZD");
//        methods.add("JYFFZD");
//        methods.add("JYBBZD");
//        methods.add("JYXMZD");
//        methods.add("JYZBZD");
//        methods.add("JYXMZBZD");
//        methods.add("JFXMGLJYXMZD");
//        methods.add("JFZHGLJYXMZD");
//        methods.add("JCSBZD");
//        methods.add("JCBWFLZD");
//        methods.add("JCBWZD");
//        methods.add("JCBWMSZD");
        methods.add("ZYZZZFZD");
        methods.add("YJJFXMZD");
        methods.add("EJJFXMZD");
        methods.add("ZHFLXMZD");
        methods.add("JFZHXMZD");
        methods.add("JFZHGLMXJFXMZD");
        methods.add("CFLXZD");
        methods.add("YPZLZD");
        methods.add("YPJXZD");
        methods.add("YPGXZD");
        methods.add("YPLXZD");
        methods.add("JLDWZD");
        methods.add("YFZD");
        methods.add("YPZD");
        methods.add("JYKSZD");
        methods.add("JYYSZD");
        methods.add("JYFZZD");
        methods.add("JYFLZD");
        methods.add("JYFFZD");
        methods.add("JYBBZD");
        methods.add("JYXMZD");
        methods.add("JYZBZD");
        methods.add("JYXMZBZD");
        methods.add("JFXMGLJYXMZD");
        methods.add("JFZHGLJYXMZD");
        methods.add("JCSBZD");
        methods.add("JCBWFLZD");
        methods.add("JCBWZD");
        methods.add("JCBWMSZD");
        methods.add("JFXMGLJCBWZD");
//        methods.add("JFZHXMGLJCBWZD");
//
//        methods.add("TJDWXZZD");
//        methods.add("TJRYLBZD");
//        methods.add("TJLBZD");
//        methods.add("TJFQZD");
//        methods.add("TJKSZD");
//        methods.add("TJYSZD");
//        methods.add("TJXMZD");
//        methods.add("TJZHXMZD");
//        methods.add("TJZHGLMXZD");
//        methods.add("TJTCZD");
//        methods.add("TJTCGLTJZHZD");
//
//        methods.add("HTDWZD");
//        methods.add("ZFLXZD");
//        methods.add("MZJCJYSQD");
//        methods.add("MZJCJYSQXMFL");
//        methods.add("MZJCJYSQDDYXM");
//        methods.add("BRFB");
        methods.add("JFZHXMGLJCBWZD");
        methods.add("TJDWXZZD");
        methods.add("TJRYLBZD");
        methods.add("TJLBZD");
        methods.add("TJFQZD");
        methods.add("TJKSZD");
        methods.add("TJYSZD");
        methods.add("TJXMZD");
        methods.add("TJZHXMZD");
        methods.add("TJZHGLMXZD");
        methods.add("TJTCZD");
        methods.add("TJTCGLTJZHZD");
        methods.add("HTDWZD");
        methods.add("ZFLXZD");
        methods.add("MZJCJYSQD");
        methods.add("MZJCJYSQXMFL");
        methods.add("MZJCJYSQDDYXM");
        methods.add("BRFB");
        methods.add("MXJFXMZD");
        methods.add("MZJFZHMXXM");
        limits.add("ZDZYZ");
        limits.add("KSZD");
@@ -131,20 +136,31 @@
        limits.add("TJZHGLMXZD");
        limits.add("TJTCZD");
        limits.add("TJTCGLTJZHZD");
        limits.add("MXJFXMZD");
        limits.add("MZJFZHMXXM");
    }
    public static void main(String[] args) {
        DictionaryUtil util = new DictionaryUtil();
//        String json = "{\"Response\":{\"ResultCode\":\"0\",\"ResultContent\":\"查询成功\",\"ResultData\":[{\"RowNumber\":1,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0000000002\",\"KSMC\":\"质控股\",\"KSPY\":\"ZKG\",\"FLKSDM\":\"0000000001\",\"FLKSMC\":\"办公\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":\"\",\"KSMS\":null,\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":2,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0001\",\"KSMC\":\"总务库房\",\"KSPY\":\"ZWKF\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":\"\",\"KSMS\":\"\",\"KSDZ\":null,\"LXDH\":\"\",\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":3,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0002\",\"KSMC\":\"西药库房\",\"KSPY\":\"XYKF\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":null,\"KSMS\":null,\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":4,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0003\",\"KSMC\":\"门诊西药房\",\"KSPY\":\"MZXYF\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":\"\",\"KSMS\":\"门诊一楼西药房取药\",\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":5,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0004\",\"KSMC\":\"门诊中药房\",\"KSPY\":\"MZZYF\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":\"\",\"KSMS\":\"门诊一楼中药房取药\",\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":6,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0005\",\"KSMC\":\"住院药房\",\"KSPY\":\"ZYYF\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":\"\",\"KSMS\":\"住院部二楼药房取药\",\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":7,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0006\",\"KSMC\":\"办公室\",\"KSPY\":\"BGS\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":null,\"KSMS\":null,\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":8,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0007\",\"KSMC\":\"总务股\",\"KSPY\":\"ZWG\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":null,\"KSMS\":null,\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":9,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0008\",\"KSMC\":\"医务股\",\"KSPY\":\"YWG\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":null,\"KSMS\":null,\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"},{\"RowNumber\":10,\"totalCount\":171,\"YLJGDM\":\"43899007-X\",\"YLJGMC\":\"泾川县人民医院\",\"KSDM\":\"0009\",\"KSMC\":\"门诊收费室\",\"KSPY\":\"MZSFS\",\"FLKSDM\":\"01\",\"FLKSMC\":\"医疗\",\"KSLXDM\":\"0\",\"KSLXMC\":\"公用\",\"BZNCW\":null,\"BZWCW\":null,\"KSJJ\":\"\",\"KSMS\":\"门诊楼一楼、门诊楼二楼缴费\",\"KSDZ\":null,\"LXDH\":null,\"ZKDM\":null,\"BQDM\":null,\"YQDM\":null,\"CJRQ\":\"2022-04-15T10:01:06.77\",\"JLZT\":\"0\",\"BZ\":\"\"}]}}";
        util.exec1();
//        Connection connection = util.getConnection();
//        String tabName = "ltkj_kszd";
//        JSONObject entries = JSONUtil.parseObj(json);
//        util.LimitInsertData(connection,tabName,entries.getJSONObject("Response"));
        try {
            util.exec1();
        } catch (IOException e) {
            e.printStackTrace();
            log.error("异常");
        }
    }
    /**
     * 增加默认参数
     * @param jsonObject
     * @return
     */
    public JSONObject addInputVal(JSONObject jsonObject){
        JSONObject obj = JSONUtil.createObj();
        String method = jsonObject.getStr("method");
        if (method.equals("MZJFZHMXXM") || method.equals("MXJFXMZD")){
            obj.putOpt("mode","1");
        }
        obj.putOpt("jgbm","");
        obj.putOpt("bm","");
        obj.putOpt("flbm","");
@@ -152,61 +168,88 @@
        return jsonObject;
    }
    public void exec1() {
    public void execSync(){
    }
    /**
     * 单线程执行
     * @throws IOException
     */
    public void exec1() throws IOException {
        log.info("开始执行同步");
        int size = 1000;
        Connection connection = getConnection();
        methods.forEach(method -> {
            log.info("开始请求代码 ->{}",method);
        FileInputStream inputStream = new FileInputStream(CONFIG_PATH);
        Properties props = new Properties();
        props.load(inputStream);
        String name = props.getProperty("name");
        String url = "jdbc:mysql://" + props.getProperty("ip") + ":" + props.getProperty("prot") + "/" + name + "" +
                "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8";
        String user = props.getProperty("username");
        String password = props.getProperty("password");
        String apiUrl = props.getProperty("his_api_url");
        String apiPort = props.getProperty("his_api_port");
        BASE_API_URL = apiUrl+":"+apiPort+"/api/His/HisRequest";
        Connection connection = getConnection(user,password,url);
        for (String method : methods) {
            log.info("开始请求代码 ->{}", method);
            String tabName = "ltkj_" + method.toLowerCase();
            boolean isLimit = false;
            int page = 1;
            int maxPage = 1;
            JSONObject object = JSONUtil.createObj();
            object.putOpt("method", method);
            object = addInputVal(object);
            if (limits.contains(method)) {
                isLimit = true;
                object.putOpt("pagecount", size);
                object.putOpt("page", page);
                JSONObject input = object.getJSONObject("input");
                input.putOpt("pagecount", size);
                input.putOpt("page", page);
            }
            object = addInputVal(object);
            log.info("请求接口 ->{},请求参数 ->{}",BASE_API_URL,object.toString());
            log.info("请求接口 ->{}, 请求参数 ->{}", BASE_API_URL, object.toString());
            JSONObject entries = execRequest(object.toString());
            log.info("请求返回 ->{}",entries.toString());
            assert entries != null;
//            log.info("请求返回 ->{}", entries.toString());
            JSONObject response = entries.getJSONObject("Response");
            if ("0".equals(response.getStr("ResultCode"))) {
                try {
                    dropTable(tabName, connection);
                } catch (SQLException e) {
                    log.error("删除表异常 ->{}", e.getMessage());
                }
                if (isLimit) {
                    maxPage = LimitInsertData(connection, tabName, response);
                    maxPage = LimitInsertData(connection, tabName, response,name, page);
                    log.info("计算页码为 ->{}", maxPage);
                    if (maxPage > 1) {
                        page += 1;
                        for (int i = page; i <= maxPage; i++) {
                        for (page = 2; page <= maxPage; page++) {
                            object.clear();
                            object.putOpt("method", method);
                            object.putOpt("pagecount", size);
                            object.putOpt("page", page);
                            object = addInputVal(object);
                            log.info("请求接口 ->{},请求参数 ->{}",BASE_API_URL,object.toString());
                            JSONObject input = object.getJSONObject("input");
                            input.putOpt("pagecount", size);
                            input.putOpt("page", page);
                            log.info("请求接口 ->{}, 请求参数 ->{}", BASE_API_URL, object.toString());
                            entries = execRequest(object.toString());
                            log.info("请求返回 ->{}",entries.toString());
//                            log.info("请求返回 ->{}", entries.toString());
                            response = entries.getJSONObject("Response");
                            if ("0".equals(response.getStr("ResultCode"))) {
                                LimitInsertData(connection, tabName, response);
                                LimitInsertData(connection, tabName, response,name, page);
                            } else {
                                log.error("{} 请求失败:{}",method,object.toString());
                                log.error("{} 请求失败:{}", method, object.toString());
                            }
                            page++;
                        }
                    }
                } else {
                    JSONArray resultData = response.getJSONArray("ResultData");
                    JSONObject jsonObject = JSONUtil.toList(resultData, JSONObject.class).get(0);
                    editDataBase(connection, tabName, resultData, jsonObject);
                    List<JSONObject> list = JSONUtil.toList(resultData, JSONObject.class);
                    for (JSONObject jsonObject : list) {
                        editDataBase(connection, tabName, jsonObject,name);
                    }
                }
            } else {
                log.error("{}请求失败 - 请求状态码不为0:{}", method,object.toString());
                log.error("{}请求失败 - 请求状态码不为0, 请求参数 ->{}, 请求返回 ->{}", method, object.toString(), response.toString());
            }
        });
        }
        log.info("执行同步完毕");
    }
    /**
@@ -217,7 +260,7 @@
     * @param response
     * @return
     */
    private int LimitInsertData(Connection connection, String tabName, JSONObject response) {
    private int LimitInsertData(Connection connection, String tabName, JSONObject response,String name,Integer page) {
        JSONArray jsonArray = response.getJSONArray("ResultData");
        JSONObject entries = (JSONObject) jsonArray.get(0);
        int maxPage;
@@ -226,9 +269,9 @@
        // 总条数
        Integer totalCount = entries.getInt("totalCount");
        maxPage = (totalCount + 1000 - 1) / 1000;
        log.info("请求返回集合大小 ->{},总页数 ->{}",jsonArray.size(),maxPage);
        log.info("请求返回总条数 ->{},当前页 ->{},总页数 ->{}",totalCount,page,maxPage);
        jsonArray.forEach(obj -> {
            editDataBase(connection, tabName, jsonArray, (JSONObject) obj);
            editDataBase(connection, tabName, (JSONObject) obj,name);
        });
        return maxPage;
    }
@@ -238,48 +281,28 @@
     *
     * @param connection
     * @param tabName
     * @param jsonArray
     * @param obj
     */
    private void editDataBase(Connection connection, String tabName, JSONArray jsonArray, JSONObject obj) {
    private void editDataBase(Connection connection, String tabName, JSONObject obj,String name) {
        try {
            if (!tabIsExists(connection, tabName)) {
            if (!tabIsExists(connection, tabName,name)) {
                // 创建表
                creatTable(obj, tabName, connection);
            }
            // 对比字段 并插入数据
            operationTable(obj, tabName, connection);
        } catch (SQLException throwables) {
            log.error("数据库操作异常");
            log.error("创建表异常");
            log.error(throwables.getSQLState());
            log.error(throwables.getMessage());
        }
        // 对比字段 并插入数据
        try {
            operationTable(obj, tabName, connection);
        } catch (SQLException e) {
            log.error("对比字段插入数据异常");
            log.error(e.getSQLState());
            log.error(e.getMessage());
        }
    }
//    private void exec() {
//        JSONObject entries = execRequest();
//        if (entries != null) {
//            JSONObject response = entries.getJSONObject("Response");
//            // 0 成功 -1失败
//            if ("0".equals(response.getStr("ResultCode"))) {
//                JSONArray jsonArray = response.getJSONArray("ResultData");
//                JSONObject resultDataIndex1 = jsonArray.getJSONObject(0);
//                String method = entries.getStr("method");
//                String tabName = "ltkj_" + method;
//                Connection connection = getConnection();
//                try {
//                    if (!tabIsExists(connection, tabName)) {
//                        // 创建表
//                        creatTable(resultDataIndex1, tabName, connection);
//                    }
//                    // 对比字段 并插入数据
//                    operationTable((JSONObject) jsonArray.get(0), tabName, connection);
//                } catch (SQLException throwables) {
//                    throwables.printStackTrace();
//                }
//            }
//        }
//    }
    /**
     * 执行post请求
@@ -297,11 +320,11 @@
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Accept", "application/json");
//            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            connection.setRequestProperty("Content-Type", "application/json;utf-8");
            connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            connection.setDoOutput(true);
            OutputStream stream = connection.getOutputStream();
            stream.write(params.getBytes(StandardCharsets.UTF_8));
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),StandardCharsets.UTF_8));
            StringBuilder builder = new StringBuilder();
            String str;
            while ((str = reader.readLine()) != null) {
@@ -318,62 +341,9 @@
        return null;
    }
    /**
     * 执行http请求
     *
     * @return
     */
//    private JSONObject execRequest() {
//        URL url = null;
//        HttpURLConnection connection = null;
//        try {
//            url = new URL(BASE_API_URL);
//            connection = (HttpURLConnection) url.openConnection();
//            connection.setRequestMethod("POST");
//            connection.setDoOutput(true);
//            connection.setRequestProperty("Accept", "application/json");
//            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//            OutputStream stream = connection.getOutputStream();
//            int index = 0;
//            if (methods.size() > 1) {
//                index = RandomUtil.randomInt(0, methods.size() - 1);
//            }
//            String method = methods.get(index);
//            String param = "method=" + method;
//            stream.write(param.getBytes(StandardCharsets.UTF_8));
//            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
//            StringBuilder builder = new StringBuilder();
//            String str;
//            while ((str = reader.readLine()) != null) {
//                builder.append(str);
//            }
//            log.info("执行请求响应:{}", builder.toString());
//            JSONObject entries = JSONUtil.parseObj(builder.toString());
//            entries.set("method", method);
//            return entries;
//        } catch (IOException e) {
//            e.printStackTrace();
//        } finally {
//            if (connection != null) {
//                connection.disconnect();
//            }
//        }
//        return null;
//    }
    private Connection getConnection() {
    private Connection getConnection(String user,String password,String url) {
        try {
            FileInputStream inputStream = new FileInputStream(CONFIG_PATH);
            Properties props = new Properties();
            props.load(inputStream);
            String name = props.getProperty("name");
            String url = "jdbc:mysql://" + props.getProperty("ip") + ":" + props.getProperty("prot") + "/" + name + "" +
                    "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8";
            String user = props.getProperty("username");
            String password = props.getProperty("password");
            String apiUrl = props.getProperty("his_api_url");
            String apiPort = props.getProperty("his_api_port");
            BASE_API_URL = apiUrl+":"+apiPort+"/api/His/HisRequest";
            log.info("数据库信息 ->{},{},{}",user,password,url);
            return DriverManager.getConnection(url, user, password);
        } catch (Exception throwables) {
            log.error("获取sql连接失败");
@@ -390,10 +360,10 @@
     * @return
     * @throws SQLException
     */
    private Boolean tabIsExists(Connection connection, String tableName) throws SQLException {
    private Boolean tabIsExists(Connection connection, String tableName,String name) throws SQLException {
        String tabSql = "SELECT table_name FROM information_schema.tables WHERE table_schema = ? AND table_name = ?";
        PreparedStatement statement = connection.prepareStatement(tabSql);
        statement.setString(1, "test_urlreq");
        statement.setString(1, name);
        statement.setString(2, tableName);
//        log.info("判断表是否存在 sql-> {}", statement.toString());
        ResultSet resultSet = statement.executeQuery();
@@ -414,15 +384,17 @@
//        log.info("当前表字段为 ->{}", columns);
        ArrayList<String> responseColums = new ArrayList<>();
        for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
            responseColums.add(entry.getKey());
            String key = entry.getKey().trim().toLowerCase();
            responseColums.add(key);
        }
//            log.info("请求返回的字段为 ->{}", responseColums);
//        log.info("请求返回的字段为 ->{}", responseColums);
        responseColums.removeAll(columns);
//        log.info("需要增加的字段 ->{}",responseColums);
        if (!responseColums.isEmpty()) {
            // 需要增加字段 并插入数据
            for (String colum : responseColums) {
                String sql = "alter table " + tabName + " add column " + colum + " text null";
//                    log.info("修改字段 ->{}",sql.toString());
                String sql = "alter table " + tabName + " add column " + colum + " VARCHAR(200) null";
//                log.info("修改字段 ->{}",sql.toString());
                Statement statement = connection.createStatement();
                statement.executeUpdate(sql);
                statement.close();
@@ -443,37 +415,42 @@
     */
    private void insertData(String tabName, Connection connection, JSONObject jsonObject) throws SQLException {
        // 插入数据前 先查询数据是否存在
        StringBuilder selectSqlBuilder = new StringBuilder();
//        StringBuilder selectSqlBuilder = new StringBuilder();
        StringBuilder insertSqlBuilder = new StringBuilder();
        StringBuilder valueBuilder = new StringBuilder();
        insertSqlBuilder.append("insert into ").append(tabName).append(" (");
        selectSqlBuilder.append("select count(1) as count from ").append(tabName).append(" where ");
//        selectSqlBuilder.append("select count(1) as count from ").append(tabName).append(" where ");
        for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
            insertSqlBuilder.append(entry.getKey()).append(", ");
            valueBuilder.append("'").append(entry.getValue()).append("', ");
            selectSqlBuilder.append(entry.getKey()).append(" = '").append(entry.getValue()).append("' and ");
            String defaultVal = entry.getValue().toString();
            String key = entry.getKey().trim().toLowerCase();
            if (StrUtil.isBlank(defaultVal) || defaultVal.equals("null"))
                continue;
            String val = defaultVal.trim().replaceAll("\\s+", "").replace("\\","");
            insertSqlBuilder.append(key).append(", ");
            valueBuilder.append("'").append(val.replaceAll("'","‘")).append("', ");
//            selectSqlBuilder.append(entry.getKey()).append(" = '").append(entry.getValue().toString().replaceAll("'","‘")).append("' and ");
        }
        insertSqlBuilder.append("insert_time, ");
        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        valueBuilder.append("'").append(time).append("'").append(", ");
        insertSqlBuilder.delete(insertSqlBuilder.length() - 2, insertSqlBuilder.length());
        valueBuilder.delete(valueBuilder.length() - 2, valueBuilder.length());
        selectSqlBuilder.delete(selectSqlBuilder.length() - 5, selectSqlBuilder.length());
//        selectSqlBuilder.delete(selectSqlBuilder.length() - 5, selectSqlBuilder.length());
        insertSqlBuilder.append(") values (").append(valueBuilder).append(")");
//        log.info("插入前查询 sql ->{}", selectSqlBuilder.toString());
        Statement statement = connection.prepareStatement(selectSqlBuilder.toString());
        ResultSet resultSet = statement.executeQuery(selectSqlBuilder.toString());
        resultSet.next();
        String string = resultSet.getString("count");
        statement.close();
//        Statement statement = connection.prepareStatement(selectSqlBuilder.toString());
//        ResultSet resultSet = statement.executeQuery(selectSqlBuilder.toString());
//        resultSet.next();
//        String string = resultSet.getString("count");
//        statement.close();
        // 如果不为0 则这条数据存在 不进行插入
        if (!"0".equals(string)) {
//        if (!"0".equals(string)) {
//            log.info("数据存在不需要插入 {}", jsonObject);
            return;
        }
//            return;
//        }
        // 插入数据
        statement = connection.createStatement();
//        log.info("插入数据 sql-> {}", insertSqlBuilder.toString());
        Statement statement = connection.createStatement();
        log.info("插入数据 sql-> {}", insertSqlBuilder.toString());
        statement.execute(insertSqlBuilder.toString());
        statement.close();
    }
@@ -508,13 +485,27 @@
    private void creatTable(JSONObject resultDataIndex1, String tabName, Connection connection) throws SQLException {
        StringBuilder sql = new StringBuilder("CREATE TABLE " + tabName + " (");
        for (Map.Entry<String, Object> entry : resultDataIndex1.entrySet()) {
            sql.append(entry.getKey()).append(" text null,");
            String key = entry.getKey().trim().toLowerCase();
            sql.append(key).append(" VARCHAR(200) null,");
        }
        sql.append("insert_time").append(" text null,");
        sql.append("insert_time").append(" VARCHAR(100) null,");
        sql = new StringBuilder(sql.substring(0, sql.length() - 1));
        sql.append(");");
//        log.info("创建表格 -> {}",sql.toString());
        log.info("创建表格 -> {}",sql.toString());
        Statement statement = connection.createStatement();
        statement.execute(sql.toString());
    }
    /**
     * 删除表
     * @param tabName
     * @param connection
     * @throws SQLException
     */
    private void dropTable(String tabName,Connection connection) throws SQLException {
        String sql = "DROP TABLE IF EXISTS " + tabName;
        Statement statement = connection.createStatement();
        statement.executeUpdate(sql);
        statement.close();
    }
}