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 |  114 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 66 insertions(+), 48 deletions(-)

diff --git a/src/main/java/com/example/utils/DictionaryUtil.java b/src/main/java/com/example/utils/DictionaryUtil.java
index 1f4399b..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.*;
@@ -36,7 +35,6 @@
 
     /**
      * 鏆傛椂涓嶅仛
-     * 1.18 璁¤垂鏄庣粏椤圭洰 MXJFXMZD
      * 1.90 闂ㄨ瘖鏄庣粏璁¤垂鍙婄粍鍚堣璐归」鐩� MZJFZHMXXM
      *
      */
@@ -110,6 +108,8 @@
         methods.add("MZJCJYSQXMFL");
         methods.add("MZJCJYSQDDYXM");
         methods.add("BRFB");
+        methods.add("MXJFXMZD");
+        methods.add("MZJFZHMXXM");
 
         limits.add("ZDZYZ");
         limits.add("KSZD");
@@ -136,6 +136,8 @@
         limits.add("TJZHGLMXZD");
         limits.add("TJTCZD");
         limits.add("TJTCGLTJZHZD");
+        limits.add("MXJFXMZD");
+        limits.add("MZJFZHMXXM");
     }
 
     public static void main(String[] args) {
@@ -155,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","");
@@ -185,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;
@@ -200,50 +206,49 @@
                 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);
+                    dropTable(tabName, connection);
                 } catch (SQLException e) {
-                    log.error("鍒犻櫎琛ㄥ紓甯� ->{}",e.getMessage());
+                    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("鎵ц鍚屾瀹屾瘯");
     }
 
@@ -284,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());
         }
     }
 
@@ -373,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);
@@ -402,39 +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()) {
-            if (entry.getValue().toString().equals("null"))
+            String defaultVal = entry.getValue().toString();
+            String key = entry.getKey().trim().toLowerCase();
+            if (StrUtil.isBlank(defaultVal) || defaultVal.equals("null"))
                 continue;
-            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 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();
     }
@@ -469,12 +485,13 @@
     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());
     }
@@ -489,5 +506,6 @@
         String sql = "DROP TABLE IF EXISTS " + tabName;
         Statement statement = connection.createStatement();
         statement.executeUpdate(sql);
+        statement.close();
     }
 }

--
Gitblit v1.8.0