ソースを参照

Merge branch 'dev/mix20191111_BIcount' into dev/mix20191203_staticSearch2

gaodm 5 年 前
コミット
5ac785cddb
100 ファイル変更1855 行追加826 行削除
  1. 3 1
      .gitignore
  2. 91 78
      aipt-service/src/main/java/com/diagbot/aggregate/TreatmentAggregate.java
  3. 41 76
      aipt-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java
  4. 11 0
      aipt-service/src/main/java/com/diagbot/client/TranServiceClient.java
  5. 18 0
      aipt-service/src/main/java/com/diagbot/client/bean/MeditionDetail.java
  6. 7 99
      aipt-service/src/main/java/com/diagbot/client/bean/ResponseData.java
  7. 4 2
      aipt-service/src/main/java/com/diagbot/client/bean/SearchData.java
  8. 26 0
      aipt-service/src/main/java/com/diagbot/client/bean/Treat.java
  9. 18 0
      aipt-service/src/main/java/com/diagbot/client/bean/TreatmentPlan.java
  10. 8 0
      aipt-service/src/main/java/com/diagbot/client/hystrix/TranServiceHystrix.java
  11. 4 0
      aipt-service/src/main/java/com/diagbot/config/MybatisPlusConfigurer.java
  12. 0 12
      aipt-service/src/main/java/com/diagbot/dto/GetTopPatientInfoDTO.java
  13. 173 0
      aipt-service/src/main/java/com/diagbot/dto/GetTopPatientInfoDjDTO.java
  14. 1 1
      aipt-service/src/main/java/com/diagbot/dto/SysSetInfoDTO.java
  15. 0 196
      aipt-service/src/main/java/com/diagbot/entity/SysLog.java
  16. 1 0
      aipt-service/src/main/java/com/diagbot/enums/ConceptTypeEnum.java
  17. 1 1
      aipt-service/src/main/java/com/diagbot/enums/LexiconTypeEnum.java
  18. 13 0
      aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  19. 23 0
      aipt-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java
  20. 7 6
      aipt-service/src/main/java/com/diagbot/facade/PushFacade.java
  21. 1 1
      aipt-service/src/main/java/com/diagbot/facade/TransferFacade.java
  22. 64 172
      aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java
  23. 1 1
      aipt-service/src/main/java/com/diagbot/rabbit/MySender.java
  24. 6 2
      aipt-service/src/main/java/com/diagbot/util/ParamConvertUtil.java
  25. 60 0
      aipt-service/src/main/java/com/diagbot/vo/GetTopPatientInfoDjVO.java
  26. 3 0
      aipt-service/src/main/java/com/diagbot/vo/RetrievalVO.java
  27. 3 1
      aipt-service/src/main/java/com/diagbot/vo/SearchVo.java
  28. 2 2
      aipt-service/src/main/java/com/diagbot/web/ConceptDetailController.java
  29. 9 0
      aipt-service/src/main/java/com/diagbot/web/PatientInfoController.java
  30. 9 5
      aipt-service/src/main/java/com/diagbot/web/PushController.java
  31. 90 65
      aipt-service/src/main/resources/mapper/ConceptMapper.xml
  32. 6 6
      aipt-service/src/main/resources/mapper/DisScaleMapper.xml
  33. 1 1
      aipt-service/src/main/resources/mapper/EvaluationMapper.xml
  34. 6 41
      bi-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java
  35. 4 0
      bi-service/src/main/java/com/diagbot/config/MybatisPlusConfigurer.java
  36. 1 1
      bi-service/src/main/java/com/diagbot/rabbit/MySender.java
  37. 6 0
      common/pom.xml
  38. 19 0
      common/src/main/java/com/diagbot/annotation/BiLogger.java
  39. 19 0
      common/src/main/java/com/diagbot/annotation/BiLoggerResult.java
  40. 49 0
      common/src/main/java/com/diagbot/enums/BiSourceEnum.java
  41. 2 1
      common/src/main/java/com/diagbot/enums/ProductTypeEnum.java
  42. 101 0
      common/src/main/java/com/diagbot/log/entity/BiRecord.java
  43. 82 0
      common/src/main/java/com/diagbot/log/entity/SysLog.java
  44. 330 0
      common/src/main/java/com/diagbot/util/AopUtil.java
  45. 93 0
      common/src/main/java/com/diagbot/util/IdCard.java
  46. 24 0
      common/src/main/java/com/diagbot/vo/BaseBiVO.java
  47. 7 1
      config-server/src/main/resources/shared/application-dev.yml
  48. 7 1
      config-server/src/main/resources/shared/application-local.yml
  49. 7 1
      config-server/src/main/resources/shared/application-pre.yml
  50. 7 1
      config-server/src/main/resources/shared/application-pro.yml
  51. 7 1
      config-server/src/main/resources/shared/application-test.yml
  52. 2 0
      config-server/src/main/resources/shared/data-service-dev.yml
  53. 2 0
      config-server/src/main/resources/shared/data-service-local.yml
  54. 2 0
      config-server/src/main/resources/shared/data-service-pre.yml
  55. 2 0
      config-server/src/main/resources/shared/data-service-pro.yml
  56. 2 1
      config-server/src/main/resources/shared/data-service-test.yml
  57. 2 0
      config-server/src/main/resources/shared/icss-service-dev.yml
  58. 2 0
      config-server/src/main/resources/shared/icss-service-local.yml
  59. 2 0
      config-server/src/main/resources/shared/icss-service-pre.yml
  60. 2 0
      config-server/src/main/resources/shared/icss-service-pro.yml
  61. 2 0
      config-server/src/main/resources/shared/icss-service-test.yml
  62. 5 1
      config-server/src/main/resources/shared/knowledgeman-service-dev.yml
  63. 5 1
      config-server/src/main/resources/shared/knowledgeman-service-local.yml
  64. 5 1
      config-server/src/main/resources/shared/knowledgeman-service-pre.yml
  65. 5 1
      config-server/src/main/resources/shared/knowledgeman-service-pro.yml
  66. 5 1
      config-server/src/main/resources/shared/knowledgeman-service-test.yml
  67. 5 0
      config-server/src/main/resources/shared/logger-service-dev.yml
  68. 5 0
      config-server/src/main/resources/shared/logger-service-local.yml
  69. 5 0
      config-server/src/main/resources/shared/logger-service-pre.yml
  70. 5 0
      config-server/src/main/resources/shared/logger-service-pro.yml
  71. 5 0
      config-server/src/main/resources/shared/logger-service-test.yml
  72. 2 0
      config-server/src/main/resources/shared/ltapi-service-dev.yml
  73. 2 0
      config-server/src/main/resources/shared/ltapi-service-local.yml
  74. 2 0
      config-server/src/main/resources/shared/ltapi-service-pre.yml
  75. 2 0
      config-server/src/main/resources/shared/ltapi-service-pro.yml
  76. 2 0
      config-server/src/main/resources/shared/ltapi-service-test.yml
  77. 2 0
      config-server/src/main/resources/shared/prec-service-dev.yml
  78. 2 0
      config-server/src/main/resources/shared/prec-service-local.yml
  79. 2 0
      config-server/src/main/resources/shared/prec-service-pre.yml
  80. 2 0
      config-server/src/main/resources/shared/prec-service-pro.yml
  81. 2 0
      config-server/src/main/resources/shared/prec-service-test.yml
  82. 2 0
      config-server/src/main/resources/shared/triage-service-dev.yml
  83. 2 0
      config-server/src/main/resources/shared/triage-service-local.yml
  84. 2 0
      config-server/src/main/resources/shared/triage-service-pre.yml
  85. 2 0
      config-server/src/main/resources/shared/triage-service-pro.yml
  86. 2 0
      config-server/src/main/resources/shared/triage-service-test.yml
  87. 55 0
      data-service/src/main/java/com/diagbot/aop/BiLoggerAspect.java
  88. 55 0
      data-service/src/main/java/com/diagbot/aop/BiLoggerResultAspect.java
  89. 6 41
      data-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java
  90. 2 1
      data-service/src/main/java/com/diagbot/client/AiptServiceClient.java
  91. 23 0
      data-service/src/main/java/com/diagbot/client/bean/AdverseReaction.java
  92. 16 0
      data-service/src/main/java/com/diagbot/client/bean/AdverseReactionDetail.java
  93. 28 0
      data-service/src/main/java/com/diagbot/client/bean/Medicition.java
  94. 27 0
      data-service/src/main/java/com/diagbot/client/bean/MedicitionClass.java
  95. 18 0
      data-service/src/main/java/com/diagbot/client/bean/MeditionDetail.java
  96. 3 1
      data-service/src/main/java/com/diagbot/client/bean/SearchData.java
  97. 26 0
      data-service/src/main/java/com/diagbot/client/bean/Treat.java
  98. 18 0
      data-service/src/main/java/com/diagbot/client/bean/TreatmentPlan.java
  99. 2 1
      data-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java
  100. 0 0
      data-service/src/main/java/com/diagbot/dto/SysSetInfoDTO.java

+ 3 - 1
.gitignore

@@ -22,4 +22,6 @@
 /nbbuild/
 /dist/
 /nbdist/
-/.nb-gradle/
+/.nb-gradle/
+
+/logs/

+ 91 - 78
aipt-service/src/main/java/com/diagbot/aggregate/TreatmentAggregate.java

@@ -3,6 +3,9 @@ package com.diagbot.aggregate;
 import com.diagbot.client.bean.AdverseReaction;
 import com.diagbot.client.bean.Medicition;
 import com.diagbot.client.bean.MedicitionClass;
+import com.diagbot.client.bean.MeditionDetail;
+import com.diagbot.client.bean.Treat;
+import com.diagbot.client.bean.TreatmentPlan;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptDetail;
@@ -17,7 +20,6 @@ import io.github.lvyahui8.spring.annotation.InvokeParameter;
 import org.springframework.stereotype.Component;
 
 import java.util.Arrays;
-import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -31,20 +33,20 @@ import java.util.Map;
 public class TreatmentAggregate {
 
     @DataProvider("setTreatmentAll")
-    public Map<String, Object> setTreatmentAll(@InvokeParameter("treatmentMap") Map<String, Object> treatmentMap,
-                                               @DataConsumer("setCommonTreatment") ConceptDetailDTO commonTreatment,
-                                               @DataConsumer("setSurgeryTreatment") ConceptDetailDTO surgeryTreatment,
-                                               @DataConsumer("setDrugs") List<MedicitionClass> drugsList,
-                                               @DataConsumer("setAdverseReactions") List<AdverseReaction> adverseReactionList) {
-        if (treatmentMap == null) {
-            treatmentMap = new LinkedHashMap<>();
+    public Treat setTreatmentAll(@InvokeParameter("treat") Treat treat,
+                                 @DataConsumer("setCommonTreatment") ConceptDetailDTO commonTreatment,
+                                 @DataConsumer("setSurgeryTreatment") ConceptDetailDTO surgeryTreatment,
+                                 @DataConsumer("setTreatmentPlan") List<TreatmentPlan> treatmentPlanList,
+                                 @DataConsumer("setAdverseReactions") List<AdverseReaction> adverseReactionList) {
+        if (treat == null) {
+            treat = new Treat();
         }
-        treatmentMap.put("commonTreatment", commonTreatment);
-        treatmentMap.put("surgeryTreatment", surgeryTreatment);
-        treatmentMap.put("treatment", drugsList);
-        treatmentMap.put("adverseReactions", adverseReactionList);
+        treat.setCommonTreatment(commonTreatment);
+        treat.setSurgeryTreatment(surgeryTreatment);
+        treat.setTreatmentPlan(treatmentPlanList);
+        treat.setAdverseEvent(adverseReactionList);
 
-        return treatmentMap;
+        return treat;
     }
 
     @DataProvider("setCommonTreatment")
@@ -91,76 +93,87 @@ public class TreatmentAggregate {
         return conceptDetailDTO;
     }
 
-    @DataProvider("setDrugs")
-    public List<MedicitionClass> setDrugs(@InvokeParameter("drugsList") List<MedicitionClass> drugsList,
-                                          @InvokeParameter("conceptMap") Map<String, Map<Long, Concept>> conceptMap,
-                                          @InvokeParameter("hasConDetailMap") Map<String, Map<Long, List<ConceptDetail>>> hasConDetailMap) {
-        if (ListUtil.isNotEmpty(drugsList)) {
-            for (MedicitionClass medicitionClass : drugsList) {
-                if (conceptMap != null
-                        && conceptMap.get(medicitionClass.getBigdrugsName()) != null
-                        && conceptMap.get(medicitionClass
-                        .getBigdrugsName())
-                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
-                    Concept cateBigConcept = conceptMap
-                            .get(medicitionClass.getBigdrugsName())
-                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()));
-                    if (cateBigConcept != null) {
-                        medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
-                        if (hasConDetailMap != null
-                                && hasConDetailMap.get(cateBigConcept.getLibName()) != null
-                                && hasConDetailMap.get(cateBigConcept.getLibName())
-                                .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
-                            medicitionClass.setShowInfo("1");
-                        } else {
-                            medicitionClass.setShowInfo("0");
-                        }
-                    }
-                }
-                medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
-                medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
-                if (conceptMap != null
-                        && conceptMap.get(medicitionClass.getSubdrugsName()) != null
-                        && conceptMap.get(medicitionClass.getSubdrugsName())
-                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()))) {
-                    Concept cateSmallConcept = conceptMap
-                            .get(medicitionClass.getSubdrugsName())
-                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()));
-                    if (cateSmallConcept != null) {
-                        medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
-                    }
-                }
-                medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
-                medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
+    @DataProvider("setTreatmentPlan")
+    public List<TreatmentPlan> setTreatmentPlan(@InvokeParameter("treatmentPlan") List<TreatmentPlan> treatmentPlanList,
+                                                @InvokeParameter("conceptMap") Map<String, Map<Long, Concept>> conceptMap,
+                                                @InvokeParameter("hasConDetailMap") Map<String, Map<Long, List<ConceptDetail>>> hasConDetailMap) {
+        if (ListUtil.isNotEmpty(treatmentPlanList)) {
+            for (TreatmentPlan treatmentPlan : treatmentPlanList) {
+                List<MeditionDetail> meditionDetailList = treatmentPlan.getMeditionDetails();
+                if (ListUtil.isNotEmpty(meditionDetailList)) {
+                    for (MeditionDetail meditionDetail : meditionDetailList) {
+                        //药品推荐
+                        List<MedicitionClass> treatmentDrugList = meditionDetail.getTreatment();
+                        if (ListUtil.isNotEmpty(treatmentDrugList)) {
+                            for (MedicitionClass medicitionClass : treatmentDrugList) {
+                                if (conceptMap != null
+                                        && conceptMap.get(medicitionClass.getBigdrugsName()) != null
+                                        && conceptMap.get(medicitionClass
+                                        .getBigdrugsName())
+                                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
+                                    Concept cateBigConcept = conceptMap
+                                            .get(medicitionClass.getBigdrugsName())
+                                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()));
+                                    if (cateBigConcept != null) {
+                                        medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
+                                        if (hasConDetailMap != null
+                                                && hasConDetailMap.get(cateBigConcept.getLibName()) != null
+                                                && hasConDetailMap.get(cateBigConcept.getLibName())
+                                                .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
+                                            medicitionClass.setShowInfo("1");
+                                        } else {
+                                            medicitionClass.setShowInfo("0");
+                                        }
+                                    }
+                                }
+                                medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
+                                medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
+                                if (conceptMap != null
+                                        && conceptMap.get(medicitionClass.getSubdrugsName()) != null
+                                        && conceptMap.get(medicitionClass.getSubdrugsName())
+                                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()))) {
+                                    Concept cateSmallConcept = conceptMap
+                                            .get(medicitionClass.getSubdrugsName())
+                                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()));
+                                    if (cateSmallConcept != null) {
+                                        medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
+                                    }
+                                }
+                                medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
+                                medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
 
-                LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
-                for (Medicition medicition : medicitionList) {
-                    if (conceptMap != null
-                            && conceptMap.get(medicition.getMedicitionName()) != null
-                            && conceptMap.get(medicition.getMedicitionName())
-                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
-                        Concept drugConcept = conceptMap
-                                .get(medicition.getMedicitionName())
-                                .get(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()));
-                        if (drugConcept != null) {
-                            medicition.setConceptId(drugConcept.getId());
+                                LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
+                                for (Medicition medicition : medicitionList) {
+                                    if (conceptMap != null
+                                            && conceptMap.get(medicition.getMedicitionName()) != null
+                                            && conceptMap.get(medicition.getMedicitionName())
+                                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
+                                        Concept drugConcept = conceptMap
+                                                .get(medicition.getMedicitionName())
+                                                .get(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()));
+                                        if (drugConcept != null) {
+                                            medicition.setConceptId(drugConcept.getId());
+                                        }
+                                    }
+                                    medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
+                                    medicition.setType(ConceptTypeEnum.Drug.getKey());
+                                    if (hasConDetailMap != null
+                                            && hasConDetailMap.get(medicition.getMedicitionName()) != null
+                                            && hasConDetailMap.get(medicition.getMedicitionName())
+                                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
+                                        medicition.setShowInfo("1");
+                                    } else {
+                                        medicition.setShowInfo("0");
+                                    }
+                                }
+                                medicitionClass.setMedicitionsList(medicitionList);
+                            }
                         }
                     }
