From b2c12f7ca8f90c415c78a22e5674616f378a4aa5 Mon Sep 17 00:00:00 2001 From: 赵文轩 <1652863494@qq.com> Date: 星期五, 07 六月 2024 17:33:17 +0800 Subject: [PATCH] 获取结果生成pdf --- ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java | 265 ++++++++++++++++++++++++++++++++++------------------- 1 files changed, 170 insertions(+), 95 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 3a4b0f8..b4e8242 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 @@ -4,10 +4,15 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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; +import org.springframework.transaction.annotation.Transactional; import java.io.FileInputStream; import java.io.IOException; @@ -17,6 +22,7 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.Date; +import java.util.stream.Collectors; /** * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 @@ -27,16 +33,39 @@ @Component 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 final String CONFIG_PATH = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/ltkj_peis/ltkj-admin/src/main/resources/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 + private HisApiConfigService hisApiConfigService; static { try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + try { + InputStreamReader reader = new InputStreamReader(new FileInputStream(CONFIG_PATH), StandardCharsets.UTF_8); + Properties props = new Properties(); + props.load(reader); + String api_url = props.getProperty("his_api_url"); + String port = props.getProperty("his_api_port"); + 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(); } } @@ -48,105 +77,126 @@ * @param params 璇锋眰鍙傛暟 * @return */ + @Transactional 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 鍒涘缓琛� 寮勬垚鏁版嵁搴撳姩鎬佽幏鍙� 鎺ュ彛鍦板潃銆佷唬鐮併�佹槸鍚﹀垎椤点�佷富閿甶d銆佷富閿瓧娈� // 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); +// 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); +// 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; + ajaxResult = save(object, type,null); + 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); } - ajaxResult.put("data", list); - } else { - // 浠ラ泦鍚堣繑鍥� - JSONArray resultData = response.getJSONArray("ResultData"); - List<JSONObject> list = JSONUtil.toList(resultData, JSONObject.class); - ArrayList<Map<String, String>> maps = new ArrayList<>(); - for (JSONObject data : list) { - 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); - } - maps.add(map1); - } - ajaxResult.put("data", maps); + list.add(map); } + ajaxResult.put("data", list); +// } else { +// // 浠ラ泦鍚堣繑鍥� +// JSONArray resultData = response.getJSONArray("ResultData"); +// List<JSONObject> list = JSONUtil.toList(resultData, JSONObject.class); +// ArrayList<Map<String, String>> maps = new ArrayList<>(); +// for (JSONObject data : list) { +// 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); +// } +// maps.add(map1); +// } +// ajaxResult.put("data", maps); +// } return ajaxResult; } else { 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)); } } @@ -158,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(); } @@ -227,7 +266,7 @@ } //鎻掑叆鏁版嵁 try { - operationTable(object, tabName, connection); + operationTable(object,connection,null); } catch (SQLException throwables) { throwables.printStackTrace(); return AjaxResult.error(); @@ -245,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(); @@ -259,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); } } @@ -311,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()); @@ -388,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