From 2ece722bfafa27e3ef5dd5e060ee0624e6f263a6 Mon Sep 17 00:00:00 2001
From: zjh <zjh@888>
Date: 星期三, 19 六月 2024 19:20:14 +0800
Subject: [PATCH] zjh 本地 2024/06/19 --3

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java |   97 +++++++++++++++++++-----------------------------
 1 files changed, 38 insertions(+), 59 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java
index 08bc676..8f243c6 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java
@@ -1,5 +1,6 @@
 package com.ltkj.web.controller.his;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
@@ -76,7 +77,10 @@
      * @param type   鎺ュ彛浠g爜
      * @param params 璇锋眰鍙傛暟
      * @return
+     * @deprecated
+     * 鏂规硶宸插純鐢�,灏唖witch鏇存敼涓烘暟鎹簱鍖归厤 浣跨敤鏂版柟娉晎@link #getHISDataNew(String, Map)}
      */
+    @Deprecated
     @Transactional
     public AjaxResult getHISData(String type, Map<String, Object> params) {
         AjaxResult result = null;
@@ -138,7 +142,7 @@
             List<Map<String, String>> list = new ArrayList<>();
             for (Object resultDatum : resultData) {
                 JSONObject object = (JSONObject) resultDatum;
-                ajaxResult = save(object, type,null);
+                ajaxResult = save(object, type,null,JSONUtil.toJsonStr(params));
                 Map<String, String> map = new HashMap<>();
                 for (String key : object.keySet()) {
                     String defaultVal = object.get(key).toString();
@@ -170,7 +174,7 @@
             return AjaxResult.error().put("result", JSONUtil.parseObj(json));
         }
     }
-    
+
     @Transactional
     public AjaxResult getHISDataNew(String type, Map<String, Object> params){
         LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -190,7 +194,7 @@
             List<Map<String, String>> list = new ArrayList<>();
             for (Object resultDatum : resultData) {
                 JSONObject object = (JSONObject) resultDatum;
-                ajaxResult = save(object, type,hisApiConfig);
+                ajaxResult = save(object, type,hisApiConfig,JSONUtil.toJsonStr(params));
                 Map<String, String> map = new HashMap<>();
                 for (String key : object.keySet()) {
                     String defaultVal = object.get(key).toString();
@@ -214,7 +218,7 @@
      * @param code 鎺ュ彛浠g爜
      * @return 鎵ц鏄惁鎴愬姛
      */
-    public AjaxResult save(JSONObject object, String code,HisApiConfig hisApiConfig) {
+    public AjaxResult save(JSONObject object, String code,HisApiConfig hisApiConfig,String paramsJson) {
         Connection connection = getConnection();
         Boolean isExists = tabIsExists(connection, hisApiConfig.getTabName());
         if (null == isExists)
@@ -229,7 +233,7 @@
         }
         //鎻掑叆鏁版嵁
         try {
-            operationTable(object,connection,hisApiConfig);
+            operationTable(object,connection,hisApiConfig,paramsJson);
         } catch (SQLException e) {
             e.printStackTrace();
             return AjaxResult.error();
@@ -242,63 +246,24 @@
     }
 
     /**
-     * ResultData涓洪泦鍚�
-     * 鏍规嵁his鎺ュ彛杩斿洖鍊� 鎻掑叆鏁版嵁
-     * 濡傛灉娌℃湁琛ㄥ垯鍒涘缓琛� 鎺ュ彛澧炲姞浜嗗瓧娈靛垯涓鸿〃澧炲姞瀛楁
-     *
-     * @param code 鎺ュ彛浠g爜
-     * @return 鎵ц鏄惁鎴愬姛
-     */
-    public AjaxResult saveArray(String json, String code) {
-        code = code.toLowerCase();
-        JSONObject jsonObject = JSONUtil.parseObj(json);
-        JSONObject response = jsonObject.getJSONObject("Response");
-        String tabName = "ltkj_" + code;
-        if (response.getStr("ResultCode").equals("0")) {
-            JSONArray resultData = response.getJSONArray("ResultData");
-            Connection connection = getConnection();
-            for (Object resultDatum : resultData) {
-                JSONObject object = (JSONObject) resultDatum;
-                Boolean isExists = tabIsExists(connection, tabName);
-                if (null == isExists)
-                    return AjaxResult.error();
-                if (!isExists) {
-                    try {
-                        creatTable(object, tabName, connection);
-                    } catch (SQLException throwables) {
-                        throwables.printStackTrace();
-                        return AjaxResult.error();
-                    }
-                }
-                //鎻掑叆鏁版嵁
-                try {
-                    operationTable(object,connection,null);
-                } catch (SQLException throwables) {
-                    throwables.printStackTrace();
-                    return AjaxResult.error();
-                }
-            }
-            try {
-                if (connection != null)
-                    connection.close();
-            } catch (SQLException throwables) {
-            }
-        }
-        return AjaxResult.success();
-    }
-
-    /**
      * 鎿嶄綔琛�
      *
      * @param connection
      * @throws SQLException
      */
-    private void operationTable(JSONObject jsonObject, Connection connection,HisApiConfig hisApiConfig) throws SQLException {
+    private void operationTable(JSONObject jsonObject, Connection connection,HisApiConfig hisApiConfig,String paramsJson) throws SQLException {
         List<String> columns = getColumns(hisApiConfig.getTabName(), connection);
         ArrayList<String> responseColums = new ArrayList<>();
         for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
             String key = entry.getKey().trim().toLowerCase();
             responseColums.add(key);
+        }
+        Map<String, Object> beanToMap = BeanUtil.beanToMap(JSONUtil.parseObj(paramsJson));
+        Set<Map.Entry<String, Object>> entries = beanToMap.entrySet();
+        for (Map.Entry<String, Object> entry : entries) {
+            String key = "request_params_"+entry.getKey().trim().toLowerCase();
+            if (!columns.contains(key))
+                responseColums.add(key);
         }
         responseColums.removeAll(columns);
         if (!responseColums.isEmpty()) {
@@ -308,13 +273,9 @@
                 statement.executeUpdate(sql);
                 statement.close();
             }
-            if (hisApiConfig == null)
-            insertData(hisApiConfig, connection, jsonObject);
-            else insertDataNew(connection, jsonObject,hisApiConfig);
+            insertDataNew(connection, jsonObject,hisApiConfig,paramsJson);
         } else {
-            if (hisApiConfig == null)
-            insertData(hisApiConfig, connection, jsonObject);
-            else insertDataNew(connection, jsonObject,hisApiConfig);
+            insertDataNew(connection, jsonObject,hisApiConfig,paramsJson);
         }
     }
 
@@ -385,7 +346,7 @@
      * @param jsonObject
      * @throws SQLException
      */
-    private void insertDataNew(Connection connection, JSONObject jsonObject,HisApiConfig hisApiConfig) throws SQLException {
+    private void insertDataNew(Connection connection, JSONObject jsonObject,HisApiConfig hisApiConfig,String paramsJson) throws SQLException {
         List<String> primaryKesList = Arrays.stream(hisApiConfig.getPrimaryKeys().split(",")).map(String::toLowerCase).collect(Collectors.toList());
         StringBuilder deleteSqlBuilder = new StringBuilder();
         StringBuilder insertSqlBuilder = new StringBuilder();
@@ -424,8 +385,25 @@
 //        log.info("鍒犻櫎鏉℃暟 ->{}",i);
         statement.close();
         insertSqlBuilder.append("insert_time, ");
+        insertSqlBuilder.append("request_params, ");
+        DatabaseMetaData metaData = connection.getMetaData();
+        try (ResultSet resultSet = metaData.getColumns(null, null, hisApiConfig.getTabName(), "request_params")) {
+            if (!resultSet.next()){
+                String alterTableSQL = String.format("ALTER TABLE %s ADD COLUMN %s %s", hisApiConfig.getTabName(), "request_params", "text");
+                statement = connection.createStatement();
+                statement.execute(alterTableSQL);
+            }
+        }
         String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
         valueBuilder.append("'").append(time).append("'").append(", ");
+        valueBuilder.append("'").append(paramsJson).append("'").append(", ");
+        Map<String, Object> beanToMap = BeanUtil.beanToMap(JSONUtil.parseObj(paramsJson));
+        Set<Map.Entry<String, Object>> entries = beanToMap.entrySet();
+        for (Map.Entry<String, Object> entry : entries) {
+            String key = "request_params_"+entry.getKey().trim().toLowerCase();
+            insertSqlBuilder.append(key).append(", ");
+            valueBuilder.append("'").append(entry.getValue().toString()).append("', ");
+        }
         insertSqlBuilder.delete(insertSqlBuilder.length() - 2, insertSqlBuilder.length());
         valueBuilder.delete(valueBuilder.length() - 2, valueBuilder.length());
         insertSqlBuilder.append(") values (").append(valueBuilder).append(")");
@@ -541,6 +519,7 @@
             sql.append(key).append(" VARCHAR(200) null,");
         }
         sql.append("insert_time").append(" VARCHAR(200) null,");
+        sql.append("request_params").append(" text null COMMENT '璇锋眰鍙傛暟',");
         sql = new StringBuilder(sql.substring(0, sql.length() - 1));
         sql.append(");");
         Statement statement = connection.createStatement();

--
Gitblit v1.8.0