From 2c33fe8103adca1995c3f6669a7d4f66996707c5 Mon Sep 17 00:00:00 2001
From: 赵文轩 <1652863494@qq.com>
Date: 星期五, 07 六月 2024 09:49:36 +0800
Subject: [PATCH] 修改接口代码为数据库管理

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java |  163 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 112 insertions(+), 51 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 54e33de..7303bee 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
@@ -8,6 +8,7 @@
 import com.ltkj.common.core.domain.AjaxResult;
 import com.ltkj.hosp.domain.HisApiConfig;
 import com.ltkj.hosp.service.HisApiConfigService;
+import com.ltkj.web.wxUtils.HttpClientUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -21,6 +22,7 @@
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.Date;
+import java.util.stream.Collectors;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -32,9 +34,13 @@
 public class HisApiGetMethodService {
     // 鏁版嵁搴撻厤缃枃浠惰矾寰�
     private static final String CONFIG_PATH = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/ltkj_peis/ltkj-admin/src/main/resources/config.properties";
+//    private static final String CONFIG_PATH = "D:\\ltkjprojectconf\\config.properties";
     // 鏁版嵁搴撳悕
     private static String DB_NAME = "";
     private static String HIS_URL = "";
+    private static String DATA_URL = "";
+    private static String DATA_USER ="";
+    private static String DATA_PASS = "";
     @Autowired
     private HisApiMethodService controller;
     @Autowired
@@ -47,12 +53,17 @@
             e.printStackTrace();
         }
         try {
-            FileInputStream inputStream = new FileInputStream(CONFIG_PATH);
+            InputStreamReader reader = new InputStreamReader(new FileInputStream(CONFIG_PATH), StandardCharsets.UTF_8);
             Properties props = new Properties();
-            props.load(inputStream);
-            String url = props.getProperty("his_api_url");
+            props.load(reader);
+            String api_url = props.getProperty("his_api_url");
             String port = props.getProperty("his_api_port");
-            HIS_URL=url+":"+port+"/api/His/";
+            DB_NAME = props.getProperty("name");
+            DATA_URL = "jdbc:mysql://" + props.getProperty("ip") + ":" + props.getProperty("prot") + "/" + DB_NAME +
+                    "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8";
+            DATA_USER = props.getProperty("username");
+            DATA_PASS = props.getProperty("password");
+            HIS_URL=api_url+":"+port;
         } catch (IOException throwables) {
             throwables.printStackTrace();
         }
