From 1e91dc33009cfdc951b2642877f40280b51c3089 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期五, 28 二月 2025 15:17:01 +0800 Subject: [PATCH] zjh20250228 --- ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java | 166 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 129 insertions(+), 37 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 88568db..9aa67d2 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 @@ -7,7 +7,9 @@ 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.ApiConfig; import com.ltkj.hosp.domain.HisApiConfig; +import com.ltkj.hosp.service.ApiConfigService; import com.ltkj.hosp.service.HisApiConfigService; import com.ltkj.web.wxUtils.HttpClientUtils; import lombok.extern.slf4j.Slf4j; @@ -46,10 +48,14 @@ private static String DATA_URL = ""; private static String DATA_USER =""; private static String DATA_PASS = ""; + private static String LIS_URL = ""; + private static String PACS_URL = ""; @Autowired private HisApiMethodService controller; @Autowired private HisApiConfigService hisApiConfigService; + @Autowired + private ApiConfigService apiConfigService; private static String url; @@ -70,6 +76,12 @@ String apiUrl = props.getProperty("his_api_url"); String apiPort = props.getProperty("his_api_port"); HIS_URL = apiUrl+":"+apiPort; + String lisApiUrl = props.getProperty("lis_api_url"); + String lisApiPort = props.getProperty("lis_api_port"); + LIS_URL = lisApiUrl+":"+lisApiPort; + String pacsApiUrl = props.getProperty("pacs_api_url"); + String pacsApiPort = props.getProperty("pacs_api_port"); + PACS_URL = pacsApiUrl+":"+pacsApiPort; } catch (IOException e) { System.out.println("鍒濆鍖栨暟鎹簱寮傚父 ->"+e.getMessage()); } @@ -205,33 +217,97 @@ // @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); - Integer isResponse = hisApiConfig.getIsResponse(); + try { + LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, type); + HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper); + String responseJson = HttpClientUtils.sendPost(HIS_URL + hisApiConfig.getApiUrl(), params); + Integer isResponse = hisApiConfig.getIsResponse(); + JSONObject response = null; + if (isResponse == 1) { + response = JSONUtil.parseObj(responseJson).getJSONObject("Response"); + } else{ + response = JSONUtil.parseObj(responseJson); + } + if (response.getStr(hisApiConfig.getResultCodeKey()).equals("0")) { + AjaxResult ajaxResult = AjaxResult.success(); + JSONArray resultData = response.getJSONArray(hisApiConfig.getResultDataKey()); + List<Map<String, String>> list = new ArrayList<>(); + for (Object resultDatum : resultData) { + JSONObject object = (JSONObject) resultDatum; + 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(); + 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)); + } + } catch (Exception e) { +// throw new RuntimeException(e); + log.error(String.valueOf(e)); + return AjaxResult.error(); + } + } + + public AjaxResult getLisData(String type,Map<String ,Object> params){ + LambdaQueryWrapper<ApiConfig> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ApiConfig::getType,"lis"); + wrapper.eq(ApiConfig::getApiMethod,type); + return getAjaxResult("lis", params, wrapper); + } + + public AjaxResult getPacsData(String type,Map<String ,Object> params){ + LambdaQueryWrapper<ApiConfig> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ApiConfig::getType,"pacs"); + wrapper.eq(ApiConfig::getApiMethod,type); + return getAjaxResult("pacs", params, wrapper); + } + + private AjaxResult getAjaxResult(String type, Map<String, Object> params, LambdaQueryWrapper<ApiConfig> wrapper) { + ApiConfig apiConfig = apiConfigService.getOne(wrapper); + String responseJson; + switch (type){ + case "pacs": + responseJson = HttpClientUtils.sendPost(PACS_URL + apiConfig.getApiUrl(), params); + break; + default: + responseJson = HttpClientUtils.sendPost(LIS_URL + apiConfig.getApiUrl(), params); + break; + } + Integer isResponse = apiConfig.getIsResponse(); JSONObject response = null; if (isResponse == 1) { response = JSONUtil.parseObj(responseJson).getJSONObject("Response"); } else{ response = JSONUtil.parseObj(responseJson); } - if (response.getStr(hisApiConfig.getResultCodeKey()).equals("0")) { + if (response.getStr(apiConfig.getResultCodeKey()).equals("1")) { AjaxResult ajaxResult = AjaxResult.success(); - JSONArray resultData = response.getJSONArray(hisApiConfig.getResultDataKey()); - List<Map<String, String>> list = new ArrayList<>(); - for (Object resultDatum : resultData) { - JSONObject object = (JSONObject) resultDatum; - 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(); - String val = defaultVal.trim().replaceAll("\\s+", ""); - map.put(key, val); + if (response.getStr(apiConfig.getResultDataKey()) != null && StrUtil.isNotBlank(response.getStr(apiConfig.getResultDataKey()))){ + JSONArray resultData = response.getJSONArray(apiConfig.getResultDataKey()); + List<Map<String, String>> list = new ArrayList<>(); + for (Object resultDatum : resultData) { + JSONObject object = (JSONObject) resultDatum; + ajaxResult = save(object, type,apiConfig,JSONUtil.toJsonStr(params)); + 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); } - list.add(map); + ajaxResult.put("data", list); + }else { + ajaxResult.put("data",response); } - ajaxResult.put("data", list); return ajaxResult; } else { return AjaxResult.error().put("result", JSONUtil.parseObj(responseJson)); @@ -246,14 +322,18 @@ * @param code 鎺ュ彛浠g爜 * @return 鎵ц鏄惁鎴愬姛 */ - public AjaxResult save(JSONObject object, String code,HisApiConfig hisApiConfig,String paramsJson) { + public AjaxResult save(JSONObject object, String code,Object hisApiConfig,String paramsJson) { + String tabName = ""; + if (code.equals("lis") || code.equals("pacs")) + tabName = ((ApiConfig)hisApiConfig).getTabName(); + else tabName = ((HisApiConfig) hisApiConfig).getTabName(); Connection connection = getConnection(); - Boolean isExists = tabIsExists(connection, hisApiConfig.getTabName()); + Boolean isExists = tabIsExists(connection, tabName); if (null == isExists) return AjaxResult.error(); if (!isExists) { try { - creatTable(object, hisApiConfig.getTabName(), connection); + creatTable(object, tabName, connection); } catch (SQLException e) { e.printStackTrace(); return AjaxResult.error(); @@ -261,7 +341,7 @@ } //鎻掑叆鏁版嵁 try { - operationTable(object,connection,hisApiConfig,paramsJson); + operationTable(object,connection,hisApiConfig,paramsJson,code); } catch (SQLException e) { e.printStackTrace(); return AjaxResult.error(); @@ -280,8 +360,12 @@ * @param connection * @throws SQLException */ - private void operationTable(JSONObject jsonObject, Connection connection,HisApiConfig hisApiConfig,String paramsJson) throws SQLException { - List<String> columns = getColumns(hisApiConfig.getTabName(), connection); + private void operationTable(JSONObject jsonObject, Connection connection,Object hisApiConfig,String paramsJson,String code) throws SQLException { + String tabName = ""; + if (code.equals("lis") || code.equals("pacs")) + tabName = ((ApiConfig)hisApiConfig).getTabName(); + else tabName = ((HisApiConfig) hisApiConfig).getTabName(); + List<String> columns = getColumns(tabName, connection); ArrayList<String> responseColums = new ArrayList<>(); for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { String key = entry.getKey().trim().toLowerCase(); @@ -297,14 +381,14 @@ responseColums.removeAll(columns); if (!responseColums.isEmpty()) { for (String colum : responseColums) { - String sql = "alter table " + hisApiConfig.getTabName() + " add column " + colum + " VARCHAR(200) null"; + String sql = "alter table " + tabName + " add column " + colum + " VARCHAR(200) null"; Statement statement = connection.createStatement(); statement.executeUpdate(sql); statement.close(); } - insertDataNew(connection, jsonObject,hisApiConfig,paramsJson); + insertDataNew(connection, jsonObject,hisApiConfig,paramsJson,code); } else { - insertDataNew(connection, jsonObject,hisApiConfig,paramsJson); + insertDataNew(connection, jsonObject,hisApiConfig,paramsJson,code); } } @@ -376,13 +460,21 @@ * @throws SQLException */ @Transactional - 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()); + public void insertDataNew(Connection connection, JSONObject jsonObject, Object hisApiConfig, String paramsJson, String code) throws SQLException { + String tabName = ""; + List<String> primaryKesList; + if (code.equals("lis") || code.equals("pacs")) { + tabName = ((ApiConfig) hisApiConfig).getTabName(); + primaryKesList = Arrays.stream(((ApiConfig)hisApiConfig).getPrimaryKeys().split(",")).map(String::toLowerCase).collect(Collectors.toList()); + } else { + tabName = ((HisApiConfig) hisApiConfig).getTabName(); + primaryKesList = Arrays.stream(((HisApiConfig)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 "); + insertSqlBuilder.append("insert into ").append(tabName).append(" ("); + deleteSqlBuilder.append("delete from ").append(tabName).append(" where "); for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { String defaultVal = entry.getValue().toString(); String key = entry.getKey().trim().toLowerCase(); @@ -395,15 +487,15 @@ insertSqlBuilder.append(key).append(", "); valueBuilder.append("'").append(val).append("', "); // 鍒ゆ柇鏁版嵁鏄惁澶т簬瀛楁鍒涘缓鍊煎鏋滃ぇ浜庡垯澧炲姞瓒呰繃闃堝�煎垯浣跨敤text - String columnType = getColumnType(connection, hisApiConfig.getTabName(), key); + String columnType = getColumnType(connection, tabName, key); if (!"text".equalsIgnoreCase(columnType)){ - int currentSize = getColumnSize(connection, hisApiConfig.getTabName(), key); + int currentSize = getColumnSize(connection, tabName, key); if (currentSize < val.length()){ if (val.length()>= 1000){ - alterColumnTypeToText(connection, hisApiConfig.getTabName(), key); + alterColumnTypeToText(connection, tabName, key); }else { int newSize = ((val.length() / 100) + 1) * 100; - alterColumnSize(connection, hisApiConfig.getTabName(), key, newSize); + alterColumnSize(connection, tabName, key, newSize); } } } @@ -417,9 +509,9 @@ insertSqlBuilder.append("insert_time, "); insertSqlBuilder.append("request_params, "); DatabaseMetaData metaData = connection.getMetaData(); - try (ResultSet resultSet = metaData.getColumns(null, null, hisApiConfig.getTabName(), "request_params")) { + try (ResultSet resultSet = metaData.getColumns(null, null, tabName, "request_params")) { if (!resultSet.next()){ - String alterTableSQL = String.format("ALTER TABLE %s ADD COLUMN %s %s", hisApiConfig.getTabName(), "request_params", "text"); + String alterTableSQL = String.format("ALTER TABLE %s ADD COLUMN %s %s", tabName, "request_params", "text"); statement = connection.createStatement(); statement.execute(alterTableSQL); } -- Gitblit v1.8.0