From cffd87559f2e9343ce3e5dcc5d2953272a244253 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期二, 24 十二月 2024 18:41:05 +0800 Subject: [PATCH] 2024-12-24 --- src/main/java/com/example/utils/DictionaryUtilNew.java | 938 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 469 insertions(+), 469 deletions(-) diff --git a/src/main/java/com/example/utils/DictionaryUtilNew.java b/src/main/java/com/example/utils/DictionaryUtilNew.java index ca486a6..a281182 100644 --- a/src/main/java/com/example/utils/DictionaryUtilNew.java +++ b/src/main/java/com/example/utils/DictionaryUtilNew.java @@ -1,470 +1,470 @@ -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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.example.domain.HisSyncDict; -import com.example.service.HisSyncDictService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.sql.*; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.*; - -/** - * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 - * @Author: zhaowenxuan - * @Date: 2024/5/21 16:41 - */ -@Slf4j -@Component -public class DictionaryUtilNew { - @Autowired - private HisSyncDictService hisSyncDictService; - private static String CONFIG_PATH; - private static String BASE_API_URL = ""; - private static final int SIZE = 1000; - private static String USER = ""; - private static String PASSWORD = ""; - private static String URL = ""; - private static String NAME = ""; - @Value("${config.path}") - public void setConfigPath(String configPath) { - CONFIG_PATH = configPath; - FileInputStream inputStream = null; - try { - inputStream = new FileInputStream(CONFIG_PATH); - Properties props = new Properties(); - props.load(inputStream); - NAME = props.getProperty("name"); - URL = "jdbc:mysql://" + props.getProperty("ip") + ":" + props.getProperty("prot") + "/" + NAME + "" + - "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8"; - USER = props.getProperty("username"); - 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"; - } catch (IOException e) { - System.out.println("鍒濆鍖栨暟鎹簱寮傚父 ->"+e.getMessage()); - } - } - - - /** - * 鏆傛椂涓嶅仛 - * 1.90 闂ㄨ瘖鏄庣粏璁¤垂鍙婄粍鍚堣璐归」鐩� MZJFZHMXXM - * - */ - -// 鍒嗛〉姣忔1000鏉� - static { - try { - Class.forName("com.mysql.cj.jdbc.Driver"); - } catch (Exception e) { - System.out.println("闈欐�佷唬鐮佸潡寮傚父 ->"+e.getMessage()); - } - } - - public static void main(String[] args) { - DictionaryUtilNew util = new DictionaryUtilNew(); - util.exec1(); - } - - /** - * 澧炲姞榛樿鍙傛暟 - * @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",""); - jsonObject.putOpt("input",obj); - return jsonObject; - } - - /** - * 杩涜鍚屾 - */ - public void exec1(){ - log.info("寮�濮嬫墽琛屽悓姝�"); - Connection connection = getConnection(); - if (connection == null) - return; - List<HisSyncDict> hisSyncDicts = hisSyncDictService.list(); - for (HisSyncDict hisSyncDict : hisSyncDicts) { - extracted(NAME, connection, hisSyncDict); - } - try { - connection.close(); - } catch (SQLException ignored) { } - log.info("鎵ц鍚屾瀹屾瘯"); - } - - /** - * 閫氳繃鎸囧畾瀛楀吀杩涜鍚屾 - */ - public void execMethods(List<String > methods){ - log.info("寮�濮嬫墽琛屽悓姝�"); - Connection connection = getConnection(); - if (connection == null) - return; - for (String method : methods) { - LambdaQueryWrapper<HisSyncDict> wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(HisSyncDict::getDictName,method); - HisSyncDict one = hisSyncDictService.getOne(wrapper); - if (one == null){ - log.error("{}瀛楀吀鍦ㄦ暟鎹簱涓笉瀛樺湪,璇锋鏌ユ暟鎹簱鎴栬姹傚弬鏁版槸鍚﹀~鍐欓敊璇�",method); - continue; - } - extracted(NAME,connection,one); - } - try { - connection.close(); - } catch (SQLException ignored) { } - log.info("鎵ц鍚屾瀹屾瘯"); - } - - private void extracted(String name, Connection connection, HisSyncDict hisSyncDict) { - String method = hisSyncDict.getDictName(); - 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 (hisSyncDict.getIsLimit() == 1) { - isLimit = true; - JSONObject input = object.getJSONObject("input"); - input.putOpt("pagecount", SIZE); - input.putOpt("page", page); - } - log.info("璇锋眰鎺ュ彛 ->{}, 璇锋眰鍙傛暟 ->{}", BASE_API_URL, object.toString()); - JSONObject entries = execRequest(object.toString()); -// 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, name, page); - log.info("璁$畻椤电爜涓� ->{}", maxPage); - if (maxPage > 1) { - for (page = 2; page <= maxPage; page++) { - object.clear(); - object.putOpt("method", method); - object = addInputVal(object); - 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()); - response = entries.getJSONObject("Response"); - if ("0".equals(response.getStr("ResultCode"))) { - LimitInsertData(connection, tabName, response, name, page); - } else { - log.error("{} 璇锋眰澶辫触锛歿}", method, object.toString()); - } - } - } - } else { - JSONArray resultData = response.getJSONArray("ResultData"); - List<JSONObject> list = JSONUtil.toList(resultData, JSONObject.class); - for (JSONObject jsonObject : list) { - editDataBase(connection, tabName, jsonObject, name); - } - } - } else { - log.error("{}璇锋眰澶辫触 - 璇锋眰鐘舵�佺爜涓嶄负0, 璇锋眰鍙傛暟 ->{}, 璇锋眰杩斿洖 ->{}", method, object.toString(), response.toString()); - } - } - - /** - * 閽堝浜庡垎椤垫帴鍙� 鍒涘缓琛ㄣ�佹彃鍏ユ暟鎹� - * - * @param connection - * @param tabName - * @param response - * @return - */ - 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; - // 琛屾暟 鏁版嵁杩斿洖鐨勭鍑犺 - Integer rowNumber = entries.getInt("RowNumber"); - // 鎬绘潯鏁� - Integer totalCount = entries.getInt("totalCount"); - maxPage = (totalCount + 1000 - 1) / 1000; - log.info("璇锋眰杩斿洖鎬绘潯鏁� ->{},褰撳墠椤� ->{},鎬婚〉鏁� ->{}",totalCount,page,maxPage); - jsonArray.forEach(obj -> { - editDataBase(connection, tabName, (JSONObject) obj,name); - }); - return maxPage; - } - - /** - * 鎿嶄綔鏁版嵁搴� - * - * @param connection - * @param tabName - * @param obj - */ - private void editDataBase(Connection connection, String tabName, JSONObject obj,String name) { - try { - if (!tabIsExists(connection, tabName,name)) { - // 鍒涘缓琛� - creatTable(obj, tabName, connection); - } - } catch (SQLException throwables) { - 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()); - } - } - - /** - * 鎵цpost璇锋眰 - * - * @param params 璇锋眰鍙傛暟 渚嬪锛� param1=val1¶m2=val2 - * @return 璇锋眰杩斿洖鐨刯son杞崲鍚庣殑JSONObject瀵硅薄 - */ - private JSONObject execRequest(String params) { -// System.out.println(params); - URL url = null; - HttpURLConnection connection = null; - try { - url = new URL(BASE_API_URL); - connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("POST"); - connection.setRequestProperty("Accept", "application/json"); -// connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - 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(),StandardCharsets.UTF_8)); - StringBuilder builder = new StringBuilder(); - String str; - while ((str = reader.readLine()) != null) { - builder.append(str); - } - return JSONUtil.parseObj(builder.toString()); - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (connection != null) { - connection.disconnect(); - } - } - return null; - } - - private Connection getConnection(String user,String password,String url) { - try { - log.info("鏁版嵁搴撲俊鎭� ->{},{},{}",user,password,url); - return DriverManager.getConnection(url, user, password); - } catch (Exception throwables) { - log.error("鑾峰彇sql杩炴帴澶辫触"); - throwables.printStackTrace(); - } - return null; - } - - public Connection getConnection() { - try { - log.info("鏁版嵁搴撲俊鎭� ->{},{},{}",USER,PASSWORD,URL); - return DriverManager.getConnection(URL,USER,PASSWORD); - } catch (Exception throwables) { - log.error("鑾峰彇sql杩炴帴澶辫触"); - throwables.printStackTrace(); - } - return null; - } - - /** - * 琛ㄦ槸鍚﹀瓨鍦� - * - * @param connection - * @param tableName - * @return - * @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, name); - statement.setString(2, tableName); -// log.info("鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦� sql-> {}", statement.toString()); - ResultSet resultSet = statement.executeQuery(); - boolean next = resultSet.next(); - statement.close(); - return next; - } - - /** - * 鎿嶄綔琛� - * - * @param tabName - * @param connection - * @throws SQLException - */ - private void operationTable(JSONObject jsonObject, String tabName, Connection connection) throws SQLException { - List<String> columns = getColumns(tabName, connection); -// log.info("褰撳墠琛ㄥ瓧娈典负 ->{}", columns); - ArrayList<String> responseColums = new ArrayList<>(); - for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { - String key = entry.getKey().trim().toLowerCase(); - responseColums.add(key); - } -// log.info("璇锋眰杩斿洖鐨勫瓧娈典负 ->{}", responseColums); - responseColums.removeAll(columns); -// log.info("闇�瑕佸鍔犵殑瀛楁 ->{}",responseColums); - if (!responseColums.isEmpty()) { - // 闇�瑕佸鍔犲瓧娈� 骞舵彃鍏ユ暟鎹� - for (String colum : responseColums) { - String sql = "alter table " + tabName + " add column " + colum + " VARCHAR(200) null"; -// log.info("淇敼瀛楁 ->{}",sql.toString()); - Statement statement = connection.createStatement(); - statement.executeUpdate(sql); - statement.close(); - } - insertData(tabName, connection, jsonObject); - } else { - insertData(tabName, connection, jsonObject); - } - } - - /** - * 鎻掑叆鏁版嵁 - * - * @param tabName - * @param connection - * @param jsonObject - * @throws SQLException - */ - private void insertData(String tabName, Connection connection, JSONObject jsonObject) throws SQLException { - // 鎻掑叆鏁版嵁鍓� 鍏堟煡璇㈡暟鎹槸鍚﹀瓨鍦� -// 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 "); - for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { - 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()); - 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(); - // 濡傛灉涓嶄负0 鍒欒繖鏉℃暟鎹瓨鍦� 涓嶈繘琛屾彃鍏� -// if (!"0".equals(string)) { -// log.info("鏁版嵁瀛樺湪涓嶉渶瑕佹彃鍏� {}", jsonObject); -// return; +//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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.example.domain.HisSyncDict; +//import com.example.service.HisSyncDictService; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.stereotype.Component; +// +//import java.io.*; +//import java.net.HttpURLConnection; +//import java.net.URL; +//import java.nio.charset.StandardCharsets; +//import java.sql.*; +//import java.text.SimpleDateFormat; +//import java.util.Date; +//import java.util.*; +// +///** +// * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 +// * @Author: zhaowenxuan +// * @Date: 2024/5/21 16:41 +// */ +//@Slf4j +//@Component +//public class DictionaryUtilNew { +// @Autowired +// private HisSyncDictService hisSyncDictService; +// private static String CONFIG_PATH; +// private static String BASE_API_URL = ""; +// private static final int SIZE = 1000; +// private static String USER = ""; +// private static String PASSWORD = ""; +// private static String URL = ""; +// private static String NAME = ""; +// @Value("${config.path}") +// public void setConfigPath(String configPath) { +// CONFIG_PATH = configPath; +// FileInputStream inputStream = null; +// try { +// inputStream = new FileInputStream(CONFIG_PATH); +// Properties props = new Properties(); +// props.load(inputStream); +// NAME = props.getProperty("name"); +// URL = "jdbc:mysql://" + props.getProperty("ip") + ":" + props.getProperty("prot") + "/" + NAME + "" + +// "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8"; +// USER = props.getProperty("username"); +// 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"; +// } catch (IOException e) { +// System.out.println("鍒濆鍖栨暟鎹簱寮傚父 ->"+e.getMessage()); // } - // 鎻掑叆鏁版嵁 - Statement statement = connection.createStatement(); - log.info("鎻掑叆鏁版嵁 sql-> {}", insertSqlBuilder.toString()); - statement.execute(insertSqlBuilder.toString()); - statement.close(); - } - - /** - * 鑾峰彇琛ㄧ殑鍒� - * - * @param tabName - * @param connection - * @return - * @throws SQLException - */ - private List<String> getColumns(String tabName, Connection connection) throws SQLException { - DatabaseMetaData metaData = connection.getMetaData(); - ResultSet columns = metaData.getColumns(null, null, tabName, null); - ArrayList<String> tabColumns = new ArrayList<>(); - while (columns.next()) { - String columnName = columns.getString("column_name"); - tabColumns.add(columnName); - } - return tabColumns; - } - - /** - * 鍒涘缓琛� - * - * @param resultDataIndex1 杩斿洖鏁版嵁涓殑绗竴涓弬鏁� - * @param tabName - * @param connection - * @throws SQLException - */ - 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()) { - String key = entry.getKey().trim().toLowerCase(); - sql.append(key).append(" VARCHAR(200) null,"); - } - sql.append("insert_time").append(" VARCHAR(100) null,"); - sql = new StringBuilder(sql.substring(0, sql.length() - 1)); - sql.append(");"); - 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(); - } -} +// } +// +// +// /** +// * 鏆傛椂涓嶅仛 +// * 1.90 闂ㄨ瘖鏄庣粏璁¤垂鍙婄粍鍚堣璐归」鐩� MZJFZHMXXM +// * +// */ +// +//// 鍒嗛〉姣忔1000鏉� +// static { +// try { +// Class.forName("com.mysql.cj.jdbc.Driver"); +// } catch (Exception e) { +// System.out.println("闈欐�佷唬鐮佸潡寮傚父 ->"+e.getMessage()); +// } +// } +// +// public static void main(String[] args) { +// DictionaryUtilNew util = new DictionaryUtilNew(); +// util.exec1(); +// } +// +// /** +// * 澧炲姞榛樿鍙傛暟 +// * @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",""); +// jsonObject.putOpt("input",obj); +// return jsonObject; +// } +// +// /** +// * 杩涜鍚屾 +// */ +// public void exec1(){ +// log.info("寮�濮嬫墽琛屽悓姝�"); +// Connection connection = getConnection(); +// if (connection == null) +// return; +// List<HisSyncDict> hisSyncDicts = hisSyncDictService.list(); +// for (HisSyncDict hisSyncDict : hisSyncDicts) { +// extracted(NAME, connection, hisSyncDict); +// } +// try { +// connection.close(); +// } catch (SQLException ignored) { } +// log.info("鎵ц鍚屾瀹屾瘯"); +// } +// +// /** +// * 閫氳繃鎸囧畾瀛楀吀杩涜鍚屾 +// */ +// public void execMethods(List<String > methods){ +// log.info("寮�濮嬫墽琛屽悓姝�"); +// Connection connection = getConnection(); +// if (connection == null) +// return; +// for (String method : methods) { +// LambdaQueryWrapper<HisSyncDict> wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(HisSyncDict::getDictName,method); +// HisSyncDict one = hisSyncDictService.getOne(wrapper); +// if (one == null){ +// log.error("{}瀛楀吀鍦ㄦ暟鎹簱涓笉瀛樺湪,璇锋鏌ユ暟鎹簱鎴栬姹傚弬鏁版槸鍚﹀~鍐欓敊璇�",method); +// continue; +// } +// extracted(NAME,connection,one); +// } +// try { +// connection.close(); +// } catch (SQLException ignored) { } +// log.info("鎵ц鍚屾瀹屾瘯"); +// } +// +// private void extracted(String name, Connection connection, HisSyncDict hisSyncDict) { +// String method = hisSyncDict.getDictName(); +// 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 (hisSyncDict.getIsLimit() == 1) { +// isLimit = true; +// JSONObject input = object.getJSONObject("input"); +// input.putOpt("pagecount", SIZE); +// input.putOpt("page", page); +// } +// log.info("璇锋眰鎺ュ彛 ->{}, 璇锋眰鍙傛暟 ->{}", BASE_API_URL, object.toString()); +// JSONObject entries = execRequest(object.toString()); +//// 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, name, page); +// log.info("璁$畻椤电爜涓� ->{}", maxPage); +// if (maxPage > 1) { +// for (page = 2; page <= maxPage; page++) { +// object.clear(); +// object.putOpt("method", method); +// object = addInputVal(object); +// 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()); +// response = entries.getJSONObject("Response"); +// if ("0".equals(response.getStr("ResultCode"))) { +// LimitInsertData(connection, tabName, response, name, page); +// } else { +// log.error("{} 璇锋眰澶辫触锛歿}", method, object.toString()); +// } +// } +// } +// } else { +// JSONArray resultData = response.getJSONArray("ResultData"); +// List<JSONObject> list = JSONUtil.toList(resultData, JSONObject.class); +// for (JSONObject jsonObject : list) { +// editDataBase(connection, tabName, jsonObject, name); +// } +// } +// } else { +// log.error("{}璇锋眰澶辫触 - 璇锋眰鐘舵�佺爜涓嶄负0, 璇锋眰鍙傛暟 ->{}, 璇锋眰杩斿洖 ->{}", method, object.toString(), response.toString()); +// } +// } +// +// /** +// * 閽堝浜庡垎椤垫帴鍙� 鍒涘缓琛ㄣ�佹彃鍏ユ暟鎹� +// * +// * @param connection +// * @param tabName +// * @param response +// * @return +// */ +// 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; +// // 琛屾暟 鏁版嵁杩斿洖鐨勭鍑犺 +// Integer rowNumber = entries.getInt("RowNumber"); +// // 鎬绘潯鏁� +// Integer totalCount = entries.getInt("totalCount"); +// maxPage = (totalCount + 1000 - 1) / 1000; +// log.info("璇锋眰杩斿洖鎬绘潯鏁� ->{},褰撳墠椤� ->{},鎬婚〉鏁� ->{}",totalCount,page,maxPage); +// jsonArray.forEach(obj -> { +// editDataBase(connection, tabName, (JSONObject) obj,name); +// }); +// return maxPage; +// } +// +// /** +// * 鎿嶄綔鏁版嵁搴� +// * +// * @param connection +// * @param tabName +// * @param obj +// */ +// private void editDataBase(Connection connection, String tabName, JSONObject obj,String name) { +// try { +// if (!tabIsExists(connection, tabName,name)) { +// // 鍒涘缓琛� +// creatTable(obj, tabName, connection); +// } +// } catch (SQLException throwables) { +// 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()); +// } +// } +// +// /** +// * 鎵цpost璇锋眰 +// * +// * @param params 璇锋眰鍙傛暟 渚嬪锛� param1=val1¶m2=val2 +// * @return 璇锋眰杩斿洖鐨刯son杞崲鍚庣殑JSONObject瀵硅薄 +// */ +// private JSONObject execRequest(String params) { +//// System.out.println(params); +// URL url = null; +// HttpURLConnection connection = null; +// try { +// url = new URL(BASE_API_URL); +// connection = (HttpURLConnection) url.openConnection(); +// connection.setRequestMethod("POST"); +// connection.setRequestProperty("Accept", "application/json"); +//// connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); +// 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(),StandardCharsets.UTF_8)); +// StringBuilder builder = new StringBuilder(); +// String str; +// while ((str = reader.readLine()) != null) { +// builder.append(str); +// } +// return JSONUtil.parseObj(builder.toString()); +// } catch (IOException e) { +// e.printStackTrace(); +// } finally { +// if (connection != null) { +// connection.disconnect(); +// } +// } +// return null; +// } +// +// private Connection getConnection(String user,String password,String url) { +// try { +// log.info("鏁版嵁搴撲俊鎭� ->{},{},{}",user,password,url); +// return DriverManager.getConnection(url, user, password); +// } catch (Exception throwables) { +// log.error("鑾峰彇sql杩炴帴澶辫触"); +// throwables.printStackTrace(); +// } +// return null; +// } +// +// public Connection getConnection() { +// try { +// log.info("鏁版嵁搴撲俊鎭� ->{},{},{}",USER,PASSWORD,URL); +// return DriverManager.getConnection(URL,USER,PASSWORD); +// } catch (Exception throwables) { +// log.error("鑾峰彇sql杩炴帴澶辫触"); +// throwables.printStackTrace(); +// } +// return null; +// } +// +// /** +// * 琛ㄦ槸鍚﹀瓨鍦� +// * +// * @param connection +// * @param tableName +// * @return +// * @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, name); +// statement.setString(2, tableName); +//// log.info("鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦� sql-> {}", statement.toString()); +// ResultSet resultSet = statement.executeQuery(); +// boolean next = resultSet.next(); +// statement.close(); +// return next; +// } +// +// /** +// * 鎿嶄綔琛� +// * +// * @param tabName +// * @param connection +// * @throws SQLException +// */ +// private void operationTable(JSONObject jsonObject, String tabName, Connection connection) throws SQLException { +// List<String> columns = getColumns(tabName, connection); +//// log.info("褰撳墠琛ㄥ瓧娈典负 ->{}", columns); +// ArrayList<String> responseColums = new ArrayList<>(); +// for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { +// String key = entry.getKey().trim().toLowerCase(); +// responseColums.add(key); +// } +//// log.info("璇锋眰杩斿洖鐨勫瓧娈典负 ->{}", responseColums); +// responseColums.removeAll(columns); +//// log.info("闇�瑕佸鍔犵殑瀛楁 ->{}",responseColums); +// if (!responseColums.isEmpty()) { +// // 闇�瑕佸鍔犲瓧娈� 骞舵彃鍏ユ暟鎹� +// for (String colum : responseColums) { +// String sql = "alter table " + tabName + " add column " + colum + " VARCHAR(200) null"; +//// log.info("淇敼瀛楁 ->{}",sql.toString()); +// Statement statement = connection.createStatement(); +// statement.executeUpdate(sql); +// statement.close(); +// } +// insertData(tabName, connection, jsonObject); +// } else { +// insertData(tabName, connection, jsonObject); +// } +// } +// +// /** +// * 鎻掑叆鏁版嵁 +// * +// * @param tabName +// * @param connection +// * @param jsonObject +// * @throws SQLException +// */ +// private void insertData(String tabName, Connection connection, JSONObject jsonObject) throws SQLException { +// // 鎻掑叆鏁版嵁鍓� 鍏堟煡璇㈡暟鎹槸鍚﹀瓨鍦� +//// 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 "); +// for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { +// 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()); +// 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(); +// // 濡傛灉涓嶄负0 鍒欒繖鏉℃暟鎹瓨鍦� 涓嶈繘琛屾彃鍏� +//// if (!"0".equals(string)) { +//// log.info("鏁版嵁瀛樺湪涓嶉渶瑕佹彃鍏� {}", jsonObject); +//// return; +//// } +// // 鎻掑叆鏁版嵁 +// Statement statement = connection.createStatement(); +// log.info("鎻掑叆鏁版嵁 sql-> {}", insertSqlBuilder.toString()); +// statement.execute(insertSqlBuilder.toString()); +// statement.close(); +// } +// +// /** +// * 鑾峰彇琛ㄧ殑鍒� +// * +// * @param tabName +// * @param connection +// * @return +// * @throws SQLException +// */ +// private List<String> getColumns(String tabName, Connection connection) throws SQLException { +// DatabaseMetaData metaData = connection.getMetaData(); +// ResultSet columns = metaData.getColumns(null, null, tabName, null); +// ArrayList<String> tabColumns = new ArrayList<>(); +// while (columns.next()) { +// String columnName = columns.getString("column_name"); +// tabColumns.add(columnName); +// } +// return tabColumns; +// } +// +// /** +// * 鍒涘缓琛� +// * +// * @param resultDataIndex1 杩斿洖鏁版嵁涓殑绗竴涓弬鏁� +// * @param tabName +// * @param connection +// * @throws SQLException +// */ +// 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()) { +// String key = entry.getKey().trim().toLowerCase(); +// sql.append(key).append(" VARCHAR(200) null,"); +// } +// sql.append("insert_time").append(" VARCHAR(100) null,"); +// sql = new StringBuilder(sql.substring(0, sql.length() - 1)); +// sql.append(");"); +// 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(); +// } +//} -- Gitblit v1.8.0