-                    medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
-                    medicition.setType(ConceptTypeEnum.Drug.getKey());
-                    if (hasConDetailMap != null
-                            && hasConDetailMap.get(medicition.getMedicitionName()) != null
-                            && hasConDetailMap.get(medicition.getMedicitionName())
-                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
-                        medicition.setShowInfo("1");
-                    } else {
-                        medicition.setShowInfo("0");
-                    }
                 }
-                medicitionClass.setMedicitionsList(medicitionList);
             }
         }
-        return drugsList;
+        return treatmentPlanList;
     }
 
     @DataProvider("setAdverseReactions")
@@ -196,4 +209,4 @@ public class TreatmentAggregate {
         }
         return adverseReactionList;
     }
-}
+}

+ 41 - 76
aipt-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java

@@ -1,76 +1,41 @@
-//package com.diagbot.aop;
-//
-//import com.diagbot.annotation.SysLogger;
-//import com.diagbot.entity.SysLog;
-//import com.diagbot.enums.SysTypeEnum;
-//import com.diagbot.rabbit.MySender;
-//import com.diagbot.util.GsonUtil;
-//import com.diagbot.util.HttpUtils;
-//import com.diagbot.util.StringUtil;
-//import com.diagbot.util.UserUtils;
-//import org.aspectj.lang.JoinPoint;
-//import org.aspectj.lang.annotation.Aspect;
-//import org.aspectj.lang.annotation.Before;
-//import org.aspectj.lang.annotation.Pointcut;
-//import org.aspectj.lang.reflect.MethodSignature;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.stereotype.Component;
-//
-//import java.lang.reflect.Method;
-//import java.util.Date;
-//
-///**
-// * @Description: 日志拦截切面
-// * @author: gaodm
-// * @time: 2018/8/2 13:36
-// */
-//@Aspect
-//@Component
-//public class SysLoggerAspect {
-//    @Autowired
-//    private MySender mySender;
-//
-//    @Pointcut("@annotation(com.diagbot.annotation.SysLogger)")
-//    public void loggerPointCut() {
-//
-//    }
-//
-//    @Before("loggerPointCut()")
-//    public void saveSysLog(JoinPoint joinPoint) {
-//        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-//        Method method = signature.getMethod();
-//
-//        SysLog sysLog = new SysLog();
-//        SysLogger sysLogger = method.getAnnotation(SysLogger.class);
-//        if (sysLogger != null) {
-//            //注解上的描述
-//            sysLog.setOperation(sysLogger.value());
-//        }
-//        //请求的方法名
-//        String className = joinPoint.getTarget().getClass().getName();
-//        String methodName = signature.getName();
-//        sysLog.setMethod(className + "." + methodName + "()");
-//        //请求的参数
-//        Object[] args = joinPoint.getArgs();
-//        String params = "";
-//        for (Object o : args) {
-//            params += GsonUtil.toJson(o);
-//        }
-//        if (!StringUtil.isEmpty(params)) {
-//            sysLog.setParams(params);
-//        }
-//        //设置IP地址
-//        sysLog.setIp(HttpUtils.getIpAddress());
-//        //用户名
-//        String username = UserUtils.getCurrentPrinciple();
-//        if (!StringUtil.isEmpty(username)) {
-//            sysLog.setUsername(username);
-//        }
-//        sysLog.setGmtCreate(new Date());
-//        sysLog.setSysType(SysTypeEnum.AIPT_SERVICE.getKey());
-//        //保存系统日志
-//        mySender.outputLogSend(sysLog);
-//    }
-//
-//}
-//
+package com.diagbot.aop;
+
+import com.diagbot.log.entity.SysLog;
+import com.diagbot.enums.SysTypeEnum;
+import com.diagbot.rabbit.MySender;
+import com.diagbot.util.AopUtil;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 日志拦截切面
+ * @author: gaodm
+ * @time: 2018/8/2 13:36
+ */
+@Aspect
+@Component
+@ConditionalOnProperty(prefix = "syslog", value = { "enable" }, havingValue = "true")
+public class SysLoggerAspect {
+    @Autowired
+    private MySender mySender;
+
+    @Pointcut("@annotation(com.diagbot.annotation.SysLogger)")
+    public void loggerPointCut() {
+
+    }
+
+    @Before("loggerPointCut()")
+    public void saveSysLog(JoinPoint joinPoint) {
+        //入参设置
+        SysLog sysLog = AopUtil.sysLoggerAspect(joinPoint, SysTypeEnum.AIPT_SERVICE.getKey());
+        //保存系统日志
+        mySender.outputLogSend(sysLog);
+    }
+
+}
+

+ 11 - 0
aipt-service/src/main/java/com/diagbot/client/TranServiceClient.java

@@ -4,12 +4,14 @@ import com.diagbot.client.bean.HosCodeVO;
 import com.diagbot.client.hystrix.TranServiceHystrix;
 import com.diagbot.dto.GetDiseaseIcdDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
+import com.diagbot.dto.GetTopPatientInfoDjDTO;
 import com.diagbot.dto.HospitalDeptInfoDTO;
 import com.diagbot.dto.IndexDataDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SysSetInfoDTO;
 import com.diagbot.vo.DiseaseIcdVO;
 import com.diagbot.vo.GetDiseaseIcdVO;
+import com.diagbot.vo.GetTopPatientInfoDjVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.HospitalDeptInfoVO;
 import com.diagbot.vo.HospitalSetVO;
