Просмотр исходного кода

川北医院复检样本登记接口

huangws 8 месяцев назад
Родитель
Сommit
8f74142d34

+ 3 - 3
GetDataByView/src/main/java/com/jyxt/getdatabyview/GetDataByViewApplication.java

@@ -45,9 +45,9 @@ public class GetDataByViewApplication implements CommandLineRunner{
         log.info("<-------------new turn start...------------->");
         ipbpsRepository.getBasicData();
         for(String lisTable : lisTableList){
-            List<Map<String, Object>> rerunTestList = lisViewRepository.query(lisTable);
-            if(rerunTestList != null){
-                handleData.startHandleData(rerunTestList);
+            List<Map<String, Object>> retList = lisViewRepository.query(lisTable);
+            if(retList != null){
+                handleData.startHandleData(retList,lisTable);
             }
 
         }

+ 30 - 14
GetDataByView/src/main/java/com/jyxt/getdatabyview/HandleData.java

@@ -43,42 +43,58 @@ public class HandleData {
     }
 
 
-    public void startHandleData(List<Map<String, Object>> rerunTestList) {
+    public void startHandleData(List<Map<String, Object>> retList, String lisTable) {
         List<Map<String, Object>> existList = ibpsRepository.qryExistData();
-        rerunTestList = cleanExistData(rerunTestList,existList);
-        if (rerunTestList.size() > 0) {
+        retList = cleanExistData(retList,existList);
+        log.info("get data:"+retList.size());
+        if (retList.size() > 0) {
             String fieldName = null;
             String fieldValue = null;
             List<Map<String, Object>> insertList = new ArrayList<Map<String, Object>>();
-            for (Map entityMap : rerunTestList) {
+            for (Map entityMap : retList) {
                 Map<String, Object> insertMap = new HashMap<>();
                 for (Object entry : entityMap.keySet()) {
                     fieldName = null;
                     fieldValue = null;
                     fieldName = RerunSampleField.get(entry.toString());
                     Object value = entityMap.get(entry.toString());
-                    fieldValue = value != null ? value.toString() : null;
+                    fieldValue = value != null ? value.toString() : "";
                     if (fieldName != null) {
                         insertMap.put(fieldName, fieldValue);
                     }
                 }
                 //补充其他字段信息
-                insertMap.put("id_", entityMap.get("SAMPLECODE")+"_"+entityMap.get("ITEMCODE"));
+                insertMap.put("id_", UUID.randomUUID().toString());
                 insertMap.put("shi_fou_guo_shen_", "已完成");
-                String userInfo = ibpsRepository.getUserInfoByName(String.valueOf(entityMap.get("CREATEBY")));
-                if (userInfo.split("\\^")[0].equals("-1")) {
+                String createUserInfo = ibpsRepository.getUserInfoByName(String.valueOf(entityMap.get("CREATEBY")));
+                String auditUserInfo = ibpsRepository.getUserInfoByName(String.valueOf(entityMap.get("AUDITUSER")));
+                if (createUserInfo.split("\\^")[0].equals("-1")) {
+                    log.info("error userInfo,skip to insert:"+createUserInfo);
+                    continue;
+                }
+                if (auditUserInfo.split("\\^")[0].equals("-1")) {
+                    log.info("error auditUserInfo,skip to insert:"+auditUserInfo);
                     continue;
                 }
                 LocalDateTime currentDateTime = LocalDateTime.now();
                 DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                 String formattedDateTime = currentDateTime.format(formatter2);
-                insertMap.put("create_by_", userInfo.split("@")[0]);
+                insertMap.put("create_by_", createUserInfo.trim().split("@")[0]);
                 insertMap.put("create_time_", Timestamp.valueOf(String.valueOf(formattedDateTime)));
+                insertMap.put("bian_zhi_ren_", createUserInfo.trim().split("@")[0]);
+                insertMap.put("jian_yan_zhe_", auditUserInfo.trim().split("@")[0]);
+                insertMap.put("jian_yan_yuan_", auditUserInfo.trim().split("@")[0]);
                 insertMap.put("ri_qi_", String.valueOf(entityMap.get("CREATETIME")).split(" ")[0]);
-                insertMap.put("bian_zhi_bu_men_", userInfo.split("@")[1]);
+                insertMap.put("bian_zhi_bu_men_", createUserInfo.split("@")[1]);
                 insertList.add(insertMap);
             }
-            //ibpsRepository.saveToTable(insertList, "t_fjbbjlb");
+//            insertList = lisViewRepository.query2("ss");
+            String res = ibpsRepository.saveToTable(insertList, "t_fjbbjlb");
+            if(res.equals("success")){
+                log.info("success insert:"+insertList.size()+" datas");
+            } else {
+                log.info("fail insert");
+            }
 
         }
 
@@ -89,18 +105,18 @@ public class HandleData {
         // 1. 创建Set存储existList中所有id_的值(转换为字符串形式)
         Set<String> existIdSet = new HashSet<>();
         for (Map<String, Object> existMap : existList) {
-            Object idObj = existMap.get("id_");
+            Object idObj = existMap.get("biao_ben_bian_hao");
             existIdSet.add(idObj == null ? null : idObj.toString());
         }
 
         // 2. 过滤rerunTestList:只保留id不在existIdSet中的元素
         List<Map<String, Object>> resultList = new ArrayList<>();
         for (Map<String, Object> testMap : rerunTestList) {
-            Object idObj = testMap.get("SAMPLECODE")+"_"+testMap.get("ITEMCODE");
+            Object idObj = testMap.get("SAMPLECODE");
 
             String idStr = idObj == null ? null : idObj.toString();
 
-            // 如果当前id不在existIdSet中,则保留
+            // 如果当前条码不在existIdSet中,则保留
             if (!existIdSet.contains(idStr)) {
                 resultList.add(testMap);
             }

+ 113 - 5
GetDataByView/src/main/java/com/jyxt/getdatabyview/view/repository/IBPSRepository.java

@@ -5,11 +5,17 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.jdbc.core.BatchPreparedStatementSetter;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Repository;
 
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -22,8 +28,11 @@ public class IBPSRepository {
 
     private static final Logger log = LoggerFactory.getLogger(IBPSRepository.class);
 
-    @Value("${config.insertMode}")
-    private String insertMode;
+    @Value("${config.qryMode}")
+    private String qryMode;
+
+    public static List<Map<String, Object>> userList = new ArrayList<>();
+    public static List<Map<String, Object>> posiList = new ArrayList<>();
 
     public List<Map<String, Object>> qryExistData(){
         List<Map<String, Object>> existList = null;
@@ -33,11 +42,110 @@ public class IBPSRepository {
         return existList;
     }
 
-    public String getUserInfoByName(String UserName){
 
-        return "";
+    public String saveToTable(List<Map<String, Object>> inputList, String TableName) {
+        String retValue = "fail";
+        if (inputList == null || inputList.isEmpty() || TableName == null || TableName.trim().isEmpty()) {
+            return retValue;
+        }
+        try {
+            // 获取第一个Map的字段名作为表字段
+            Map<String, Object> firstRow = inputList.get(0);
+            String columns = String.join(",", firstRow.keySet());
+
+            // 构建占位符部分 (?,?,...)
+            String placeholders = String.join(",", Collections.nCopies(firstRow.size(), "?"));
+
+            // 构建完整SQL语句
+            String sql = String.format("INSERT INTO %s (%s) VALUES (%s)", TableName, columns, placeholders);
+            log.info("executing sql: " + sql);
+            if(qryMode.equals("0")){
+                log.info("ready to insert:");
+                // 批量执行
+                jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
+                    @Override
+                    public void setValues(PreparedStatement ps, int i) throws SQLException {
+                        Map<String, Object> row = inputList.get(i);
+                        int index = 1;
+                        for (Map.Entry<String, Object> entry : row.entrySet()) {
+                            String key = entry.getKey();
+                            Object value = entry.getValue();
+
+                            if (key.contains("Time") && value instanceof Timestamp) {
+                                ps.setTimestamp(index++, (Timestamp) value);
+                            } else {
+                                ps.setString(index++, value.toString());
+                            }
+                        }
+                    }
+                    @Override
+                    public int getBatchSize() {
+                        return inputList.size();
+                    }
+                });
+            }
+            else{
+                log.info("------qry mode,pretent to insert-------");
+                inputList.forEach(map -> {
+                    StringBuilder sb = new StringBuilder();
+                    map.forEach((k, v) -> sb.append(k).append(":").append(v).append(","));
+                    if (sb.length() > 0) sb.deleteCharAt(sb.length() - 1);
+                    log.info(sb.toString());
+                });
+            }
+            retValue = "success";
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "insert failed:"+e.getMessage().split(";")[2];
+        }
+        return retValue;
     }
 
-    public void getBasicData(){}
+    /**
+     * 获取基础数据:
+     * LIS系统用户名对应金通用户信息
+     */
+    public void getBasicData(){
+        String sqlUser = "select id_,name_,positions_ from ibps_party_employee where status_='actived'";
+        userList = jdbcTemplate.queryForList(sqlUser);
+        String sqlPosi = "select * from ibps_party_position";
+        posiList = jdbcTemplate.queryForList(sqlPosi);
+    }
+
+    /**
+     * 返回用户ID@部门ID@部门名称
+     * @param userName
+     * @return
+     */
+    public String getUserInfoByName(String userName){
+        String retVal = "-1";
+        for (Map<String, Object> map : userList) {
+            if (map.get("name_").toString().equals(userName)) {
+                String userId = (String) map.get("id_");
+                String positionId = String.valueOf(map.get("positions_")).split(",")[0];
+                String positionName = (String) getPosiByID(positionId);
+                if (!positionName.equals("-1")) {
+                    retVal = userId+"@"+positionId+"@"+positionName;
+                }else{
+                    retVal = "-1^部门:"+positionName+"未找到!";
+                    return retVal;
+                }
+                return retVal;
+            }
+            retVal = "-1^用户:"+userName+"未找到!";
+        }
+        return retVal;
+    }
+
+    public String getPosiByID(String positionId){
+        String retVal = "-1";
+        for (Map<String, Object> map : posiList) {
+            if (map.get("id_").toString().equals(positionId)) {
+                retVal = map.get("name_").toString();
+                break;
+            }
+        }
+        return retVal;
+    }
 
 }

+ 33 - 5
GetDataByView/src/main/java/com/jyxt/getdatabyview/view/repository/LISViewRepository.java

@@ -10,6 +10,10 @@ import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Repository;
 
+import java.sql.Timestamp;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -27,8 +31,8 @@ public class LISViewRepository {
         //复查样本记录
         if(tableName.equals("V_JT_TestCodeRerunRecord")) {
             try{
-                //        String sqlQry = "SELECT * FROM V_JT_TestCodeRerunRecord WHERE TO_DATE(CreateTime, 'YYYY-MM-DD HH24:MI:SS') >= SYSDATE-1";
-                String sqlQry = "select * from t_zztest";
+                String sqlQry = "SELECT * FROM V_JT_TestCodeRerunRecord WHERE TO_DATE(CreateTime, 'YYYY-MM-DD HH24:MI:SS') >= SYSDATE-1";
+//                String sqlQry = "select * from t_zztest";
                 log.info("excute sql:"+sqlQry);
                 retList = jdbcTemplate.queryForList(sqlQry);
                 return retList;
@@ -55,8 +59,8 @@ public class LISViewRepository {
         //月分析子表
         if(tableName.equals("V_JT_QCMonthReport!!!!")) {
             try{
-                //        String sqlQry = "SELECT * FROM V_JT_TestCodeRerunRecord WHERE TO_DATE(CreateTime, 'YYYY-MM-DD HH24:MI:SS') >= SYSDATE-1";
-                String sqlQry = "select * from t_zztest";
+                        String sqlQry = "SELECT * FROM V_JT_TestCodeRerunRecord WHERE TO_DATE(CreateTime, 'YYYY-MM-DD HH24:MI:SS') >= SYSDATE-1";
+//                String sqlQry = "select * from t_zztest";
                 log.info("excute sql:"+sqlQry);
                 retList = jdbcTemplate.queryForList(sqlQry);
                 return retList;
@@ -69,8 +73,32 @@ public class LISViewRepository {
         return retList;
     }
 
-    public void query2(Integer QIIndex,String dateRange) {
+    public List<Map<String, Object>> query2(String tableName) {
+        List<Map<String, Object>> retList = new ArrayList<>();
+        Map<String, Object> dataMap = new HashMap<>();
+
+        dataMap.put("shi_fou_guo_shen_", "已完成");
+        dataMap.put("ri_qi_", "2025-08-11");
+        dataMap.put("bao_gao_zhi_", "<0.60");
+        dataMap.put("create_by_", "1353762449546805248");
+        dataMap.put("bei_zhu_fu_jian_f", "");
+        dataMap.put("id_", "20250811 G0042281_AFP");
+        dataMap.put("bian_zhi_bu_men_", "1353738806028664832");
+        dataMap.put("bian_zhi_ren_", "晏波");
+        dataMap.put("dan_wei_", "ug/L");
+        dataMap.put("bian_zhi_shi_jian", "2025-08-11 11:51:11");
+        dataMap.put("create_time_", Timestamp.valueOf(String.valueOf("2025-08-11 10:00:00")));
+        dataMap.put("biao_ben_bian_hao", "20250811 G0042281");
+        dataMap.put("fu_jian_fang_shi_", "");
+        dataMap.put("bao_gao_shi_jian_", "2025-08-11 14:03:10");
+        dataMap.put("jian_yan_zhe_", "卢小岚");
+        dataMap.put("fu_jian_xiang_mu_", "甲胎蛋白");
+        dataMap.put("ce_ding_zhi_chu_j", "9.28");
+        dataMap.put("xing_ming_", "王通普");
+        dataMap.put("ce_ding_zhi_fu_ji", "<0.6");
 
+        retList.add(dataMap);
+        return retList;
     }
 
 }

+ 11 - 10
GetDataByView/src/main/resources/application.properties

@@ -1,17 +1,18 @@
 spring.application.name=GetDataByView
-#spring.datasource.jdbc-url=jdbc:oracle:thin:@192.168.0.7:1521/lis
-#spring.datasource.username=xhoffline
-#spring.datasource.password=7450000E
-#spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
-spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/klims-ibps3?characterEncoding=utf8&useSSL=false
-spring.datasource.username=root
-spring.datasource.password=test001
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.second-datasource.jdbc-url = jdbc:mysql://192.168.2.212:3306/klims-ibps3?characterEncoding=utf8&useSSL=false
+spring.datasource.jdbc-url=jdbc:oracle:thin:@192.168.0.7:1521/lis
+spring.datasource.username=xhoffline
+spring.datasource.password=7540000E
+spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
+#spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/klims-ibps3?characterEncoding=utf8&useSSL=false
+#spring.datasource.username=root
+#spring.datasource.password=test001
+#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.second-datasource.jdbc-url = jdbc:mysql://localhost:3306/klims-ibps3?characterEncoding=utf8&useSSL=false
 spring.second-datasource.username = root
 spring.second-datasource.password = test001
 spring.second-datasource.driver-class-name = com.mysql.cj.jdbc.Driver
-logging.file.name=logs/GetDataByView.log
+#logging.file.name=logs/GetDataByView.log
 # level:TRACE < DEBUG < INFO < WARN < ERROR < FATAL
 logging.level.root=INFO
 #1 or 0,1 means only qry,0 means update
+config.qryMode=0