rengb преди 5 години
родител
ревизия
0fadab0d0b

+ 5 - 0
kernel/pom.xml

@@ -89,6 +89,11 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-data-redis</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>cglib</groupId>
+			<artifactId>cglib</artifactId>
+			<version>3.2.4</version>
+		</dependency>
 	</dependencies>
 
 	<build>

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcess.java

@@ -230,7 +230,8 @@ public class EntityProcess {
      */
     protected void setDiag(Lemma lemma, Diag diag) {
         Map<String, String> diagRedisMap = (Map<String, String>)redisUtil.get(KernelConstants.CONCEPT_DIAG_HOSPITAL_REFLECT);
-        diag.setHospitalDiagName(lemma.getText());  //存放医院原始疾病名称
+        diag.setHospitalDiagName(lemma.getText());
+        diag.setName(lemma.getText());//存放医院原始疾病名称
         diag.setName(diagRedisMap.get(lemma.getText()) == null ? "" : diagRedisMap.get(lemma.getText()));//映射到我们的标准疾病名称
     }
 

+ 5 - 2
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessPast.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.lantone.qc.kernel.structure.ai.model.CrfOut;
 import com.lantone.qc.kernel.structure.ai.model.EntityEnum;
 import com.lantone.qc.kernel.structure.ai.model.Lemma;
+import com.lantone.qc.kernel.util.DiagEnhancer;
 import com.lantone.qc.kernel.util.KernelConstants;
 import com.lantone.qc.kernel.util.RedisUtil;
 import com.lantone.qc.pub.model.entity.*;
@@ -35,8 +36,10 @@ public class EntityProcessPast extends EntityProcess {
             //读取疾病信息
             List<Lemma> diagLemmas = createEntityTree(aiOut, EntityEnum.DIEASE.toString());
             for (Lemma lemma : diagLemmas) {
-                Diag diag = new Diag();
-                super.setDiag(lemma, diag);
+                Diag diag = DiagEnhancer.create();
+                diag.setHospitalDiagName(lemma.getText());
+                diag.setName(lemma.getText());
+//                super.setDiag(lemma, diag);
                 if (lemma.isHaveChildren()) {
                     //阴性
                     diag.setNegative(findNegative(lemma));

+ 25 - 0
kernel/src/main/java/com/lantone/qc/kernel/util/DiagEnhancer.java

@@ -0,0 +1,25 @@
+package com.lantone.qc.kernel.util;
+
+import com.lantone.qc.pub.model.entity.Diag;
+import net.sf.cglib.proxy.Enhancer;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/3/12 18:03
+ */
+public class DiagEnhancer {
+
+    public static Diag create() {
+        //创建Enhancer对象,类似于JDK动态代理的Proxy类,下一步就是设置几个参数
+        Enhancer enhancer = new Enhancer();
+        //设置目标类的字节码文件
+        enhancer.setSuperclass(Diag.class);
+        //设置回调函数
+        enhancer.setCallback(new DiagMethodInterceptor());
+
+        Diag proxyDiag = (Diag) enhancer.create();
+        return proxyDiag;
+    }
+
+}

+ 31 - 0
kernel/src/main/java/com/lantone/qc/kernel/util/DiagMethodInterceptor.java

@@ -0,0 +1,31 @@
+package com.lantone.qc.kernel.util;
+
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.lang.reflect.Method;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/3/12 17:52
+ */
+public class DiagMethodInterceptor implements MethodInterceptor {
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Override
+    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
+        if (method.getName().equals("setName")) {
+            Map<String, String> diagRedisMap = (Map<String, String>)redisUtil.get(KernelConstants.CONCEPT_DIAG_HOSPITAL_REFLECT);
+            String hospitalDiagName = args[0].toString();
+            args[0] = diagRedisMap.get(hospitalDiagName) == null ? "" : diagRedisMap.get(hospitalDiagName);
+        }
+        Object object = proxy.invokeSuper(obj, args);
+        return object;
+    }
+
+}