Quellcode durchsuchen

[task-6326] 试剂更换验证对接 细节完善

huangws vor 1 Monat
Ursprung
Commit
5bc3e0752f

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

@@ -49,7 +49,7 @@ public class GetDataByViewApplication implements CommandLineRunner{
             handleData.updateReagentCode();
         } else if(Objects.equals(updateReagentCode, "0")){
 //            handleData.Test();
-//            handleData.upadteReagentInfo();
+            handleData.upadteReagentInfo();
             handleData.HandleData();
         } else if(Objects.equals(updateReagentCode, "2")){
             handleData.lisTest();

+ 23 - 17
GetDataByView/src/main/java/com/jyxt/getdatabyview/HandleData.java

@@ -38,28 +38,29 @@ public class HandleData {
         long sequenceCounter = 0;
         for (Map<String, Object> lisReagent : lisReagentList) {
             List<String> pushUserList = new ArrayList<>();
-            String GroupCode = lisReagent.get("GroupCode").toString();
+            String GroupCode = String.valueOf(lisReagent.get("GroupCode"));
             pushUserList = ibpsRepository.getPushList(GroupCode);
             String PosID = ibpsRepository.getPosiByField(GroupCode,"DESC_","id_");
-            String reagentCode = lisReagent.get("ReagentNumber").toString();
-            String reagentID = ibpsRepository.getReagentByField(reagentCode,"bian_ma_","id_");
+            String reagentCode = String.valueOf(lisReagent.get("ReagentNumber"));
+            String reagentID = ibpsRepository.getReagentByField(reagentCode, "bian_ma_", "id_").orElse("");
             // 生成有序ID:时间戳+自增序列号
             String orderedId = String.format("%d-%06d",
                     currentTimestamp.getTime(),  // 使用时间戳
                     sequenceCounter++            // 自增序列号
             );
             String diDian = ibpsRepository.getPosiByField("院本部","NAME_","id_");
-            String reagentName = lisReagent.get("ReagentName").toString();
-            String newBatchNumber = lisReagent.get("NewBatchNumber").toString();
-            String newExpiredDate = lisReagent.get("ExpiredDate").toString();
+            String reagentName = String.valueOf(lisReagent.get("ReagentName"));
+            String newBatchNumber = String.valueOf(lisReagent.get("NewBatchNumber"));
+            String newExpiredDate = String.valueOf(lisReagent.get("ExpiredDate"));
             Map<String, String> oldReagentMap = ibpsRepository.getOldReagent(reagentCode);
             String oldBatchNumber = String.valueOf(oldReagentMap.get("oldBatchNumber") == null ? "" : oldReagentMap.get("oldBatchNumber"));
             String oldExpiredDate = String.valueOf(oldReagentMap.get("oldExpiredDate") == null ? "" : oldReagentMap.get("oldExpiredDate"));
-            String reagentType = ibpsRepository.getReagentByField(reagentCode,"bian_ma_","shi_ji_lei_bie_");
-            String deviceID = ibpsRepository.getReagentByField(reagentCode,"bian_ma_","yi_qi_she_bei_");
-            String deviceCode = ibpsRepository.getReagentByField(reagentCode,"bian_ma_","she_bei_bian_hao_");
+            String reagentType = ibpsRepository.getReagentByField(reagentCode, "bian_ma_", "shi_ji_lei_xing_").orElse("");
+            String deviceID = ibpsRepository.getReagentByField(reagentCode, "bian_ma_", "yi_qi_she_bei_").orElse("");
+            String deviceCode = ibpsRepository.getReagentByField(reagentCode, "bian_ma_", "she_bei_bian_hao_").orElse("");
 //            String reagentType = "定性";
-            String Status = reagentType == "定量" ? "定量待推送" : "定性待推送";
+
+            String Status = "定量".equals(reagentType) ? "定量待推送" : "定性待推送";
             //组装主表数据数组
             Map<String, Object> reagentMainMap = new HashMap<>();
             reagentMainMap.put("id_", orderedId);
@@ -96,7 +97,9 @@ public class HandleData {
             reagentSubMap.put("xin_you_xiao_qi_", newExpiredDate);
             reagentSubMap.put("shi_ji_hao_cai_id", reagentID);
             reagentSubMap.put("shi_ji_bian_ma_", reagentCode);
-            reagentSubList.add(reagentSubMap);
+            if(pushUserList!=null && pushUserList.size()>0){
+                reagentSubList.add(reagentSubMap);
+            }
         }
         String res = ibpsRepository.saveToTable(reagentMainList, "t_sjghyzjlb", "1");
         if(res.equals("success")){
@@ -131,10 +134,10 @@ public class HandleData {
         // 3. 将 LIS 试剂列表转为 Map,Key 为旧编码 (ReagentNumbeOld)
         Map<String, String> lisOldToNewCodeMap = lisReagentList.stream()
                 .filter(lis -> lis.get("ReagentNumbeOld") != null && lis.get("ReagentNumber") != null)
-                .filter(lis -> !lis.get("ReagentNumbeOld").toString().trim().isEmpty() && !lis.get("ReagentNumber").toString().trim().isEmpty())
+                .filter(lis -> !String.valueOf(lis.get("ReagentNumbeOld")).trim().isEmpty() && !String.valueOf(lis.get("ReagentNumber")).isEmpty())
                 .collect(Collectors.toMap(
-                        lis -> lis.get("ReagentNumbeOld").toString().trim(),
-                        lis -> lis.get("ReagentNumber").toString().trim(),
+                        lis -> String.valueOf(lis.get("ReagentNumbeOld")).trim(),
+                        lis -> String.valueOf(lis.get("ReagentNumber")).trim(),
                         (existing, replacement) -> existing // 如果有重复的旧编码,保留第一个
                 ));
 
@@ -191,9 +194,9 @@ public class HandleData {
 
         // 3. 将 LIS 试剂列表转为 Map,Key 为新编码 (ReagentNumber)
         Map<String, Map<String, Object>> lisNewCodeMap = lisReagentList.stream()
-                .filter(lis -> lis.get("ReagentNumber") != null && !lis.get("ReagentNumber").toString().trim().isEmpty())
+                .filter(lis -> lis.get("ReagentNumber") != null && !String.valueOf(lis.get("ReagentNumber")).trim().isEmpty())
                 .collect(Collectors.toMap(
-                        lis -> lis.get("ReagentNumber").toString().trim(),
+                        lis -> String.valueOf(lis.get("ReagentNumber")).trim(),
                         lis -> lis,
                         (existing, replacement) -> existing
                 ));
@@ -268,7 +271,10 @@ public class HandleData {
                 insertData.put("dan_wei_", safeTrim(lisReagent.get("Unit")));
                 insertData.put("chang_jia_", safeTrim(lisReagent.get("Manufacturer")));
                 insertData.put("gong_ying_shang_", safeTrim(lisReagent.get("Supplyer")));
-                insertData.put("ji_lu_lei_xing_", "定量");
+                insertData.put("shi_ji_lei_xing_", "定量");
+                insertData.put("lei_bie_", "试剂");
+                insertData.put("di_dian_", "1409907013076385792");
+
 
                 needInsertIbpsReagents.add(insertData);
             }

+ 27 - 7
GetDataByView/src/main/java/com/jyxt/getdatabyview/view/repository/IBPSRepository.java

@@ -105,6 +105,12 @@ public class IBPSRepository {
                     return inputList.size();
                 }
             });
+            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("Insert data: " + sb.toString());
+            });
             log.info("insert completed successfully");
         } else {
             log.info("------qry mode, pretend to insert " + inputList.size() + " records-------");
@@ -177,6 +183,12 @@ public class IBPSRepository {
                     return inputList.size();
                 }
             });
