From 55b629a7c4164876c1b92704ffc076eb8d059eaf Mon Sep 17 00:00:00 2001 From: 赵文轩 <1652863494@qq.com> Date: 星期四, 06 六月 2024 14:48:02 +0800 Subject: [PATCH] 增加接口代码 --- ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 215 insertions(+), 11 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 e11d986..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,12 +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.*; @@ -17,20 +23,195 @@ * @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) { + // Getoutaccountrecord 鑾峰彇闂ㄨ瘖缁撶畻璁板綍 + // Getoutpatientcostinfo 鑾峰彇闂ㄨ瘖鎮h�呰垂鐢ㄦ竻鍗曚俊鎭� + // Getlaburgentinfo 鑾峰彇鍗辨�ュ�间俊鎭� + // Getlabgermdetailinfo 鑾峰彇寰敓鐗╄嵂鏁忎俊鎭� + // Getlabgermrepinfo 鑾峰彇寰敓鐗╂姤鍛婅褰曚俊鎭� + // Getlabreportinfo 鑾峰彇妫�楠屾姤鍛婅褰曚俊鎭� + // Getlabapplyinfo 鑾峰彇妫�楠岀敵璇蜂俊鎭� + // Getexamurgentinfo 鑾峰彇妫�鏌ュ嵄鎬ュ�间俊鎭� + // 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); + break; + case "Getoutpatientcostinfo": + result = controller.Getoutpatientcostinfo(params); + result.put("limit", true); + break; + case "Getlaburgentinfo": + result = controller.Getlaburgentinfo(params); + result.put("limit", false); + break; + case "Getlabgermdetailinfo": + result = controller.Getlabgermdetailinfo(params); + result.put("limit", false); + break; + case "Getlabgermrepinfo": + result = controller.Getlabgermrepinfo(params); + result.put("limit", false); + break; + case "Getlabreportinfo": + result = controller.Getlabreportinfo(params); + result.put("limit", true); + break; + case "Getlabapplyinfo": + result = controller.Getlabapplyinfo(params); + result.put("limit", false); + break; + case "Getexamurgentinfo": + result = controller.Getexamurgentinfo(params); + result.put("limit", true); + break; + case "Getexamreportinfo": + result = controller.Getexamreportinfo(params); + result.put("limit", true); + break; + case "Getexamapplyinfo": + result = controller.Getexamapplyinfo(params); + 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")) { + AjaxResult ajaxResult = AjaxResult.success(); + if ((boolean) result.get("limit")) { + ajaxResult = saveArray(json, 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); + } + return ajaxResult; + } else { + return AjaxResult.error().put("result", JSONUtil.parseObj(json)); + } + } + + /** + * ResultData涓哄璞� * 鏍规嵁his鎺ュ彛杩斿洖鍊� 鎻掑叆鏁版嵁 * 濡傛灉娌℃湁琛ㄥ垯鍒涘缓琛� 鎺ュ彛澧炲姞浜嗗瓧娈靛垯涓鸿〃澧炲姞瀛楁 - * @param json 璇锋眰杩斿洖json + * * @param code 鎺ュ彛浠g爜 * @return 鎵ц鏄惁鎴愬姛 */ - public AjaxResult save(String json, String code) { + 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"); + 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, tabName, connection); + } catch (SQLException throwables) { + throwables.printStackTrace(); + return AjaxResult.error(); + } +// } + try { + if (connection != null) + connection.close(); + } catch (SQLException throwables) { + } +// } + return AjaxResult.success(); + } + + /** + * 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"); @@ -79,12 +260,13 @@ 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()) { 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"; Statement statement = connection.createStatement(); statement.executeUpdate(sql); statement.close(); @@ -106,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()); @@ -118,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(); } @@ -153,9 +354,10 @@ 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(" 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(200) null,"); sql = new StringBuilder(sql.substring(0, sql.length() - 1)); sql.append(");"); Statement statement = connection.createStatement(); @@ -194,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