@@ -59,6 +61,15 @@ public interface TranServiceClient {
     @PostMapping("/patientInfo/getTopPatientInfo")
     RespDTO<GetTopPatientInfoDTO> getTopPatientInfo(@RequestBody GetTopPatientInfoVO getTopPatientInfoVO);
 
+    /**
+     * 对接-获取页面顶部病人医生科室信息
+     *
+     * @param getTopPatientInfoDjVO
+     * @return
+     */
+    @PostMapping("/patientInfo/getTopPatientInfoDj")
+    RespDTO<GetTopPatientInfoDjDTO> getTopPatientInfoDj(@RequestBody GetTopPatientInfoDjVO getTopPatientInfoDjVO);
+
     /**
      * 根据医院编码和套餐名称获取化验公表映射关系
      *

+ 18 - 0
aipt-service/src/main/java/com/diagbot/client/bean/MeditionDetail.java

@@ -0,0 +1,18 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/11/21 11:15
+ */
+@Getter
+@Setter
+public class MeditionDetail {
+    private String description;
+    private List<MedicitionClass> treatment;
+}

+ 7 - 99
aipt-service/src/main/java/com/diagbot/client/bean/ResponseData.java

@@ -1,6 +1,9 @@
 package com.diagbot.client.bean;
 
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.eventbus.AllowConcurrentEvents;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -10,6 +13,8 @@ import java.util.Map;
 /**
  * Created by fyeman on 2018/2/2.
  */
+@Getter
+@Setter
 public class ResponseData {
     private String participleSymptom = "";
 
@@ -19,107 +24,10 @@ public class ResponseData {
     private List<FeatureRate> labs = new ArrayList<>(10);
     private List<FeatureRate> pacs = new ArrayList<>(10);
     private List<FeatureRate> history = new ArrayList<>(10);
-    private Map<String, JSONObject> treat;   //治疗方案
+    private Treat treat;   //治疗方案
     private Map<String, JSONObject> scale;   //量表内容
     private Map<String, JSONObject> managementEvaluation;   //管理评估
     private List<MedicalIndication> medicalIndications;     //量表和指标项推送
 
     private Map<String, Map<String, String>> inputs = new HashMap<>(10, 0.5f);
-
-
-    public String getParticipleSymptom() {
-        return participleSymptom;
-    }
-
-    public void setParticipleSymptom(String participleSymptom) {
-        this.participleSymptom = participleSymptom;
-    }
-
-    public List<FeatureRate> getSymptom() {
-        return symptom;
-    }
-
-    public void setSymptom(List<FeatureRate> symptom) {
-        this.symptom = symptom;
-    }
-
-    public List<FeatureRate> getVitals() {
-        return vitals;
-    }
-
-    public void setVitals(List<FeatureRate> vitals) {
-        this.vitals = vitals;
-    }
-
-    public List<FeatureRate> getDis() {
-        return dis;
-    }
-
-    public void setDis(List<FeatureRate> dis) {
-        this.dis = dis;
-    }
-
-    public List<FeatureRate> getLabs() {
-        return labs;
-    }
-
-    public void setLabs(List<FeatureRate> labs) {
-        this.labs = labs;
-    }
-
-    public List<FeatureRate> getPacs() {
-        return pacs;
-    }
-
-    public void setPacs(List<FeatureRate> pacs) {
-        this.pacs = pacs;
-    }
-
-    public List<FeatureRate> getHistory() {
-        return history;
-    }
-
-    public void setHistory(List<FeatureRate> history) {
-        this.history = history;
-    }
-
-    public Map<String, JSONObject> getTreat() {
-        return treat;
-    }
-
-    public void setTreat(Map<String, JSONObject> treat) {
-        this.treat = treat;
-    }
-
-    public Map<String, Map<String, String>> getInputs() {
-        return inputs;
-    }
-
-    public void setInputs(Map<String, Map<String, String>> inputs) {
-        this.inputs = inputs;
-    }
-
-    public Map<String, JSONObject> getScale() {
-        return scale;
-    }
-
-    public void setScale(Map<String, JSONObject> scale) {
-        this.scale = scale;
-    }
-
-    public Map<String, JSONObject> getManagementEvaluation() {
-        return managementEvaluation;
-    }
-
-    public void setManagementEvaluation(Map<String, JSONObject> managementEvaluation) {
-        this.managementEvaluation = managementEvaluation;
-    }
-
-    public List<MedicalIndication> getMedicalIndications() {
-        return medicalIndications;
-    }
-
-    public void setMedicalIndications(List<MedicalIndication> medicalIndications) {
-        this.medicalIndications = medicalIndications;
-    }
-}
+}

+ 4 - 2
aipt-service/src/main/java/com/diagbot/client/bean/SearchData.java

@@ -28,7 +28,7 @@ public class SearchData {
     private String lis = "";
     private String pacs = "";
     private String diag = "";
-    private String past = "";
+    private String pasts = "";
     private String other = "";
     private List<LisResult> lisArr;
     private Integer disType; //0-普通病(默认不填),1-慢病,2-急诊
@@ -40,6 +40,8 @@ public class SearchData {
     private String pacsOrder;   //当前正在下单辅检
     private String otherOrder; //其他
 
+    private String ruleType;   //规则类型
+
     //特征类别
     private String featureType;
     //特征类别对","进行分割后数据
@@ -62,4 +64,4 @@ public class SearchData {
     private List<Feature> pacsFeatureList = new ArrayList<>();
     private List<Feature> diagFeatureList = new ArrayList<>();
     private List<Feature> symptompropertyFeatureList = new ArrayList<>();
-}
+}

+ 26 - 0
aipt-service/src/main/java/com/diagbot/client/bean/Treat.java

@@ -0,0 +1,26 @@
+package com.diagbot.client.bean;
+
+import com.diagbot.dto.ConceptDetailDTO;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/11/21 15:36
+ */
+@Getter
+@Setter
+public class Treat {
+    private Integer disType;
+    private String diseaseName;
+    private List<AdverseReaction> adverseEvent;//不良反应
+    private List<TreatmentPlan> treatmentPlan;//治疗方案
+    private ConceptDetailDTO commonTreatment; //一般治疗
+    private ConceptDetailDTO surgeryTreatment; //手术治疗
+    private Object followUp;
+    private Map<String, List<Medicition>> drugHistory;
+}

+ 18 - 0
aipt-service/src/main/java/com/diagbot/client/bean/TreatmentPlan.java

@@ -0,0 +1,18 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/11/21 11:14
+ */
+@Getter
+@Setter
+public class TreatmentPlan {
+    private String title;
+    private List<MeditionDetail> meditionDetails;
+}

+ 8 - 0
aipt-service/src/main/java/com/diagbot/client/hystrix/TranServiceHystrix.java

@@ -4,12 +4,14 @@ import com.diagbot.client.TranServiceClient;
 import com.diagbot.client.bean.HosCodeVO;
 import com.diagbot.dto.GetDiseaseIcdDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
+import com.diagbot.dto.GetTopPatientInfoDjDTO;
 import com.diagbot.dto.HospitalDeptInfoDTO;
 import com.diagbot.dto.IndexDataDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SysSetInfoDTO;
 import com.diagbot.vo.DiseaseIcdVO;
 import com.diagbot.vo.GetDiseaseIcdVO;
+import com.diagbot.vo.GetTopPatientInfoDjVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.HospitalDeptInfoVO;
 import com.diagbot.vo.HospitalSetVO;
@@ -52,6 +54,12 @@ public class TranServiceHystrix implements TranServiceClient {
         return null;
     }
 
+    @Override
+    public RespDTO<GetTopPatientInfoDjDTO> getTopPatientInfoDj(GetTopPatientInfoDjVO getTopPatientInfoDjVO) {
+        log.error("【hystrix】调用{}异常", "getTopPatientInfoDj");
+        return null;
+    }
+
     /**
      * 根据医院编码和套餐名称获取化验公表映射关系
      *

+ 4 - 0
aipt-service/src/main/java/com/diagbot/config/MybatisPlusConfigurer.java

@@ -23,6 +23,10 @@ public class MybatisPlusConfigurer {
     @Bean
     public PaginationInterceptor paginationInterceptor() {
         PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        // 设置请求的页面大于最大页后操作,true调回到首页,false继续请求,默认false
+        //paginationInterceptor.setOverflow(false);
+        // 设置最大单页限制数量,默认500条,-1不受限制
+        paginationInterceptor.setLimit(500L);
         return paginationInterceptor;
     }
 

+ 0 - 12
aipt-service/src/main/java/com/diagbot/dto/GetTopPatientInfoDTO.java

@@ -141,16 +141,4 @@ public class GetTopPatientInfoDTO {
 	@ApiModelProperty(value="门诊号")
 	private String recordId;
 	
-    /**
-     * 模式分类
-     */
-	@ApiModelProperty(value="模式分类")
-    private Integer modeClassify;
-
-    /**
-     * 模式值
-     */
-	@ApiModelProperty(value="模式值")
-    private Integer modeValue;
-	
 }

+ 173 - 0
aipt-service/src/main/java/com/diagbot/dto/GetTopPatientInfoDjDTO.java

@@ -0,0 +1,173 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @author rgb
+ * @Description
+ * @time 2018年11月19日下午4:57:43
+ */
+@ApiModel(value = "页面顶部病人医生科室信息查询接口出参")
+@Getter
+@Setter
+public class GetTopPatientInfoDjDTO {
+
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(value = "医院id")
+    private Long hospitalId;
+
+    /**
+     * 医院编码
+     */
+    @ApiModelProperty(value = "医院编码")
+    private String hospitalCode;
+
+    /**
+     * 医院名称
+     */
+    @ApiModelProperty(value = "医院名称")
+    private String hospitalName;
+
+    /**
+     * 子医院id
+     */
+    @ApiModelProperty(value = "子医院id")
+    private Long sonHospitalId;
+
+    /**
+     * 子医院编码
+     */
+    @ApiModelProperty(value = "子医院编码")
+    private String sonHospitalCode;
+
+    /**
+     * 子医院名称
+     */
+    @ApiModelProperty(value = "子医院名称")
+    private String sonHospitalName;
+
+    /**
+     * 医院科室id
+     */
+    @ApiModelProperty(value = "医院科室id")
+    private Long hospitalDeptId;
+
+    /**
+     * 自己科室id
+     */
+    @ApiModelProperty(value = "自己科室id")
+    private Long selfDeptId;
+
+    /**
+     * 自己科室名称
+     */
+    @ApiModelProperty(value = "自己科室名称")
+    private String selfDeptName;
+
+    /**
+     * 医院科室编码
+     */
+    @ApiModelProperty(value = "医院科室编码")
+    private String hospitalDeptCode;
+
+    /**
+     * 医院科室名称
+     */
+    @ApiModelProperty(value = "医院科室名称")
+    private String hospitalDeptName;
+
+    /**
+     * 医生id
+     */
+    @ApiModelProperty(value = "医生id")
+    private Long doctorId;
+
+    /**
+     * 医生编码
+     */
+    @ApiModelProperty(value = "医生编码")
+    private String doctorCode;
+
+    /**
+     * 医生姓名
+     */
+    @ApiModelProperty(value = "医生姓名")
+    private String doctorName;
+
+    /**
+     * 病人id
+     */
+    @ApiModelProperty(value = "病人id")
+    private Long patientId;
+
+    /**
+     * 病人编号
+     */
+    @ApiModelProperty(value = "病人编号")
+    private String patientCode;
+
+    /**
+     * 病人姓名
+     */
+    @ApiModelProperty(value = "病人姓名")
+    private String patientName;
+
+    /**
+     * 病人性别
+     */
+    @ApiModelProperty(value = "病人性别")
+    private String patientSex;
+
+    /**
+     * 病人年龄
+     */
+    @ApiModelProperty(value = "病人年龄")
+    private Integer patientAge;
+
+    /**
+     * 病人证件号码
+     */
+    @ApiModelProperty(value = "病人证件号码")
+    private String patientIdNo;
+
+    /**
+     * 系统时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "系统时间")
+    private Date systemTime;
+
+    /**
+     * 出生日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "出生日期")
+    private Date birthday;
+
+    /**
+     * 门诊号
+     */
+    @ApiModelProperty(value = "门诊号")
+    private String recordId;
+
+    /**
+     * 模式分类
+     */
+    @ApiModelProperty(value = "模式分类")
+    private Integer modeClassify;
+
+    /**
+     * 模式值
+     */
+    @ApiModelProperty(value = "模式值")
+    private Integer modeValue;
+
+}

+ 1 - 1
aipt-service/src/main/java/com/diagbot/dto/SysSetInfoDTO.java

@@ -63,7 +63,7 @@ public class SysSetInfoDTO {
     /**
      * 配置值
      */
-    private Integer value;
+    private String value;
 
     /**
      * 备注

+ 0 - 196
aipt-service/src/main/java/com/diagbot/entity/SysLog.java

@@ -1,196 +0,0 @@
-package com.diagbot.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- * 系统操作日志表
- * </p>
- *
- * @author gaodm
- * @since 2018-09-14
- */
-public class SysLog implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 日志ID
-     */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    /**
-     * 是否删除,N:未删除,Y:删除
-     */
-    private String isDeleted;
-
-    /**
-     * 记录创建时间
-     */
-    private Date gmtCreate;
-
-    /**
-     * 记录修改时间,如果时间是1970年则表示纪录未修改
-     */
-    private Date gmtModified;
-
-    /**
-     * 创建人,0表示无创建人值
-     */
-    private String creator;
-
-    /**
-     * 修改人,如果为0则表示纪录未修改
-     */
-    private String modifier;
-
-    /**
-     * 访问者的IP
-     */
-    private String ip;
-
-    /**
-     * 访问的系统类型 1:user-service,2:diagbotman-service,3:uaa-service,4:log-service,5:bi-service,6:knowledge-service,7:feedback-service,8:icss-web
-     */
-    private Integer sysType;
-
-    /**
-     * 方法
-     */
-    private String method;
-
-    /**
-     * 操作名
-     */
-    private String operation;
-
-    /**
-     * 参数
-     */
-    private String params;
-
-    /**
-     * 用户名
-     */
-    private String username;
-
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getIsDeleted() {
-        return isDeleted;
-    }
-
-    public void setIsDeleted(String isDeleted) {
-        this.isDeleted = isDeleted;
-    }
-
-    public Date getGmtCreate() {
-        return gmtCreate;
-    }
-
-    public void setGmtCreate(Date gmtCreate) {
-        this.gmtCreate = gmtCreate;
-    }
-
-    public Date getGmtModified() {
-        return gmtModified;
-    }
-
-    public void setGmtModified(Date gmtModified) {
-        this.gmtModified = gmtModified;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public String getModifier() {
-        return modifier;
-    }
-
-    public void setModifier(String modifier) {
-        this.modifier = modifier;
-    }
-
-    public String getIp() {
-        return ip;
-    }
-
-    public void setIp(String ip) {
-        this.ip = ip;
-    }
-
-    public Integer getSysType() {
-        return sysType;
-    }
-
-    public void setSysType(Integer sysType) {
-        this.sysType = sysType;
-    }
-
-    public String getMethod() {
-        return method;
-    }
-
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-    public String getOperation() {
-        return operation;
-    }
-
-    public void setOperation(String operation) {
-        this.operation = operation;
-    }
-
-    public String getParams() {
-        return params;
-    }
-
-    public void setParams(String params) {
-        this.params = params;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    @Override
-    public String toString() {
-        return "SysLog{" +
-                "id=" + id +
-                ", isDeleted=" + isDeleted +
-                ", gmtCreate=" + gmtCreate +
-                ", gmtModified=" + gmtModified +
-                ", creator=" + creator +
-                ", modifier=" + modifier +
-                ", ip=" + ip +
-                ", sysType=" + sysType +
-                ", method=" + method +
-                ", operation=" + operation +
-                ", params=" + params +
-                ", username=" + username +
-                "}";
-    }
-}

+ 1 - 0
aipt-service/src/main/java/com/diagbot/enums/ConceptTypeEnum.java

@@ -24,6 +24,7 @@ public enum ConceptTypeEnum implements KeyedNamed {
     DEPARTMENT(15, "科室"),
     Scale(21, "量表"),
     Indication(22, "指标"),
+    OPERATION(25, "手术"),
     LisDetail(51, "化验明细");
 
 

+ 1 - 1
aipt-service/src/main/java/com/diagbot/enums/LexiconTypeEnum.java

@@ -74,7 +74,7 @@ public enum LexiconTypeEnum implements KeyedNamed {
     HISTORY_OF_MARRIAGE_AND_CHILDBEARING(62, "婚育史"),
     BIRTH_HISTORY(63, "生育史"),
     FAMILY_HISTORY(64, "家族史"),
-    FOOD_ALLERGY_HISTORY(65, "食物过敏史"),
+    FOOD_ALLERGY_HISTORY(65, "过敏史"),
     HISTORY_OF_DRUG_ALLERGY(66, "药物过敏史"),
     FAMILY_RELATED_INFECTIOUS_DISEASE_HISTORY(67, "家族相关传染病史"),
     FURTHER_CONSULTATION(68, "复诊"),

+ 13 - 0
aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -364,6 +364,19 @@ public class ConceptFacade extends ConceptServiceImpl {
     public List<RetrievalDTO> getStaticKnowledge(GetStaticKnowledgeVO getStaticKnowledgeVO) {
         RetrievalVO retrievalVO = new RetrievalVO();
         BeanUtil.copyProperties(getStaticKnowledgeVO, retrievalVO);
+        List<Integer> types = retrievalVO.getTypes();
+        if (types.contains(LexiconTypeEnum.LIS_PACKAGE.getKey())) {
+            retrievalVO.setHasLis(true);
+            List<Integer> typesNoLis = new ArrayList<>();
+            for (Integer type : types) {
+                if (LexiconTypeEnum.LIS_PACKAGE.getKey() != type.intValue()) {
+                    typesNoLis.add(type);
+                }
+            }
+            retrievalVO.setTypesNoLis(typesNoLis);
+        } else {
+            retrievalVO.setTypesNoLis(types);
+        }
         List<RetrievalDTO> staticRetrievalList = this.staticKnowledge(retrievalVO);
         for (RetrievalDTO retrievalDTO : staticRetrievalList) {
             retrievalDTO.setType(ParamConvertUtil.libConvert2Concept(retrievalDTO.getLibTypeId().intValue()));

+ 23 - 0
aipt-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java

@@ -2,11 +2,13 @@ package com.diagbot.facade;
 
 import com.diagbot.client.TranServiceClient;
 import com.diagbot.dto.GetTopPatientInfoDTO;
+import com.diagbot.dto.GetTopPatientInfoDjDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.vo.ConceptBaseVO;
+import com.diagbot.vo.GetTopPatientInfoDjVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -46,4 +48,25 @@ public class PatientInfoFacade {
         return getTopPatientInfoDTO;
     }
 
+    /**
+     * 对接-页面顶部病人医生科室信息查询
+     *
+     * @param getTopPatientInfoDjVO
+     * @return
+     */
+    public GetTopPatientInfoDjDTO getTopPatientInfoDj(@RequestBody GetTopPatientInfoDjVO getTopPatientInfoDjVO) {
+        RespDTO<GetTopPatientInfoDjDTO> respDTO = tranServiceClient.getTopPatientInfoDj(getTopPatientInfoDjVO);
+        RespDTOUtil.respNGDealCover(respDTO, "获取页面顶部病人医生科室信息失败");
+
+        GetTopPatientInfoDjDTO getTopPatientInfoDjDTO = respDTO.data;
+
+        ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
+        conceptBaseVO.setLibType(LexiconTypeEnum.DEPARTMENT.getKey());
+        conceptBaseVO.setName(getTopPatientInfoDjDTO.getSelfDeptName());
+        Concept concept = conceptFacade.exist(conceptBaseVO);
+        getTopPatientInfoDjDTO.setSelfDeptId(concept.getId());
+
+        return getTopPatientInfoDjDTO;
+    }
+
 }

+ 7 - 6
aipt-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -2,6 +2,7 @@ package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.client.bean.ResponseData;
+import com.diagbot.client.bean.Treat;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.enums.FeatureTypeEnum;
 import com.diagbot.enums.SysTypeEnum;
@@ -103,7 +104,7 @@ public class PushFacade {
      * @param searchVo
      * @return
      */
-    public Map<String, Object> getTreatment(SearchVo searchVo) {
+    public Treat getTreatment(SearchVo searchVo) {
         //记录外部诊断名称
         String diseaseName = searchVo.getDiseaseName();
         //是否对接
@@ -111,17 +112,17 @@ public class PushFacade {
         //入参预处理
         searchVo = precSearchData(searchVo, isConnect);
         ResponseData data = clinicalFacade.processClinicalData(searchVo);
-        Map<String, JSONObject> treat = data.getTreat();
+        Treat treat = data.getTreat();
         if (StringUtil.isBlank(searchVo.getDiseaseName())) {
             throw new CommonException(CommonErrorCode.PARAM_ERROR, "请输入需获取治疗方案的诊断名称");
         }
-        Map<String, Object> treatmentMap
-                = treatmentFacade.getTreatment(treat, searchVo.getDiseaseName(), searchVo.getDisType());
+        treat = treatmentFacade.getTreatment(treat, searchVo.getDiseaseName(), searchVo.getDisType());
+
         //数据引擎模式下,诊断名称转换成外部名称
         if (isConnect && searchVo.getSysType().equals(SysTypeEnum.LTAPI_SERVICE.getKey())) {
-            treatmentMap.put("diseaseName", diseaseName);
+            treat.setDiseaseName(diseaseName);
         }
-        return treatmentMap;
+        return treat;
     }
 
     /**

+ 1 - 1
aipt-service/src/main/java/com/diagbot/facade/TransferFacade.java

@@ -62,7 +62,7 @@ public class TransferFacade {
             if (RespDTOUtil.respIsOK(sysSetInfoListRes)) {
                 List<SysSetInfoDTO> sysSetInfoList = sysSetInfoListRes.data;
                 if (ListUtil.isNotEmpty(sysSetInfoList)) {
-                    if (sysSetInfoList.get(0).getValue().equals(1)) {
+                    if (sysSetInfoList.get(0).getValue().equals("1")) {
                         isConnect = true;
                     } else {
                         isConnect = false;

+ 64 - 172
aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -1,9 +1,11 @@
 package com.diagbot.facade;
 
-import com.alibaba.fastjson.JSONObject;
 import com.diagbot.client.bean.AdverseReaction;
 import com.diagbot.client.bean.Medicition;
 import com.diagbot.client.bean.MedicitionClass;
+import com.diagbot.client.bean.MeditionDetail;
+import com.diagbot.client.bean.Treat;
+import com.diagbot.client.bean.TreatmentPlan;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptDetail;
@@ -13,8 +15,8 @@ import com.diagbot.enums.LexiconRSTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
@@ -48,8 +50,8 @@ public class TreatmentFacade {
      * @param
      * @return
      */
-    public Map<String, Object> getTreatment(Map<String, JSONObject> treatmentMap, String diseaseName, Integer disType) {
-        Map<String, Object> retMap = new LinkedHashMap<>();
+    public Treat getTreatment(Treat treat, String diseaseName, Integer disType) {
+        List<MedicitionClass> drugsList = Lists.newLinkedList();
         List<String> conceptNameList = Lists.newLinkedList();
         conceptNameList.add(diseaseName);
         ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
@@ -59,49 +61,62 @@ public class TreatmentFacade {
         if (disease == null) {
             throw new CommonException(CommonErrorCode.NOT_EXISTS, "诊断不存在");
         }
-        if (treatmentMap == null || treatmentMap.size() == 0 || !treatmentMap.containsKey(diseaseName)) {
+        if (treat == null) {
             throw new CommonException(CommonErrorCode.NOT_EXISTS, "未找到治疗方案");
         }
 
         //治疗方案对应诊断
-        retMap.put("diseaseName", diseaseName);
+        treat.setDiseaseName(diseaseName);
 
-        //获取知识图谱治疗方案
-        JSONObject treatmentJson = treatmentMap.get(diseaseName);
-        if (treatmentJson == null || treatmentJson.isEmpty()) {
-            return retMap;
-        }
-        //推荐药物
-        List<MedicitionClass> drugsList
-                = FastJsonUtils.getJsonToListByKey(treatmentJson.toString(), "treatment", MedicitionClass.class);
+        //推荐治疗方案
+        List<TreatmentPlan> treatmentPlanList = treat.getTreatmentPlan();
         //不良反应
-        List<AdverseReaction> adverseReactionList
-                = FastJsonUtils.getJsonToListByKey(treatmentJson.toString(), "adverseEvent", AdverseReaction.class);
-        if (ListUtil.isNotEmpty(drugsList)) {
-            //药品大类
-            List<String> cateBigNameList = drugsList
-                    .stream()
-                    .map(drugs -> drugs.getBigdrugsName())
-                    .collect(Collectors.toList());
-            conceptNameList.addAll(cateBigNameList);
-            //药品小类
-            List<String> cateSmallNameList = drugsList
-                    .stream()
-                    .map(drugs -> drugs.getSubdrugsName())
-                    .collect(Collectors.toList());
-            conceptNameList.addAll(cateSmallNameList);
-            //药品
-            List<Medicition> medicitionTotalList = Lists.newLinkedList();
-            for (MedicitionClass medicitionClass : drugsList) {
-                if (medicitionClass.getMedicitionsList() != null) {
-                    medicitionTotalList.addAll(medicitionClass.getMedicitionsList());
+        List<AdverseReaction> adverseReactionList = treat.getAdverseEvent();
+
+        if (ListUtil.isNotEmpty(treatmentPlanList)) {
+            for (int index = 0; index < treatmentPlanList.size(); index++) {
+                TreatmentPlan treatmentPlan = treatmentPlanList.get(index);
+                List<MeditionDetail> meditionDetailList = treatmentPlan.getMeditionDetails();
+                if (ListUtil.isNotEmpty(meditionDetailList)) {
+                    for (MeditionDetail meditionDetail : meditionDetailList) {
+                        //药品推荐
+                        List<MedicitionClass> treatmentDrugList = meditionDetail.getTreatment();
+                        if (ListUtil.isNotEmpty(treatmentDrugList)) {
+                            drugsList.addAll(treatmentDrugList);
+                            //药品大类
+                            List<String> cateBigNameList = treatmentDrugList
+                                    .stream()
+                                    .map(drugs -> drugs.getBigdrugsName())
+                                    .collect(Collectors.toList());
+                            conceptNameList.addAll(cateBigNameList);
+                            //药品小类
+                            List<String> cateSmallNameList = treatmentDrugList
+                                    .stream()
+                                    .map(drugs -> drugs.getSubdrugsName())
+                                    .collect(Collectors.toList());
+                            conceptNameList.addAll(cateSmallNameList);
+                            //药品
+                            List<Medicition> medicitionTotalList = Lists.newLinkedList();
+                            for (MedicitionClass medicitionClass : treatmentDrugList) {
+                                if (medicitionClass.getMedicitionsList() != null) {
+                                    medicitionTotalList.addAll(medicitionClass.getMedicitionsList());
+                                }
+                            }
+                            List<String> drugNameList = medicitionTotalList
+                                    .stream()
+                                    .map(m -> m.getMedicitionName())
+                                    .collect(Collectors.toList());
+                            conceptNameList.addAll(drugNameList);
+                        } else {
+                            if (StringUtil.isBlank(meditionDetail.getDescription())) {
+                                treatmentPlanList.remove(index);
+                                index--;
+                                break;
+                            }
+                        }
+                    }
                 }
             }
-            List<String> drugNameList = medicitionTotalList
-                    .stream()
-                    .map(m -> m.getMedicitionName())
-                    .collect(Collectors.toList());
-            conceptNameList.addAll(drugNameList);
         }
         if (ListUtil.isNotEmpty(adverseReactionList)) {
             List<String> adNameList = adverseReactionList
@@ -138,155 +153,32 @@ public class TreatmentFacade {
 
         try {
             Map<String, Object> invokeParams = new HashMap<>();
-            invokeParams.put("treatmentMap", retMap);
+            invokeParams.put("treat", treat);
             invokeParams.put("diseaseName", diseaseName);
             invokeParams.put("drugsList", drugsList);
+            invokeParams.put("treatmentPlan", treatmentPlanList);
             invokeParams.put("conceptMap", conceptMap);
             invokeParams.put("hasConDetailMap", hasConDetailMap);
             invokeParams.put("adverseReactionList", adverseReactionList);
             invokeParams.put("isChronic", isChronic);
 
-            retMap
-                    = dataBeanAggregateQueryFacade.get("setTreatmentAll", invokeParams, Map.class);
+            treat = dataBeanAggregateQueryFacade.get("setTreatmentAll", invokeParams, Treat.class);
         } catch (Exception e) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
         }
         //判断是否慢病,慢病增加回访时间,上次用药,不良反应
         if (isChronic) {
-            if (retMap == null) {
-                retMap = new LinkedHashMap<>();
+            if (treat == null) {
+                treat = new Treat();
+                treat.setDiseaseName(diseaseName);
             }
+            treat.setDisType(1);
             //慢病,增加回访时间,暂时前端写死, 以后由只是图谱返回
-            retMap.put("followUp", null);
+            treat.setFollowUp(null);
             //上次用药-icss层处理
-            retMap.put("drugHistory", null);
+            treat.setDrugHistory(null);
         }
-
-        //        //一般治疗&&手术治疗
-        //        if (hasConDetailMap != null && hasConDetailMap.get(diseaseName) != null
-        //                && ListUtil.isNotEmpty(hasConDetailMap
-        //                .get(diseaseName)
-        //                .get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey())))) {
-        //            List<ConceptDetail> diseaseConDetailList
-        //                    = hasConDetailMap.get(diseaseName).get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey()));
-        //            for (ConceptDetail conceptDetail : diseaseConDetailList) {
-        //                ConceptDetailDTO conceptDetailDTO = new ConceptDetailDTO();
-        //                List<String> positionList = Arrays.asList(conceptDetail.getPosition().split(",|,"));
-        //                if (positionList.contains(String.valueOf(PositionTypeEnum.T3.getKey()))
-        //                        && retMap.get("commonTreatment") == null) {
-        //                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
-        //                    retMap.put("commonTreatment", conceptDetailDTO);
-        //                }
-        //                if (positionList.contains(String.valueOf(PositionTypeEnum.T4.getKey()))
-        //                        && retMap.get("surgeryTreatment") == null) {
-        //                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
-        //                    retMap.put("surgeryTreatment", conceptDetailDTO);
-        //                }
-        //            }
-        //        }
-        //        if (!retMap.containsKey("commonTreatment")) {
-        //            retMap.put("commonTreatment", null);
-        //        }
-        //        if (!retMap.containsKey("surgeryTreatment")) {
-        //            retMap.put("surgeryTreatment", null);
-        //        }
-
-        //        if (ListUtil.isNotEmpty(drugsList)) {
-        //            for (MedicitionClass medicitionClass : drugsList) {
-        //                if (conceptMap != null
-        //                        && conceptMap.get(medicitionClass.getBigdrugsName()) != null
-        //                        && conceptMap.get(medicitionClass
-        //                        .getBigdrugsName())
-        //                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
-        //                    Concept cateBigConcept = conceptMap
-        //                            .get(medicitionClass.getBigdrugsName())
-        //                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()));
-        //                    if (cateBigConcept != null) {
-        //                        medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
-        //                        if (hasConDetailMap != null
-        //                                && hasConDetailMap.get(cateBigConcept.getLibName()) != null
-        //                                && hasConDetailMap.get(cateBigConcept.getLibName())
-        //                                .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
-        //                            medicitionClass.setShowInfo("1");
-        //                        } else {
-        //                            medicitionClass.setShowInfo("0");
-        //                        }
-        //                    }
-        //                }
-        //                medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
-        //                medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
-        //                if (conceptMap != null
-        //                        && conceptMap.get(medicitionClass.getSubdrugsName()) != null
-        //                        && conceptMap.get(medicitionClass.getSubdrugsName())
-        //                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()))) {
-        //                    Concept cateSmallConcept = conceptMap
-        //                            .get(medicitionClass.getSubdrugsName())
-        //                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()));
-        //                    if (cateSmallConcept != null) {
-        //                        medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
-        //                    }
-        //                }
-        //                medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
-        //                medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
-        //
-        //                LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
-        //                for (Medicition medicition : medicitionList) {
-        //                    if (conceptMap != null
-        //                            && conceptMap.get(medicition.getMedicitionName()) != null
-        //                            && conceptMap.get(medicition.getMedicitionName())
-        //                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
-        //                        Concept drugConcept = conceptMap
-        //                                .get(medicition.getMedicitionName())
-        //                                .get(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()));
-        //                        if (drugConcept != null) {
-        //                            medicition.setConceptId(drugConcept.getId());
-        //                        }
-        //                    }
-        //                    medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
-        //                    medicition.setType(ConceptTypeEnum.Drug.getKey());
-        //                    if (hasConDetailMap != null
-        //                            && hasConDetailMap.get(medicition.getMedicitionName()) != null
-        //                            && hasConDetailMap.get(medicition.getMedicitionName())
-        //                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
-        //                        medicition.setShowInfo("1");
-        //                    } else {
-        //                        medicition.setShowInfo("0");
-        //                    }
-        //                }
-        //                medicitionClass.setMedicitionsList(medicitionList);
-        //            }
-        //        }
-        //        retMap.put("treatment", drugsList);
-
-
-        //        //不良反应
-        //        for (AdverseReaction adverseReaction : adverseReactionList) {
-        //            if (conceptMap != null
-        //                    && conceptMap.get(adverseReaction.getName()) != null
-        //                    && conceptMap.get(adverseReaction.getName())
-        //                    .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
-        //                Concept adConcept = conceptMap
-        //                        .get(adverseReaction.getName())
-        //                        .get(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()));
-        //                if (adConcept != null) {
-        //                    adverseReaction.setConceptId(adConcept.getId());
-        //                }
-        //            }
-        //            adverseReaction.setLibType(LexiconTypeEnum.SIDE_EFFECTS.getKey());
-        //            adverseReaction.setType(ConceptTypeEnum.SIDE_EFFECTS.getKey());
-        //            if (hasConDetailMap != null
-        //                    && hasConDetailMap.get(adverseReaction.getName()) != null
-        //                    && hasConDetailMap.get(adverseReaction.getName())
-        //                    .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
-        //                adverseReaction.setShowInfo("1");
-        //            } else {
-        //                adverseReaction.setShowInfo("0");
-        //            }
-        //        }
-        //        retMap.put("adverseReactions", adverseReactionList);
-
-
-        return retMap;
+        return treat;
     }
 
     /**

+ 1 - 1
aipt-service/src/main/java/com/diagbot/rabbit/MySender.java

@@ -1,6 +1,6 @@
 package com.diagbot.rabbit;
 
-import com.diagbot.entity.SysLog;
+import com.diagbot.log.entity.SysLog;
 import com.diagbot.util.GsonUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;

+ 6 - 2
aipt-service/src/main/java/com/diagbot/util/ParamConvertUtil.java

@@ -66,6 +66,9 @@ public class ParamConvertUtil {
             case DEPARTMENT:
                 libType = LexiconTypeEnum.DEPARTMENT.getKey();
                 break;
+            case OPERATION:
+                libType = LexiconTypeEnum.OPERATION.getKey();
+                break;
             default:
                 break;
         }
@@ -101,7 +104,6 @@ public class ParamConvertUtil {
             case MARRIAGE:
             case FOOD:
             case HISTORY:
-            case OPERATION:
             case PERSONAL_HISTORY:
             case PERSONAL_HISTORY_DESCRIPTION:
                 type = ConceptTypeEnum.Other.getKey();
@@ -146,7 +148,9 @@ public class ParamConvertUtil {
             case DEPARTMENT:
                 type = ConceptTypeEnum.DEPARTMENT.getKey();
                 break;
-
+            case OPERATION:
+                type = ConceptTypeEnum.OPERATION.getKey();
+                break;
             default:
                 break;
         }

+ 60 - 0
aipt-service/src/main/java/com/diagbot/vo/GetTopPatientInfoDjVO.java

@@ -0,0 +1,60 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author rgb
+ * @Description
+ * @time 2018年11月19日下午4:58:37
+ */
+@ApiModel(value = "页面顶部病人医生科室信息查询接口传参")
+@Getter
+@Setter
+public class GetTopPatientInfoDjVO {
+
+    /**
+     * 医院编号
+     */
+    @ApiModelProperty(value = "医院编号", required = true)
+    @NotBlank(message = "医院编号必填")
+    private String hospitalCode;
+
+    /**
+     * 子医院编号
+     */
+    @ApiModelProperty(value = "子医院编号")
+    private String sonHospitalCode;
+
+    /**
+     * 医院科室编号
+     */
+    @ApiModelProperty(value = "医院科室编号", required = true)
+    @NotBlank(message = "医院科室编号必填")
+    private String hospitalDeptCode;
+
+    /**
+     * 医院医生编号
+     */
+    @ApiModelProperty(value = "医院医生编号")
+    private String doctorCode;
+
+    /**
+     * 医院患者编号
+     */
+    @ApiModelProperty(value = "医院患者编号", required = true)
+    @NotBlank(message = "医院患者编号必填")
+    private String patientCode;
+
+    /**
+     * 门诊号
+     */
+    @ApiModelProperty(value = "门诊号")
+    private String recordId;
+
+
+}

+ 3 - 0
aipt-service/src/main/java/com/diagbot/vo/RetrievalVO.java

@@ -29,4 +29,7 @@ public class RetrievalVO {
     private Integer isStatic = 0;
     //是否显示子项(0.不显示,1.显示)
     private Integer isSonShow = 0;
+    private List<Integer> types; // 指定类型
+    private boolean hasLis = false; // 是否搜索化验
+    private List<Integer> typesNoLis; // 除去化验外的类型
 }

+ 3 - 1
aipt-service/src/main/java/com/diagbot/vo/SearchVo.java

@@ -26,7 +26,7 @@ public class SearchVo {
     //特征类别
     private String featureType;
     private String symptom;
-    private String past;
+    private String pasts;
     private String other;
     private String vital;
     @ApiModelProperty(hidden = true)
@@ -47,4 +47,6 @@ public class SearchVo {
     private String lisOrder;   //当前正在下单化验
     private String pacsOrder;   //当前正在下单辅检
     private String otherOrder; //其他
+
+    private String ruleType;   //规则类型
 }

+ 2 - 2
aipt-service/src/main/java/com/diagbot/web/ConceptDetailController.java

@@ -38,7 +38,7 @@ public class ConceptDetailController {
     @ApiOperation(value = "知识库标准化-获取提示信息[by:zhaops]",
             notes = "name: 标签名称,必填<br>" +
                     "titles: 标题,数组选填<br>" +
-                    "type:标签类型(1-症状,5-化验,6-辅检,7-诊断,8-药品,9-药品大类,10-不良反应,11-药品小类,12-化验公表项,22-指标),单选必填<br>" +
+                    "type:标签类型(1-症状,5-化验,6-辅检,7-诊断,8-药品,9-药品大类,10-不良反应,11-药品小类,12-化验公表项,22-指标,25-手术),单选必填<br>" +
                     "position:1-摘要,2-全文,5-药品说明书,6-不良反应,单选选填")
     @PostMapping("/getConceptDetail")
     @SysLogger("getConceptDetail")
@@ -50,7 +50,7 @@ public class ConceptDetailController {
     @ApiOperation(value = "知识库标准化-批量获取提示信息[by:zhaops]",
             notes = "name: 标签名称,必填<br>" +
                     "titles: 标题,数组选填<br>" +
-                    "type:标签类型(1-症状,5-化验,6-辅检,7-诊断,8-药品,9-药品大类,10-不良反应,11-药品小类,12-化验公表项,22-指标),单选必填<br>" +
+                    "type:标签类型(1-症状,5-化验,6-辅检,7-诊断,8-药品,9-药品大类,10-不良反应,11-药品小类,12-化验公表项,22-指标,25-手术),单选必填<br>" +
                     "position:1-摘要,2-全文,5-药品说明书,6-不良反应,单选选填")
     @PostMapping("/getConceptDetails")
     @SysLogger("getConceptDetails")

+ 9 - 0
aipt-service/src/main/java/com/diagbot/web/PatientInfoController.java

@@ -2,8 +2,10 @@ package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.GetTopPatientInfoDTO;
+import com.diagbot.dto.GetTopPatientInfoDjDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.PatientInfoFacade;
+import com.diagbot.vo.GetTopPatientInfoDjVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -44,4 +46,11 @@ public class PatientInfoController {
         return RespDTO.onSuc(patientInfoFacade.getTopPatientInfo(getTopPatientInfoVO));
     }
 
+    @ApiOperation(value = "知识库标准化-对接-页面顶部病人医生科室信息——查询[by:rengb]")
+    @PostMapping("/getTopPatientInfoDj")
+    @SysLogger("getTopPatientInfoDj")
+    public RespDTO<GetTopPatientInfoDjDTO> getTopPatientInfoDj(@Valid @RequestBody GetTopPatientInfoDjVO getTopPatientInfoDjVO) {
+        return RespDTO.onSuc(patientInfoFacade.getTopPatientInfoDj(getTopPatientInfoDjVO));
+    }
+
 }

+ 9 - 5
aipt-service/src/main/java/com/diagbot/web/PushController.java

@@ -1,6 +1,7 @@
 package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.client.bean.Treat;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.PushFacade;
@@ -14,7 +15,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
-import java.util.Map;
 
 /**
  * @Description:推理
@@ -33,6 +33,7 @@ public class PushController {
             notes = "age: 年龄(必填)<br>" +
                     "sex:性别(必填),M:男,F:女<br>" +
                     "symptom:症状,String<br>" +
+                    "pasts:既往史,String<br>" +
                     "other:其它史,String<br>" +
                     "vital:查体,String<br>" +
                     "lis:化验,Array<br>" +
@@ -59,11 +60,12 @@ public class PushController {
                     "lisString:化验纯文本,String<br>" +
                     "lisOrder:下单化验项,多项用分号隔开,String<br>" +
                     "pacsOrder:下单辅检项,多项用分号隔开,String<br>" +
-                    "otherOrder:其他下单项,多项用分号隔开,String<br>")
+                    "otherOrder:其他下单项,多项用分号隔开,String<br>" +
+                    "ruleType:规则类型,1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐,多项用分号隔开,String<br>")
     @PostMapping("/treatment")
     @SysLogger("treatment")
-    public RespDTO<Map<String, Object>> getTreatment(@Valid @RequestBody SearchVo searchVo) {
-        Map<String, Object> data = pushFacade.getTreatment((searchVo));
+    public RespDTO<Treat> getTreatment(@Valid @RequestBody SearchVo searchVo) {
+        Treat data = pushFacade.getTreatment((searchVo));
         return RespDTO.onSuc(data);
     }
 
@@ -71,6 +73,7 @@ public class PushController {
             notes = "age: 年龄(必填)<br>" +
                     "sex:性别(必填),M:男,F:女<br>" +
                     "symptom:症状,String<br>" +
+                    "pasts:既往史,String<br>" +
                     "other:其它史,String<br>" +
                     "vital:查体,String<br>" +
                     "lis:化验,Array<br>" +
@@ -96,7 +99,8 @@ public class PushController {
                     "lisString:化验纯文本,String<br>" +
                     "lisOrder:下单化验项,多项用分号隔开,String<br>" +
                     "pacsOrder:下单辅检项,多项用分号隔开,String<br>" +
-                    "otherOrder:其他下单项,多项用分号隔开,String<br>")
+                    "otherOrder:其他下单项,多项用分号隔开,String<br>" +
+                    "ruleType:规则类型,1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐,多项用分号隔开,String<br>")
     @PostMapping("/pushInner")
     @SysLogger("pushInner")
     public RespDTO<PushDTO> pushInner(@Valid @RequestBody SearchVo searchVo) {

+ 90 - 65
aipt-service/src/main/resources/mapper/ConceptMapper.xml

@@ -222,7 +222,7 @@
                 #{id}
             </foreach>
         </if>
-        AND (t2.spell =  UPPER(#{InputStr}) OR t2.name =  #{InputStr})
+        AND (UPPER(t2.spell) =  UPPER(TRIM(#{InputStr})) OR UPPER(t2.name) =  UPPER(TRIM(#{InputStr})))
         LIMIT 100)
         UNION
         (SELECT t1.id selfId,t1.lib_name selfName,0 parentId,null parentName,t2.`name` sameName,t2.is_concept showType,t1.lib_type libTypeId,t6.`name` libTypeName FROM kl_concept t1
@@ -259,7 +259,7 @@
                 #{id}
             </foreach>
         </if>
-        AND (t2.spell LIKE CONCAT( UPPER(#{InputStr}),'%') OR t2.name LIKE CONCAT( #{InputStr},'%'))
+        AND (UPPER(t2.spell) LIKE CONCAT( UPPER(TRIM(#{InputStr})),'%') OR UPPER(t2.name) LIKE CONCAT( UPPER(TRIM(#{InputStr})),'%'))
         LIMIT 100)
         UNION
         (SELECT t1.id selfId,t1.lib_name selfName,0 parentId,null parentName,t2.`name` sameName,t2.is_concept showType,t1.lib_type libTypeId,t6.`name` libTypeName FROM kl_concept t1
@@ -296,7 +296,7 @@
                 #{id}
             </foreach>
         </if>
-        AND (t2.spell LIKE CONCAT('%',UPPER(#{InputStr}),'%') OR t2.name LIKE CONCAT('%',#{InputStr},'%'))
+        AND (UPPER(t2.spell) LIKE CONCAT('%',UPPER(TRIM(#{InputStr})),'%') OR UPPER(t2.name) LIKE CONCAT('%',UPPER(TRIM(#{InputStr})),'%'))
         LIMIT 100)
         <if test="detailType != null and detailType != ''">
             UNION
@@ -326,7 +326,7 @@
                 AND <![CDATA[ t3.min_age <= #{age} ]]>
                 AND <![CDATA[ t3.max_age >= #{age} ]]>
             </if>
-            AND (t2.spell =  UPPER(#{InputStr}) OR t2.name =  #{InputStr})
+            AND (UPPER(t2.spell) =  UPPER(TRIM(#{InputStr})) OR UPPER(t2.name) =  UPPER(TRIM(#{InputStr})))
             <if test="inputIds != null and inputIds.size > 0">
                 and t1.id not in
                 <foreach item="id" collection="inputIds" open="(" separator="," close=")">
@@ -362,7 +362,7 @@
                 AND <![CDATA[ t3.min_age <= #{age} ]]>
                 AND <![CDATA[ t3.max_age >= #{age} ]]>
             </if>
-            AND (t2.spell LIKE CONCAT(UPPER(#{InputStr}),'%') OR t2.name LIKE CONCAT( #{InputStr},'%'))
+            AND (UPPER(t2.spell) LIKE CONCAT(UPPER(TRIM(#{InputStr})),'%') OR UPPER(t2.name) LIKE CONCAT( UPPER(TRIM(#{InputStr})),'%'))
             <if test="inputIds != null and inputIds.size > 0">
                 and t1.id not in
                 <foreach item="id" collection="inputIds" open="(" separator="," close=")">
@@ -401,7 +401,7 @@
                 AND <![CDATA[ t3.min_age <= #{age} ]]>
                 AND <![CDATA[ t3.max_age >= #{age} ]]>
             </if>
-            AND (t2.spell LIKE CONCAT('%',UPPER(#{InputStr}),'%') OR t2.name LIKE CONCAT('%',#{InputStr},'%'))
+            AND (UPPER(t2.spell) LIKE CONCAT('%',UPPER(TRIM(#{InputStr})),'%') OR UPPER(t2.name) LIKE CONCAT('%',UPPER(TRIM(#{InputStr})),'%'))
             <if test="inputIds != null and inputIds.size > 0">
                 and t1.id not in
                 <foreach item="id" collection="inputIds" open="(" separator="," close=")">
@@ -421,6 +421,7 @@
         FROM
             (
                 -- 除化验外其他类型标签
+                <if test="typesNoLis != null and typesNoLis.size() > 0">
                 (
                     SELECT
                         b1.*, 0 uniqueId,
@@ -436,30 +437,42 @@
                                         10
                                     WHEN 10 THEN
                                         20
-                                    ELSE
+                                    WHEN 1 THEN
+                                        25
+                                    WHEN 16 THEN
                                         50
+                                    WHEN 25 THEN
+                                        60
+                                    ELSE
+                                        100
                                     END
                                 ) + 1 AS orderNo,
                                 t2.`name` retrievalName,
                                 t2.is_concept showType,
                                 t1.lib_type libTypeId,
-                                t6.`name` libTypeName
+                                CASE t6.`name`
+                                  when '药品通用名' then '药品'
+                                  when '辅检项目' then '辅检'
+                                  ELSE t6.`name`
+                                END libTypeName
                             FROM
                                 kl_concept t1
                             LEFT JOIN kl_library_info t2 ON t1.id = t2.concept_id
-                            LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                             LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
                             LEFT JOIN kl_concept_detail t7 ON t7.concept_id = t1.id
                             WHERE
                                 t1.is_deleted = 'N'
                             AND t2.is_deleted = 'N'
-                            AND t3.is_deleted = 'N'
                             AND t6.is_deleted = 'N'
                             AND t7.is_deleted = 'N'
-                            AND t1.lib_type IN (18, 10, 16)
+                            AND t1.lib_type IN
+                            <foreach collection="typesNoLis" item="item" open="(" close=")"
+                                     separator=",">
+                                #{item}
+                            </foreach>
                             AND (
-                                t2.spell = UPPER(#{InputStr})
-                                OR t2. NAME = (#{InputStr})
+                                UPPER(t2.spell) = UPPER(TRIM(#{InputStr}))
+                                OR UPPER(TRIM(t2. NAME)) = UPPER((TRIM(#{InputStr})))
                             )
                         ) b1
                 )
@@ -479,30 +492,42 @@
                                             10
                                         WHEN 10 THEN
                                             20
-                                        ELSE
+                                        WHEN 1 THEN
+                                            25
+                                        WHEN 16 THEN
                                             50
+                                        WHEN 25 THEN
+                                            60
+                                        ELSE
+                                            100
                                         END
                                     ) + 2 AS orderNo,
                                     t2.`name` retrievalName,
                                     t2.is_concept showType,
                                     t1.lib_type libTypeId,
-                                    t6.`name` libTypeName
+                                    CASE t6.`name`
+                                    when '药品通用名' then '药品'
+                                    when '辅检项目' then '辅检'
+                                    ELSE t6.`name`
+                                    END libTypeName
                                 FROM
                                     kl_concept t1
                                 LEFT JOIN kl_library_info t2 ON t1.id = t2.concept_id
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
                                 LEFT JOIN kl_concept_detail t7 ON t7.concept_id = t1.id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t7.is_deleted = 'N'
-                                AND t1.lib_type IN (18, 10, 16)
+                                AND t1.lib_type IN
+                                <foreach collection="typesNoLis" item="item" open="(" close=")"
+                                         separator=",">
+                                    #{item}
+                                </foreach>
                                 AND (
-                                    t2.spell LIKE CONCAT(UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT((#{InputStr}), '%')
+                                    UPPER(t2.spell) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
                                 )
                             ) b1
                     )
@@ -522,34 +547,51 @@
                                             10
                                         WHEN 10 THEN
                                             20
-                                        ELSE
+                                        WHEN 1 THEN
+                                            25
+                                        WHEN 16 THEN
                                             50
+                                        WHEN 25 THEN
+                                            60
+                                        ELSE
+                                            100
                                         END
                                     ) + 3 AS orderNo,
                                     t2.`name` retrievalName,
                                     t2.is_concept showType,
                                     t1.lib_type libTypeId,
-                                    t6.`name` libTypeName
+                                    CASE t6.`name`
+                                    when '药品通用名' then '药品'
+                                    when '辅检项目' then '辅检'
+                                    ELSE t6.`name`
+                                    END libTypeName
                                 FROM
                                     kl_concept t1
                                 LEFT JOIN kl_library_info t2 ON t1.id = t2.concept_id
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
                                 LEFT JOIN kl_concept_detail t7 ON t7.concept_id = t1.id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t7.is_deleted = 'N'
-                                AND t1.lib_type IN (18, 10, 16)
+                                AND t1.lib_type IN
+                                <foreach collection="typesNoLis" item="item" open="(" close=")"
+                                         separator=",">
+                                    #{item}
+                                </foreach>
                                 AND (
-                                    t2.spell LIKE CONCAT('%', UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT('%',(#{InputStr}), '%')
+                                    UPPER(t2.spell) LIKE CONCAT('%', UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT('%',UPPER(TRIM(#{InputStr})), '%')
                                 )
                             ) b1
-                    ) -- 化验本体标签公表项匹配静态知识
+                    )
+                </if>
+                -- 化验本体标签公表项匹配静态知识
+                <if test="typesNoLis != null and typesNoLis.size() > 0 and hasLis == true">
                 UNION
+                </if>
+                <if test="hasLis == true">
                     (
                         SELECT
                             b2.id conceptId,
@@ -573,17 +615,15 @@
                                 FROM
                                     kl_concept t1
                                 LEFT JOIN kl_library_info t2 ON t1.id = t2.concept_id
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 12
                                 AND (
-                                    t2.spell = UPPER(#{InputStr})
-                                    OR t2. NAME = (#{InputStr})
+                                    UPPER(t2.spell) = UPPER(TRIM(#{InputStr}))
+                                    OR UPPER(t2. NAME) = UPPER(TRIM(#{InputStr}))
                                 )
                             ) b1,
                             kl_concept b2,
@@ -623,17 +663,15 @@
                                 FROM
                                     kl_concept t1
                                 LEFT JOIN kl_library_info t2 ON t1.id = t2.concept_id
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 12
                                 AND (
-                                    t2.spell LIKE CONCAT(UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT((#{InputStr}), '%')
+                                    UPPER(t2.spell) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
                                 )
                             ) b1,
                             kl_concept b2,
@@ -673,17 +711,15 @@
                                 FROM
                                     kl_concept t1
                                 LEFT JOIN kl_library_info t2 ON t1.id = t2.concept_id
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 12
                                 AND (
-                                    t2.spell LIKE CONCAT('%', UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT('%',(#{InputStr}), '%')
+                                    UPPER(t2.spell) LIKE CONCAT('%', UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT('%',UPPER(TRIM(#{InputStr})), '%')
                                 )
                             ) b1,
                             kl_concept b2,
@@ -728,18 +764,16 @@
                                 LEFT JOIN kl_relation t4 ON t4.end_id = t1.id
                                 LEFT JOIN kl_concept t5 ON t5.id = t4.start_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t5.lib_type
-                                LEFT JOIN kl_concept_common t3 ON t5.id = t3.concept_id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t4.is_deleted = 'N'
                                 AND t5.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 13
                                 AND (
-                                    t2.spell = UPPER(#{InputStr})
-                                    OR t2. NAME = #{InputStr}
+                                    UPPER(t2.spell) = UPPER(TRIM(#{InputStr}))
+                                    OR UPPER(t2. NAME) = UPPER(TRIM(#{InputStr}))
                                 )
                                 AND t4.relation_id = 18
                             ) b1,
@@ -785,18 +819,16 @@
                                 LEFT JOIN kl_relation t4 ON t4.end_id = t1.id
                                 LEFT JOIN kl_concept t5 ON t5.id = t4.start_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t5.lib_type
-                                LEFT JOIN kl_concept_common t3 ON t5.id = t3.concept_id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t4.is_deleted = 'N'
                                 AND t5.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 13
                                 AND (
-                                    t2.spell LIKE CONCAT(UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT(#{InputStr}, '%')
+                                    UPPER(t2.spell) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
                                 )
                                 AND t4.relation_id = 18
                             ) b1,
@@ -842,18 +874,16 @@
                                 LEFT JOIN kl_relation t4 ON t4.end_id = t1.id
                                 LEFT JOIN kl_concept t5 ON t5.id = t4.start_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t5.lib_type
-                                LEFT JOIN kl_concept_common t3 ON t5.id = t3.concept_id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t4.is_deleted = 'N'
                                 AND t5.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 13
                                 AND (
-                                    t2.spell LIKE CONCAT('%', UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT('%', #{InputStr}, '%')
+                                    UPPER(t2.spell) LIKE CONCAT('%', UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT('%', UPPER(TRIM(#{InputStr})), '%')
                                 )
                                 AND t4.relation_id = 18
                             ) b1,
@@ -899,18 +929,16 @@
                                 LEFT JOIN kl_relation t4 ON t4.end_id = t1.id
                                 LEFT JOIN kl_concept t5 ON t5.id = t4.start_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t4.is_deleted = 'N'
                                 AND t5.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 13
                                 AND (
-                                    t2.spell = UPPER(#{InputStr})
-                                    OR t2. NAME = #{InputStr}
+                                    UPPER(t2.spell) = UPPER(TRIM(#{InputStr}))
+                                    OR UPPER(t2. NAME) = UPPER(TRIM(#{InputStr}))
                                 )
                                 AND t4.relation_id = 18
                             ) b1,
@@ -956,18 +984,16 @@
                                 LEFT JOIN kl_relation t4 ON t4.end_id = t1.id
                                 LEFT JOIN kl_concept t5 ON t5.id = t4.start_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t4.is_deleted = 'N'
                                 AND t5.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 13
                                 AND (
-                                    t2.spell LIKE CONCAT(UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT(#{InputStr}, '%')
+                                    UPPER(t2.spell) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT(UPPER(TRIM(#{InputStr})), '%')
                                 )
                                 AND t4.relation_id = 18
                             ) b1,
@@ -1013,18 +1039,16 @@
                                 LEFT JOIN kl_relation t4 ON t4.end_id = t1.id
                                 LEFT JOIN kl_concept t5 ON t5.id = t4.start_id
                                 LEFT JOIN kl_lexicon t6 ON t6.id = t1.lib_type
-                                LEFT JOIN kl_concept_common t3 ON t1.id = t3.concept_id
                                 WHERE
                                     t1.is_deleted = 'N'
                                 AND t2.is_deleted = 'N'
-                                AND t3.is_deleted = 'N'
                                 AND t4.is_deleted = 'N'
                                 AND t5.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
                                 AND t1.lib_type = 13
                                 AND (
-                                    t2.spell LIKE CONCAT('%', UPPER(#{InputStr}), '%')
-                                    OR t2. NAME LIKE CONCAT('%', #{InputStr}, '%')
+                                    UPPER(t2.spell) LIKE CONCAT('%', UPPER(TRIM(#{InputStr})), '%')
+                                    OR UPPER(t2. NAME) LIKE CONCAT('%', UPPER(TRIM(#{InputStr})), '%')
                                 )
                                 AND t4.relation_id = 18
                             ) b1,
@@ -1041,6 +1065,7 @@
                         AND b2.lib_type = 46
                         AND b2.id = b3.concept_id
                     )
+                </if>
             ) a1
         ORDER BY
             a1.orderNo ASC,
@@ -1085,7 +1110,7 @@
         SELECT DISTINCT b.id concept_id,b.lib_name name  FROM `kl_library_info` a, kl_concept b
         where a.is_deleted = 'N' and b.is_deleted = 'N'
         and a.concept_id = b.id
-        and a.`name` like concat('%',#{name},'%') and a.type_id = #{libType} and b.lib_type = #{libType}
+        and UPPER(TRIM(a.`name`)) like concat('%',UPPER(TRIM(#{name})),'%') and a.type_id = #{libType} and b.lib_type = #{libType}
     </select>
 
 </mapper>

+ 6 - 6
aipt-service/src/main/resources/mapper/DisScaleMapper.xml

@@ -11,7 +11,7 @@
                 SELECT a.name search_name,b.id concept_id,b.lib_name name,a.is_concept as show_type, 0 as from_dis
                 FROM `kl_library_info` a, kl_concept b
                 where a.is_deleted = 'N' and b.is_deleted = 'N' and a.concept_id = b.id
-                and a.`name` = #{name}
+                and UPPER(TRIM(a.`name`)) = UPPER(TRIM(#{name}))
                 and b.lib_type = #{endType}
             )
             union
@@ -19,7 +19,7 @@
             SELECT a.name search_name,b.id concept_id,b.lib_name name,a.is_concept as show_type, 0 as from_dis
             FROM `kl_library_info` a, kl_concept b
             where a.is_deleted = 'N' and b.is_deleted = 'N' and a.concept_id = b.id
-            and a.`name` like concat (#{name},'%')
+            and UPPER(TRIM(a.`name`)) like concat (UPPER(TRIM(#{name})),'%')
             and b.lib_type = #{endType}
             )
             union
@@ -27,7 +27,7 @@
             SELECT a.name search_name,b.id concept_id,b.lib_name name,a.is_concept as show_type, 0 as from_dis
             FROM `kl_library_info` a, kl_concept b
             where a.is_deleted = 'N' and b.is_deleted = 'N' and a.concept_id = b.id
-            and a.`name` like concat ('%',#{name},'%')
+            and UPPER(TRIM(a.`name`)) like concat ('%',UPPER(TRIM(#{name})),'%')
             and b.lib_type = #{endType}
             )
 
@@ -52,7 +52,7 @@
                     AND t1.id = t2.start_id
                     AND t3.id = t2.end_id
                     <if test="name != null and name != ''">
-                        AND t1.lib_name LIKE  concat ('%',#{name},'%')
+                        AND UPPER(TRIM(t1.lib_name)) LIKE  concat ('%',UPPER(TRIM(#{name})),'%')
                     </if>
                     <if test="startType != null">
                         AND t1.lib_type = #{startType}
@@ -68,9 +68,9 @@
         ) s
         where 1 = 1
         <if test="filterName != null and filterName.size > 0">
-            and s.name not in
+            and TRIM(s.name) not in
             <foreach item="item" collection="filterName" open="(" separator="," close=")">
-                #{item}
+                TRIM(#{item})
             </foreach>
         </if>
 

+ 1 - 1
aipt-service/src/main/resources/mapper/EvaluationMapper.xml

@@ -31,7 +31,7 @@
 		WHERE a.is_deleted = "N"
 		AND b.lib_type = 18
 		<if test="evaluationModule.diseaseName != null">
-		AND b.lib_name  LIKE CONCAT('%', #{evaluationModule.diseaseName}, '%')
+		AND b.lib_name = #{evaluationModule.diseaseName}
 		</if>
 	</select>
 </mapper>

+ 6 - 41
bi-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java

@@ -1,24 +1,17 @@
 package com.diagbot.aop;
 
-import com.diagbot.annotation.SysLogger;
-import com.diagbot.entity.SysLog;
+import com.diagbot.log.entity.SysLog;
 import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.rabbit.MySender;
-import com.diagbot.util.GsonUtil;
-import com.diagbot.util.HttpUtils;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.UserUtils;
+import com.diagbot.util.AopUtil;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
-import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
-import java.lang.reflect.Method;
-import java.util.Date;
-
 /**
  * @Description: 日志拦截切面
  * @author: gaodm
@@ -26,6 +19,7 @@ import java.util.Date;
  */
 @Aspect
 @Component
+@ConditionalOnProperty(prefix = "syslog", value = { "enable" }, havingValue = "true")
 public class SysLoggerAspect {
     @Autowired
     private MySender mySender;
@@ -37,37 +31,8 @@ public class SysLoggerAspect {
 
     @Before("loggerPointCut()")
     public void saveSysLog(JoinPoint joinPoint) {
-        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-        Method method = signature.getMethod();
-
-        SysLog sysLog = new SysLog();
-        SysLogger sysLogger = method.getAnnotation(SysLogger.class);
-        if (sysLogger != null) {
-            //注解上的描述
-            sysLog.setOperation(sysLogger.value());
-        }
-        //请求的方法名
-        String className = joinPoint.getTarget().getClass().getName();
-        String methodName = signature.getName();
-        sysLog.setMethod(className + "." + methodName + "()");
-        //请求的参数
-        Object[] args = joinPoint.getArgs();
-        String params = "";
-        for (Object o : args) {
-            params += GsonUtil.toJson(o);
-        }
-        if (!StringUtil.isEmpty(params)) {
-            sysLog.setParams(params);
-        }
-        //设置IP地址
-        sysLog.setIp(HttpUtils.getIpAddress());
-        //用户名
-        String username = UserUtils.getCurrentPrinciple();
-        if (!StringUtil.isEmpty(username)) {
-            sysLog.setUsername(username);
-        }
-        sysLog.setGmtCreate(new Date());
-        sysLog.setSysType(SysTypeEnum.BI_SERVICE.getKey());
+        //入参设置
+        SysLog sysLog = AopUtil.sysLoggerAspect(joinPoint, SysTypeEnum.BI_SERVICE.getKey());
         //保存系统日志
         mySender.outputLogSend(sysLog);
     }

+ 4 - 0
bi-service/src/main/java/com/diagbot/config/MybatisPlusConfigurer.java

@@ -23,6 +23,10 @@ public class MybatisPlusConfigurer {
     @Bean
     public PaginationInterceptor paginationInterceptor() {
         PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        // 设置请求的页面大于最大页后操作,true调回到首页,false继续请求,默认false
+        //paginationInterceptor.setOverflow(false);
+        // 设置最大单页限制数量,默认500条,-1不受限制
+        paginationInterceptor.setLimit(500L);
         return paginationInterceptor;
     }
 

+ 1 - 1
bi-service/src/main/java/com/diagbot/rabbit/MySender.java

@@ -1,6 +1,6 @@
 package com.diagbot.rabbit;
 
-import com.diagbot.entity.SysLog;
+import com.diagbot.log.entity.SysLog;
 import com.diagbot.util.GsonUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;

+ 6 - 0
common/pom.xml

@@ -114,6 +114,12 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <version>1.9.4</version>
+        </dependency>
+
         <!--<dependency>-->
             <!--<groupId>com.fasterxml.jackson.core</groupId>-->
             <!--<artifactId>jackson-core</artifactId>-->

+ 19 - 0
common/src/main/java/com/diagbot/annotation/BiLogger.java

@@ -0,0 +1,19 @@
+package com.diagbot.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description: BI统计注解
+ * @author: gaodm
+ * @time: 2019/11/11 11:46
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface BiLogger {
+    String value() default "";
+}

+ 19 - 0
common/src/main/java/com/diagbot/annotation/BiLoggerResult.java

@@ -0,0 +1,19 @@
+package com.diagbot.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description: BI统计注解结果太大需特殊处理
+ * @author: gaodm
+ * @time: 2019/11/11 11:46
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface BiLoggerResult {
+    String value() default "";
+}

+ 49 - 0
common/src/main/java/com/diagbot/enums/BiSourceEnum.java

@@ -0,0 +1,49 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description: 产品类型
+ * @author: gaodm
+ * @time: 2018/9/14 9:15
+ */
+public enum BiSourceEnum implements KeyedNamed {
+    BI_NORMAL(1, "后台接口-无处理"),
+    BI_RESULT(2, "后台接口-结果特殊处理"),
+    FRONT(3, "前端");
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    BiSourceEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static BiSourceEnum getEnum(int key) {
+        for (BiSourceEnum item : BiSourceEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        BiSourceEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 2 - 1
common/src/main/java/com/diagbot/enums/ProductTypeEnum.java

@@ -14,7 +14,8 @@ public enum ProductTypeEnum implements KeyedNamed {
     ICSS(3, "ICSS"),
     TRIAGE(4, "智能分诊"),
     DATA(5, "页面推送模式"),
-    PREC(6, "智能预问诊");
+    PREC(6, "智能预问诊"),
+    LTAPI(7, "数据引擎模式");
     @Setter
     private int key;
 

+ 101 - 0
common/src/main/java/com/diagbot/log/entity/BiRecord.java

@@ -0,0 +1,101 @@
+package com.diagbot.log.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description: BI记录实体类
+ * @author: gaodm
+ * @time: 2019/11/11 14:27
+ */
+@Getter
+@Setter
+public class BiRecord {
+
+    /**
+     * 日志ID
+     */
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 医院编码
+     */
+    private String hospitalCode;
+
+    /**
+     * 医院医生编码
+     */
+    private String doctorCode;
+
+    /**
+     * 医院科室编码
+     */
+    private String deptCode;
+
+    /**
+     * 医院患者编码
+     */
+    private String patientCode;
+
+    /**
+     * 产品类型(1:云平台内部;2:云平台外部;3:icss;4:智能分诊;5:页面推送模式;6:智能预问诊;7:数据引擎模式)
+     */
+    private Integer productType;
+
+    /**
+     * 功能编码
+     */
+    private String code;
+
+    /**
+     * 输入参数
+     */
+    private String params;
+
+    /**
+     * 返回参数
+     */
+    private String result;
+
+    /**
+     * 响应时间
+     */
+    private String execTime;
+
+    /**
+     * 调用是否成功(0:失败;1:成功)
+     */
+    private Integer successFlag;
+
+    /**
+     * 来源(1:后台接口-无处理;2:后台接口-结果特殊处理;3:前端)
+     */
+    private Integer source;
+}

+ 82 - 0
common/src/main/java/com/diagbot/log/entity/SysLog.java

@@ -0,0 +1,82 @@
+package com.diagbot.log.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 系统操作日志表
+ * </p>
+ *
+ * @author gaodm
+ * @since 2018-09-14
+ */
+@Getter
+@Setter
+public class SysLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 日志ID
+     */
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 访问者的IP
+     */
+    private String ip;
+
+    /**
+     * 访问的系统类型 1:user-service,2:diagbotman-service,3:uaa-service,4:log-service,5:bi-service,6:knowledge-service,7:feedback-service,8:icss-web
+     */
+    private Integer sysType;
+
+    /**
+     * 方法
+     */
+    private String method;
+
+    /**
+     * 操作名
+     */
+    private String operation;
+
+    /**
+     * 参数
+     */
+    private String params;
+
+    /**
+     * 用户名
+     */
+    private String username;
+}

+ 330 - 0
common/src/main/java/com/diagbot/util/AopUtil.java

@@ -0,0 +1,330 @@
+package com.diagbot.util;
+
+import com.diagbot.annotation.BiLogger;
+import com.diagbot.annotation.BiLoggerResult;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.annotation.SysLoggerExport;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.enums.BiSourceEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.log.entity.BiRecord;
+import com.diagbot.log.entity.SysLog;
+import com.diagbot.vo.BaseBiVO;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.validation.BindException;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
+
+import java.lang.reflect.Method;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/11/12 18:17
+ */
+public class AopUtil {
+    /**
+     * SysLoggerAspect入参设置
+     *
+     * @param joinPoint
+     * @param sysType
+     */
+    public static SysLog sysLoggerAspect(JoinPoint joinPoint, Integer sysType) {
+        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+        Method method = signature.getMethod();
+
+        SysLog sysLog = new SysLog();
+        SysLogger sysLogger = method.getAnnotation(SysLogger.class);
+        if (sysLogger != null) {
+            //注解上的描述
+            sysLog.setOperation(sysLogger.value());
+        }
+        //请求的方法名
+        String className = joinPoint.getTarget().getClass().getName();
+        String methodName = signature.getName();
+        sysLog.setMethod(className + "." + methodName + "()");
+        //请求的参数
+        Object[] args = joinPoint.getArgs();
+        String params = "";
+        for (Object o : args) {
+            params += FastJsonUtils.getBeanToJson(o);
+        }
+        if (!StringUtil.isEmpty(params)) {
+            sysLog.setParams(params);
+        }
+        //设置IP地址
+        sysLog.setIp(HttpUtils.getIpAddress());
+        //用户名
+        String username = UserUtils.getCurrentPrinciple();
+        if (!StringUtil.isEmpty(username)) {
+            sysLog.setUsername(username);
+        }
+        sysLog.setGmtCreate(new Date());
+        sysLog.setSysType(sysType);
+        return sysLog;
+    }
+
+    /**
+     * SysLoggerExprotAspect入参设置
+     *
+     * @param joinPoint
+     * @param sysType
+     */
+    public static SysLog sysLoggerExprotAspect(JoinPoint joinPoint, Integer sysType) {
+        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+        Method method = signature.getMethod();
+
+        SysLog sysLog = new SysLog();
+        SysLoggerExport sysLogger = method.getAnnotation(SysLoggerExport.class);
+        if (sysLogger != null) {
+            //注解上的描述
+            sysLog.setOperation(sysLogger.value());
+        }
+        //请求的方法名
+        String className = joinPoint.getTarget().getClass().getName();
+        String methodName = signature.getName();
+        sysLog.setMethod(className + "." + methodName + "()");
+        //请求的参数
+        Object[] args = joinPoint.getArgs();
+        String params = "";
+        for (Object o : args) {
+            params += FastJsonUtils.getBeanToJson(o);
+            break;
+        }
+        if (!StringUtil.isEmpty(params)) {
+            sysLog.setParams(params);
+        }
+        //设置IP地址
+        sysLog.setIp(HttpUtils.getIpAddress());
+        //用户名
+        String username = UserUtils.getCurrentPrinciple();
+        if (!StringUtil.isEmpty(username)) {
+            sysLog.setUsername(username);
+        }
+        sysLog.setGmtCreate(new Date());
+        sysLog.setSysType(sysType);
+        return sysLog;
+    }
+
+    /**
+     * Bi日志有返回值处理(普通)
+     *
+     * @param biRecord
+     * @param joinPoint
+     * @param productType
+     * @return
+     * @throws Throwable
+     */
+    public static Object biLoggerAspect(BiRecord biRecord, ProceedingJoinPoint joinPoint,
+                                        Integer productType) throws Throwable {
+        long start = System.currentTimeMillis();
+        Object object = joinPoint.proceed();
+        if (!biRecordSet(biRecord, joinPoint, productType, BiSourceEnum.BI_NORMAL.getKey())) {
+            biRecord = null;
+            return object;
+        }
+        //出参设置
+        String result = "";
+        result = FastJsonUtils.getBeanToJson(object);
+        if (!StringUtil.isEmpty(result)) {
+            biRecord.setResult(result);
+        }
+        biRecord.setSuccessFlag(1);
+        long execTime = System.currentTimeMillis() - start;
+        biRecord.setExecTime(String.valueOf(execTime));
+        return object;
+    }
+
+    /**
+     * Bi日志异常统一处理(普通)
+     *
+     * @param joinPoint
+     * @param ex
+     * @param productType
+     * @return
+     */
+    public static BiRecord biLoggerAspectThrow(JoinPoint joinPoint, Throwable ex, Integer productType) {
+        BiRecord biRecord = new BiRecord();
+        if (!biRecordSet(biRecord, joinPoint, productType, BiSourceEnum.BI_NORMAL.getKey())) {
+            return null;
+        }
+        //出参设置
+        String result = "";
+        result = FastJsonUtils.getBeanToJson(handleException((Exception) ex));
+        biRecord.setResult(result);
+        biRecord.setSuccessFlag(0);
+        return biRecord;
+    }
+
+    /**
+     * Bi日志有返回值处理(特殊)
+     *
+     * @param biRecord
+     * @param joinPoint
+     * @param productType
+     * @return
+     * @throws Throwable
+     */
+    public static Object biLoggerResultAspect(BiRecord biRecord, ProceedingJoinPoint joinPoint,
+                                              Integer productType) throws Throwable {
+        long start = System.currentTimeMillis();
+        Object object = joinPoint.proceed();
+        if (!biRecordSet(biRecord, joinPoint, productType, BiSourceEnum.BI_RESULT.getKey())) {
+            biRecord = null;
+            return object;
+        }
+        //出参设置
+        String result = "";
+        if (object instanceof RespDTO) {
+            RespDTO respDTO = (RespDTO) object;
+            RespDTO rs = new RespDTO();
+            rs.code = respDTO.code;
+            rs.msg = respDTO.msg;
+            rs.data = new Object();
+            result = FastJsonUtils.getBeanToJson(rs);
+        } else {
+            result = FastJsonUtils.getBeanToJson(object);
+        }
+        if (!StringUtil.isEmpty(result)) {
+            biRecord.setResult(result);
+        }
+        biRecord.setSuccessFlag(1);
+        long execTime = System.currentTimeMillis() - start;
+        biRecord.setExecTime(String.valueOf(execTime));
+        return object;
+    }
+
+    /**
+     * Bi日志异常统一处理(特殊)
+     *
+     * @param joinPoint
+     * @param ex
+     * @param productType
+     * @return
+     */
+    public static BiRecord biLoggerResultAspectThrow(JoinPoint joinPoint, Throwable ex, Integer productType) {
+        BiRecord biRecord = new BiRecord();
+        if (!biRecordSet(biRecord, joinPoint, productType, BiSourceEnum.BI_RESULT.getKey())) {
+            return null;
+        }
+        //出参设置
+        String result = "";
+        result = FastJsonUtils.getBeanToJson(handleException((Exception) ex));
+        biRecord.setResult(result);
+        biRecord.setSuccessFlag(0);
+        return biRecord;
+    }
+
+    /**
+     * 消息设定
+     *
+     * @param biRecord
+     * @param joinPoint
+     * @return 是否可以继续下去
+     */
+    private static Boolean biRecordSet(BiRecord biRecord, JoinPoint joinPoint,
+                                       Integer productType, Integer biSourceType) {
+        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+        Method method = signature.getMethod();
+        //请求的参数
+        Object[] args = joinPoint.getArgs();
+        String params = "";
+        for (Object o : args) {
+            if (o instanceof BaseBiVO) {
+                BaseBiVO baseBiVO = (BaseBiVO) o;
+                if (StringUtil.isBlank(baseBiVO.getHospitalCode())) {
+                    if (StringUtil.isNotBlank(baseBiVO.getHosCode())) {
+                        BeanUtil.copyProperties(baseBiVO, biRecord);
+                        biRecord.setHospitalCode(baseBiVO.getHosCode());
+                    } else {
+                        return false;
+                    }
+                } else {
+                    BeanUtil.copyProperties(baseBiVO, biRecord);
+                }
+            }
+            params += FastJsonUtils.getBeanToJson(o);
+        }
+        if (!StringUtil.isEmpty(params)) {
+            biRecord.setParams(params);
+        }
+
+        //设置功能编码
+        if (biSourceType.equals(BiSourceEnum.BI_NORMAL.getKey())) {
+            BiLogger biLogger = method.getAnnotation(BiLogger.class);
+            if (biLogger != null) {
+                //注解上的描述
+                biRecord.setCode(biLogger.value());
+            }
+        } else if (biSourceType.equals(BiSourceEnum.BI_RESULT.getKey())) {
+            BiLoggerResult biLoggerResult = method.getAnnotation(BiLoggerResult.class);
+            if (biLoggerResult != null) {
+                //注解上的描述
+                biRecord.setCode(biLoggerResult.value());
+            }
+        } else {
+            return false;
+        }
+        biRecord.setGmtCreate(new Date());
+        biRecord.setProductType(productType);
+        biRecord.setSource(biSourceType);
+        return true;
+    }
+
+    /**
+     * 抛错信息处理
+     *
+     * @param e
+     * @return 结果参数
+     */
+    private static RespDTO handleException(Exception e) {
+        RespDTO resp = new RespDTO();
+        if (e instanceof BindException) {
+            BindException ex = (BindException) e;
+            Map<String, String> stringMap = new HashMap<>();
+            for (FieldError fieldError : ex.getBindingResult().getFieldErrors()) {
+                stringMap.put(fieldError.getField(), fieldError.getDefaultMessage());
+            }
+            String msg = FastJsonUtils.getBeanToJson(stringMap);
+            resp.code = CommonErrorCode.PARAM_ERROR.getCode();
+            resp.msg = msg;
+            return resp;
+        }
+        if (e instanceof MethodArgumentNotValidException) {
+            MethodArgumentNotValidException ex = (MethodArgumentNotValidException) e;
+            Map<String, String> stringMap = new HashMap<>();
+            for (FieldError fieldError : ex.getBindingResult().getFieldErrors()) {
+                stringMap.put(fieldError.getField(), fieldError.getDefaultMessage());
+            }
+            String msg = FastJsonUtils.getBeanToJson(stringMap);
+            resp.code = CommonErrorCode.PARAM_ERROR.getCode();
+            resp.msg = msg;
+            return resp;
+        }
+        if (e instanceof MissingServletRequestParameterException) {
+            MissingServletRequestParameterException ex = (MissingServletRequestParameterException) e;
+            Map<String, String> stringMap = new HashMap<>();
+            stringMap.put(ex.getParameterName(), "不能为null");
+            String msg = FastJsonUtils.getBeanToJson(stringMap);
+            resp.code = CommonErrorCode.PARAM_ERROR.getCode();
+            resp.msg = msg;
+            return resp;
+        }
+        if (e instanceof CommonException) {
+            CommonException taiChiException = (CommonException) e;
+            resp.code = taiChiException.getCode();
+            resp.msg = e.getMessage();
+            return resp;
+        }
+        resp.code = CommonErrorCode.FAIL.getCode();
+        resp.msg = e.getMessage();
+        return resp;
+    }
+}

+ 93 - 0
common/src/main/java/com/diagbot/util/IdCard.java

@@ -0,0 +1,93 @@
+package com.diagbot.util;
+
+import java.util.Calendar;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2019/11/20 13:18
+ */
+public class IdCard {
+    /**
+     * 中国公民身份证号码最小长度。
+     */
+    public final int CHINA_ID_MIN_LENGTH = 15;
+
+    /**
+     * 中国公民身份证号码最大长度。
+     */
+    public final int CHINA_ID_MAX_LENGTH = 18;
+
+    /**
+     * 根据身份编号获取年龄
+     *
+     * @param idCard 身份编号
+     * @return 年龄
+     */
+    public static int getAgeByIdCard(String idCard) {
+        int iAge = 0;
+        Calendar cal = Calendar.getInstance();
+        String year = idCard.substring(6, 10);
+        int iCurrYear = cal.get(Calendar.YEAR);
+        iAge = iCurrYear - Integer.valueOf(year);
+        return iAge;
+    }
+
+    /**
+     * 根据身份编号获取生日
+     *
+     * @param idCard 身份编号
+     * @return 生日(yyyyMMdd)
+     */
+    public static String getBirthByIdCard(String idCard) {
+        return idCard.substring(6, 14);
+    }
+
+    /**
+     * 根据身份编号获取生日年
+     *
+     * @param idCard 身份编号
+     * @return 生日(yyyy)
+     */
+    public static Short getYearByIdCard(String idCard) {
+        return Short.valueOf(idCard.substring(6, 10));
+    }
+
+    /**
+     * 根据身份编号获取生日月
+     *
+     * @param idCard 身份编号
+     * @return 生日(MM)
+     */
+    public static Short getMonthByIdCard(String idCard) {
+        return Short.valueOf(idCard.substring(10, 12));
+    }
+
+    /**
+     * 根据身份编号获取生日天
+     *
+     * @param idCard 身份编号
+     * @return 生日(dd)
+     */
+    public static Short getDateByIdCard(String idCard) {
+        return Short.valueOf(idCard.substring(12, 14));
+    }
+
+    /**
+     * 根据身份编号获取性别
+     *
+     * @param idCard 身份编号
+     * @return 性别(1- 男 ,2 - 女 , 0 - 未知)
+     */
+    public static int getGenderByIdCard(String idCard) {
+        int sGender = 0;
+
+        String sCardNum = idCard.substring(16, 17);
+        if (Integer.parseInt(sCardNum) % 2 != 0) {
+            sGender = 1;//男
+        } else {
+            sGender = 2;//女
+        }
+        return sGender;
+    }
+}

+ 24 - 0
common/src/main/java/com/diagbot/vo/BaseBiVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: BI统计基础VO
+ * @author: gaodm
+ * @time: 2019/11/11 11:42
+ */
+@Getter
+@Setter
+public class BaseBiVO {
+    //医院编码
+    private String hospitalCode;
+    //医生编码
+    private String doctorCode;
+    //科室编码
+    private String deptCode;
+    //医院患者编码
+    private String patientCode;
+    //医院编码(不用传)
+    private String hosCode;
+}

+ 7 - 1
config-server/src/main/resources/shared/application-dev.yml

@@ -69,4 +69,10 @@ server:
   max-http-header-size: 10MB
 
 swagger:
-  enable: true
+  enable: true
+
+syslog:
+  enable: true
+
+bilog:
+  enable: false

+ 7 - 1
config-server/src/main/resources/shared/application-local.yml

@@ -69,4 +69,10 @@ server:
   max-http-header-size: 10MB
 
 swagger:
-  enable: true
+  enable: true
+
+syslog:
+  enable: true
+
+bilog:
+  enable: false

+ 7 - 1
config-server/src/main/resources/shared/application-pre.yml

@@ -69,4 +69,10 @@ server:
   max-http-header-size: 10MB
 
 swagger:
-  enable: true
+  enable: true
+
+syslog:
+  enable: true
+
+bilog:
+  enable: false

+ 7 - 1
config-server/src/main/resources/shared/application-pro.yml

@@ -69,4 +69,10 @@ server:
   max-http-header-size: 10MB
 
 swagger:
-  enable: true
+  enable: true
+
+syslog:
+  enable: true
+
+bilog:
+  enable: false

+ 7 - 1
config-server/src/main/resources/shared/application-test.yml

@@ -69,4 +69,10 @@ server:
   max-http-header-size: 10MB
 
 swagger:
-  enable: true
+  enable: true
+
+syslog:
+  enable: true
+
+bilog:
+  enable: false

+ 2 - 0
config-server/src/main/resources/shared/data-service-dev.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/data-service-local.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/data-service-pre.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/data-service-pro.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+      outputBiLog:
+        destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 1
config-server/src/main/resources/shared/data-service-test.yml

@@ -9,7 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
-
+        outputBiLog:
+          destination: myBiLog
   #mq
   rabbitmq:
     host: 192.168.2.241

+ 2 - 0
config-server/src/main/resources/shared/icss-service-dev.yml

@@ -59,6 +59,8 @@ spring:
         outputPoint:
           destination: myPoint
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
         inputPoint:
           destination: myPoint
           group: pointReceiveGroup

+ 2 - 0
config-server/src/main/resources/shared/icss-service-local.yml

@@ -59,6 +59,8 @@ spring:
         outputPoint:
           destination: myPoint
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
         inputPoint:
           destination: myPoint
           group: pointReceiveGroup

+ 2 - 0
config-server/src/main/resources/shared/icss-service-pre.yml

@@ -59,6 +59,8 @@ spring:
         outputPoint:
           destination: myPoint
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
         inputPoint:
           destination: myPoint
           group: pointReceiveGroup

+ 2 - 0
config-server/src/main/resources/shared/icss-service-pro.yml

@@ -59,6 +59,8 @@ spring:
         outputPoint:
           destination: myPoint
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
         inputPoint:
           destination: myPoint
           group: pointReceiveGroup

+ 2 - 0
config-server/src/main/resources/shared/icss-service-test.yml

@@ -59,6 +59,8 @@ spring:
         outputPoint:
           destination: myPoint
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
         inputPoint:
           destination: myPoint
           group: pointReceiveGroup

+ 5 - 1
config-server/src/main/resources/shared/knowledgeman-service-dev.yml

@@ -133,4 +133,8 @@ neo:
 
 ai:
   server:
-    address: http://192.168.2.234:5008
+    address: http://192.168.2.234:5008
+
+nlp:
+  server:
+    address: http://192.168.2.234:5002

+ 5 - 1
config-server/src/main/resources/shared/knowledgeman-service-local.yml

@@ -133,4 +133,8 @@ neo:
 
 ai:
   server:
-    address: http://192.168.2.234:5008
+    address: http://192.168.2.234:5008
+
+nlp:
+  server:
+    address: http://192.168.2.234:5002

+ 5 - 1
config-server/src/main/resources/shared/knowledgeman-service-pre.yml

@@ -133,4 +133,8 @@ neo:
 
 ai:
   server:
-    address: http://192.168.2.186:5008
+    address: http://192.168.2.186:5008
+
+nlp:
+  server:
+    address: http://192.168.2.186:5002

+ 5 - 1
config-server/src/main/resources/shared/knowledgeman-service-pro.yml

@@ -133,4 +133,8 @@ neo:
 
 ai:
   server:
-    address: http://192.168.2.123:5008
+    address: http://192.168.2.123:5008
+
+nlp:
+  server:
+    address: http://192.168.2.123:5002

+ 5 - 1
config-server/src/main/resources/shared/knowledgeman-service-test.yml

@@ -133,4 +133,8 @@ neo:
 
 ai:
   server:
-    address: http://192.168.2.241:5008
+    address: http://192.168.2.241:5008
+
+nlp:
+  server:
+    address: http://192.168.2.241:5002

+ 5 - 0
config-server/src/main/resources/shared/logger-service-dev.yml

@@ -55,10 +55,15 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
         inputLog:
           destination: myLog
           group: logReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
+        inputBiLog:
+          destination: myBiLog
+          group: biLogReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
 
   #mq
   rabbitmq:

+ 5 - 0
config-server/src/main/resources/shared/logger-service-local.yml

@@ -55,10 +55,15 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
         inputLog:
           destination: myLog
           group: logReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
+        inputBiLog:
+          destination: myBiLog
+          group: biLogReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
 
   #mq
   rabbitmq:

+ 5 - 0
config-server/src/main/resources/shared/logger-service-pre.yml

@@ -55,10 +55,15 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
         inputLog:
           destination: myLog
           group: logReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
+        inputBiLog:
+          destination: myBiLog
+          group: biLogReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
 
   #mq
   rabbitmq:

+ 5 - 0
config-server/src/main/resources/shared/logger-service-pro.yml

@@ -55,10 +55,15 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
         inputLog:
           destination: myLog
           group: logReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
+        inputBiLog:
+          destination: myBiLog
+          group: biLogReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
 
   #mq
   rabbitmq:

+ 5 - 0
config-server/src/main/resources/shared/logger-service-test.yml

@@ -55,10 +55,15 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
         #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
         inputLog:
           destination: myLog
           group: logReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
+        inputBiLog:
+          destination: myBiLog
+          group: biLogReceiveGroup     # 具体分组 对应 MQ 是 队列名称 并且持久化队列
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/ltapi-service-dev.yml

@@ -8,6 +8,8 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
 
   #mq

+ 2 - 0
config-server/src/main/resources/shared/ltapi-service-local.yml

@@ -8,6 +8,8 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
 
   #mq

+ 2 - 0
config-server/src/main/resources/shared/ltapi-service-pre.yml

@@ -8,6 +8,8 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
 
   #mq

+ 2 - 0
config-server/src/main/resources/shared/ltapi-service-pro.yml

@@ -8,6 +8,8 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
 
   #mq

+ 2 - 0
config-server/src/main/resources/shared/ltapi-service-test.yml

@@ -8,6 +8,8 @@ spring:
       bindings:
         outputLog:
           destination: myLog
+        outputBiLog:
+          destination: myBiLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
 
   #mq

+ 2 - 0
config-server/src/main/resources/shared/prec-service-dev.yml

@@ -56,6 +56,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/prec-service-local.yml

@@ -56,6 +56,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/prec-service-pre.yml

@@ -56,6 +56,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/prec-service-pro.yml

@@ -56,6 +56,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/prec-service-test.yml

@@ -56,6 +56,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/triage-service-dev.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/triage-service-local.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/triage-service-pre.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/triage-service-pro.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 2 - 0
config-server/src/main/resources/shared/triage-service-test.yml

@@ -9,6 +9,8 @@ spring:
         outputLog:
           destination: myLog
   #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+        outputBiLog:
+          destination: myBiLog
 
   #mq
   rabbitmq:

+ 55 - 0
data-service/src/main/java/com/diagbot/aop/BiLoggerAspect.java

@@ -0,0 +1,55 @@
+package com.diagbot.aop;
+
+import com.diagbot.enums.ProductTypeEnum;
+import com.diagbot.log.entity.BiRecord;
+import com.diagbot.rabbit.MySender;
+import com.diagbot.util.AopUtil;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: BI日志拦截切面
+ * @author: gaodm
+ * @time: 2019/11/12 17:26
+ */
+@Aspect
+@Component
+@ConditionalOnProperty(prefix = "bilog", value = { "enable" }, havingValue = "true")
+public class BiLoggerAspect {
+    @Autowired
+    private MySender mySender;
+
+    @Pointcut("@annotation(com.diagbot.annotation.BiLogger)")
+    public void biPointCut() {
+    }
+
+    @Around(value = "biPointCut()")
+    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
+        BiRecord biRecord = new BiRecord();
+        Object object = AopUtil.biLoggerAspect(biRecord, joinPoint, ProductTypeEnum.DATA.getKey());
+        if (null == biRecord) {
+            return object;
+        }
+        //保存BI日志
+        mySender.outputBiLogSend(biRecord);
+        return object;
+    }
+
+    @AfterThrowing(pointcut = "biPointCut()", throwing = "ex")
+    public void saveBiRecordThrow(JoinPoint joinPoint, Throwable ex) {
+        BiRecord biRecord = AopUtil.biLoggerAspectThrow(joinPoint, ex, ProductTypeEnum.DATA.getKey());
+        if (null == biRecord) {
+            return;
+        }
+        //保存BI日志
+        mySender.outputBiLogSend(biRecord);
+    }
+}
+

+ 55 - 0
data-service/src/main/java/com/diagbot/aop/BiLoggerResultAspect.java

@@ -0,0 +1,55 @@
+package com.diagbot.aop;
+
+import com.diagbot.enums.ProductTypeEnum;
+import com.diagbot.log.entity.BiRecord;
+import com.diagbot.rabbit.MySender;
+import com.diagbot.util.AopUtil;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: BI日志结果特殊处理拦截切面
+ * @author: gaodm
+ * @time: 2019/11/12 17:26
+ */
+@Aspect
+@Component
+@ConditionalOnProperty(prefix = "bilog", value = { "enable" }, havingValue = "true")
+public class BiLoggerResultAspect {
+    @Autowired
+    private MySender mySender;
+
+    @Pointcut("@annotation(com.diagbot.annotation.BiLoggerResult)")
+    public void biResultPointCut() {
+    }
+
+    @Around(value = "biResultPointCut()")
+    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
+        BiRecord biRecord = new BiRecord();
+        Object object = AopUtil.biLoggerResultAspect(biRecord, joinPoint, ProductTypeEnum.DATA.getKey());
+        if (null == biRecord) {
+            return object;
+        }
+        //保存BI日志
+        mySender.outputBiLogSend(biRecord);
+        return object;
+    }
+
+    @AfterThrowing(pointcut = "biResultPointCut()", throwing = "ex")
+    public void saveBiRecordThrow(JoinPoint joinPoint, Throwable ex) {
+        BiRecord biRecord = AopUtil.biLoggerResultAspectThrow(joinPoint, ex, ProductTypeEnum.DATA.getKey());
+        if (null == biRecord) {
+            return;
+        }
+        //保存BI日志
+        mySender.outputBiLogSend(biRecord);
+    }
+}
+

+ 6 - 41
data-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java

@@ -1,24 +1,17 @@
 package com.diagbot.aop;
 
-import com.diagbot.annotation.SysLogger;
-import com.diagbot.entity.SysLog;
+import com.diagbot.log.entity.SysLog;
 import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.rabbit.MySender;
-import com.diagbot.util.GsonUtil;
-import com.diagbot.util.HttpUtils;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.UserUtils;
+import com.diagbot.util.AopUtil;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
-import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
-import java.lang.reflect.Method;
-import java.util.Date;
-
 /**
  * @Description: 日志拦截切面
  * @author: gaodm
@@ -26,6 +19,7 @@ import java.util.Date;
  */
 @Aspect
 @Component
+@ConditionalOnProperty(prefix = "syslog", value = { "enable" }, havingValue = "true")
 public class SysLoggerAspect {
     @Autowired
     private MySender mySender;
@@ -37,37 +31,8 @@ public class SysLoggerAspect {
 
     @Before("loggerPointCut()")
     public void saveSysLog(JoinPoint joinPoint) {
-        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-        Method method = signature.getMethod();
-
-        SysLog sysLog = new SysLog();
-        SysLogger sysLogger = method.getAnnotation(SysLogger.class);
-        if (sysLogger != null) {
-            //注解上的描述
-            sysLog.setOperation(sysLogger.value());
-        }
-        //请求的方法名
-        String className = joinPoint.getTarget().getClass().getName();
-        String methodName = signature.getName();
-        sysLog.setMethod(className + "." + methodName + "()");
-        //请求的参数
-        Object[] args = joinPoint.getArgs();
-        String params = "";
-        for (Object o : args) {
-            params += GsonUtil.toJson(o);
-        }
-        if (!StringUtil.isEmpty(params)) {
-            sysLog.setParams(params);
-        }
-        //设置IP地址
-        sysLog.setIp(HttpUtils.getIpAddress());
-        //用户名
-        String username = UserUtils.getCurrentPrinciple();
-        if (!StringUtil.isEmpty(username)) {
-            sysLog.setUsername(username);
-        }
-        sysLog.setGmtCreate(new Date());
-        sysLog.setSysType(SysTypeEnum.DATA_SERVICE.getKey());
+        //入参设置
+        SysLog sysLog = AopUtil.sysLoggerAspect(joinPoint, SysTypeEnum.DATA_SERVICE.getKey());
         //保存系统日志
         mySender.outputLogSend(sysLog);
     }

+ 2 - 1
data-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -3,6 +3,7 @@ package com.diagbot.client;
 import com.diagbot.client.bean.CalculateData;
 import com.diagbot.client.bean.ScaleContent;
 import com.diagbot.client.bean.SearchData;
+import com.diagbot.client.bean.Treat;
 import com.diagbot.client.hystrix.AiptServiceHystrix;
 import com.diagbot.dto.ConceptIntroduceDTO;
 import com.diagbot.dto.DisclaimerInformationDTO;
@@ -47,7 +48,7 @@ public interface AiptServiceClient {
      * @return
      */
     @PostMapping("/push/treatment")
-    RespDTO<Map<String, Object>> getTreatment(@RequestBody SearchData searchData);
+    RespDTO<Treat> getTreatment(@RequestBody SearchData searchData);
 
     @PostMapping("/disclaimerInformation/getDisclaimerInformations")
     RespDTO<List<DisclaimerInformationDTO>> getDisclaimerInformations();

+ 23 - 0
data-service/src/main/java/com/diagbot/client/bean/AdverseReaction.java

@@ -0,0 +1,23 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description: 不良反应
+ * @Author:zhaops
+ * @time: 2019/3/14 11:14
+ */
+@Getter
+@Setter
+public class AdverseReaction {
+    private Long conceptId;
+    private String name;  //名称
+    private Integer libType;
+    private Integer type;
+    private String showInfo = "0";//是否显示提示信息
+    private Integer controlType; //控件类型
+    private List<AdverseReactionDetail> details;
+}

+ 16 - 0
data-service/src/main/java/com/diagbot/client/bean/AdverseReactionDetail.java

@@ -0,0 +1,16 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 不良反应明细
+ * @Author:zhaops
+ * @time: 2019/3/14 11:19
+ */
+@Getter
+@Setter
+public class AdverseReactionDetail {
+    private String name;
+    private Integer value; //是否选中:0-未选中,1-选中
+}

+ 28 - 0
data-service/src/main/java/com/diagbot/client/bean/Medicition.java

@@ -0,0 +1,28 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:药品信息
+ * @Author:zhaops
+ * @time: 2018/12/17 13:27
+ */
+@Getter
+@Setter
+public class Medicition {
+    private Long conceptId;
+    private String medicitionName;
+    private Integer libType;
+    /**
+     * 1-显示,0-隐藏
+     */
+    private String isShow;
+    private String forbidden;
+    /**
+     * 1-有提示信息,0-没有提示信息
+     */
+    private String showInfo = "0";
+    private String rate;
+    private Integer type;
+}

+ 27 - 0
data-service/src/main/java/com/diagbot/client/bean/MedicitionClass.java

@@ -0,0 +1,27 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.LinkedList;
+
+/**
+ * @Description:药品分类
+ * @Author:zhaops
+ * @time: 2018/12/17 13:32
+ */
+@Getter
+@Setter
+public class MedicitionClass {
+    private String showInfo = "0";
+    private String drugsForbidden;
+    private Long bigdrugsConceptId;//药品分类概念id-大类
+    private String bigdrugsName;//药类名
+    private Integer bigdrgusLibType;
+    private Integer bigdrugsType;
+    private Long subdrugsConceptId;//药品分类概念id-小类
+    private String subdrugsName;//药类名-小类
+    private Integer subdrugsLibType;
+    private Integer subdrugsType;
+    private LinkedList<Medicition> medicitionsList;
+}

+ 18 - 0
data-service/src/main/java/com/diagbot/client/bean/MeditionDetail.java

@@ -0,0 +1,18 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/11/21 11:15
+ */
+@Getter
+@Setter
+public class MeditionDetail {
+    private String description;
+    private List<MedicitionClass> treatment;
+}

+ 3 - 1
data-service/src/main/java/com/diagbot/client/bean/SearchData.java

@@ -20,7 +20,7 @@ public class SearchData {
     //外部系统编码 用于返回映射数据,如果sysCode为空或null,则返回kl_standard_info标准名称
     private String sysCode;
     private String symptom;
-    private String past;
+    private String pasts;
     private String other;
     private String vital;
     private String lis;
@@ -40,4 +40,6 @@ public class SearchData {
     private String lisOrder;   //当前正在下单化验
     private String pacsOrder;   //当前正在下单辅检
     private String otherOrder; //其他
+
+    private String ruleType;   //规则类型
 }

+ 26 - 0
data-service/src/main/java/com/diagbot/client/bean/Treat.java

@@ -0,0 +1,26 @@
+package com.diagbot.client.bean;
+
+import com.diagbot.dto.ConceptDetailDTO;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/11/21 15:36
+ */
+@Getter
+@Setter
+public class Treat {
+    private Integer disType;
+    private String diseaseName;
+    private List<AdverseReaction> adverseEvent;//不良反应
+    private List<TreatmentPlan> treatmentPlan;//治疗方案
+    private ConceptDetailDTO commonTreatment; //一般治疗
+    private ConceptDetailDTO surgeryTreatment; //手术治疗
+    private Object followUp;
+    private Map<String, List<Medicition>> drugHistory;
+}

+ 18 - 0
data-service/src/main/java/com/diagbot/client/bean/TreatmentPlan.java

@@ -0,0 +1,18 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/11/21 11:14
+ */
+@Getter
+@Setter
+public class TreatmentPlan {
+    private String title;
+    private List<MeditionDetail> meditionDetails;
+}

+ 2 - 1
data-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -4,6 +4,7 @@ import com.diagbot.client.AiptServiceClient;
 import com.diagbot.client.bean.CalculateData;
 import com.diagbot.client.bean.ScaleContent;
 import com.diagbot.client.bean.SearchData;
+import com.diagbot.client.bean.Treat;
 import com.diagbot.dto.ConceptIntroduceDTO;
 import com.diagbot.dto.DisclaimerInformationDTO;
 import com.diagbot.dto.PushDTO;
@@ -50,7 +51,7 @@ public class AiptServiceHystrix implements AiptServiceClient {
      * @return
      */
     @Override
-    public RespDTO<Map<String, Object>> getTreatment(@RequestBody SearchData searchData) {
+    public RespDTO<Treat> getTreatment(@RequestBody SearchData searchData) {
         log.error("【hystrix】调用{}异常", "getTreatment");
         return null;
     }

+ 0 - 0
data-service/src/main/java/com/diagbot/dto/SysSetInfoDTO.java


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません