From 5737d7e7ed0cb02df1f4be1dc8b9035f9f7cdae2 Mon Sep 17 00:00:00 2001 From: 赵文轩 <1652863494@qq.com> Date: 星期二, 04 六月 2024 16:06:34 +0800 Subject: [PATCH] 同步字典数据工具类 --- src/main/java/com/example/utils/DictionaryUtil.java | 332 +++++++++++++++++++++++------------------------------- 1 files changed, 143 insertions(+), 189 deletions(-) diff --git a/src/main/java/com/example/utils/DictionaryUtil.java b/src/main/java/com/example/utils/DictionaryUtil.java index cc581e0..08b022d 100644 --- a/src/main/java/com/example/utils/DictionaryUtil.java +++ b/src/main/java/com/example/utils/DictionaryUtil.java @@ -1,39 +1,35 @@ package com.example.utils; -import cn.hutool.core.util.RandomUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; +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.ArrayList; +import java.util.*; import java.util.Date; -import java.util.List; -import java.util.Map; /** * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 * @Author: zhaowenxuan * @Date: 2024/5/21 16:41 */ +@Slf4j +@Component public class DictionaryUtil { - private static final Logger log = LoggerFactory.getLogger(DictionaryUtil.class); - private static String BASE_API_URL = "https://mock.mengxuegu.com/mock/664d3dbce45d2156fa209c80/example/api/His/HisRequest"; +// private static final String CONFIG_PATH = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/ltkj_peis_sjpt/src/main/resources/config.properties"; + private static final String CONFIG_PATH = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/ltkj_peis_sjpt/src/main/resources/ltkj.properties"; + private static String BASE_API_URL = ""; // 璇锋眰浠g爜鎬婚泦鍚� 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"; // 闇�瑕佸垎椤电殑浠g爜闆嗗悎 private static List<String> limits = new ArrayList<>(); @@ -48,68 +44,68 @@ static { 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("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("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("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("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"); limits.add("ZDZYZ"); limits.add("KSZD"); @@ -140,53 +136,83 @@ public static void main(String[] args) { DictionaryUtil util = new DictionaryUtil(); -// util.exec(); - util.exec1(); + try { + util.exec1(); + } catch (IOException e) { + e.printStackTrace(); + log.error("寮傚父"); + } } - private void exec1() { + /** + * 澧炲姞榛樿鍙傛暟 + * @param jsonObject + * @return + */ + public JSONObject addInputVal(JSONObject jsonObject){ + JSONObject obj = JSONUtil.createObj(); + obj.putOpt("jgbm",""); + obj.putOpt("bm",""); + obj.putOpt("flbm",""); + jsonObject.putOpt("input",obj); + return jsonObject; + } + + public void exec1() throws IOException { int size = 1000; - Connection connection = getConnection(); + 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); methods.forEach(method -> { - System.out.println("寰潖鐨勬帴鍙d唬鐮� ->" + method); - String tabName = "ltkj_" + method; -// String params = "method="+method; + 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; -// params+="&pagecount="+size+"&page="+page; - object.putOpt("pagecount", size); - object.putOpt("page", page); + 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()); -// JSONObject entries = execRequest(params); +// log.info("璇锋眰杩斿洖 ->{}",entries.toString()); assert entries != null; JSONObject response = entries.getJSONObject("Response"); if ("0".equals(response.getStr("ResultCode"))) { 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++) { -// params+="&pagecount="+size+"&page="+page; object.clear(); object.putOpt("method", method); - object.putOpt("pagecount", size); - object.putOpt("page", page); -// entries = execRequest(params); + 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()); - assert entries != null; +// 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("璇锋眰澶辫触锛�"+params); - log.error("璇锋眰澶辫触锛�" + object.toString()); + log.error("{} 璇锋眰澶辫触锛歿}",method,object.toString()); } page++; } @@ -194,11 +220,10 @@ } else { JSONArray resultData = response.getJSONArray("ResultData"); JSONObject jsonObject = JSONUtil.toList(resultData, JSONObject.class).get(0); - editDataBase(connection, tabName, resultData, jsonObject); + editDataBase(connection, tabName, jsonObject,name); } } else { -// log.error("璇锋眰澶辫触锛�"+params); - log.error("璇锋眰澶辫触锛�" + object.toString()); + log.error("{}璇锋眰澶辫触 - 璇锋眰鐘舵�佺爜涓嶄负0,璇锋眰鍙傛暟 ->{},璇锋眰杩斿洖 ->{}", method,object.toString(),response.toString()); } }); } @@ -211,17 +236,18 @@ * @param response * @return */ - private int LimitInsertData(Connection connection, String tabName, JSONObject response) { - int maxPage; - // 琛屾暟 - Integer rowNumber = response.getInt("RowNumber"); - // 鎬绘潯鏁� - Integer totalCount = response.getInt("totalCount"); + 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; - System.out.println("闆嗗悎澶у皬 ->" + jsonArray.size()); + log.info("璇锋眰杩斿洖鎬绘潯鏁� ->{},褰撳墠椤� ->{},鎬婚〉鏁� ->{}",totalCount,page,maxPage); jsonArray.forEach(obj -> { - editDataBase(connection, tabName, jsonArray, (JSONObject) obj); + editDataBase(connection, tabName, (JSONObject) obj,name); }); return maxPage; } @@ -231,12 +257,11 @@ * * @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); } @@ -246,31 +271,6 @@ log.error("鏁版嵁搴撴搷浣滃紓甯�"); log.error(throwables.getSQLState()); log.error(throwables.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(); - } - } } } @@ -285,7 +285,6 @@ URL url = null; HttpURLConnection connection = null; try { - BASE_API_URL = "http://localhost:5011/api/His/HisRequest"; url = new URL(BASE_API_URL); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); @@ -295,15 +294,12 @@ connection.setDoOutput(true); OutputStream stream = connection.getOutputStream(); stream.write(params.getBytes(StandardCharsets.UTF_8)); -// System.out.println(connection.getResponseCode()); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder builder = new StringBuilder(); String str; while ((str = reader.readLine()) != null) { builder.append(str); } - log.info("璇锋眰鍙傛暟 ->{}", params); -// log.info("鎵ц璇锋眰鍝嶅簲锛歿}", builder.toString()); return JSONUtil.parseObj(builder.toString()); } catch (IOException e) { e.printStackTrace(); @@ -315,53 +311,12 @@ return null; } - /** - * 鎵цhttp璇锋眰 - * - * @return - */ - private JSONObject execRequest() { - URL url = null; - HttpURLConnection connection = null; + private Connection getConnection(String user,String password,String url) { 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() { - try { + log.info("鏁版嵁搴撲俊鎭� ->{},{},{}",user,password,url); return DriverManager.getConnection(url, user, password); - } catch (SQLException throwables) { + } catch (Exception throwables) { + log.error("鑾峰彇sql杩炴帴澶辫触"); throwables.printStackTrace(); } return null; @@ -375,10 +330,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(); @@ -407,7 +362,7 @@ // 闇�瑕佸鍔犲瓧娈� 骞舵彃鍏ユ暟鎹� for (String colum : responseColums) { String sql = "alter table " + tabName + " add column " + colum + " text null"; -// log.info("淇敼瀛楁 ->{}",sql.toString()); +// log.info("淇敼瀛楁 ->{}",sql.toString()); Statement statement = connection.createStatement(); statement.executeUpdate(sql); statement.close(); @@ -427,7 +382,6 @@ * @throws SQLException */ private void insertData(String tabName, Connection connection, JSONObject jsonObject) throws SQLException { -// System.out.println("jsonObject = " + jsonObject); // 鎻掑叆鏁版嵁鍓� 鍏堟煡璇㈡暟鎹槸鍚﹀瓨鍦� StringBuilder selectSqlBuilder = new StringBuilder(); StringBuilder insertSqlBuilder = new StringBuilder(); @@ -436,8 +390,8 @@ 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 "); + valueBuilder.append("'").append(entry.getValue().toString().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()); -- Gitblit v1.8.0