Browse Source

重新对药品成分检查,加入分词器,对比药品成分是否禁售。增加冷冻字段。解决线上无法使用文件问题,后续优化线上线下版本

Guos 13 hours ago
parent
commit
bde7c9d600

+ 32 - 5
fs-service/src/main/java/com/fs/hisStore/util/DrugComponentAnalyzer.java

@@ -6,7 +6,10 @@ import org.apache.commons.io.FileUtils;
 import org.springframework.boot.system.ApplicationHome;
 import org.springframework.core.io.ClassPathResource;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -32,16 +35,40 @@ public class DrugComponentAnalyzer {
     // 复用分词器实例(注意:Jieba非线程安全,多线程需每个线程new实例)
     private static final JiebaSegmenter SEGMENTER = new JiebaSegmenter();
 
+    // 词典文件绝对路径(核心:直接指向服务器本地文件)
+    private static final String DRUG_FILE_PATH = "C:\\Tools\\jar\\drug.txt";
+    // 词典数据集合
+    private static final Set<String> DRUG_DICT = new HashSet<>();
+
+    // 整合后的静态代码块:一次性完成「加载WordDictionary」+「读取DRUG_DICT」
     static {
-        try{
-            ClassPathResource resource = new ClassPathResource("drug.txt");
-            Path path = resource.getFile().toPath();
+        try {
+            // 1. 校验文件是否存在
+            File drugFile = new File(DRUG_FILE_PATH);
+            if (!drugFile.exists()) {
+                throw new FileNotFoundException("词典文件不存在:" + DRUG_FILE_PATH);
+            }
+
+            // 2. 核心逻辑:给 WordDictionary 加载词典文件(依赖 Path)
+            Path path = drugFile.toPath();
             WordDictionary.getInstance().loadUserDict(path);
-        }catch (Exception e){
-            throw new RuntimeException("加载词典失败", e);
+
+
+        } catch (Exception e) {
+            // 统一抛出异常,包含完整错误信息
+            throw new RuntimeException("加载词典失败(路径:" + DRUG_FILE_PATH + ")", e);
         }
     }
 
+    // 对外提供文件路径的方法(兼容原有依赖path的逻辑)
+    public static String getDrugFilePath() {
+        return DRUG_FILE_PATH;
+    }
+
+    // 可选:对外提供词典集合(如果业务需要)
+    public static Set<String> getDrugDict() {
+        return DRUG_DICT;
+    }
     /**
      * 拆分药品成分(过滤停用词,仅保留有效成分)
      */