赵文轩
2024-06-06 767e254b0454d5cb2838629d5aece5d076720f4e
修改获取字段方式
1个文件已修改
135 ■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiGetMethodService.java 135 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/开发相关/代码/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   接口代码
     * @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;