From 767e254b0454d5cb2838629d5aece5d076720f4e Mon Sep 17 00:00:00 2001
From: 赵文轩 <1652863494@qq.com>
Date: 星期四, 06 六月 2024 14:46:53 +0800
Subject: [PATCH] 修改获取字段方式

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java |  135 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 100 insertions(+), 35 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 319645b..057e28e 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,14 +1,18 @@
 package com.ltkj.web.controller.his;
 
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.ltkj.common.core.domain.AjaxResult;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import java.sql.*;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -19,19 +23,29 @@
  * @Author: zhaowenxuan
  * @Date: 2024/5/31 14:38
  */
+@Slf4j
 @Component
 public class HisApiGetMethodService {
     // 鏁版嵁搴撻厤缃枃浠惰矾寰�
-    private static final String CONFIG_PATH = "D:\\ltkjprojectconf\\config.properties";
+    private static final String CONFIG_PATH = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/ltkj_peis/ltkj-admin/src/main/resources/config.properties";
     // 鏁版嵁搴撳悕
     private static String DB_NAME = "";
     @Autowired
     private HisApiMethodService controller;
 
+    static {
+        try {
+            Class.forName("com.mysql.cj.jdbc.Driver");
+        } catch (ClassNotFoundException e) {
+        }
+    }
+
 
     /**
-     * 鑾峰彇
+     * 鑾峰彇鏁版嵁
      *
+     * @param type   鎺ュ彛浠g爜
+     * @param params 璇锋眰鍙傛暟
      * @return
      */
     public AjaxResult getHISData(String type, Map<String, Object> params) {
@@ -46,72 +60,100 @@
         // Getexamreportinfo 鑾峰彇妫�鏌ユ姤鍛婁俊鎭�
         // Getexamapplyinfo 鑾峰彇妫�鏌ョ敵璇蜂俊鎭�
         AjaxResult result = null;
+        // TODO 鍒涘缓琛� 寮勬垚鏁版嵁搴撳姩鎬佽幏鍙� 鎺ュ彛鍦板潃銆佷唬鐮併�佹槸鍚﹀垎椤�
+        // TODO 浠�2.4.2鑾峰彇鍒版暟鎹� 鏍规嵁his_registration_id鍒犻櫎鏃ф暟鎹湪鎻掑叆鏂版暟鎹� 涓嬪眰涓氬姟鍧囦竴鏍锋牴鎹繑鍥炵殑JYBGID鍒犻櫎鏃ф暟鎹湪鎻掑叆鏂版暟鎹�
         switch (type) {
             case "Getoutaccountrecord":
                 result = controller.Getoutaccountrecord(params);
-                result.put("limit",true);
+                result.put("limit", true);
                 break;
             case "Getoutpatientcostinfo":
                 result = controller.Getoutpatientcostinfo(params);
-                result.put("limit",true);
+                result.put("limit", true);
                 break;
             case "Getlaburgentinfo":
                 result = controller.Getlaburgentinfo(params);
-                result.put("limit",false);
+                result.put("limit", false);
                 break;
             case "Getlabgermdetailinfo":
                 result = controller.Getlabgermdetailinfo(params);
-                result.put("limit",false);
+                result.put("limit", false);
                 break;
             case "Getlabgermrepinfo":
                 result = controller.Getlabgermrepinfo(params);
-                result.put("limit",false);
+                result.put("limit", false);
                 break;
             case "Getlabreportinfo":
                 result = controller.Getlabreportinfo(params);
-                result.put("limit",true);
+                result.put("limit", true);
                 break;
             case "Getlabapplyinfo":
                 result = controller.Getlabapplyinfo(params);
-                result.put("limit",false);
+                result.put("limit", false);
                 break;
             case "Getexamurgentinfo":
                 result = controller.Getexamurgentinfo(params);
-                result.put("limit",true);
+                result.put("limit", true);
                 break;
             case "Getexamreportinfo":
                 result = controller.Getexamreportinfo(params);
-                result.put("limit",true);
+                result.put("limit", true);
                 break;
             case "Getexamapplyinfo":
                 result = controller.Getexamapplyinfo(params);
-                result.put("limit",false);
+                result.put("limit", false);
+                break;
+            case "Getlabdetailinfo":
+                result = controller.Getlabdetailinfo(params);
+                result.put("limit", false);
                 break;
         }
         String json = result.get("data").toString();
         JSONObject response = JSONUtil.parseObj(json).getJSONObject("Response");
         if (response.getStr("ResultCode").toString().equals("0")) {
-            // TODO 濡傛灉涓嶅甫鍒嗛〉鍙傛暟 杩斿洖鐨勬暟鎹兘鏄璞� 鍒欏湪杩欓噷閫氳繃result.get("limit")杩涜鍒ゆ柇 澶勭悊瀵硅薄鎴栭泦鍚堝苟杩斿洖
-            JSONArray resultData = response.getJSONArray("ResultData");
-            List<Map<String, Object>> list = new ArrayList<>();
-            for (Object resultDatum : resultData) {
-                JSONObject object = (JSONObject) resultDatum;
-                Map<String, Object> map = new HashMap<>();
-                for (String key : object.keySet()) {
-                    map.put(key, object.get(key));
-                }
-                list.add(map);
-            }
-            AjaxResult ajaxResult = null;
-            if ((boolean)result.get("limit")){
+            AjaxResult ajaxResult = AjaxResult.success();
+            if ((boolean) result.get("limit")) {
                 ajaxResult = saveArray(json, type);
-            }else {
-                ajaxResult = save(response.getJSONObject("ResultData"),type);
+                JSONArray resultData = response.getJSONArray("ResultData");
+                List<Map<String, String>> list = new ArrayList<>();
+                for (Object resultDatum : resultData) {
+                    JSONObject object = (JSONObject) resultDatum;
+                    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);
+            } else {
+                // TODO 濡傛灉涓嶅甫鍒嗛〉鍙傛暟 杩斿洖鐨勬暟鎹兘鏄璞� 鍒欏湪杩欓噷閫氳繃result.get("limit")杩涜鍒ゆ柇 澶勭悊瀵硅薄鎴栭泦鍚堝苟杩斿洖
+                // TODO 涓嶇‘瀹� ResultData 鐩存帴鏄璞℃垨鏄泦鍚堜腑涓�涓璞$殑褰㈠紡
+                // 鐩存帴鏄璞$殑鏍煎紡鑾峰彇
+//                ajaxResult = save(response.getJSONObject("ResultData"),type);
+//                JSONObject resultData = response.getJSONObject("ResultData");
+//                HashMap<String, Object> map = new HashMap<>();
+//                for (String key : resultData.keySet()) {
+//                    map.put(key, resultData.get(key));
+//                }
+//                ajaxResult.put("data",map);
+                // 浠ラ泦鍚堣繑鍥�
+                JSONObject data = (JSONObject) response.getJSONArray("ResultData").get(0);
+                ajaxResult = save(data, type);
+                HashMap<String, String> map1 = new HashMap<>();
+                for (String key : data.keySet()) {
+                    String defaultVal = data.get(key).toString();
+                    String val = defaultVal.trim().replaceAll("\\s+", "");
+                    map1.put(key, val);
+                }
+                ArrayList<Map<String, String>> maps = new ArrayList<>();
+                maps.add(map1);
+                ajaxResult.put("data", maps);
             }
-            ajaxResult.put("data", list);
             return ajaxResult;
         } else {
-            return AjaxResult.error();
+            return AjaxResult.error().put("result", JSONUtil.parseObj(json));
         }
     }
 
@@ -218,7 +260,8 @@
         List<String> columns = getColumns(tabName, connection);
         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);
         }
         responseColums.removeAll(columns);
         if (!responseColums.isEmpty()) {
@@ -245,10 +288,29 @@
     private void insertData(String tabName, Connection connection, JSONObject jsonObject) throws SQLException {
         StringBuilder insertSqlBuilder = new StringBuilder();
         StringBuilder valueBuilder = new StringBuilder();
+        StringBuilder selectSqlBuilder = new StringBuilder();
         insertSqlBuilder.append("insert into ").append(tabName).append(" (");
+        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("', ");
+            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+", "");
+            insertSqlBuilder.append(key).append(", ");
+            valueBuilder.append("'").append(val).append("', ");
+            selectSqlBuilder.append(key).append(" = '").append(val).append("' and ");
+        }
+        selectSqlBuilder.delete(selectSqlBuilder.length() - 5, selectSqlBuilder.length());
+        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)) {
+//            log.info("鏁版嵁瀛樺湪涓嶉渶瑕佹彃鍏� {}", jsonObject);
+            return;
         }
         insertSqlBuilder.append("insert_time, ");
         String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