@@ -68,10 +79,6 @@
      */
     @Transactional
     public AjaxResult getHISData(String type, Map<String, Object> params) {
-//        LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-//        lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, type);
-//        HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
-
         AjaxResult result = null;
         // TODO 鍒涘缓琛� 寮勬垚鏁版嵁搴撳姩鎬佽幏鍙� 鎺ュ彛鍦板潃銆佷唬鐮併�佹槸鍚﹀垎椤点�佷富閿甶d銆佷富閿瓧娈�
         // TODO 浠�2.4.2鑾峰彇鍒版暟鎹� 鏍规嵁his_registration_id鍒犻櫎鏃ф暟鎹湪鎻掑叆鏂版暟鎹� 涓嬪眰涓氬姟鍧囦竴鏍锋牴鎹繑鍥炵殑JYBGID鍒犻櫎鏃ф暟鎹湪鎻掑叆鏂版暟鎹�
@@ -131,7 +138,7 @@
             List<Map<String, String>> list = new ArrayList<>();
             for (Object resultDatum : resultData) {
                 JSONObject object = (JSONObject) resultDatum;
-                ajaxResult = save(object, type);
+                ajaxResult = save(object, type,null);
                 Map<String, String> map = new HashMap<>();
                 for (String key : object.keySet()) {
                     String defaultVal = object.get(key).toString();
@@ -163,6 +170,35 @@
             return AjaxResult.error().put("result", JSONUtil.parseObj(json));
         }
     }
+    
+    @Transactional
+    public AjaxResult getHISDataNew(String type, Map<String, Object> params){
+        LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, type);
+        HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
+        String responseJson = HttpClientUtils.sendPost(HIS_URL + hisApiConfig.getApiUrl(), params);
+        JSONObject response = JSONUtil.parseObj(responseJson).getJSONObject("Response");
+        if (response.getStr("ResultCode").equals("0")) {
+            AjaxResult ajaxResult = AjaxResult.success();
+            JSONArray resultData = response.getJSONArray("ResultData");
+            List<Map<String, String>> list = new ArrayList<>();
+            for (Object resultDatum : resultData) {
+                JSONObject object = (JSONObject) resultDatum;
+                ajaxResult = save(object, type,hisApiConfig);
+                Map<String, String> map = new HashMap<>();
+                for (String key : object.keySet()) {
+                    String defaultVal = object.get(key).toString();
+                    String val = defaultVal.trim().replaceAll("\\s+", "");
+                    map.put(key, val);
+                }
+                list.add(map);
+            }
+            ajaxResult.put("data", list);
+            return ajaxResult;
+        } else {
+            return AjaxResult.error().put("result", JSONUtil.parseObj(responseJson));
+        }
+    }
 
     /**
      * ResultData涓哄璞�
@@ -172,41 +208,30 @@
      * @param code 鎺ュ彛浠g爜
      * @return 鎵ц鏄惁鎴愬姛
      */
