From e460e434fe3975a4ae33466710d8292245ad8e07 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期四, 19 六月 2025 18:09:33 +0800 Subject: [PATCH] 2025-06-19 --- src/main/java/com/example/utils/DictionaryUtil.java | 147 +++++++++++++++++++++++++++++++++---------------- 1 files changed, 99 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/example/utils/DictionaryUtil.java b/src/main/java/com/example/utils/DictionaryUtil.java index 08b022d..6d7521c 100644 --- a/src/main/java/com/example/utils/DictionaryUtil.java +++ b/src/main/java/com/example/utils/DictionaryUtil.java @@ -1,11 +1,10 @@ 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 lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.io.*; @@ -26,7 +25,8 @@ @Component public class DictionaryUtil { // 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 final String CONFIG_PATH = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/ltkj_peis_sjpt/src/main/resources/ltkj.properties"; + private static final String CONFIG_PATH = "D:\\ltkjprojectconf\\config.properties"; private static String BASE_API_URL = ""; // 璇锋眰浠g爜鎬婚泦鍚� private static List<String> methods = new ArrayList<>(); @@ -35,13 +35,15 @@ /** * 鏆傛椂涓嶅仛 - * 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"); @@ -106,6 +108,8 @@ methods.add("MZJCJYSQXMFL"); methods.add("MZJCJYSQDDYXM"); methods.add("BRFB"); + methods.add("MXJFXMZD"); + methods.add("MZJFZHMXXM"); limits.add("ZDZYZ"); limits.add("KSZD"); @@ -132,6 +136,8 @@ limits.add("TJZHGLMXZD"); limits.add("TJTCZD"); limits.add("TJTCGLTJZHZD"); + limits.add("MXJFXMZD"); + limits.add("MZJFZHMXXM"); } public static void main(String[] args) { @@ -151,6 +157,10 @@ */ 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",""); @@ -158,7 +168,16 @@ return jsonObject; } + public void execSync(){ + + } + + /** + * 鍗曠嚎绋嬫墽琛� + * @throws IOException + */ public void exec1() throws IOException { + log.info("寮�濮嬫墽琛屽悓姝�"); int size = 1000; FileInputStream inputStream = new FileInputStream(CONFIG_PATH); Properties props = new Properties(); @@ -172,8 +191,8 @@ String apiPort = props.getProperty("his_api_port"); BASE_API_URL = apiUrl+":"+apiPort+"/api/His/HisRequest"; Connection connection = getConnection(user,password,url); - methods.forEach(method -> { - log.info("寮�濮嬭姹備唬鐮� ->{}",method); + for (String method : methods) { + log.info("寮�濮嬭姹備唬鐮� ->{}", method); String tabName = "ltkj_" + method.toLowerCase(); boolean isLimit = false; int page = 1; @@ -187,45 +206,50 @@ input.putOpt("pagecount", size); input.putOpt("page", page); } - 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,name,page); + 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 = addInputVal(object); JSONObject input = object.getJSONObject("input"); input.putOpt("pagecount", size); input.putOpt("page", page); - log.info("璇锋眰鎺ュ彛 ->{},璇锋眰鍙傛暟 ->{}",BASE_API_URL,object.toString()); + 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,name,page); + 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, jsonObject,name); + 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()); + log.error("{}璇锋眰澶辫触 - 璇锋眰鐘舵�佺爜涓嶄负0, 璇锋眰鍙傛暟 ->{}, 璇锋眰杩斿洖 ->{}", method, object.toString(), response.toString()); } - }); + } + log.info("鎵ц鍚屾瀹屾瘯"); } /** @@ -265,12 +289,18 @@ // 鍒涘缓琛� 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()); } } @@ -290,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) { @@ -354,14 +384,16 @@ // 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"; + String sql = "alter table " + tabName + " add column " + colum + " VARCHAR(200) null"; // log.info("淇敼瀛楁 ->{}",sql.toString()); Statement statement = connection.createStatement(); statement.executeUpdate(sql); @@ -383,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().toString().replaceAll("'","鈥�")).append("', "); - selectSqlBuilder.append(entry.getKey()).append(" = '").append(entry.getValue().toString().replaceAll("'","鈥�")).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(); } @@ -448,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(); + } } -- Gitblit v1.8.0