+            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("Update data (id_=" + map.get("id_") + "): " + sb.toString());
+            });
             log.info("update completed successfully");
         } else {
             log.info("------qry mode, pretend to update " + inputList.size() + " records-------");
@@ -200,7 +212,7 @@ public class IBPSRepository {
         userList = jdbcTemplate.queryForList(sqlUser);
         String sqlPosi = "select * from ibps_party_position";
         posiList = jdbcTemplate.queryForList(sqlPosi);
-        String sqlReagent = "SELECT id_,ming_cheng_,bao_zhuang_gui_ge,dan_wei_,chang_jia_,bian_ma_,gong_ying_shang_,yi_qi_she_bei_,she_bei_bian_hao_ FROM t_sjhcjcsjpz where bian_ma_ is not null ";
+        String sqlReagent = "SELECT * FROM t_sjhcjcsjpz where bian_ma_ is not null ";
         reagentList = jdbcTemplate.queryForList(sqlReagent);
     }
 
@@ -242,15 +254,23 @@ public class IBPSRepository {
         return retVal;
     }
 
-    public String getReagentByField(String fieldStr, String inField, String outField){
-        String retVal = "-1";
+    public Optional<String> getReagentByField(String fieldValue, String lookupField, String returnField) {
+        // 参数校验
+        if (fieldValue == null || lookupField == null || returnField == null || reagentList == null) {
+            return Optional.empty();
+        }
+
         for (Map<String, Object> map : reagentList) {
-            if (fieldStr.equals(String.valueOf(map.get(inField)))) {
-                retVal = map.get(outField).toString();
-                break;
+            if (map == null) {
+                continue;
+            }
+            Object lookupValue = map.get(lookupField);
+            if (Objects.equals(fieldValue, String.valueOf(lookupValue))) {
+                Object returnValue = map.get(returnField);
+                return Optional.ofNullable(returnValue != null ? returnValue.toString() : null);
             }
         }
-        return retVal;
+        return Optional.empty();
     }
 
 

+ 31 - 9
GetDataByView/src/main/java/com/jyxt/getdatabyview/view/repository/LISViewRepository.java

@@ -25,10 +25,34 @@ public class LISViewRepository {
     @Autowired
     private JdbcTemplate jdbcTemplate;
 
+    @Value("${qryLISday}")
+    private String qryLISday;
 
     public List<Map<String, Object>> getBasicReagent() {
+
         List<Map<String, Object>> retList = new ArrayList<Map<String, Object>>();
-        Map<String, Object> retMap = new HashMap<>();
+        if(1==2){
+            Map<String, Object> retMap1 = new HashMap<>();
+            retMap1.put("ReagentName", "(国)微生物药敏试纸(扩散法(K-B法))");
+            retMap1.put("ReagentNumber", "010403000121");
+            retMap1.put("ReagentNumbeOld", "0401031249");
+            retMap1.put("Manufacturer", "温州市康泰生物科技有限公司");
+            retMap1.put("Spec", "头孢他啶/棒酸 20片/瓶");
+            retMap1.put("Supplyer", "广州市迪景微生物科技有限公司");
+            retMap1.put("Unit", "片");
+            retMap1.put("is_stop", "0");
+            retList.add(retMap1);
+            Map<String, Object> retMap2 = new HashMap<>();
+            retMap2.put("ReagentName", "(国)血糖试纸(电化学法)(爱瑞)");
+            retMap2.put("ReagentNumber", "010401000013");
+            retMap2.put("ReagentNumbeOld", "0101080300");
+            retMap2.put("Manufacturer", "泰博科技股份有限公司(TaiDoc Technology C");
+            retMap2.put("Spec", "50片/盒  10盒/箱");
+            retMap2.put("Supplyer", "广东康裕药业有限公司");
+            retMap2.put("Unit", "盒");
+            retMap2.put("is_stop", "0");
+            retList.add(retMap2);
+        } else {
         String sqlQry = "SELECT * FROM v_mate_dict_Reagent where is_stop='0'";
         log.info("excute sql:"+sqlQry);
         try {
@@ -43,6 +67,7 @@ public class LISViewRepository {
         } catch (DataAccessException e) {
             log.error("Error query lis ReagentInfo view", e);
         }
+        }
         return retList;
     }
 
@@ -62,23 +87,20 @@ public class LISViewRepository {
 
         Map<String, Object> retMap = new HashMap<>();
         String sqlQry = "SELECT * FROM v_mate_whr_Reagent \n" +
-                "WHERE confDate >= to_char(CURRENT_DATE - 1, 'YYYY-MM-DD') \n" +
+                "WHERE confDate >= to_char(CURRENT_DATE - "+qryLISday+", 'YYYY-MM-DD') \n" +
                 "  AND confDate < to_char(CURRENT_DATE, 'YYYY-MM-DD') and inStoreName='医学检验科库房'";
         log.info("excute sql:"+sqlQry);
         try {
             List<Map<String, Object>> results = jdbcTemplate.queryForList(sqlQry);
-//            for (Map<String, Object> result : results) {
-//                for (Map.Entry<String, Object> entry : result.entrySet()) {
-//                    retMap.put(entry.getKey(), entry.getValue());
-//                }
-//                retList.add(retMap);
-//            }
             retList = results;
+            for (Map<String, Object> item : results) {
+                log.info("retItem:"+item);
+            }
+            log.info("retList:"+retList);
         } catch (DataAccessException e) {
             log.error("Error query lis ReagentLotVerification view", e);
         }
         return retList;
-
     }
 
 

+ 4 - 3
GetDataByView/src/main/resources/application.properties

@@ -9,6 +9,7 @@ spring.second-datasource.password = test1994
 spring.second-datasource.driver-class-name = com.mysql.cj.jdbc.Driver
 # level:TRACE < DEBUG < INFO < WARN < ERROR < FATAL
 logging.level.root=INFO
-#1 or 0,1 means only qry,0 means Insert
-config.insertMode=0
-updateReagentCode=2
+#1 or 0,0 means only qry,1 means Insert
+config.insertMode=1
+updateReagentCode=0
+qryLISday=5