@@ -257,7 +319,7 @@
         valueBuilder.delete(valueBuilder.length() - 2, valueBuilder.length());
         insertSqlBuilder.append(") values (").append(valueBuilder).append(")");
         // 鎻掑叆鏁版嵁
-        Statement statement = connection.createStatement();
+        statement = connection.createStatement();
         statement.execute(insertSqlBuilder.toString());
         statement.close();
     }
@@ -292,7 +354,8 @@
     private void creatTable(JSONObject data, String tabName, Connection connection) throws SQLException {
         StringBuilder sql = new StringBuilder("CREATE TABLE " + tabName + " (");
         for (Map.Entry<String, Object> entry : data.entrySet()) {
-            sql.append(entry.getKey()).append(" VARCHAR(200) null,");
+            String key = entry.getKey().trim().toLowerCase();
+            sql.append(key).append(" VARCHAR(200) null,");
         }
         sql.append("insert_time").append(" VARCHAR(200) null,");
         sql = new StringBuilder(sql.substring(0, sql.length() - 1));
@@ -333,13 +396,15 @@
     private Connection getConnection() {
         try {
             FileInputStream inputStream = new FileInputStream(CONFIG_PATH);
+            InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
             Properties props = new Properties();
-            props.load(inputStream);
+            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;

--
Gitblit v1.8.0