-    public AjaxResult save(JSONObject object, 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")) {
-//            JSONObject  object = response.getJSONObject("ResultData");
+    public AjaxResult save(JSONObject object, String code,HisApiConfig hisApiConfig) {
         Connection connection = getConnection();
-//            for (Object resultDatum : resultData) {
-//                JSONObject object = (JSONObject) resultDatum;
-        Boolean isExists = tabIsExists(connection, tabName);
+        Boolean isExists = tabIsExists(connection, hisApiConfig.getTabName());
         if (null == isExists)
             return AjaxResult.error();
         if (!isExists) {
             try {
-                creatTable(object, tabName, connection);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
+                creatTable(object, hisApiConfig.getTabName(), connection);
+            } catch (SQLException e) {
+                e.printStackTrace();
                 return AjaxResult.error();
             }
         }
         //鎻掑叆鏁版嵁
         try {
-            operationTable(object, tabName, connection);
-        } catch (SQLException throwables) {
-            throwables.printStackTrace();
+            operationTable(object,connection,hisApiConfig);
+        } catch (SQLException e) {
+            e.printStackTrace();
             return AjaxResult.error();
         }
-//            }
         try {
-            if (connection != null)
-                connection.close();
-        } catch (SQLException throwables) {
+            connection.close();
+        } catch (SQLException ignored) {
         }
-//        }
         return AjaxResult.success();
     }
 
@@ -241,7 +266,7 @@
                 }
                 //鎻掑叆鏁版嵁
                 try {
-                    operationTable(object, tabName, connection);
+                    operationTable(object,connection,null);
                 } catch (SQLException throwables) {
                     throwables.printStackTrace();
                     return AjaxResult.error();
@@ -259,12 +284,11 @@
     /**
      * 鎿嶄綔琛�
      *
-     * @param tabName
      * @param connection
      * @throws SQLException
      */
-    private void operationTable(JSONObject jsonObject, String tabName, Connection connection) throws SQLException {
-        List<String> columns = getColumns(tabName, connection);
+    private void operationTable(JSONObject jsonObject, Connection connection,HisApiConfig hisApiConfig) 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();
@@ -273,14 +297,18 @@
         responseColums.removeAll(columns);
         if (!responseColums.isEmpty()) {
             for (String colum : responseColums) {
-                String sql = "alter table " + tabName + " add column " + colum + " VARCHAR(200) null";
+                String sql = "alter table " + hisApiConfig.getTabName() + " add column " + colum + " VARCHAR(200) null";
                 Statement statement = connection.createStatement();
                 statement.executeUpdate(sql);
                 statement.close();
             }
-            insertData(tabName, connection, jsonObject);
+            if (hisApiConfig == null)
+            insertData(hisApiConfig.getTabName(), connection, jsonObject);
+            else insertDataNew(connection, jsonObject,hisApiConfig);
         } else {
-            insertData(tabName, connection, jsonObject);
+            if (hisApiConfig == null)
+            insertData(hisApiConfig.getTabName(), connection, jsonObject);
+            else insertDataNew(connection, jsonObject,hisApiConfig);
         }
     }
 
@@ -325,6 +353,51 @@
         insertSqlBuilder.delete(insertSqlBuilder.length() - 2, insertSqlBuilder.length());
         valueBuilder.delete(valueBuilder.length() - 2, valueBuilder.length());
         insertSqlBuilder.append(") values (").append(valueBuilder).append(")");
+        // 鎻掑叆鏁版嵁
+        statement = connection.createStatement();
+        statement.execute(insertSqlBuilder.toString());
+        statement.close();
+    }
+
+    /**
+     * 鎻掑叆鏁版嵁
+     *
+     * @param connection
+     * @param jsonObject
+     * @throws SQLException
+     */
+    private void insertDataNew(Connection connection, JSONObject jsonObject,HisApiConfig hisApiConfig) throws SQLException {
+        List<String> primaryKesList = Arrays.stream(hisApiConfig.getPrimaryKeys().split(",")).map(String::toLowerCase).collect(Collectors.toList());
+        StringBuilder deleteSqlBuilder = new StringBuilder();
+        StringBuilder insertSqlBuilder = new StringBuilder();
+        StringBuilder valueBuilder = new StringBuilder();
+        insertSqlBuilder.append("insert into ").append(hisApiConfig.getTabName()).append(" (");
+        deleteSqlBuilder.append("delete from ").append(hisApiConfig.getTabName()).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+", "");
+            if (primaryKesList.contains(key)) {
+                deleteSqlBuilder.append(key).append(" = '").append(val).append("' and ");
+            }
+            insertSqlBuilder.append(key).append(", ");
+            valueBuilder.append("'").append(val).append("', ");
+        }
+        deleteSqlBuilder.delete(deleteSqlBuilder.length() - 5, deleteSqlBuilder.length());
+        Statement statement = connection.prepareStatement(deleteSqlBuilder.toString());
+//        log.info("鎵ц鍒犻櫎 ->{}",deleteSqlBuilder.toString());
+        int i = statement.executeUpdate(deleteSqlBuilder.toString());
+//        log.info("鍒犻櫎鏉℃暟 ->{}",i);
+        statement.close();
+        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());
+        insertSqlBuilder.append(") values (").append(valueBuilder).append(")");
+//        log.info("鎵ц鎻掑叆 ->{}",insertSqlBuilder.toString());
         // 鎻掑叆鏁版嵁
         statement = connection.createStatement();
         statement.execute(insertSqlBuilder.toString());
@@ -402,20 +475,8 @@
      */
     private Connection getConnection() {
         try {
-            FileInputStream inputStream = new FileInputStream(CONFIG_PATH);
-            InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
-            Properties props = new Properties();
-            props.load(reader);
-            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");
-            log.info("鏁版嵁搴撻厤缃俊鎭� ->鏁版嵁搴撳悕-{},user-{},password-{},url-{}", name, user, password, url);
-            Connection connection = DriverManager.getConnection(url, user, password);
-            DB_NAME = name;
-            return connection;
-        } catch (SQLException | IOException throwables) {
+            return DriverManager.getConnection(DATA_URL, DATA_USER, DATA_PASS);
+        } catch (SQLException throwables) {
             throwables.printStackTrace();
         }
         return null;

--
Gitblit v1.8.0