瀏覽代碼

Merge branch 'dev/triage20200319_shaoyifu' of http://223.93.170.82:10080/gaodm/diagbotcloud into his/shaoyifu

lipc 5 年之前
父節點
當前提交
cc36b8b84e
共有 100 個文件被更改,包括 3040 次插入425 次删除
  1. 96 40
      aipt-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java
  2. 1 0
      aipt-service/src/main/java/com/diagbot/aggregate/SearchItemAggregate.java
  3. 1 1
      aipt-service/src/main/java/com/diagbot/aggregate/TreatmentAggregate.java
  4. 102 0
      aipt-service/src/main/java/com/diagbot/aop/CryptAspect.java
  5. 41 41
      aipt-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java
  6. 29 0
      aipt-service/src/main/java/com/diagbot/config/CryptConfiguer.java
  7. 2 0
      aipt-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java
  8. 6 0
      aipt-service/src/main/java/com/diagbot/dto/ConceptPushDTO.java
  9. 5 0
      aipt-service/src/main/java/com/diagbot/dto/ConceptRetrievalDTO.java
  10. 30 0
      aipt-service/src/main/java/com/diagbot/dto/ConceptRetrievalExtDTO.java
  11. 2 0
      aipt-service/src/main/java/com/diagbot/dto/DisDTO.java
  12. 2 0
      aipt-service/src/main/java/com/diagbot/dto/DiseaseIcdDTO.java
  13. 23 22
      aipt-service/src/main/java/com/diagbot/dto/EvaluationDTO.java
  14. 29 28
      aipt-service/src/main/java/com/diagbot/dto/IndexConfigDTO.java
  15. 26 26
      aipt-service/src/main/java/com/diagbot/dto/IndexDTO.java
  16. 4 0
      aipt-service/src/main/java/com/diagbot/dto/RetrievalDTO.java
  17. 3 0
      aipt-service/src/main/java/com/diagbot/dto/ScaleIndexDTO.java
  18. 16 0
      aipt-service/src/main/java/com/diagbot/dto/UsualDTO.java
  19. 4 0
      aipt-service/src/main/java/com/diagbot/entity/ConceptDetail.java
  20. 2 0
      aipt-service/src/main/java/com/diagbot/entity/DiseaseIcd.java
  21. 2 0
      aipt-service/src/main/java/com/diagbot/entity/HospitalDept.java
  22. 78 0
      aipt-service/src/main/java/com/diagbot/entity/KlSymptom.java
  23. 2 1
      aipt-service/src/main/java/com/diagbot/entity/Symptom.java
  24. 44 2
      aipt-service/src/main/java/com/diagbot/facade/AssembleFacade.java
  25. 10 1
      aipt-service/src/main/java/com/diagbot/facade/ClinicalFacade.java
  26. 19 10
      aipt-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java
  27. 38 0
      aipt-service/src/main/java/com/diagbot/facade/ConceptDetailTestFacade.java
  28. 110 3
      aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  29. 7 0
      aipt-service/src/main/java/com/diagbot/facade/DisScaleFacade.java
  30. 20 2
      aipt-service/src/main/java/com/diagbot/facade/DisTypeFacade.java
  31. 15 2
      aipt-service/src/main/java/com/diagbot/facade/DisclaimerInformationFacade.java
  32. 3 0
      aipt-service/src/main/java/com/diagbot/facade/DiseaseIcdFacade.java
  33. 16 7
      aipt-service/src/main/java/com/diagbot/facade/EvaluationFacade.java
  34. 10 0
      aipt-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java
  35. 26 3
      aipt-service/src/main/java/com/diagbot/facade/LisMappingFacade.java
  36. 28 10
      aipt-service/src/main/java/com/diagbot/facade/PartFacade.java
  37. 21 3
      aipt-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java
  38. 49 2
      aipt-service/src/main/java/com/diagbot/facade/PushFacade.java
  39. 318 0
      aipt-service/src/main/java/com/diagbot/facade/TranEnDeFacade.java
  40. 53 51
      aipt-service/src/main/java/com/diagbot/facade/TransferFacade.java
  41. 18 5
      aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java
  42. 8 1
      aipt-service/src/main/java/com/diagbot/mapper/ConceptDetailMapper.java
  43. 16 0
      aipt-service/src/main/java/com/diagbot/mapper/KlSymptomMapper.java
  44. 8 1
      aipt-service/src/main/java/com/diagbot/service/ConceptDetailService.java
  45. 16 0
      aipt-service/src/main/java/com/diagbot/service/KlSymptomService.java
  46. 12 1
      aipt-service/src/main/java/com/diagbot/service/impl/ConceptDetailServiceImpl.java
  47. 20 0
      aipt-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java
  48. 2 0
      aipt-service/src/main/java/com/diagbot/vo/ConceptBaseVO.java
  49. 35 0
      aipt-service/src/main/java/com/diagbot/vo/ConceptDetailPageVO.java
  50. 2 0
      aipt-service/src/main/java/com/diagbot/vo/ConceptIntroduceVO.java
  51. 2 0
      aipt-service/src/main/java/com/diagbot/vo/ConceptUsualVO.java
  52. 4 0
      aipt-service/src/main/java/com/diagbot/vo/ConnectIntroduceVO.java
  53. 2 1
      aipt-service/src/main/java/com/diagbot/vo/DisScaleVO.java
  54. 2 0
      aipt-service/src/main/java/com/diagbot/vo/DisTypeVO.java
  55. 20 0
      aipt-service/src/main/java/com/diagbot/vo/DisclaimerInformationVO.java
  56. 2 0
      aipt-service/src/main/java/com/diagbot/vo/GetLisMappingVO.java
  57. 2 0
      aipt-service/src/main/java/com/diagbot/vo/GetStaticKnowledgeVO.java
  58. 18 16
      aipt-service/src/main/java/com/diagbot/vo/IndexConfigdiseaseNameVO.java
  59. 37 35
      aipt-service/src/main/java/com/diagbot/vo/IndexDataFindVO.java
  60. 2 0
      aipt-service/src/main/java/com/diagbot/vo/RetrievalVO.java
  61. 2 0
      aipt-service/src/main/java/com/diagbot/vo/ScaleIndexVO.java
  62. 26 0
      aipt-service/src/main/java/com/diagbot/web/ConceptController.java
  63. 97 0
      aipt-service/src/main/java/com/diagbot/web/ConceptDetailTestController.java
  64. 54 54
      aipt-service/src/main/java/com/diagbot/web/DisScaleController.java
  65. 4 2
      aipt-service/src/main/java/com/diagbot/web/DisclaimerInformationController.java
  66. 1 1
      aipt-service/src/main/java/com/diagbot/web/DiseaseIcdController.java
  67. 44 44
      aipt-service/src/main/java/com/diagbot/web/IndexConfigController.java
  68. 14 0
      aipt-service/src/main/java/com/diagbot/web/PushController.java
  69. 18 0
      aipt-service/src/main/resources/mapper/ConceptDetailMapper.xml
  70. 25 0
      common-biz-client/.gitignore
  71. 131 0
      common-biz-client/pom.xml
  72. 27 0
      common-biz-client/src/main/java/com/diagbot/client/MrqcServiceClient.java
  73. 26 0
      common-biz-client/src/main/java/com/diagbot/client/hystrix/MrqcServiceHystrix.java
  74. 159 0
      common-biz-client/src/main/java/com/diagbot/entity/Constants.java
  75. 190 0
      common-biz-client/src/main/java/com/diagbot/entity/Response.java
  76. 132 0
      common-biz-client/src/main/java/com/diagbot/entity/Status.java
  77. 30 0
      common-biz-client/src/main/java/com/diagbot/facade/MrqcFacade.java
  78. 21 0
      common-biz-client/src/main/java/com/diagbot/vo/MedrecVO.java
  79. 23 0
      common-biz-client/src/main/java/com/diagbot/vo/QueryVO.java
  80. 17 0
      common-biz-client/src/main/java/com/diagbot/vo/TokenVO.java
  81. 37 1
      common/pom.xml
  82. 26 0
      common/src/main/java/com/diagbot/annotation/CryptField.java
  83. 2 0
      common/src/main/java/com/diagbot/biz/push/entity/AdverseReaction.java
  84. 3 0
      common/src/main/java/com/diagbot/biz/push/entity/FeatureRate.java
  85. 16 0
      common/src/main/java/com/diagbot/biz/push/entity/FeatureRateWithExplain.java
  86. 6 0
      common/src/main/java/com/diagbot/biz/push/entity/MedicalIndication.java
  87. 2 0
      common/src/main/java/com/diagbot/biz/push/entity/Medicition.java
  88. 3 0
      common/src/main/java/com/diagbot/biz/push/entity/MedicitionClass.java
  89. 25 0
      common/src/main/java/com/diagbot/biz/push/entity/ResponseDataWithExplain.java
  90. 4 1
      common/src/main/java/com/diagbot/enums/SysTypeEnum.java
  91. 2 2
      common/src/main/java/com/diagbot/util/AopUtil.java
  92. 208 0
      common/src/main/java/com/diagbot/util/CryptPojoUtils.java
  93. 101 0
      common/src/main/java/com/diagbot/util/CryptUtil.java
  94. 3 0
      common/src/main/java/com/diagbot/util/HttpUtils.java
  95. 8 1
      config-server/src/main/resources/shared/application-dev.yml
  96. 8 1
      config-server/src/main/resources/shared/application-local.yml
  97. 8 1
      config-server/src/main/resources/shared/application-pre.yml
  98. 8 1
      config-server/src/main/resources/shared/application-pro.yml
  99. 8 1
      config-server/src/main/resources/shared/application-test.yml
  100. 0 0
      config-server/src/main/resources/shared/gateway-service-dev.yml

+ 96 - 40
aipt-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java

@@ -7,22 +7,24 @@ import com.diagbot.biz.push.entity.MedicalIndication;
 import com.diagbot.biz.push.entity.MedicalIndicationDetail;
 import com.diagbot.biz.push.entity.ResponseData;
 import com.diagbot.biz.push.enums.FeatureTypeEnum;
-import com.diagbot.client.TranServiceClient;
 import com.diagbot.client.bean.CalculateData;
 import com.diagbot.client.bean.HosCodeVO;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptPushDTO;
 import com.diagbot.dto.PushDTO;
-import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.Concept;
+import com.diagbot.entity.KlSymptom;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
+import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.facade.ClinicalFacade;
 import com.diagbot.facade.ConceptFacade;
+import com.diagbot.facade.TranEnDeFacade;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ParamConvertUtil;
-import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.LisConfigVO;
@@ -51,9 +53,11 @@ public class PushItemAggregate {
     @Autowired
     private ConceptFacade conceptFacade;
     @Autowired
-    private TranServiceClient tranServiceClient;
+    private TranEnDeFacade tranEnDeFacade;
     @Autowired
     private ClinicalFacade clinicalFacade;
+    @Autowired
+    CryptConfiguer cryptConfiguer;
 
     @DataProvider("setAll")
     public PushDTO setAll(
@@ -114,14 +118,25 @@ public class PushItemAggregate {
         //没有推送信息时,默认取全科模板
         if (StringUtil.isBlank(deptName)) {
             deptName = "全科";
+            if (cryptConfiguer.cryptFlag) {
+                deptName = CryptUtil.encrypt_char(deptName);
+            }
         }
         ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
         conceptBaseVO.setName(deptName);
         conceptBaseVO.setLibType(LexiconTypeEnum.DEPARTMENT.getKey());
         ConceptPushDTO deptDTO = new ConceptPushDTO();
         Concept dept = conceptFacade.getConcept(conceptBaseVO);
-        if (dept == null && deptName.equals("全科") == false) {
-            deptName = "全科";
+        if (dept == null) {
+            if (cryptConfiguer.cryptFlag) {
+                if (deptName.equals(CryptUtil.encrypt_char("全科")) == false) {
+                    deptName = CryptUtil.encrypt_char("全科");
+                }
+            } else {
+                if (deptName.equals("全科") == false) {
+                    deptName = "全科";
+                }
+            }
             conceptBaseVO.setName(deptName);
             dept = conceptFacade.getConcept(conceptBaseVO);
         }
@@ -135,7 +150,8 @@ public class PushItemAggregate {
 
     @DataProvider("setSymptom")
     public List<ConceptPushDTO> setSymptom(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
-                                           @InvokeParameter("data") ResponseData data) {
+                                           @InvokeParameter("data") ResponseData data,
+                                           @InvokeParameter("sysType") Integer sysType) {
         List<ConceptPushDTO> symptomRes = ListUtil.newArrayList();
         //症状 概念列表
         if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Feature_Type_Symptom.getKey()))) {
@@ -147,6 +163,26 @@ public class PushItemAggregate {
                         .collect(Collectors.toList());
                 if (ListUtil.isNotEmpty(nameList)) {
                     symptomRes = getConceptDTOList(nameList, LexiconTypeEnum.SYMPTOM.getKey());
+                    if (sysType.equals(SysTypeEnum.TRIAGE_SERVICE.getKey())
+                            || sysType.equals(SysTypeEnum.PREC_SERVICE.getKey())) {
+                        Map<String, KlSymptom> klSymptomMap
+                                = conceptFacade.getSymptomWithExplain(nameList, LexiconTypeEnum.SYMPTOM.getKey());
+                        if (klSymptomMap != null) {
+                            symptomRes.forEach(conceptPushDTO -> {
+                                if (klSymptomMap.containsKey(conceptPushDTO.getName())) {
+                                    conceptPushDTO
+                                            .setDescription(klSymptomMap.get(conceptPushDTO.getName()).getDescription());
+                                    conceptPushDTO
+                                            .setExplains(klSymptomMap.get(conceptPushDTO.getName()).getExplains());
+                                    if (StringUtil.isBlank(klSymptomMap.get(conceptPushDTO.getName()).getExplains())) {
+                                        conceptPushDTO.setHasExplain(0);
+                                    } else {
+                                        conceptPushDTO.setHasExplain(1);
+                                    }
+                                }
+                            });
+                        }
+                    }
                 }
             }
         }
@@ -205,7 +241,6 @@ public class PushItemAggregate {
                     List<ConceptPushDTO> lisDTO = getConceptDTOList(nameList, LexiconTypeEnum.LIS_PACKAGE.getKey());
                     if (isConnect) {
                         lisDTO = addClientName(lisDTO, hosCode, ConceptTypeEnum.Lis.getKey());
-                        //lisDTO = removeLisDetail(lisDTO);
                     }
                     labRes = lisDTO;
                 }
@@ -216,9 +251,9 @@ public class PushItemAggregate {
 
     @DataProvider("setRetPacs")
     public List<ConceptPushDTO> setRetPacs(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
-                                        @InvokeParameter("data") ResponseData data,
-                                        @InvokeParameter("isConnect") Boolean isConnect,
-                                        @InvokeParameter("hosCode") String hosCode) {
+                                           @InvokeParameter("data") ResponseData data,
+                                           @InvokeParameter("isConnect") Boolean isConnect,
+                                           @InvokeParameter("hosCode") String hosCode) {
         List<ConceptPushDTO> labRes = ListUtil.newArrayList();
         //辅检 概念列表
         if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Feature_Type_Pacs.getKey()))) {
@@ -284,6 +319,17 @@ public class PushItemAggregate {
                 disRes = disMapDTO;
             }
         }
+        //诊断转成明文
+        if (cryptConfiguer.cryptFlag) {
+            for (Map.Entry<String, List<ConceptPushDTO>> entry : disRes.entrySet()) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    for (ConceptPushDTO conceptPushDTO : entry.getValue()) {
+                        conceptPushDTO.setName(CryptUtil.decrypt_char(conceptPushDTO.getName()));
+                    }
+                    disRes.put(entry.getKey(), entry.getValue());
+                }
+            }
+        }
         return disRes;
     }
 
@@ -313,6 +359,9 @@ public class PushItemAggregate {
                                 JSONObject scaleJson = detail.getContent();
                                 if (null != scaleJson.get("name")) {
                                     String scaleName = scaleJson.get("name").toString();
+                                    if (cryptConfiguer.cryptFlag) {
+                                        scaleName = CryptUtil.encrypt_char(scaleName);
+                                    }
                                     conceptBaseVO.setName(scaleName);
                                     conceptBaseVO.setLibType(LexiconTypeEnum.GAUGE.getKey());
                                     Concept scaleConcept = conceptFacade.getConcept(conceptBaseVO);
@@ -371,7 +420,6 @@ public class PushItemAggregate {
         return conceptDTOS;
     }
 
-
     /**
      * 添加外部名称(调用方)
      *
@@ -389,42 +437,50 @@ public class PushItemAggregate {
                 .stream()
                 .map(concept -> concept.getName())
                 .collect(Collectors.toList());
+        //加密情况下,转成原文调trans层接口
+        if (cryptConfiguer.cryptFlag) {
+            CryptUtil.decryptList(uniqueNameList);
+        }
         lisConfigVO.setUniqueNameList(uniqueNameList);
         if (type.equals(ConceptTypeEnum.Lis.getKey())) {
-            RespDTO<Map<String, List<String>>> lisRes
-                    = tranServiceClient.getLisConfigByUniqueNameAndHosCode(lisConfigVO);
-            if (RespDTOUtil.respIsOK(lisRes)) {
-                Map<String, List<String>> lisMappingByUniqueName = lisRes.data;
-                for (ConceptPushDTO concept : concepts) {
-                    List<String> clientNames = lisMappingByUniqueName.get(concept.getName());
-                    if (ListUtil.isNotEmpty(clientNames)) {
-                        concept.setClientNames(clientNames);
-                    }
+            Map<String, List<String>> lisMappingByUniqueName = tranEnDeFacade.getLisConfigByUniqueNameAndHosCode(lisConfigVO);
+            for (ConceptPushDTO concept : concepts) {
+                List<String> clientNames = Lists.newLinkedList();
+                if (cryptConfiguer.cryptFlag) {
+                    clientNames = lisMappingByUniqueName.get(CryptUtil.decrypt_char(concept.getName()));
+                } else {
+                    clientNames = lisMappingByUniqueName.get(concept.getName());
+                }
+                if (ListUtil.isNotEmpty(clientNames)) {
+                    concept.setClientNames(clientNames);
                 }
             }
         } else if (type.equals(ConceptTypeEnum.Pacs.getKey())) {
-            RespDTO<Map<String, List<String>>> pacsRes
-                    = tranServiceClient.getPacsConfigByUniqueNameAndHosCode(hosCodeVO);
-            if (RespDTOUtil.respIsOK(pacsRes)) {
-                Map<String, List<String>> pacsConfigMapByUniqueName = pacsRes.data;
-                for (ConceptPushDTO concept : concepts) {
-                    List<String> clientNames = pacsConfigMapByUniqueName.get(concept.getName());
-                    if (ListUtil.isNotEmpty(clientNames)) {
-                        concept.setClientNames(clientNames);
-                    }
+            Map<String, List<String>> pacsConfigMapByUniqueName = tranEnDeFacade.getPacsConfigByUniqueNameAndHosCode(hosCodeVO);
+            for (ConceptPushDTO concept : concepts) {
+                List<String> clientNames = Lists.newLinkedList();
+                if (cryptConfiguer.cryptFlag) {
+                    clientNames = pacsConfigMapByUniqueName.get(CryptUtil.decrypt_char(concept.getName()));
+                } else {
+                    clientNames = pacsConfigMapByUniqueName.get(concept.getName());
+                }
+                if (ListUtil.isNotEmpty(clientNames)) {
+                    concept.setClientNames(clientNames);
                 }
             }
         } else if (type.equals(ConceptTypeEnum.Disease.getKey())) {
-            RespDTO<Map<String, String>> disRes = tranServiceClient.getDiseaseIcdByHosCode(hosCodeVO);
-            if (RespDTOUtil.respIsOK(disRes)) {
-                Map<String, String> disMap = disRes.data;
-                for (ConceptPushDTO concept : concepts) {
-                    String clientName = disMap.get(concept.getName());
-                    if (StringUtil.isNotBlank(clientName)) {
-                        List<String> clientNames = Lists.newLinkedList();
-                        clientNames.add(clientName);
-                        concept.setClientNames(clientNames);
-                    }
+            Map<String, String> disMap = tranEnDeFacade.getDiseaseIcdByHosCode(hosCodeVO);
+            for (ConceptPushDTO concept : concepts) {
+                String clientName = "";
+                if (cryptConfiguer.cryptFlag) {
+                    clientName = disMap.get(CryptUtil.decrypt_char(concept.getName()));
+                } else {
+                    clientName = disMap.get(concept.getName());
+                }
+                if (StringUtil.isNotBlank(clientName)) {
+                    List<String> clientNames = Lists.newLinkedList();
+                    clientNames.add(clientName);
+                    concept.setClientNames(clientNames);
                 }
             }
         }

+ 1 - 0
aipt-service/src/main/java/com/diagbot/aggregate/SearchItemAggregate.java

@@ -4,6 +4,7 @@ import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.biz.push.vo.SearchVO;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.facade.TransferFacade;
 import com.diagbot.util.ListUtil;

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

@@ -1,7 +1,7 @@
 package com.diagbot.aggregate;
 
-import com.diagbot.biz.push.entity.AdverseReaction;
 import com.diagbot.biz.push.dto.ConceptDetailDTO;
+import com.diagbot.biz.push.entity.AdverseReaction;
 import com.diagbot.biz.push.entity.Medicition;
 import com.diagbot.biz.push.entity.MedicitionClass;
 import com.diagbot.biz.push.entity.MeditionDetail;

+ 102 - 0
aipt-service/src/main/java/com/diagbot/aop/CryptAspect.java

@@ -0,0 +1,102 @@
+package com.diagbot.aop;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.client.bean.Response;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.CryptPojoUtils;
+import com.diagbot.util.RespDTOUtil;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 数据库加解密
+ * @author: gaodm
+ * @time: 2019/12/31 13:17
+ */
+@Aspect
+@Component
+@ConditionalOnProperty(prefix = "crypt", value = { "enable" }, havingValue = "true")
+public class CryptAspect {
+
+    //切所有Controller
+    @Pointcut("execution(* com.diagbot.web..*.*(..))")
+    public void pointcutController() {
+    }
+
+    //Controller 入参加密出参解密
+    @Around("pointcutController()")
+    public Object aroundReturningController(ProceedingJoinPoint joinPoint) throws Throwable {
+        //获取方法参数
+        Object[] args = joinPoint.getArgs();
+
+        //获取参数实体类注解加密
+        CryptPojoUtils.encryptFields(args);
+        //执行方法后获取出参
+        Object proceed = joinPoint.proceed(args);
+        if (null == proceed) {
+            return null;
+        }
+        //解密
+        if (proceed instanceof RespDTO) {
+            RespDTO respDTO = (RespDTO) proceed;
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                if (respDTO.data instanceof IPage) {
+                    Page page = (Page) respDTO.data;
+                    CryptPojoUtils.decryptFieldOrList(page.getRecords());
+                } else {
+                    CryptPojoUtils.decryptFieldOrList(respDTO.data);
+                }
+
+            }
+
+        }
+
+        return proceed;
+    }
+
+
+    @Pointcut("execution(* com.diagbot.client..*.*(..))")
+    public void pointcutRpcClient() {
+    }
+
+    //RpcClient 入参解密出参加密
+    @Around("pointcutRpcClient()")
+    public Object aroundReturningRpcClient(ProceedingJoinPoint joinPoint) throws Throwable {
+        //获取方法参数
+        Object[] args = joinPoint.getArgs();
+
+        //获取参数实体类解密
+        CryptPojoUtils.decryptFields(args);
+        //执行方法后获取出参
+        Object proceed = joinPoint.proceed(args);
+        if (null == proceed) {
+            return null;
+        }
+        //加密
+        if (proceed instanceof RespDTO) {
+            RespDTO respDTO = (RespDTO) proceed;
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                if (respDTO.data instanceof IPage) {
+                    Page page = (Page) respDTO.data;
+                    CryptPojoUtils.encryptFieldOrList(page.getRecords());
+                } else {
+                    CryptPojoUtils.encryptFieldOrList(respDTO.data);
+                }
+
+            }
+        } else if (proceed instanceof Response) {
+            Response response = (Response) proceed;
+            if (null != response && null != response.getData()) {
+                CryptPojoUtils.encryptFieldOrList(response.getData());
+            }
+        }
+
+
+        return proceed;
+    }
+}

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

@@ -1,41 +1,41 @@
-package com.diagbot.aop;
-
-import com.diagbot.biz.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);
-    }
-
-}
-
+//package com.diagbot.aop;
+//
+//import com.diagbot.biz.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);
+//    }
+//
+//}
+//

+ 29 - 0
aipt-service/src/main/java/com/diagbot/config/CryptConfiguer.java

@@ -0,0 +1,29 @@
+package com.diagbot.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/2 10:59
+ */
+@Component
+public class CryptConfiguer {
+
+    @Value("${crypt.enable}")
+    public Boolean cryptFlag;
+
+    private static CryptConfiguer cryptConfiguer;
+
+    public static CryptConfiguer getInstance() {
+        if (null == cryptConfiguer) {
+            synchronized (CryptConfiguer.class) {
+                if (null == cryptConfiguer) {
+                    cryptConfiguer = new CryptConfiguer();
+                }
+            }
+        }
+        return cryptConfiguer;
+    }
+}

+ 2 - 0
aipt-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,5 +13,6 @@ import lombok.Setter;
 @Setter
 public class ConceptBaseDTO {
     private Long conceptId; // 概念id
+    @CryptField
     private String name;    //概念名称
 }

+ 6 - 0
aipt-service/src/main/java/com/diagbot/dto/ConceptPushDTO.java

@@ -17,4 +17,10 @@ public class ConceptPushDTO extends ConceptBaseDTO {
     //数据服务模式调用方名称
     private List<String> clientNames;
     private Integer type;
+    //客户端界面描述
+    private String description;
+    //是否详细阐述
+    private Integer hasExplain = 0;
+    //详细阐述
+    private String explains;
 }

+ 5 - 0
aipt-service/src/main/java/com/diagbot/dto/ConceptRetrievalDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,14 +13,18 @@ import lombok.Setter;
 @Setter
 public class ConceptRetrievalDTO {
     private Long selfId;//本身概念id
+    @CryptField
     private String selfName;//本身名称
     private Long parentId;//父级id
+    @CryptField
     private String parentName;//父级名称
+    @CryptField
     private String sameName;//同义词名称
     private Long showType;//显示类型(1本体,0同义词)
     private Long libTypeId;//标签类型id
     private String libTypeName;//标签类型名称
     private Integer type;//questionType
     private Long uniqueId;//公表id
+    @CryptField
     private String uniqueName;//公表名称
 }

+ 30 - 0
aipt-service/src/main/java/com/diagbot/dto/ConceptRetrievalExtDTO.java

@@ -0,0 +1,30 @@
+package com.diagbot.dto;
+
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2019/5/10 10:20
+ */
+@Getter
+@Setter
+public class ConceptRetrievalExtDTO {
+
+    private Long selfId;//本身概念id
+    @CryptField
+    private String selfName;//本身名称
+    private Long parentId;//父级id
+    @CryptField
+    private String parentName;//父级名称
+    @CryptField
+    private String sameName;//同义词名称
+    private Long showType;//显示类型(1本体,0同义词)
+    private Long libTypeId;//标签类型id
+    private String libTypeName;//标签类型名称
+    private Integer type;//questionType
+    private String description;
+    private String explains;
+}

+ 2 - 0
aipt-service/src/main/java/com/diagbot/dto/DisDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import com.diagbot.annotation.CryptField;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Getter;
 import lombok.Setter;
@@ -12,6 +13,7 @@ import lombok.Setter;
 @Getter
 @Setter
 public class DisDTO extends ConceptBaseDTO{
+    @CryptField
     @JsonIgnore
     private String typeName;//类型:慢病,急诊
 }

+ 2 - 0
aipt-service/src/main/java/com/diagbot/dto/DiseaseIcdDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -34,5 +35,6 @@ public class DiseaseIcdDTO  {
     /**
      * 朗通疾病名称
      */
+    @CryptField
     private String conceptDisName;
 }

+ 23 - 22
aipt-service/src/main/java/com/diagbot/dto/EvaluationDTO.java

@@ -1,22 +1,23 @@
-package com.diagbot.dto;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 
- * @author wangfeng
- * @Description: TODO
- * @date 2019年5月6日 下午5:14:02
- */
-@Getter
-@Setter
-public class EvaluationDTO {
-
-	private String diseaseName;// 对应术语疾病名
-	private Long conceptId;// 术语概念id
-	private String regionName; // 区域名
-	private String regionType; // 区域类型
-	private Integer orderNo; // 区域顺序
-	private Object data;
-}
+package com.diagbot.dto;
+
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2019年5月6日 下午5:14:02
+ */
+@Getter
+@Setter
+public class EvaluationDTO {
+	@CryptField
+	private String diseaseName;// 对应术语疾病名
+	private Long conceptId;// 术语概念id
+	private String regionName; // 区域名
+	private String regionType; // 区域类型
+	private Integer orderNo; // 区域顺序
+	private Object data;
+}

+ 29 - 28
aipt-service/src/main/java/com/diagbot/dto/IndexConfigDTO.java

@@ -1,28 +1,29 @@
-package com.diagbot.dto;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 
- * @author wangfeng
- * @Description: TODO
- * @date 2019年5月6日 下午6:45:29
- */
-@Getter
-@Setter
-public class IndexConfigDTO {
-	
-	private Long uniqueId;// 指标公表概念id
-	
-	private Long diseaseId;// 疾病概念id
-
-	private Integer groupType;// 指标项组别
-	
-	private Integer orderNo;// 显示顺序
-	
-	private String indexUnique;// 指标公表名
-
-	private String diseaseName;// 疾病概念名
-
-}
+package com.diagbot.dto;
+
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2019年5月6日 下午6:45:29
+ */
+@Getter
+@Setter
+public class IndexConfigDTO {
+	
+	private Long uniqueId;// 指标公表概念id
+	
+	private Long diseaseId;// 疾病概念id
+
+	private Integer groupType;// 指标项组别
+	
+	private Integer orderNo;// 显示顺序
+	@CryptField
+	private String indexUnique;// 指标公表名
+	@CryptField
+	private String diseaseName;// 疾病概念名
+
+}

+ 26 - 26
aipt-service/src/main/java/com/diagbot/dto/IndexDTO.java

@@ -1,26 +1,26 @@
-package com.diagbot.dto;
-
-import java.util.Date;
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 
- * @author wangfeng
- * @Description: TODO
- * @date 2019年5月6日 下午8:09:16
- */
-@Getter
-@Setter
-public class IndexDTO {
-	
-	private String itemName; // 指标名称
-	private Long uniqueId;
-	private Integer groupType;
-	private List<String> indexUnit;//单位
-	private List<Integer> isAbnormal;//是否异常
-	private List<String> indexValue; 
-	private List<Date> creatTime;
-}
+package com.diagbot.dto;
+
+import java.util.Date;
+import java.util.List;
+
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2019年5月6日 下午8:09:16
+ */
+@Getter
+@Setter
+public class IndexDTO {
+	private String itemName; // 指标名称
+	private Long uniqueId;
+	private Integer groupType;
+	private List<String> indexUnit;//单位
+	private List<Integer> isAbnormal;//是否异常
+	private List<String> indexValue; 
+	private List<Date> creatTime;
+}

+ 4 - 0
aipt-service/src/main/java/com/diagbot/dto/RetrievalDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,12 +13,14 @@ import lombok.Setter;
 @Setter
 public class RetrievalDTO {
     //标签名称
+    @CryptField
     private String name;
     //标签id
     private Long questionId;
     //显示类型(静态知识出参时:0.同义词 1.本体 11.子项推出父项 21.(父项--子项)公表名)
     private Long showType;
     //Tag名称
+    @CryptField
     private String retrievalName;
     //概念id
     private Long conceptId;
@@ -28,6 +31,7 @@ public class RetrievalDTO {
     //icss标签type
     private Integer type;
     //公表名称
+    @CryptField
     private String uniqueName;
     //公表ID
     private Long uniqueId;

+ 3 - 0
aipt-service/src/main/java/com/diagbot/dto/ScaleIndexDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,7 +13,9 @@ import lombok.Setter;
 @Setter
 public class ScaleIndexDTO {
     private Long conceptId; // 概念id
+    @CryptField
     private String name;    //概念名称
+    @CryptField
     private String searchName; // 检索名称
     private Integer showType; // 显示类型
     private Integer fromDis; // 结果是否来自诊断

+ 16 - 0
aipt-service/src/main/java/com/diagbot/dto/UsualDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 概念出参基础实体类
+ * @author: zhoutg
+ * @time: 2019/5/7 9:44
+ */
+@Getter
+@Setter
+public class UsualDTO extends ConceptBaseDTO{
+    private String description; // 描述
+    private String explains;   // 详细说明
+}

+ 4 - 0
aipt-service/src/main/java/com/diagbot/entity/ConceptDetail.java

@@ -3,6 +3,7 @@ package com.diagbot.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.diagbot.annotation.CryptField;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -59,16 +60,19 @@ public class ConceptDetail implements Serializable {
     /**
      * 提示明细标题
      */
+    @CryptField
     private String title;
 
     /**
      * 提示明细内容
      */
+    @CryptField
     private String content;
 
     /**
      * 纯文本
      */
+    @CryptField
     private String text;
 
     /**

+ 2 - 0
aipt-service/src/main/java/com/diagbot/entity/DiseaseIcd.java

@@ -3,6 +3,7 @@ package com.diagbot.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.diagbot.annotation.CryptField;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -76,6 +77,7 @@ public class DiseaseIcd implements Serializable {
     /**
      * 朗通疾病名称
      */
+    @CryptField
     private String conceptDisName;
 
     public String getConceptDisName() {

+ 2 - 0
aipt-service/src/main/java/com/diagbot/entity/HospitalDept.java

@@ -3,6 +3,7 @@ package com.diagbot.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -78,6 +79,7 @@ public class HospitalDept implements Serializable {
     /**
      * 朗通科室名称
      */
+    @CryptField
     private String conceptDeptName;
 
     /**

+ 78 - 0
aipt-service/src/main/java/com/diagbot/entity/KlSymptom.java

@@ -0,0 +1,78 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 症状扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-20
+ */
+@TableName("kl_symptom")
+@Getter
+@Setter
+public class KlSymptom implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @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;
+
+    /**
+     * 术语概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 详细阐述
+     */
+    private String explains;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 2 - 1
aipt-service/src/main/java/com/diagbot/entity/Symptom.java

@@ -19,5 +19,6 @@ public class Symptom extends ConceptBaseDTO {
 
     @JsonIgnore
     private Long partConceptId;
-    private String desc = ""; //简述
+    private String description;
+    private String explains;
 }

+ 44 - 2
aipt-service/src/main/java/com/diagbot/facade/AssembleFacade.java

@@ -2,7 +2,7 @@ package com.diagbot.facade;
 
 import com.diagbot.biz.push.vo.SearchVO;
 import com.diagbot.client.bean.SearchData;
-import com.diagbot.util.BeanUtil;
+import com.diagbot.enums.SysTypeEnum;
 import org.springframework.stereotype.Component;
 
 /**
@@ -20,7 +20,20 @@ public class AssembleFacade {
      */
     public SearchData assembleData(SearchVO searchVO) {
         SearchData searchData = new SearchData();
-        BeanUtil.copyProperties(searchVO, searchData);
+        //BeanUtil.copyProperties(searchVO, searchData);
+        searchData.setPasts(searchVO.getPasts());
+        searchData.setAge(searchVO.getAge());
+        searchData.setRuleType(searchVO.getRuleType());
+        searchData.setHosCode(searchVO.getHosCode());
+        searchData.setScaleName(searchVO.getScaleName());
+        searchData.setDisType(searchVO.getDisType());
+        searchData.setOther(searchVO.getOther());
+        searchData.setVital(searchVO.getVital());
+        if (searchVO.getSysType() == null) {
+            searchData.setSysType(SysTypeEnum.AIPT_SERVICE.getKey());
+        } else {
+            searchData.setSysType(searchVO.getSysType());
+        }
         switch (searchVO.getSex()) {
             case 1:
                 searchData.setSex("M");
@@ -32,6 +45,35 @@ public class AssembleFacade {
                 searchData.setSex("A");
                 break;
         }
+        searchData.setAllergy(searchVO.getAllergy());
+        searchData.setChief(searchVO.getChief());
+        searchData.setDiag(searchVO.getDiag());
+        searchData.setDiagOrder(searchVO.getDiagOrder());
+        searchData.setDiagString(searchVO.getDiagString());
+        searchData.setDiseaseName(searchVO.getDiseaseName());
+        searchData.setDrug(searchVO.getDrug());
+        searchData.setDrugOrder(searchVO.getDrugOrder());
+        searchData.setDrugString(searchVO.getDrugString());
+        searchData.setFamily(searchVO.getFamily());
+        searchData.setFeatureType(searchVO.getFeatureType());
+        searchData.setInfectious(searchVO.getInfectious());
+        searchData.setLength(searchVO.getLength());
+        searchData.setLis(searchVO.getLis());
+        searchData.setLisOrder(searchVO.getLisOrder());
+        searchData.setVital(searchVO.getVital());
+        searchData.setLisString(searchVO.getLisString());
+        searchData.setMarital(searchVO.getMarital());
+        searchData.setMarriage(searchVO.getMarriage());
+        searchData.setMenstrual(searchVO.getMenstrual());
+        searchData.setOperation(searchVO.getOperation());
+        searchData.setOperationOrder(searchVO.getOperationOrder());
+        searchData.setOtherOrder(searchVO.getOtherOrder());
+        searchData.setPacs(searchVO.getPacs());
+        searchData.setPacsOrder(searchVO.getPacsOrder());
+        searchData.setPacsString(searchVO.getPacsString());
+        searchData.setPersonal(searchVO.getPersonal());
+        searchData.setSymptom(searchVO.getSymptom());
+        searchData.setVaccination(searchData.getVaccination());
         return searchData;
     }
 }

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

@@ -7,11 +7,13 @@ import com.diagbot.client.AIServiceClient;
 import com.diagbot.client.bean.CalculateData;
 import com.diagbot.client.bean.Response;
 import com.diagbot.client.bean.SearchData;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.entity.ScaleContent;
 import com.diagbot.enums.ScaleTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.ScaleContentService;
+import com.diagbot.util.CryptUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -36,6 +38,8 @@ public class ClinicalFacade {
     private ScaleContentService scaleContentService;
     @Autowired
     private AssembleFacade assembleFacade;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 处理临床数据
@@ -64,7 +68,12 @@ public class ClinicalFacade {
         if (null == response) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "量表没有返回结果");
         }
-        List<ScaleContent> list = getContent(searchData.getScaleName(), JSON.toJSONString(response));
+        String scaleName = searchData.getScaleName();
+        //加密
+        if (cryptConfiguer.cryptFlag) {
+            scaleName = CryptUtil.encrypt_char(searchData.getScaleName());
+        }
+        List<ScaleContent> list = getContent(scaleName, JSON.toJSONString(response));
         return list;
     }
 

+ 19 - 10
aipt-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java

@@ -16,6 +16,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.ConceptDetailServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ParamConvertUtil;
@@ -233,7 +234,10 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
     public List<ConceptIntroduceVO> convertParam(ConnectIntroduceVO connectIntroduceVO) {
         List<ConceptIntroduceVO> retList = Lists.newLinkedList();
         List<String> nameList = Lists.newLinkedList();
-        nameList.add(connectIntroduceVO.getName());
+        nameList.add(CryptUtil.decrypt_char(connectIntroduceVO.getName()));
+        if (connectIntroduceVO.getSysType() == null) {
+            connectIntroduceVO.setSysType(SysTypeEnum.AIPT_SERVICE.getKey());
+        }
         if (!connectIntroduceVO.getSysType().equals(SysTypeEnum.LTAPI_SERVICE.getKey())) {
             ConceptIntroduceVO conceptIntroduceVO = new ConceptIntroduceVO();
             BeanUtil.copyProperties(connectIntroduceVO, conceptIntroduceVO);
@@ -248,17 +252,17 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
             if (connectIntroduceVO.getType().equals(ConceptTypeEnum.Lis.getKey())) {
                 Map<String, Map<String, List<String>>> lisConfigMap
                         = transferFacade.getLisConfigByMealNameAndHosCode(nameList, connectIntroduceVO.getHosCode());
-                if (lisConfigMap.get(connectIntroduceVO.getName()) != null) {
-                    Map<String, List<String>> itemMap = lisConfigMap.get(connectIntroduceVO.getName());
+                if (lisConfigMap.get(CryptUtil.decrypt_char(connectIntroduceVO.getName())) != null) {
+                    Map<String, List<String>> itemMap = lisConfigMap.get(CryptUtil.decrypt_char(connectIntroduceVO.getName()));
                     if (StringUtil.isBlank(connectIntroduceVO.getDetailName())) {
-                        connectIntroduceVO.setDetailName("");
+                        connectIntroduceVO.setDetailName(CryptUtil.encrypt_char(""));
                     }
-                    List<String> uniqueNameList = itemMap.get(connectIntroduceVO.getDetailName());
+                    List<String> uniqueNameList = itemMap.get(CryptUtil.decrypt_char(connectIntroduceVO.getDetailName()));
                     if (ListUtil.isNotEmpty(uniqueNameList)) {
                         for (String uniqueName : uniqueNameList) {
                             ConceptIntroduceVO conceptIntroduceVO = new ConceptIntroduceVO();
                             BeanUtil.copyProperties(connectIntroduceVO, conceptIntroduceVO);
-                            conceptIntroduceVO.setName(uniqueName);
+                            conceptIntroduceVO.setName(CryptUtil.encrypt_char(uniqueName));
                             conceptIntroduceVO.setType(ConceptTypeEnum.LIS_TABLES.getKey());
                             conceptIntroduceVO.setLibType(LexiconTypeEnum.LIS_TABLES.getKey());
                             retList.add(conceptIntroduceVO);
@@ -272,10 +276,10 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
                 RespDTO<Map<String, List<String>>> pacsRespDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
                 if (RespDTOUtil.respIsOK(pacsRespDTO)) {
                     Map<String, List<String>> pacsMap = pacsRespDTO.data;
-                    for (String pacsStr : pacsMap.get(connectIntroduceVO.getName())) {
+                    for (String pacsStr : pacsMap.get(CryptUtil.decrypt_char(connectIntroduceVO.getName()))) {
                         ConceptIntroduceVO conceptIntroduceVO = new ConceptIntroduceVO();
                         BeanUtil.copyProperties(connectIntroduceVO, conceptIntroduceVO);
-                        conceptIntroduceVO.setName(pacsStr);
+                        conceptIntroduceVO.setName(CryptUtil.encrypt_char(pacsStr));
                         conceptIntroduceVO.setType(ConceptTypeEnum.Pacs.getKey());
                         conceptIntroduceVO.setLibType(LexiconTypeEnum.PACS_ITEMS.getKey());
                         retList.add(conceptIntroduceVO);
@@ -290,10 +294,10 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
                 RespDTO<Map<String, String>> disRespDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
                 if (RespDTOUtil.respIsOK(disRespDTO)) {
                     disMap = disRespDTO.data;
-                    if (disMap.get(connectIntroduceVO.getName()) != null) {
+                    if (disMap.get(CryptUtil.decrypt_char(connectIntroduceVO.getName())) != null) {
                         ConceptIntroduceVO conceptIntroduceVO = new ConceptIntroduceVO();
                         BeanUtil.copyProperties(connectIntroduceVO, conceptIntroduceVO);
-                        conceptIntroduceVO.setName(disMap.get(connectIntroduceVO.getName()));
+                        conceptIntroduceVO.setName(CryptUtil.encrypt_char(disMap.get(CryptUtil.decrypt_char(connectIntroduceVO.getName()))));
                         conceptIntroduceVO.setType(ConceptTypeEnum.Disease.getKey());
                         conceptIntroduceVO.setLibType(LexiconTypeEnum.DIAGNOSIS.getKey());
                         retList.add(conceptIntroduceVO);
@@ -305,6 +309,11 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
                 conceptIntroduceVO.setLibType(ParamConvertUtil.conceptConvert2Lib(conceptIntroduceVO.getType()));
                 retList.add(conceptIntroduceVO);
             }
+        } else {
+            ConceptIntroduceVO conceptIntroduceVO = new ConceptIntroduceVO();
+            BeanUtil.copyProperties(connectIntroduceVO, conceptIntroduceVO);
+            conceptIntroduceVO.setLibType(ParamConvertUtil.conceptConvert2Lib(conceptIntroduceVO.getType()));
+            retList.add(conceptIntroduceVO);
         }
         return retList;
     }

+ 38 - 0
aipt-service/src/main/java/com/diagbot/facade/ConceptDetailTestFacade.java

@@ -0,0 +1,38 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.ConceptDetail;
+import com.diagbot.service.impl.ConceptDetailServiceImpl;
+import com.diagbot.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/12/30 20:24
+ */
+@Component
+public class ConceptDetailTestFacade extends ConceptDetailServiceImpl {
+
+    public ConceptDetail saveRecord(ConceptDetail conceptDetail) {
+        this.baseMapper.insert(conceptDetail);
+        return conceptDetail;
+    }
+
+    public ConceptDetail getByIds(Long id) {
+        return this.getById(id);
+    }
+
+    public List<ConceptDetail> getByParam(ConceptDetail conceptDetail) {
+        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
+        if (StringUtil.isNotBlank(conceptDetail.getContent())) {
+            conceptDetailQueryWrapper.like("content", conceptDetail.getContent());
+        }
+        if (StringUtil.isNotBlank(conceptDetail.getText())) {
+            conceptDetailQueryWrapper.like("text", conceptDetail.getText());
+        }
+        return this.list(conceptDetailQueryWrapper);
+    }
+}

+ 110 - 3
aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -1,11 +1,15 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalExtDTO;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.UsualDTO;
 import com.diagbot.entity.Concept;
+import com.diagbot.entity.KlSymptom;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
@@ -16,6 +20,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.ConceptServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.IntegerUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ParamConvertUtil;
@@ -46,6 +51,10 @@ import java.util.stream.Collectors;
 public class ConceptFacade extends ConceptServiceImpl {
     @Autowired
     ConceptDetailFacade conceptDetailFacade;
+    @Autowired
+    CryptConfiguer configuer;
+    @Autowired
+    KlSymptomFacade klSymptomFacade;
 
     /**
      * 验证存在并且获取概念基本信息
@@ -99,8 +108,12 @@ public class ConceptFacade extends ConceptServiceImpl {
         //出参封装
         Map<Long, String> map = new HashMap<>();
         if (ListUtil.isNotEmpty(concepts)) {
-            map = concepts.stream().collect(Collectors.toMap(r -> r.getId(), r -> r.getLibName()));
+            map = concepts
+                    .stream()
+                    .collect(Collectors.toMap(r -> r.getId(),
+                            r -> configuer.cryptFlag ? CryptUtil.decrypt_char(r.getLibName()) : r.getLibName()));
         }
+
         return map;
     }
 
@@ -131,8 +144,12 @@ public class ConceptFacade extends ConceptServiceImpl {
         //出参封装
         Map<Long, String> map = new HashMap<>();
         if (ListUtil.isNotEmpty(concepts)) {
-            map = concepts.stream().collect(Collectors.toMap(r -> r.getConceptId(), r -> r.getName()));
+            map = concepts
+                    .stream()
+                    .collect(Collectors.toMap(r -> r.getConceptId(),
+                            r -> configuer.cryptFlag ? CryptUtil.decrypt_char(r.getName()) : r.getName()));
         }
+
         return map;
     }
 
@@ -211,6 +228,9 @@ public class ConceptFacade extends ConceptServiceImpl {
             conceptExistVO.setLibType(libType);
         }
 
+        if (configuer.cryptFlag) {
+            CryptUtil.encryptList(conceptExistVO.getNameList());
+        }
         //获取结构
         List<Concept> concepts
                 = this.getListByNamesAndType(conceptExistVO.getNameList(), conceptExistVO.getLibType());
@@ -218,7 +238,11 @@ public class ConceptFacade extends ConceptServiceImpl {
         //出参封装
         Map<String, Long> map = new HashMap<>();
         if (ListUtil.isNotEmpty(concepts)) {
-            map = concepts.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r.getId()));
+            map = concepts
+                    .stream()
+                    .collect(Collectors.toMap(
+                            r -> configuer.cryptFlag ? CryptUtil.decrypt_char(r.getLibName()) : r.getLibName(),
+                            r -> r.getId()));
         }
         return map;
     }
@@ -264,6 +288,36 @@ public class ConceptFacade extends ConceptServiceImpl {
         return list;
     }
 
+
+    /**
+     * 获取常用标签包含通俗解释和详细说明
+     *
+     * @param conceptUsualVO
+     * @return
+     */
+    public List<UsualDTO> getConceptExtUsual(ConceptUsualVO conceptUsualVO) {
+        List<UsualDTO> res = new ArrayList<>();
+        List<ConceptBaseDTO> list = getConceptUsual(conceptUsualVO);
+        if (ListUtil.isNotEmpty(list)) {
+            List<KlSymptom> klSymptomList = klSymptomFacade.list(new QueryWrapper<KlSymptom>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("concept_id", list.stream().map(r -> r.getConceptId()).collect(Collectors.toList()))
+            );
+            Map<Long, KlSymptom> map = klSymptomList.stream().collect(Collectors.toMap(r -> r.getConceptId(), r -> r));
+            for (ConceptBaseDTO conceptBaseDTO : list) {
+                UsualDTO usualDTO = new UsualDTO();
+                BeanUtil.copyProperties(conceptBaseDTO, usualDTO);
+                if (map != null && map.get(conceptBaseDTO.getConceptId()) != null) {
+                    usualDTO.setDescription(map.get(conceptBaseDTO.getConceptId()).getDescription());
+                    usualDTO.setExplains(map.get(conceptBaseDTO.getConceptId()).getExplains());
+                }
+                res.add(usualDTO);
+            }
+        }
+        return res;
+    }
+
+
     /**
      * 概念id检索
      *
@@ -356,6 +410,35 @@ public class ConceptFacade extends ConceptServiceImpl {
     }
 
 
+    /**
+     * 概念id检索,附带通俗解释和详细说明
+     *
+     * @param retrievalVO
+     * @urn
+     */
+    public List<ConceptRetrievalExtDTO> retrivelConceptInfoExt(RetrievalVO retrievalVO) {
+        List<ConceptRetrievalExtDTO> res = new ArrayList<>();
+        List<ConceptRetrievalDTO> list = retrivelConceptInfo(retrievalVO);
+        if (ListUtil.isNotEmpty(list)) {
+            List<KlSymptom> klSymptomList = klSymptomFacade.list(new QueryWrapper<KlSymptom>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("concept_id", list.stream().map(r -> r.getSelfId()).collect(Collectors.toList()))
+            );
+            Map<Long, KlSymptom> map = klSymptomList.stream().collect(Collectors.toMap(r -> r.getConceptId(), r -> r));
+            for (ConceptRetrievalDTO conceptBaseDTO : list) {
+                ConceptRetrievalExtDTO conceptRetrievalExtDTO = new ConceptRetrievalExtDTO();
+                BeanUtil.copyProperties(conceptBaseDTO, conceptRetrievalExtDTO);
+                if (map != null && conceptBaseDTO.getSelfId() != null && map.get(conceptBaseDTO.getSelfId()) != null) {
+                    conceptRetrievalExtDTO.setDescription(map.get(conceptBaseDTO.getSelfId()).getDescription());
+                    conceptRetrievalExtDTO.setExplains(map.get(conceptBaseDTO.getSelfId()).getExplains());
+                }
+                res.add(conceptRetrievalExtDTO);
+            }
+        }
+        return res;
+    }
+
+
     /**
      * 静态知识标签检索
      *
@@ -416,4 +499,28 @@ public class ConceptFacade extends ConceptServiceImpl {
     public List<ConceptBaseDTO> indexConceptFac(ConceptBaseVO conceptBaseVO) {
         return this.indexConcept(conceptBaseVO);
     }
+
+    /**
+     * 查询带名词解释的症状术语
+     *
+     * @param names
+     * @return
+     */
+    public Map<String, KlSymptom> getSymptomWithExplain(List<String> names, Integer type) {
+        List<Concept> concepts = this.list(new QueryWrapper<Concept>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("lib_type", type)
+                .in(ListUtil.isNotEmpty(names), "lib_name", names));
+        List<Long> conceptIds = concepts.stream().map(item -> item.getId()).collect(Collectors.toList());
+        List<KlSymptom> klSymptoms = klSymptomFacade.list(new QueryWrapper<KlSymptom>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in(ListUtil.isNotEmpty(conceptIds), "concept_id", conceptIds));
+        Map<Long, KlSymptom> klSymptomMap
+                = klSymptoms.stream().collect(Collectors.toMap(item -> item.getConceptId(), item -> item));
+        Map<String, KlSymptom> retMap = new HashMap<>();
+        for (Concept concept : concepts) {
+            retMap.put(concept.getLibName(), klSymptomMap.get(concept.getId()));
+        }
+        return retMap;
+    }
 }

+ 7 - 0
aipt-service/src/main/java/com/diagbot/facade/DisScaleFacade.java

@@ -1,5 +1,6 @@
 package com.diagbot.facade;
 
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.DisScaleDTO;
@@ -8,6 +9,7 @@ import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.LexiconRSTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.service.impl.DisScaleServiceImpl;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.DisScaleVO;
@@ -29,6 +31,8 @@ public class DisScaleFacade extends DisScaleServiceImpl {
 
     @Autowired
     ConceptFacade conceptFacade;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 返回诊断量表列表
@@ -74,6 +78,9 @@ public class DisScaleFacade extends DisScaleServiceImpl {
         scaleIndexVO.setStartType(LexiconTypeEnum.DIAGNOSIS.getKey());
         scaleIndexVO.setRelationType(LexiconRSTypeEnum.ORDER_BY.getKey());
         scaleIndexVO.setEndType(LexiconTypeEnum.GAUGE.getKey());
+        if (cryptConfiguer.cryptFlag) {
+            CryptUtil.encryptList(scaleIndexVO.getFilterName());
+        }
         List<ScaleIndexDTO> data = this.indexScale(scaleIndexVO);
         List<ScaleIndexDTO> res = new ArrayList<>();
         List<Long> selfList = new ArrayList<>(); // 本体

+ 20 - 2
aipt-service/src/main/java/com/diagbot/facade/DisTypeFacade.java

@@ -1,5 +1,6 @@
 package com.diagbot.facade;
 
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.DisDTO;
 import com.diagbot.dto.DisTypeDTO;
@@ -9,6 +10,7 @@ import com.diagbot.enums.DisTypeEnum;
 import com.diagbot.enums.LexiconRSTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.service.impl.DisTypeServiceImpl;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.ConceptBaseVO;
@@ -30,6 +32,8 @@ public class DisTypeFacade extends DisTypeServiceImpl {
 
     @Autowired
     ConceptFacade conceptFacade;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 返回诊断类型
@@ -57,11 +61,22 @@ public class DisTypeFacade extends DisTypeServiceImpl {
         }
         Map<String, List<DisDTO>> map = EntityUtil.makeEntityListMap(data, "typeName");
         if (map != null) {
-            List<DisDTO> chr = map.get(DisTypeEnum.CHRONIC.getName()); //放入慢病列表
+            String typeName = "";
+            if (cryptConfiguer.cryptFlag) {
+                typeName = CryptUtil.encrypt_char(DisTypeEnum.CHRONIC.getName());
+            } else {
+                typeName = DisTypeEnum.CHRONIC.getName();
+            }
+            List<DisDTO> chr = map.get(typeName); //放入慢病列表
             if (ListUtil.isNotEmpty(chr)) {
                 res.setChronic(chr);
             }
-            List<DisDTO> eme = map.get(DisTypeEnum.EMERGENCY.getName()); //放入急诊列表
+            if (cryptConfiguer.cryptFlag) {
+                typeName = CryptUtil.encrypt_char(DisTypeEnum.EMERGENCY.getName());
+            } else {
+                typeName = DisTypeEnum.EMERGENCY.getName();
+            }
+            List<DisDTO> eme = map.get(typeName); //放入急诊列表
             if (ListUtil.isNotEmpty(eme)) {
                 res.setEmergency(eme);
             }
@@ -81,6 +96,9 @@ public class DisTypeFacade extends DisTypeServiceImpl {
         conceptBaseVO.setLibType(LexiconTypeEnum.DIAGNOSIS.getKey());
         Concept disease = conceptFacade.exist(conceptBaseVO);
         String disTypeName = DisTypeEnum.getName(disTypeVO.getDisType());
+        if (cryptConfiguer.cryptFlag) {
+            disTypeName = CryptUtil.encrypt_char(disTypeName);
+        }
         conceptBaseVO.setName(disTypeName);
         conceptBaseVO.setLibType(LexiconTypeEnum.TYPES_OF_DISEASE.getKey());
         Concept disTypeConcept = conceptFacade.exist(conceptBaseVO);

+ 15 - 2
aipt-service/src/main/java/com/diagbot/facade/DisclaimerInformationFacade.java

@@ -7,9 +7,14 @@ import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.service.impl.DisclaimerInformationServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.vo.DisclaimerInformationVO;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author wangfeng
@@ -18,15 +23,23 @@ import java.util.List;
  */
 @Component
 public class DisclaimerInformationFacade extends DisclaimerInformationServiceImpl {
-
+    private static final Map<Integer,List<String>> map;
+    static
+    {
+        map = new HashMap<>();
+        map.put(1, Arrays.asList("1", "2", "3"));
+        map.put(2, Arrays.asList("1", "2", "3"));
+        map.put(3, Arrays.asList("4"));
+    }
     /**
      * @return
      */
-    public List<DisclaimerInformationDTO> getDisclaimerInformation() {
+    public List<DisclaimerInformationDTO> getDisclaimerInformation(DisclaimerInformationVO disclaimerInformationVO) {
 
         QueryWrapper<DisclaimerInformation> disclaimerInformation = new QueryWrapper<>();
         disclaimerInformation
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("disclaimer_code", map.get(disclaimerInformationVO.getType()))
                 .eq("STATUS", StatusEnum.Enable.getKey())
                 .orderByAsc("order_no");
         List<DisclaimerInformation> data = list(disclaimerInformation);

+ 3 - 0
aipt-service/src/main/java/com/diagbot/facade/DiseaseIcdFacade.java

@@ -2,6 +2,7 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.TranServiceClient;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.DiseaseIcdDTO;
 import com.diagbot.dto.GetDiseaseIcdDTO;
 import com.diagbot.dto.RespDTO;
@@ -9,8 +10,10 @@ import com.diagbot.entity.Concept;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.GetDiseaseIcdVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;

+ 16 - 7
aipt-service/src/main/java/com/diagbot/facade/EvaluationFacade.java

@@ -2,9 +2,11 @@ package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.biz.push.vo.SearchVO;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.EvaluationDTO;
 import com.diagbot.service.impl.EvaluationServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.EvaluationDiseaseNameVO;
 import com.google.common.collect.Lists;
@@ -19,6 +21,8 @@ public class EvaluationFacade extends EvaluationServiceImpl {
 
     @Autowired
     PushFacade pushFacade;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 获取管理与评估模板接口
@@ -31,16 +35,21 @@ public class EvaluationFacade extends EvaluationServiceImpl {
             return Lists.newArrayList();
         }
 
+        Map<String, JSONObject> jsonobject = pushFacade.getManagementEvaluationContent(searchVO);
         EvaluationDiseaseNameVO evaluationdiseaseNameVO = new EvaluationDiseaseNameVO();
         BeanUtil.copyProperties(searchVO, evaluationdiseaseNameVO);
-        List<EvaluationDTO> evaluationList = this.getEvaluationModule(evaluationdiseaseNameVO);
 
-        Map<String, JSONObject> jsonobject = pushFacade.getManagementEvaluationContent(searchVO);
-        for (String key : jsonobject.keySet()) {
-            for (EvaluationDTO evaluadata : evaluationList) {
-                if (key.equals(evaluadata.getRegionName())) {
-                    evaluadata.setData(jsonobject.get(key));
-                }
+        if (cryptConfiguer.cryptFlag) {
+            evaluationdiseaseNameVO.getDiseaseName().setUniqueName(CryptUtil.encrypt_char(evaluationdiseaseNameVO.getDiseaseName().getUniqueName()));
+        }
+
+        List<EvaluationDTO> evaluationList = this.getEvaluationModule(evaluationdiseaseNameVO);
+        if (jsonobject == null) {
+            return evaluationList;
+        }
+        for (EvaluationDTO evaluadata : evaluationList) {
+            if (jsonobject.containsKey(evaluadata.getRegionName())) {
+                evaluadata.setData(jsonobject.get(evaluadata.getRegionName()));
             }
         }
         return evaluationList;

+ 10 - 0
aipt-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java

@@ -0,0 +1,10 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlSymptomServiceImpl;
+import org.springframework.stereotype.Component;
+
+@Component
+public class KlSymptomFacade extends KlSymptomServiceImpl {
+
+
+}

+ 26 - 3
aipt-service/src/main/java/com/diagbot/facade/LisMappingFacade.java

@@ -1,11 +1,14 @@
 package com.diagbot.facade;
 
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.service.impl.LisMappingServiceImpl;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.GetLisMappingVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.LinkedHashMap;
@@ -18,10 +21,13 @@ import java.util.Map;
  * @time: 2019/9/20 13:14
  */
 @Component
-public class LisMappingFacade  extends LisMappingServiceImpl {
+public class LisMappingFacade extends LisMappingServiceImpl {
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 获取化验公表映射关系 Map<mealName,Map<itemName,uniqueName>> itemName 不为空
+     *
      * @param mealName
      * @return
      */
@@ -30,6 +36,18 @@ public class LisMappingFacade  extends LisMappingServiceImpl {
         LisMappingWrapper lisMappingWrapper = new LisMappingWrapper();
         lisMappingWrapper.setMealName(mealName);
         List<LisMappingWrapper> lisMappingWrapperList = this.getLisMappingByName(lisMappingWrapper);
+        if (ListUtil.isEmpty(lisMappingWrapperList)) {
+            return retMap;
+        }
+
+        //解密
+        if (cryptConfiguer.cryptFlag) {
+            for (LisMappingWrapper lisMap : lisMappingWrapperList) {
+                lisMap.setItemName(CryptUtil.decrypt_char(lisMap.getItemName()));
+                lisMap.setMealName(CryptUtil.decrypt_char(lisMap.getMealName()));
+                lisMap.setUniqueName(CryptUtil.decrypt_char(lisMap.getUniqueName()));
+            }
+        }
 
         Map<String, List<LisMappingWrapper>> lisMappingMap
                 = EntityUtil.makeEntityListMap(lisMappingWrapperList, "mealName");
@@ -47,18 +65,23 @@ public class LisMappingFacade  extends LisMappingServiceImpl {
 
     /**
      * 获取化验标签公表项
+     *
      * @param getLisMappingVO
      * @return
      */
     public Map<String, Map<String, String>> getLisMappingByQuestion(GetLisMappingVO getLisMappingVO) {
-        String project=getLisMappingVO.getProject();
-        List<String> details=getLisMappingVO.getDetails();
+        String project = getLisMappingVO.getProject();
+        List<String> details = getLisMappingVO.getDetails();
         if (StringUtil.isBlank(project)) {
             return null;
         }
 
         Map<String, Map<String, String>> lisMappingMap = getLisMappingByMealName(project);
 
+        //解密
+        if (cryptConfiguer.cryptFlag){
+            project = CryptUtil.decrypt_char(project);
+        }
         Map<String, Map<String, String>> retMap = new LinkedHashMap<>();
         if (lisMappingMap != null && lisMappingMap.get(project) != null) {
             Map<String, String> projectMap = new LinkedHashMap<>();

+ 28 - 10
aipt-service/src/main/java/com/diagbot/facade/PartFacade.java

@@ -1,11 +1,12 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.PartDTO;
 import com.diagbot.dto.PartSymptomDTO;
 import com.diagbot.entity.Concept;
-import com.diagbot.entity.ConceptDetail;
+import com.diagbot.entity.KlSymptom;
 import com.diagbot.entity.Symptom;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.IsDeleteEnum;
@@ -13,6 +14,7 @@ import com.diagbot.enums.LexiconRSTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.PartSymptomVO;
@@ -20,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -36,6 +39,10 @@ public class PartFacade {
     ConceptFacade conceptFacade;
     @Autowired
     ConceptDetailFacade conceptDetailFacade;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
+    @Autowired
+    KlSymptomFacade klSymptomFacade;
 
     /**
      * 根据已选部位返回对应的症状
@@ -49,6 +56,9 @@ public class PartFacade {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请选择部位");
         }
+        if (cryptConfiguer.cryptFlag) {
+            CryptUtil.encryptList(partList);
+        }
         if (partSymptomVO.getSexType() == null) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请选择性别");
@@ -70,6 +80,14 @@ public class PartFacade {
                 .in("lib_name", partList)
         );
 
+        // 正常数据有2条,将全身区域放到最下面
+        String areaStr = cryptConfiguer.cryptFlag ?
+                CryptUtil.encrypt_char( "全身区域") : "全身区域";
+        if (ListUtil.isNotEmpty(conceptList) && conceptList.size() == 2
+                && areaStr.equals(conceptList.get(0).getLibName())) {
+            Collections.reverse(conceptList);
+        }
+
         // 设置部位区域
         for (Concept c : conceptList) {
             PartSymptomDTO partSymptomDTO = new PartSymptomDTO();
@@ -115,14 +133,14 @@ public class PartFacade {
         List<ConceptWithOrderRes> symptomList = conceptFacade.getConceptWithOrder(wrapper);
         Map<Long, List<ConceptWithOrderRes>> symptomMap = EntityUtil.makeEntityListMap(symptomList, "startId");
 
-        // 获取症状的简述信息
-        List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(
-                new QueryWrapper<ConceptDetail>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .in("concept_id", symptomList.stream().map(row -> row.getEndId()).distinct().collect(Collectors.toList()))
-                .apply("find_in_set({0},position)", 7));
-        Map<Long, String> descMap = conceptDetailList.stream().collect(Collectors.toMap(row->row.getConceptId(), row->row.getText()));
 
+        // TODO 获取症状的简述信息
+        List<KlSymptom> klSymptomList = klSymptomFacade.list(new QueryWrapper<KlSymptom>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("concept_id",
+                        symptomList.stream().map(row -> row.getEndId()).distinct().collect(Collectors.toList()))
+        );
+        Map<Long, KlSymptom> descMap = klSymptomList.stream().collect(Collectors.toMap(row -> row.getConceptId(), row -> row));
 
         // 设置部位下的症状
         for (PartSymptomDTO partSymptomDTO : res) {
@@ -137,7 +155,8 @@ public class PartFacade {
                         bean.setName(conceptWithOrderRes.getEndName());
                         bean.setPartConceptId(conceptWithOrderRes.getStartId());
                         if (descMap.get(conceptWithOrderRes.getEndId()) != null) {
-                            bean.setDesc(descMap.get(conceptWithOrderRes.getEndId()));
+                            bean.setDescription(descMap.get(conceptWithOrderRes.getEndId()).getDescription());
+                            bean.setExplains(descMap.get(conceptWithOrderRes.getEndId()).getExplains());
                         }
                         symptoms.add(bean);
                     }
@@ -159,5 +178,4 @@ public class PartFacade {
         return res;
     }
 
-
 }

+ 21 - 3
aipt-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java

@@ -1,12 +1,15 @@
 package com.diagbot.facade;
 
 import com.diagbot.client.TranServiceClient;
+import com.diagbot.config.CryptConfiguer;
 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.CryptUtil;
 import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.GetTopPatientInfoDjVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
@@ -26,6 +29,8 @@ public class PatientInfoFacade {
     private ConceptFacade conceptFacade;
     @Autowired
     TranServiceClient tranServiceClient;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 页面顶部病人医生科室信息查询
@@ -35,13 +40,20 @@ public class PatientInfoFacade {
      */
     public GetTopPatientInfoDTO getTopPatientInfo(@RequestBody GetTopPatientInfoVO getTopPatientInfoVO) {
         RespDTO<GetTopPatientInfoDTO> respDTO = tranServiceClient.getTopPatientInfo(getTopPatientInfoVO);
-        RespDTOUtil.respNGDealCover(respDTO, "获取页面顶部病人医生科室信息失败");
+        RespDTOUtil.respNGDealCover(respDTO, respDTO.msg);
 
         GetTopPatientInfoDTO getTopPatientInfoDTO = respDTO.data;
 
         ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
         conceptBaseVO.setLibType(LexiconTypeEnum.DEPARTMENT.getKey());
-        conceptBaseVO.setName(getTopPatientInfoDTO.getSelfDeptName());
+        if (StringUtil.isNotBlank(getTopPatientInfoDTO.getSelfDeptName())) {
+            if (cryptConfiguer.cryptFlag) {
+                conceptBaseVO.setName(CryptUtil.encrypt_char(getTopPatientInfoDTO.getSelfDeptName()));
+            } else {
+                conceptBaseVO.setName(getTopPatientInfoDTO.getSelfDeptName());
+            }
+        }
+
         Concept concept = conceptFacade.exist(conceptBaseVO);
         getTopPatientInfoDTO.setSelfDeptId(concept.getId());
 
@@ -62,7 +74,13 @@ public class PatientInfoFacade {
 
         ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
         conceptBaseVO.setLibType(LexiconTypeEnum.DEPARTMENT.getKey());
-        conceptBaseVO.setName(getTopPatientInfoDjDTO.getSelfDeptName());
+        if (StringUtil.isNotBlank(getTopPatientInfoDjDTO.getSelfDeptName())) {
+            if (cryptConfiguer.cryptFlag) {
+                conceptBaseVO.setName(CryptUtil.encrypt_char(getTopPatientInfoDjDTO.getSelfDeptName()));
+            } else {
+                conceptBaseVO.setName(getTopPatientInfoDjDTO.getSelfDeptName());
+            }
+        }
         Concept concept = conceptFacade.exist(conceptBaseVO);
         getTopPatientInfoDjDTO.setSelfDeptId(concept.getId());
 

+ 49 - 2
aipt-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -1,15 +1,22 @@
 package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSONObject;
+import com.diagbot.biz.push.entity.FeatureRate;
+import com.diagbot.biz.push.entity.FeatureRateWithExplain;
 import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.ResponseData;
-import com.diagbot.biz.push.vo.SearchVO;
+import com.diagbot.biz.push.entity.ResponseDataWithExplain;
 import com.diagbot.biz.push.entity.Treat;
 import com.diagbot.biz.push.enums.FeatureTypeEnum;
+import com.diagbot.biz.push.vo.SearchVO;
 import com.diagbot.dto.PushDTO;
+import com.diagbot.entity.KlSymptom;
+import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,8 +25,10 @@ import org.springframework.stereotype.Component;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -36,6 +45,8 @@ public class PushFacade {
     private TransferFacade transferFacade;
     @Autowired
     DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
+    @Autowired
+    private ConceptFacade conceptFacade;
 
     /**
      * 推理接口
@@ -60,11 +71,12 @@ public class PushFacade {
 
         try {
             Map<String, Object> invokeParams = new HashMap<>();
-            invokeParams.put("pushDTO",pushDTO);
+            invokeParams.put("pushDTO", pushDTO);
             invokeParams.put("featureTypeSet", featureTypeSet);
             invokeParams.put("data", data);
             invokeParams.put("isConnect", isConnect);
             invokeParams.put("hosCode", searchVO.getHosCode());
+            invokeParams.put("sysType", searchVO.getSysType());
             pushDTO
                     = dataBeanAggregateQueryFacade.get("setAll", invokeParams, PushDTO.class);
         } catch (Exception e) {
@@ -78,6 +90,41 @@ public class PushFacade {
         return pushDTO;
     }
 
+    /**
+     * 推理结果带名词解释
+     *
+     * @param searchVO
+     * @return
+     */
+    public ResponseDataWithExplain pushWithExplain(SearchVO searchVO) {
+        ResponseDataWithExplain responseData = new ResponseDataWithExplain();
+        ResponseData data = clinicalFacade.processClinicalData(searchVO);
+        List<FeatureRate> symptom = data.getSymptom();
+        if (ListUtil.isNotEmpty(symptom)
+                && (searchVO.getSysType().equals(SysTypeEnum.PREC_SERVICE.getKey())
+                || searchVO.getSysType().equals(SysTypeEnum.TRIAGE_SERVICE.getKey()))) {
+            List<String> names = symptom.stream().map(item -> item.getFeatureName()).collect(Collectors.toList());
+            Map<String, KlSymptom> klSymptomMap
+                    = conceptFacade.getSymptomWithExplain(names, LexiconTypeEnum.SYMPTOM.getKey());
+            List<FeatureRateWithExplain> featureRateWithExplains
+                    = BeanUtil.listCopyTo(symptom, FeatureRateWithExplain.class);
+            if (klSymptomMap != null) {
+                for (FeatureRateWithExplain featureRateWithExplain : featureRateWithExplains) {
+                    if (klSymptomMap.containsKey(featureRateWithExplain.getFeatureName())) {
+                        featureRateWithExplain
+                                .setDescription(klSymptomMap.get(featureRateWithExplain.getFeatureName()).getDescription());
+                        featureRateWithExplain
+                                .setExplains(klSymptomMap.get(featureRateWithExplain.getFeatureName()).getExplains());
+                    }
+                }
+            }
+            responseData.setSymptom(featureRateWithExplains);
+        }
+        responseData.setDis(data.getDis());
+        return responseData;
+    }
+
+
     /**
      * 获取治疗方案
      *

+ 318 - 0
aipt-service/src/main/java/com/diagbot/facade/TranEnDeFacade.java

@@ -0,0 +1,318 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.TranServiceClient;
+import com.diagbot.client.bean.HosCodeVO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.CryptUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.DiseaseIcdVO;
+import com.diagbot.vo.LisConfigVO;
+import com.diagbot.vo.PacsConfigVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:tran层对接时无法自动加解密的接口处理
+ * @Author:zhaops
+ * @time: 2020/1/6 10:19
+ */
+@Component
+public class TranEnDeFacade {
+    @Autowired
+    private TranServiceClient tranServiceClient;
+
+    /**
+     * 根据医院编码和套餐名称获取化验公表映射关系(返回map原文)
+     *
+     * @param lisConfigVO
+     * @return
+     */
+    public Map<String, Map<String, List<String>>> getLisConfigByMealNameAndHosCode(@RequestBody LisConfigVO lisConfigVO) {
+        RespDTO<Map<String, Map<String, List<String>>>> respDTO = tranServiceClient.getLisConfigByMealNameAndHosCode(lisConfigVO);
+        Map<String, Map<String, List<String>>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, Map<String, List<String>>> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码和套餐名称获取化验公表映射关系(返回map加密)
+     *
+     * @param lisConfigVO
+     * @return
+     */
+    public Map<String, Map<String, List<String>>> getLisConfigByMealNameAndHosCode_en(@RequestBody LisConfigVO lisConfigVO) {
+        RespDTO<Map<String, Map<String, List<String>>>> respDTO = tranServiceClient.getLisConfigByMealNameAndHosCode(lisConfigVO);
+        Map<String, Map<String, List<String>>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, Map<String, List<String>>> map = respDTO.data;
+            for (Map.Entry<String, Map<String, List<String>>> entry : map.entrySet()) {
+                Map<String, List<String>> retSubMap = new LinkedHashMap<>();
+                for (Map.Entry<String, List<String>> subEntry : entry.getValue().entrySet()) {
+                    if (ListUtil.isNotEmpty(subEntry.getValue())) {
+                        CryptUtil.encryptList(subEntry.getValue());
+                    }
+                    retSubMap.put(CryptUtil.encrypt_char(subEntry.getKey()), subEntry.getValue());
+                }
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), retSubMap);
+            }
+        }
+        return retMap;
+    }
+
+
+    /**
+     * 根据医院编码获取辅检公表映射关系(返回map原文)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, String> getPacsConfigByHosCode(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getPacsConfigByHosCode(hosCodeVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码获取辅检公表映射关系(返回map加密)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, String> getPacsConfigByHosCode_en(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getPacsConfigByHosCode(hosCodeVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            for (Map.Entry<String, String> entry : map.entrySet()) {
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), CryptUtil.encrypt_char(entry.getValue()));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取辅检映射关系(返回map原文)
+     *
+     * @param pacsConfigVO
+     * @return
+     */
+    public Map<String, List<String>> getPacsConfig(@RequestBody PacsConfigVO pacsConfigVO) {
+        RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
+        Map<String, List<String>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, List<String>> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取辅检映射关系(返回map加密)
+     *
+     * @param pacsConfigVO
+     * @return
+     */
+    public Map<String, List<String>> getPacsConfig_en(@RequestBody PacsConfigVO pacsConfigVO) {
+        RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
+        Map<String, List<String>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, List<String>> map = respDTO.data;
+            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    CryptUtil.encryptList(entry.getValue());
+                }
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), entry.getValue());
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码获取提示信息标题映射关系(返回map原文)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, String> getTitleMappingHosCode(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getTitleMappingHosCode(hosCodeVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码获取提示信息标题映射关系(返回map加密)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, String> getTitleMappingHosCode_en(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getTitleMappingHosCode(hosCodeVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            for (Map.Entry<String, String> entry : map.entrySet()) {
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), CryptUtil.encrypt_char(entry.getValue()));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码查询诊断icd映射(返回map原文)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, String> getDiseaseIcdByHosCode(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getDiseaseIcdByHosCode(hosCodeVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码查询诊断icd映射(返回map加密)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, String> getDiseaseIcdByHosCode_en(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getDiseaseIcdByHosCode(hosCodeVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            for (Map.Entry<String, String> entry : map.entrySet()) {
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), CryptUtil.encrypt_char(entry.getValue()));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取诊断名称映射map(返回map原文)
+     *
+     * @param diseaseIcdVO
+     * @return
+     */
+    public Map<String, String> getDiseaseIcdMap(DiseaseIcdVO diseaseIcdVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取诊断名称映射map(返回map加密)
+     *
+     * @param diseaseIcdVO
+     * @return
+     */
+    public Map<String, String> getDiseaseIcdMap_en(DiseaseIcdVO diseaseIcdVO) {
+        RespDTO<Map<String, String>> respDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
+        Map<String, String> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, String> map = respDTO.data;
+            for (Map.Entry<String, String> entry : map.entrySet()) {
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), CryptUtil.encrypt_char(entry.getValue()));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码获取化验公表映射关系,公表项做key(返回map原文)
+     *
+     * @param lisConfigVO
+     * @return
+     */
+    public Map<String, List<String>> getLisConfigByUniqueNameAndHosCode(@RequestBody LisConfigVO lisConfigVO) {
+        RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getLisConfigByUniqueNameAndHosCode(lisConfigVO);
+        Map<String, List<String>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, List<String>> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码获取化验公表映射关系,公表项做key(返回map加密)
+     *
+     * @param lisConfigVO
+     * @return
+     */
+    public Map<String, List<String>> getLisConfigByUniqueNameAndHosCode_en(@RequestBody LisConfigVO lisConfigVO) {
+        RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getLisConfigByUniqueNameAndHosCode(lisConfigVO);
+        Map<String, List<String>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, List<String>> map = respDTO.data;
+            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    CryptUtil.encryptList(entry.getValue());
+                }
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), entry.getValue());
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码查询辅检公表映射,公表项做key(返回map原文)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, List<String>> getPacsConfigByUniqueNameAndHosCode(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getPacsConfigByUniqueNameAndHosCode(hosCodeVO);
+        Map<String, List<String>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, List<String>> map = respDTO.data;
+            retMap = map;
+        }
+        return retMap;
+    }
+
+    /**
+     * 根据医院编码查询辅检公表映射,公表项做key(返回map加密)
+     *
+     * @param hosCodeVO
+     * @return
+     */
+    public Map<String, List<String>> getPacsConfigByUniqueNameAndHosCode_en(@RequestBody HosCodeVO hosCodeVO) {
+        RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getPacsConfigByUniqueNameAndHosCode(hosCodeVO);
+        Map<String, List<String>> retMap = new LinkedHashMap<>();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            Map<String, List<String>> map = respDTO.data;
+            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    CryptUtil.encryptList(entry.getValue());
+                }
+                retMap.put(CryptUtil.encrypt_char(entry.getKey()), entry.getValue());
+            }
+        }
+        return retMap;
+    }
+}

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

@@ -6,13 +6,13 @@ import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.biz.push.enums.FeatureTypeEnum;
 import com.diagbot.client.TranServiceClient;
 import com.diagbot.client.bean.HosCodeVO;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SysSetInfoDTO;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.LisSourceEnum;
 import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.util.BeanUtil;
-import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
@@ -39,6 +39,8 @@ import java.util.stream.Collectors;
 public class TransferFacade {
     @Autowired
     private TranServiceClient tranServiceClient;
+    @Autowired
+    CryptConfiguer cryptConfiguer;
 
     /**
      * 查询对接状态
@@ -96,11 +98,11 @@ public class TransferFacade {
         LisConfigVO lisConfigVO = new LisConfigVO();
         lisConfigVO.setHosCode(hosCode);
         lisConfigVO.setMealNameList(mealNameList);
-        RespDTO<Map<String, Map<String, List<String>>>> lisConfigRes
-                = tranServiceClient.getLisConfigByMealNameAndHosCode(lisConfigVO);
         Map<String, Map<String, List<String>>> lisConfigMap = new LinkedHashMap<>();
-        if (RespDTOUtil.respIsOK(lisConfigRes)) {
-            lisConfigMap = lisConfigRes.data;
+        RespDTO<Map<String, Map<String, List<String>>>> respDTO
+                = tranServiceClient.getLisConfigByMealNameAndHosCode(lisConfigVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            lisConfigMap = respDTO.data;
         }
         for (Lis lisResult : lis) {
             //内部数据,获取标签时映射, 不二次映射
@@ -130,7 +132,6 @@ public class TransferFacade {
         return retLis;
     }
 
-
     /**
      * 辅检结果增加公表名(辅检项目名称)
      *
@@ -150,24 +151,25 @@ public class TransferFacade {
                 .map(pacsResult -> pacsResult.getName())
                 .distinct()
                 .collect(Collectors.toList()));
-        RespDTO<Map<String, List<String>>> pacsRespDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
-        if (RespDTOUtil.respIsOK(pacsRespDTO)) {
-            Map<String, List<String>> pacsMap = pacsRespDTO.data;
-            for (Pacs pacsResult : pacs) {
-                if (StringUtil.isBlank(pacsResult.getName())) {
-                    convertPacs.add(pacsResult);
-                    continue;
-                } else {
-                    if (ListUtil.isNotEmpty(pacsMap.get(pacsResult.getName()))) {
-                        for (String uniqueName : pacsMap.get(pacsResult.getName())) {
-                            Pacs convertPacsResult = new Pacs();
-                            BeanUtil.copyProperties(pacsResult, convertPacsResult);
-                            convertPacsResult.setUniqueName(uniqueName);
-                            convertPacs.add(convertPacsResult);
-                        }
-                    } else {
-                        convertPacs.add(pacsResult);
+        Map<String, List<String>> pacsMap = new LinkedHashMap<>();
+        RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            pacsMap = respDTO.data;
+        }
+        for (Pacs pacsResult : pacs) {
+            if (StringUtil.isBlank(pacsResult.getName())) {
+                convertPacs.add(pacsResult);
+                continue;
+            } else {
+                if (ListUtil.isNotEmpty(pacsMap.get(pacsResult.getName()))) {
+                    for (String uniqueName : pacsMap.get(pacsResult.getName())) {
+                        Pacs convertPacsResult = new Pacs();
+                        BeanUtil.copyProperties(pacsResult, convertPacsResult);
+                        convertPacsResult.setUniqueName(uniqueName);
+                        convertPacs.add(convertPacsResult);
                     }
+                } else {
+                    convertPacs.add(pacsResult);
                 }
             }
         }
@@ -187,10 +189,9 @@ public class TransferFacade {
             LisConfigVO lisConfigVO = new LisConfigVO();
             lisConfigVO.setHosCode(hosCode);
             lisConfigVO.setMealNameList(nameList);
-            RespDTO<Map<String, Map<String, List<String>>>> lisConfigRes
-                    = tranServiceClient.getLisConfigByMealNameAndHosCode(lisConfigVO);
-            if (RespDTOUtil.respIsOK(lisConfigRes)) {
-                lisConfigMap = lisConfigRes.data;
+            RespDTO<Map<String, Map<String, List<String>>>> respDTO = tranServiceClient.getLisConfigByMealNameAndHosCode(lisConfigVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                lisConfigMap = respDTO.data;
             }
         }
         return lisConfigMap;
@@ -217,18 +218,18 @@ public class TransferFacade {
             diseaseIcdVO.setHosCode(hosCode);
             diseaseIcdVO.setDiseaseNameList(nameList);
             Map<String, String> disMap = new LinkedHashMap<>();
-            RespDTO<Map<String, String>> disRespDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
-            if (RespDTOUtil.respIsOK(disRespDTO)) {
-                disMap = disRespDTO.data;
-                for (Item disease : items) {
-                    if (StringUtil.isBlank(disease.getName())) {
-                        continue;
-                    } else {
-                        disease.setUniqueName(disMap.get(disease.getName()));
-                    }
+            RespDTO<Map<String, String>> respDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                disMap = respDTO.data;
+            }
+            for (Item disease : items) {
+                if (StringUtil.isBlank(disease.getName())) {
+                    continue;
+                } else {
+                    disease.setUniqueName(disMap.get(disease.getName()));
                 }
-                convertItems = BeanUtil.listCopyTo(items, Item.class);
             }
+            convertItems = BeanUtil.listCopyTo(items, Item.class);
         } else if (type.equals(ConceptTypeEnum.Drug.getKey())) {
             //暂无映射关系
             convertItems.addAll(items);
@@ -276,13 +277,14 @@ public class TransferFacade {
             PacsConfigVO pacsConfigVO = new PacsConfigVO();
             pacsConfigVO.setHosCode(hosCode);
             pacsConfigVO.setMealNameList(strList);
-            RespDTO<Map<String, List<String>>> pacsRespDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
-            if (RespDTOUtil.respIsOK(pacsRespDTO)) {
-                Map<String, List<String>> pacsMap = pacsRespDTO.data;
-                for (Map.Entry<String, List<String>> entry : pacsMap.entrySet()) {
-                    if (ListUtil.isNotEmpty(entry.getValue())) {
-                        retStr += String.join(",", entry.getValue()) + ",";
-                    }
+            Map<String, List<String>> pacsMap = new LinkedHashMap<>();
+            RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                pacsMap = respDTO.data;
+            }
+            for (Map.Entry<String, List<String>> entry : pacsMap.entrySet()) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    retStr += String.join(",", entry.getValue()) + ",";
                 }
             }
         } else if (type.equals(FeatureTypeEnum.Feature_Type_Disease.getKey())) {
@@ -290,13 +292,13 @@ public class TransferFacade {
             diseaseIcdVO.setHosCode(hosCode);
             diseaseIcdVO.setDiseaseNameList(strList);
             Map<String, String> disMap = new LinkedHashMap<>();
-            RespDTO<Map<String, String>> disRespDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
-            if (RespDTOUtil.respIsOK(disRespDTO)) {
-                disMap = disRespDTO.data;
-                for (String diseaseName : strList) {
-                    if (StringUtil.isNotBlank(disMap.get(diseaseName))) {
-                        retStr += disMap.get(diseaseName) + ",";
-                    }
+            RespDTO<Map<String, String>> respDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                disMap = respDTO.data;
+            }
+            for (String diseaseName : strList) {
+                if (StringUtil.isNotBlank(disMap.get(diseaseName))) {
+                    retStr += disMap.get(diseaseName) + ",";
                 }
             }
         }

+ 18 - 5
aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.biz.push.entity.MedicitionClass;
 import com.diagbot.biz.push.entity.MeditionDetail;
 import com.diagbot.biz.push.entity.Treat;
 import com.diagbot.biz.push.entity.TreatmentPlan;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptDetail;
@@ -16,6 +17,7 @@ import com.diagbot.enums.LexiconRSTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ConceptBaseVO;
@@ -44,6 +46,8 @@ public class TreatmentFacade {
     ConceptDetailFacade conceptDetailFacade;
     @Autowired
     DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
+    @Autowired
+    CryptConfiguer cryptConfiguer;
 
     /**
      * 获取治疗方案
@@ -52,11 +56,16 @@ public class TreatmentFacade {
      * @return
      */
     public Treat getTreatment(Treat treat, Item diseaseName, Integer disType) {
+        String disUniqueName = diseaseName.getUniqueName();
+        if (cryptConfiguer.cryptFlag) {
+            //加密诊断名称
+            disUniqueName = CryptUtil.encrypt_char(disUniqueName);
+        }
         List<MedicitionClass> drugsList = Lists.newLinkedList();
         List<String> conceptNameList = Lists.newLinkedList();
-        conceptNameList.add(diseaseName.getUniqueName());
+        conceptNameList.add(disUniqueName);
         ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
-        conceptBaseVO.setName(diseaseName.getUniqueName());
+        conceptBaseVO.setName(disUniqueName);
         conceptBaseVO.setLibType(LexiconTypeEnum.DIAGNOSIS.getKey());
         Concept disease = conceptFacade.exist(conceptBaseVO);
         if (disease == null) {
@@ -137,12 +146,16 @@ public class TreatmentFacade {
         Boolean isChronic = false;
         if (disType != null && disType.equals(DisTypeEnum.CHRONIC.getKey())) {
             //验证是否慢病
-            conceptBaseVO.setName("慢病");
+            if (cryptConfiguer.cryptFlag) {
+                conceptBaseVO.setName(CryptUtil.encrypt_char("慢病"));
+            } else {
+                conceptBaseVO.setName("慢病");
+            }
             conceptBaseVO.setLibType(LexiconTypeEnum.TYPES_OF_DISEASE.getKey());
             Concept chronicConcept = conceptFacade.exist(conceptBaseVO);
             ConceptWrapper conceptWrapper = new ConceptWrapper();
             conceptWrapper.setStartId(disease.getId());
-            conceptWrapper.setStartName(diseaseName.getUniqueName());
+            conceptWrapper.setStartName(disUniqueName);
             conceptWrapper.setStartType(LexiconTypeEnum.DIAGNOSIS.getKey());
             conceptWrapper.setEndId(chronicConcept.getId());
             conceptWrapper.setEndName(chronicConcept.getLibName());
@@ -155,7 +168,7 @@ public class TreatmentFacade {
         try {
             Map<String, Object> invokeParams = new HashMap<>();
             invokeParams.put("treat", treat);
-            invokeParams.put("diseaseName", diseaseName.getUniqueName());
+            invokeParams.put("diseaseName", disUniqueName);
             invokeParams.put("drugsList", drugsList);
             invokeParams.put("treatmentPlan", treatmentPlanList);
             invokeParams.put("conceptMap", conceptMap);

+ 8 - 1
aipt-service/src/main/java/com/diagbot/mapper/ConceptDetailMapper.java

@@ -1,7 +1,12 @@
 package com.diagbot.mapper;
 
-import com.diagbot.entity.ConceptDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.ConceptDetail;
+import com.diagbot.vo.ConceptDetailPageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2019-05-06
  */
 public interface ConceptDetailMapper extends BaseMapper<ConceptDetail> {
+    List<ConceptDetail> selectByParam(ConceptDetail conceptDetail);
 
+    IPage<ConceptDetail> selectiveTestPage(@Param("conceptDetailPageVO") ConceptDetailPageVO conceptDetailPageVO);
 }

+ 16 - 0
aipt-service/src/main/java/com/diagbot/mapper/KlSymptomMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.KlSymptom;
+
+/**
+ * <p>
+ * 症状扩展表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-20
+ */
+public interface KlSymptomMapper extends BaseMapper<KlSymptom> {
+
+}

+ 8 - 1
aipt-service/src/main/java/com/diagbot/service/ConceptDetailService.java

@@ -1,7 +1,11 @@
 package com.diagbot.service;
 
-import com.diagbot.entity.ConceptDetail;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.ConceptDetail;
+import com.diagbot.vo.ConceptDetailPageVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ConceptDetailService extends IService<ConceptDetail> {
 
+    List<ConceptDetail> selectByParam(ConceptDetail conceptDetail);
+
+    IPage<ConceptDetail> selectiveTestPage(ConceptDetailPageVO conceptDetailPageVO);
 }

+ 16 - 0
aipt-service/src/main/java/com/diagbot/service/KlSymptomService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.KlSymptom;
+
+/**
+ * <p>
+ * 症状扩展表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-20
+ */
+public interface KlSymptomService extends IService<KlSymptom> {
+
+}

+ 12 - 1
aipt-service/src/main/java/com/diagbot/service/impl/ConceptDetailServiceImpl.java

@@ -1,11 +1,15 @@
 package com.diagbot.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.entity.ConceptDetail;
 import com.diagbot.mapper.ConceptDetailMapper;
 import com.diagbot.service.ConceptDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.ConceptDetailPageVO;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 提示信息明细表 服务实现类
@@ -17,4 +21,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class ConceptDetailServiceImpl extends ServiceImpl<ConceptDetailMapper, ConceptDetail> implements ConceptDetailService {
 
+    public List<ConceptDetail> selectByParam(ConceptDetail conceptDetail) {
+        return this.baseMapper.selectByParam(conceptDetail);
+    }
+
+    public IPage<ConceptDetail> selectiveTestPage(ConceptDetailPageVO conceptDetailPageVO) {
+        return this.baseMapper.selectiveTestPage(conceptDetailPageVO);
+    }
 }

+ 20 - 0
aipt-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.KlSymptom;
+import com.diagbot.mapper.KlSymptomMapper;
+import com.diagbot.service.KlSymptomService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 症状扩展表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-20
+ */
+@Service
+public class KlSymptomServiceImpl extends ServiceImpl<KlSymptomMapper, KlSymptom> implements KlSymptomService {
+
+}

+ 2 - 0
aipt-service/src/main/java/com/diagbot/vo/ConceptBaseVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -14,6 +15,7 @@ import javax.validation.constraints.NotNull;
 @Getter
 @Setter
 public class ConceptBaseVO {
+    @CryptField
     @NotBlank(message = "概念名称不能为空")
     private String name;
     @NotNull(message = "词性不能为空")

+ 35 - 0
aipt-service/src/main/java/com/diagbot/vo/ConceptDetailPageVO.java

@@ -0,0 +1,35 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/12/31 17:15
+ */
+@Getter
+@Setter
+public class ConceptDetailPageVO extends Page {
+
+    /**
+     * 提示明细标题
+     */
+    @CryptField
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    @CryptField
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    @CryptField
+    private String text;
+}

+ 2 - 0
aipt-service/src/main/java/com/diagbot/vo/ConceptIntroduceVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -16,6 +17,7 @@ import java.util.List;
 @Getter
 @Setter
 public class ConceptIntroduceVO {
+    @CryptField
     @NotBlank(message = "请输入概念名称")
     private String name;
     @NotNull(message = "请输入概念词性")

+ 2 - 0
aipt-service/src/main/java/com/diagbot/vo/ConceptUsualVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -14,6 +15,7 @@ import javax.validation.constraints.NotNull;
 @Setter
 public class ConceptUsualVO {
 
+    @CryptField
     @NotNull(message = "请输入科室名称")
     private String deptName;
     @NotNull(message = "请输入病人年龄")

+ 4 - 0
aipt-service/src/main/java/com/diagbot/vo/ConnectIntroduceVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -16,13 +17,16 @@ import java.util.List;
 @Getter
 @Setter
 public class ConnectIntroduceVO {
+    @CryptField
     @NotBlank(message = "请输入术语名称")
     private String name;
+    @CryptField
     private String detailName;
     @NotNull(message = "请输入术语类型")
     private Integer type;
     @NotBlank(message = "请输入医院编码")
     private String hosCode;
+    @CryptField
     @ApiModelProperty(hidden = true)
     private String uniqueName;
     @ApiModelProperty(hidden = true)

+ 2 - 1
aipt-service/src/main/java/com/diagbot/vo/DisScaleVO.java

@@ -1,10 +1,10 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 
 /**
  * @Description: 诊断量表入参
@@ -14,6 +14,7 @@ import javax.validation.constraints.NotNull;
 @Getter
 @Setter
 public class DisScaleVO {
+    @CryptField
     @NotBlank(message = "疾病名称不能为空")
     private String disName;
 }

+ 2 - 0
aipt-service/src/main/java/com/diagbot/vo/DisTypeVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -14,6 +15,7 @@ import javax.validation.constraints.NotNull;
 @Getter
 @Setter
 public class DisTypeVO {
+    @CryptField
     @NotBlank(message = "请输入诊断名称")
     private String name;
     @NotNull(message = "请输入诊断类型")

+ 20 - 0
aipt-service/src/main/java/com/diagbot/vo/DisclaimerInformationVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/2 18:11
+ */
+@Getter
+@Setter
+public class DisclaimerInformationVO {
+    /*产品类型
+    1:ICSS
+    2:页面推送模式
+    3:预问诊
+     */
+    private Integer type;
+}

+ 2 - 0
aipt-service/src/main/java/com/diagbot/vo/GetLisMappingVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -14,6 +15,7 @@ import java.util.List;
 @Getter
 @Setter
 public class GetLisMappingVO {
+    @CryptField
     @NotBlank(message = "请输入化验套餐项")
     private String project;
     private List<String> details;

+ 2 - 0
aipt-service/src/main/java/com/diagbot/vo/GetStaticKnowledgeVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -16,6 +17,7 @@ import java.util.List;
 @Setter
 public class GetStaticKnowledgeVO {
     //检索内容
+    @CryptField
     @NotBlank(message = "请输入检索内容")
     private String InputStr;
     //需要去重的id

+ 18 - 16
aipt-service/src/main/java/com/diagbot/vo/IndexConfigdiseaseNameVO.java

@@ -1,16 +1,18 @@
-package com.diagbot.vo;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 
- * @author wangfeng
- * @Description: TODO
- * @date 2019年5月6日 下午6:41:38
- */
-@Setter
-@Getter
-public class IndexConfigdiseaseNameVO {
-	private String diseaseName;
-}
+package com.diagbot.vo;
+
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2019年5月6日 下午6:41:38
+ */
+@Setter
+@Getter
+public class IndexConfigdiseaseNameVO {
+	@CryptField
+	private String diseaseName;
+}

+ 37 - 35
aipt-service/src/main/java/com/diagbot/vo/IndexDataFindVO.java

@@ -1,35 +1,37 @@
-package com.diagbot.vo;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 
- * @author wangfeng
- * @Description: 数据数据获取入参
- * @date 2019年5月7日 上午10:00:15
- */
-@Getter
-@Setter
-public class IndexDataFindVO {
-
-	/**
-	 * 疾病ID
-	 */
-	@NotNull(message = "请输入疾病名")
-	private String diseaseName;
-	/**
-	 * 患者id
-	 */
-	@NotNull(message = "请输入患者id")
-	private Long patientId;
-
-	@NotBlank(message = "请输入开始时间")
-	private String startTime;
-
-	@NotBlank(message = "请输入结束时间")
-	private String endTime;
-}
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: 数据数据获取入参
+ * @date 2019年5月7日 上午10:00:15
+ */
+@Getter
+@Setter
+public class IndexDataFindVO {
+
+	/**
+	 * 疾病ID
+	 */
+	@NotNull(message = "请输入疾病名")
+	@CryptField
+	private String diseaseName;
+	/**
+	 * 患者id
+	 */
+	@NotNull(message = "请输入患者id")
+	private Long patientId;
+
+	@NotBlank(message = "请输入开始时间")
+	private String startTime;
+
+	@NotBlank(message = "请输入结束时间")
+	private String endTime;
+}

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

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -17,6 +18,7 @@ public class RetrievalVO {
     private Integer type;
     private Integer age;
     @NotBlank(message = "请输入检索内容")
+    @CryptField
     private String InputStr;
     private Integer sexType;
     //需要去重的id

+ 2 - 0
aipt-service/src/main/java/com/diagbot/vo/ScaleIndexVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.annotation.CryptField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
@@ -17,6 +18,7 @@ import java.util.List;
 @Setter
 @ApiModel
 public class ScaleIndexVO {
+    @CryptField
     @NotBlank(message = "名称不能为空")
     private String name;
     @ApiModelProperty(hidden = true)

+ 26 - 0
aipt-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -4,8 +4,10 @@ package com.diagbot.web;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalExtDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.UsualDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.facade.ConceptFacade;
 import com.diagbot.util.ParamConvertUtil;
@@ -57,6 +59,18 @@ public class ConceptController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "知识库标准化-常用标签——根据科室获取常用标签包含通俗解释和详细说明[by:zhoutg]",
+            notes = "deptName:科室名称<br>" +
+                    "age:年龄<br>" +
+                    "sexType: 性别<br>" +
+                    "type:类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断),必填<br>")
+    @PostMapping("/getConceptExtUsual")
+    @SysLogger("getConceptExtUsual")
+    public RespDTO<List<UsualDTO>> getConceptExtUsual(@RequestBody @Valid ConceptUsualVO conceptUsualVO) {
+        List<UsualDTO> data = conceptFacade.getConceptExtUsual(conceptUsualVO);
+        return RespDTO.onSuc(data);
+    }
+
     /**
      * 根据概念Id列表获取概念列表Map
      *
@@ -121,6 +135,18 @@ public class ConceptController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "知识库标准化-标签检索,附带通俗解释和详细说明[by:zhoutg]",
+            notes = "type:类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断),必填<br>" +
+                    "age:年龄,必填<br>" +
+                    "inputStr:检索内容,必填<br>" +
+                    "sexType:性别,必填<br>" +
+                    "inputIds:需要去重的id<br>")
+    @PostMapping("/retrivelConceptInfoExt")
+    @SysLogger("retrivelConceptInfoExt")
+    public RespDTO<List<ConceptRetrievalExtDTO>> retrivelConceptInfoExt(@RequestBody @Valid RetrievalVO retrievalVO) {
+        List<ConceptRetrievalExtDTO> data = conceptFacade.retrivelConceptInfoExt(retrievalVO);
+        return RespDTO.onSuc(data);
+    }
 
     /**
      * 根据名称和类型获取概念列表Map

+ 97 - 0
aipt-service/src/main/java/com/diagbot/web/ConceptDetailTestController.java

@@ -0,0 +1,97 @@
+//package com.diagbot.web;
+//
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.diagbot.annotation.SysLogger;
+//import com.diagbot.config.CryptConfiguer;
+//import com.diagbot.dto.RespDTO;
+//import com.diagbot.entity.ConceptDetail;
+//import com.diagbot.facade.ConceptDetailTestFacade;
+//import com.diagbot.vo.ConceptDetailPageVO;
+//import io.swagger.annotations.Api;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RequestParam;
+//import org.springframework.web.bind.annotation.RestController;
+//import springfox.documentation.annotations.ApiIgnore;
+//
+//import javax.validation.Valid;
+//import java.util.List;
+//
+///**
+// * @Description:
+// * @Author:zhaops
+// * @time: 2019/12/30 20:22
+// */
+//@RestController
+//@RequestMapping("/conceptDetailTest")
+//@Api(value = "提示信息加密测试", tags = { "知识库标准化-提示信息加密测试相关API" })
+//@SuppressWarnings("unchecked")
+//@Deprecated
+//@ApiIgnore
+//public class ConceptDetailTestController {
+//    @Autowired
+//    private CryptConfiguer cryptConfiguer;
+//
+//    @Autowired
+//    private ConceptDetailTestFacade conceptDetailTestFacade;
+//
+//    @PostMapping("/saveRecord")
+//    @SysLogger("saveRecord")
+//    public RespDTO<ConceptDetail> saveRecord(@Valid @RequestBody ConceptDetail conceptDetail) {
+//        ConceptDetail data = conceptDetailTestFacade.saveRecord(conceptDetail);
+//        return RespDTO.onSuc(data);
+//    }
+//
+//    @PostMapping("/getById")
+//    @SysLogger("getById")
+//    public RespDTO<ConceptDetail> getById(@RequestParam Long id) {
+//        ConceptDetail data = conceptDetailTestFacade.getByIds(id);
+//        System.out.println(cryptConfiguer.cryptFlag);
+//        return RespDTO.onSuc(data);
+//    }
+//
+//    @PostMapping("/getByParam")
+//    @SysLogger("getByParam")
+//    public RespDTO<ConceptDetail> getByParam(@Valid @RequestBody ConceptDetail conceptDetail) {
+//        List<ConceptDetail> data = conceptDetailTestFacade.getByParam(conceptDetail);
+//        return RespDTO.onSuc(data);
+//    }
+//
+//    @PostMapping("/selectByParam")
+//    @SysLogger("selectByParam")
+//    public RespDTO<ConceptDetail> selectByParam(@Valid @RequestBody ConceptDetail conceptDetail) {
+//        List<ConceptDetail> data = conceptDetailTestFacade.selectByParam(conceptDetail);
+//        return RespDTO.onSuc(data);
+//    }
+//
+//
+//    @PostMapping("/getOneByParam")
+//    @SysLogger("getOneByParam")
+//    public RespDTO<ConceptDetail> getOneByParam(@Valid @RequestBody ConceptDetail conceptDetail) {
+//        List<ConceptDetail> data = conceptDetailTestFacade.getByParam(conceptDetail);
+//        return RespDTO.onSuc(data.size() > 0 ? data.get(0) : null);
+//    }
+//
+//
+//    @PostMapping("/selectOneByParam")
+//    @SysLogger("selectOneByParam")
+//    public RespDTO<ConceptDetail> selectOneByParam(@Valid @RequestBody ConceptDetail conceptDetail) {
+//        List<ConceptDetail> data = conceptDetailTestFacade.selectByParam(conceptDetail);
+//        return RespDTO.onSuc(data.size() > 0 ? data.get(0) : null);
+//    }
+//
+//    /**
+//     * 分页查询静态知识,可带过滤条件
+//     *
+//     * @param conceptDetailPageVO
+//     * @return
+//     */
+//    @PostMapping("/getConceptDetailPage")
+//    @SysLogger("getConceptDetailPage")
+//    public RespDTO getConceptDetailPage(@RequestBody ConceptDetailPageVO conceptDetailPageVO) {
+//        IPage<ConceptDetail> conceptDetailIPage = conceptDetailTestFacade.selectiveTestPage(conceptDetailPageVO);
+//        return RespDTO.onSuc(conceptDetailIPage);
+//    }
+//}

+ 54 - 54
aipt-service/src/main/java/com/diagbot/web/DisScaleController.java

@@ -1,54 +1,54 @@
-package com.diagbot.web;
-
-
-import com.diagbot.dto.DisScaleDTO;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.ScaleIndexDTO;
-import com.diagbot.facade.DisScaleFacade;
-import com.diagbot.vo.DisScaleVO;
-import com.diagbot.vo.ScaleIndexVO;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * <p>
- * 诊断量表映射表 前端控制器
- * </p>
- *
- * @author zhoutg
- * @since 2019-05-05
- */
-@RestController
-@RequestMapping("/scale")
-@Api(value = "诊断量表API", tags = { "知识库标准化-诊断量表API" })
-@SuppressWarnings("unchecked")
-public class DisScaleController {
-
-    @Autowired
-    DisScaleFacade disScaleFacade;
-
-    @ApiOperation(value = "知识库标准化-返回诊断量表列表[by:zhoutg]",
-            notes = "")
-    @PostMapping("/getList")
-    public RespDTO<List<DisScaleDTO>> getList(@Valid @RequestBody DisScaleVO scaleVO) {
-        List<DisScaleDTO> data = disScaleFacade.getDisScaleFac(scaleVO);
-        return RespDTO.onSuc(data);
-    }
-
-
-    @ApiOperation(value = "知识库标准化-量表搜索[by:zhoutg]",
-            notes = "")
-    @PostMapping("/index")
-    public RespDTO<List<ScaleIndexDTO>> index(@Valid @RequestBody ScaleIndexVO scaleVO) {
-        List<ScaleIndexDTO> data = disScaleFacade.indexFac(scaleVO);
-        return RespDTO.onSuc(data);
-    }
-}
+//package com.diagbot.web;
+//
+//
+//import com.diagbot.dto.DisScaleDTO;
+//import com.diagbot.dto.RespDTO;
+//import com.diagbot.dto.ScaleIndexDTO;
+//import com.diagbot.facade.DisScaleFacade;
+//import com.diagbot.vo.DisScaleVO;
+//import com.diagbot.vo.ScaleIndexVO;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.validation.Valid;
+//import java.util.List;
+//
+///**
+// * <p>
+// * 诊断量表映射表 前端控制器
+// * </p>
+// *
+// * @author zhoutg
+// * @since 2019-05-05
+// */
+//@RestController
+//@RequestMapping("/scale")
+//@Api(value = "诊断量表API", tags = { "知识库标准化-诊断量表API" })
+//@SuppressWarnings("unchecked")
+//public class DisScaleController {
+//
+//    @Autowired
+//    DisScaleFacade disScaleFacade;
+//
+//    @ApiOperation(value = "知识库标准化-返回诊断量表列表[by:zhoutg]",
+//            notes = "")
+//    @PostMapping("/getList")
+//    public RespDTO<List<DisScaleDTO>> getList(@Valid @RequestBody DisScaleVO scaleVO) {
+//        List<DisScaleDTO> data = disScaleFacade.getDisScaleFac(scaleVO);
+//        return RespDTO.onSuc(data);
+//    }
+//
+//
+//    @ApiOperation(value = "知识库标准化-量表搜索[by:zhoutg]",
+//            notes = "")
+//    @PostMapping("/index")
+//    public RespDTO<List<ScaleIndexDTO>> index(@Valid @RequestBody ScaleIndexVO scaleVO) {
+//        List<ScaleIndexDTO> data = disScaleFacade.indexFac(scaleVO);
+//        return RespDTO.onSuc(data);
+//    }
+//}

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

@@ -5,10 +5,12 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.DisclaimerInformationDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.DisclaimerInformationFacade;
+import com.diagbot.vo.DisclaimerInformationVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -32,8 +34,8 @@ public class DisclaimerInformationController {
     @ApiOperation(value = "知识库标准化-获取免责申明详情[by:wangfeng]", notes = "获取免责申明详情")
     @PostMapping("/getDisclaimerInformations")
     @SysLogger("getDisclaimerInformations")
-    public RespDTO<List<DisclaimerInformationDTO>> getDisclaimerInformations() {
-        List<DisclaimerInformationDTO> data = disclaimerInformationFacade.getDisclaimerInformation();
+    public RespDTO<List<DisclaimerInformationDTO>> getDisclaimerInformations(@RequestBody DisclaimerInformationVO disclaimerInformationVO) {
+        List<DisclaimerInformationDTO> data = disclaimerInformationFacade.getDisclaimerInformation(disclaimerInformationVO);
         return RespDTO.onSuc(data);
     }
 }

+ 1 - 1
aipt-service/src/main/java/com/diagbot/web/DiseaseIcdController.java

@@ -39,7 +39,7 @@ public class DiseaseIcdController {
                     "hospitalCode:医院编号,必填<br>")
     @PostMapping("/getDiseaseIcds")
     @SysLogger("getDiseaseIcds")
-    @ApiIgnore
+//    @ApiIgnore
     public RespDTO<List<DiseaseIcdDTO>> getDiseaseIcds(@RequestBody @Valid GetDiseaseIcdVO getDiseaseIcdVO) {
         List<DiseaseIcdDTO> data = diseaseIcdFacade.getDiseaseIcds(getDiseaseIcdVO);
         return RespDTO.onSuc(data);

+ 44 - 44
aipt-service/src/main/java/com/diagbot/web/IndexConfigController.java

@@ -1,44 +1,44 @@
-package com.diagbot.web;
-
-import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.IndexConfigDTO;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.facade.IndexConfigFacade;
-import com.diagbot.vo.IndexConfigdiseaseNameVO;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.List;
-
-/**
- * <p>
- * 指标配置 前端控制器
- * </p>
- *
- * @author wangfeng
- * @since 2019-05-06
- */
-@RestController
-@RequestMapping("/indexConfig")
-@Api(value = "指标配置API[by:wangfeng]", tags = { "知识库标准化-指标配置API" })
-@SuppressWarnings("unchecked")
-@ApiIgnore
-public class IndexConfigController {
-
-    @Autowired
-    IndexConfigFacade indexConfigFacade;
-
-    @ApiOperation(value = "知识库标准化-根据疾病获取指标配置[by:wangfeng]", notes = "根据疾病获取指标配置")
-    @PostMapping("/getindexConfigs")
-    @SysLogger("getindexConfigs")
-    public RespDTO<List<IndexConfigDTO>> getindexConfigs(@RequestBody IndexConfigdiseaseNameVO indexConfigdiseaseNameVO) {
-        List<IndexConfigDTO> data = indexConfigFacade.getIndexConfig(indexConfigdiseaseNameVO.getDiseaseName());
-        return RespDTO.onSuc(data);
-    }
-}
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.IndexConfigDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.IndexConfigFacade;
+import com.diagbot.vo.IndexConfigdiseaseNameVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 指标配置 前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2019-05-06
+ */
+@RestController
+@RequestMapping("/indexConfig")
+@Api(value = "指标配置API[by:wangfeng]", tags = { "知识库标准化-指标配置API" })
+@SuppressWarnings("unchecked")
+//@ApiIgnore
+public class IndexConfigController {
+
+    @Autowired
+    IndexConfigFacade indexConfigFacade;
+
+    @ApiOperation(value = "知识库标准化-根据疾病获取指标配置[by:wangfeng]", notes = "根据疾病获取指标配置")
+    @PostMapping("/getindexConfigs")
+    @SysLogger("getindexConfigs")
+    public RespDTO<List<IndexConfigDTO>> getindexConfigs(@RequestBody IndexConfigdiseaseNameVO indexConfigdiseaseNameVO) {
+        List<IndexConfigDTO> data = indexConfigFacade.getIndexConfig(indexConfigdiseaseNameVO.getDiseaseName());
+        return RespDTO.onSuc(data);
+    }
+}

+ 14 - 0
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.biz.push.entity.ResponseDataWithExplain;
 import com.diagbot.biz.push.vo.SearchVO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
@@ -87,4 +88,17 @@ public class PushController {
         PushDTO data = pushFacade.pushInner(searchVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "知识库标准化-推理接口[by:zhaops]",
+            notes = "hosCode: 医院编码<br>" +
+                    "featureType:类型(必填多选),1:症状,7:诊断,多项用逗号分开,String<br>" +
+                    "age: 年龄(必填)<br>" +
+                    "sex:性别(必填),1:男,2:女,Integer<br>" +
+                    "symptom:现病史,String<br>")
+    @PostMapping("/pushWithExplain")
+    @SysLogger("pushWithExplain")
+    public RespDTO<ResponseDataWithExplain> pushWithExplain(@Valid @RequestBody SearchVO searchVO) {
+        ResponseDataWithExplain data = pushFacade.pushWithExplain(searchVO);
+        return RespDTO.onSuc(data);
+    }
 }

+ 18 - 0
aipt-service/src/main/resources/mapper/ConceptDetailMapper.xml

@@ -20,4 +20,22 @@
         <result column="source" property="source" />
     </resultMap>
 
+    <select id="selectByParam" resultType="com.diagbot.entity.ConceptDetail" parameterType="com.diagbot.entity.ConceptDetail">
+    SELECT t.*
+    FROM
+    kl_concept_detail t
+    WHERE 1=1
+    <if test="content!=null and content!=''">
+        and content like concat('%',#{content},'%')
+    </if>
+    </select>
+
+    <select id="selectiveTestPage" resultMap="BaseResultMap">
+        SELECT *
+        FROM kl_concept_detail t
+        WHERE t.is_deleted = 'N'
+        <if test="conceptDetailPageVO.content!=null and conceptDetailPageVO.content!=''">
+            and t.content like concat('%',#{conceptDetailPageVO.content},'%')
+        </if>
+    </select>
 </mapper>

+ 25 - 0
common-biz-client/.gitignore

@@ -0,0 +1,25 @@
+/target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/build/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/

+ 131 - 0
common-biz-client/pom.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.diagbot</groupId>
+    <artifactId>common-biz-client</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>common-biz-client</name>
+    <description>common biz client project for Spring Boot</description>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <encoding>UTF-8</encoding>
+        <java.version>1.8</java.version>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <docker.image.prefix>192.168.2.236:5000/diagbotcloud</docker.image.prefix>
+        <registryUrl>http://192.168.2.236:5000/repository/diagbotcloud/</registryUrl>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>2.2.1.RELEASE</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>2.2.0.RELEASE</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
+            <version>2.2.0.RELEASE</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.10</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.diagbot</groupId>
+            <artifactId>common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <!-- 私有仓库 -->
+    <repositories>
+        <repository>
+            <id>nexus-releases</id>
+            <name>Nexus Release Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-releases/</url>
+        </repository>
+    </repositories>
+    <!-- 私有仓库 -->
+    <pluginRepositories>
+        <pluginRepository>
+            <id>nexus-releases</id>
+            <name>Nexus Release Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-releases/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+    <distributionManagement>
+        <repository>
+            <id>nexus-releases</id>
+            <name>Nexus Release Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>nexus-snapshots</id>
+            <name>Nexus Snapshot Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <!-- 添加docker-maven插件 -->
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>1.1.1</version>
+                <configuration>
+                    <imageName>${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>
+                    <pushImage>true</pushImage>
+                    <!--<forceTags>true</forceTags>-->
+                    <!--镜像的FROM,使用java官方镜像-->
+                    <baseImage>frolvlad/alpine-oraclejre8:slim</baseImage>
+                    <entryPoint>["java", "-jar", "-Xms256m", "-Xmx1024m", "-Duser.timezone=GMT+8","/${project.build.finalName}.jar"]</entryPoint>
+                    <resources>
+                        <resource>
+                            <targetPath>/</targetPath>
+                            <directory>${project.build.directory}</directory>
+                            <include>${project.build.finalName}.jar</include>
+                        </resource>
+                    </resources>
+                    <serverId>docker-registry</serverId>
+                    <registryUrl>${registryUrl}</registryUrl>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 27 - 0
common-biz-client/src/main/java/com/diagbot/client/MrqcServiceClient.java

@@ -0,0 +1,27 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.MrqcServiceHystrix;
+import com.diagbot.entity.Response;
+import com.diagbot.vo.QueryVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ * @Description: 病历质控远程调用客户端
+ * @author: gaodm
+ * @time: 2019/12/23 9:40
+ */
+@FeignClient(name = "MRQC", url = "${mrqc.server.address}", fallback = MrqcServiceHystrix.class)
+public interface MrqcServiceClient {
+
+    @PostMapping(value = "/analyse/recInner")
+    Response<Map<String, Object>> extract(@RequestBody QueryVO queryVO);
+}
+
+
+

+ 26 - 0
common-biz-client/src/main/java/com/diagbot/client/hystrix/MrqcServiceHystrix.java

@@ -0,0 +1,26 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.MrqcServiceClient;
+import com.diagbot.entity.Response;
+import com.diagbot.vo.QueryVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Map;
+
+/**
+ * @Description: 病历质控远程调用客户端(请求失败熔断)
+ * @author: gaodm
+ * @time: 2019/12/23 9:40
+ */
+@Component
+@Slf4j
+public class MrqcServiceHystrix implements MrqcServiceClient {
+
+    @Override
+    public Response<Map<String, Object>> extract(@RequestBody QueryVO queryVO) {
+        log.error("【hystrix】调用{}异常", "extract");
+        return null;
+    }
+}

+ 159 - 0
common-biz-client/src/main/java/com/diagbot/entity/Constants.java

@@ -0,0 +1,159 @@
+/**
+ * @Company: 杭州朗通信息技术有限公司
+ * @Department: 系统软件部
+ * @Description: 朗通智能辅助诊疗系统
+ * @Address: 浙江省杭州市西湖区西斗门路3号 天堂软件园D-7B
+ */
+package com.diagbot.entity;
+
+/**
+ * @Title: Constants.java
+ * @Package org.diagbot.public
+ * @Description: 通用常数接口定义
+ * @author 楼辉荣(Fyeman)
+ * @date 2015年4月23日 下午11:25:37
+ * @version V1.0
+ */
+public interface Constants {
+    /**
+     * 操作名称
+     */
+    String OP_NAME = "op";
+    /**
+     * 消息key
+     */
+    String MESSAGE = "message";
+    /**
+     * 错误key
+     */
+    String ERROR = "error";
+    /**
+     * 上个页面地址
+     */
+    String BACK_URL = "BackURL";
+    String IGNORE_BACK_URL = "ignoreBackURL";
+    /**
+     * 当前请求的地址 带参数
+     */
+    String CURRENT_URL = "currentURL";
+    /**
+     * 当前请求的地址 不带参数
+     */
+    String NO_QUERYSTRING_CURRENT_URL = "noQueryStringCurrentURL";
+    /**
+     * 上下文
+     */
+    String CONTEXT_PATH = "ctx";
+    /**
+     * 当前登录的用户
+     */
+    String CURRENT_APPLICATION = "c_app";
+    String CURRENT_USER = "c_user";
+    String CURRENT_USERNAME = "username";
+    String USER_MENUS = "menus";
+
+    /**
+     * 管理控制台应用ID=0
+     */
+    long ADMIN_APPLICATION = 0;
+    /**
+     * 一级菜单grade标识
+     */
+    int FIRST_MENU = 1;
+    /**
+     * 二级菜单grade标识
+     */
+    int SECOND_MENU = 2;
+    /**
+     * 操作按钮等级标识
+     */
+    int MENU_GRADE = 3;
+    /**
+     * 最高级资源grade标识
+     */
+    int TOP_REC = 0;
+    /**
+     * 编码方式
+     */
+    String ENCODING = "UTF-8";
+    /**
+     * 系统用户状态--启用
+     */
+    int USER_STATUS_UNLOCK = 1;
+    /**
+     * 系统用户状态--禁用
+     */
+    int USER_STATUS_LOCK = 0;
+    /**
+     * 通用值0
+     */
+    int COMMON_INT_0 = 0;
+    /**
+     * 通用值1
+     */
+    int COMMON_INT_1 = 1;
+    /**
+     * 通用值-1
+     */
+    int COMMON_INT_NEG_1 = -1;
+    /**
+     * 通用值0
+     */
+    long COMMON_LONG_0 = 0L;
+    /**
+     * 通用值1
+     */
+    long COMMON_LONG_1 = 1L;
+    /**
+     * 通用值-1
+     */
+    long COMMON_LONG_NEG_1 = -1L;
+    /**
+     * 通用值"0"
+     */
+    String COMMON_STRING_0 = "0";
+    /**
+     * 通用值"1"
+     */
+    String COMMON_STRING_1 = "1";
+    /**
+     * 通用值"-1"
+     */
+    String COMMON_STRING_NEG_1 = "-1";
+
+    /**
+     * 通用值"-1"
+     */
+    String COMMON_STRING_99 = "99";
+    /**
+     * 登录页面
+     */
+    String LOGIN_URL = "/login";
+    /**
+     * 上传文件夹
+     */
+    String UPLOAD_FOLDER_NAME = "upload";
+    /**
+     * 临时文件夹
+     */
+    String TEMP_FOLDER_NAME = "temp";
+    /**
+     * 地域标示
+     */
+    public static final String DEFAULT_LOCALE = "zh_CN";
+    /**
+     * 缺省字符集
+     */
+    public static final String DEFAULT_ENCODE = "UTF-8";
+    /**
+     * 以下为接口返回公共属性定义常量
+     */
+    public static final String MSG_SUCCESS = "操作成功";    //操作成功
+    public static final String MSG_FALURE = "操作失败";    //操作失败
+
+    public static final long INVALIDATE_VALUE = -1;        //起止时间定义
+    public static final int RET_SUCCESS = 0;            //成功
+    public static final int RET_FAIL = 1;                //失败
+    public static final int RET_ERROR_PARAM = -1;        //参数校验失败
+    public static final int RET_NO_TOKEN = -2;    //用户token丢失
+}

+ 190 - 0
common-biz-client/src/main/java/com/diagbot/entity/Response.java

@@ -0,0 +1,190 @@
+package com.diagbot.entity;
+
+/**
+ * ClassName: org.diagbot.pub.api.Response
+ * Function: API接口提供标准返回数据包, 数据包格式如下:
+ * {
+ * status:"OK",
+ * startTime:8206448610408,
+ * endTime:8206448610418,
+ * version:"1.0",
+ * msg:"操作成功",
+ * ret:"0",
+ * timeConsum:10,
+ * data:{
+ * ..。
+ * }
+ * }
+ * date: 2015年7月6日 下午1:36:58
+ *
+ * @author 楼辉荣(Fyeman)
+ * @version 1.0
+ * @since JDK 1.7
+ */
+public class Response<T> implements java.io.Serializable {
+    private static final long serialVersionUID = 8206448610408409499L;
+    private Status status = Status.PENDING;  //状态
+    private long startTime = Constants.INVALIDATE_VALUE;                                  //起始时间
+    private long endTime = Constants.INVALIDATE_VALUE;                                    //结束时间
+    private String version = "1.0";
+    private String msg = Constants.MSG_SUCCESS;                                  //消息
+    private T data = null;                                                                //序列化后的结果数据
+    // 返回结果标志,默认成功0,失败 1 参数错误 -1 token丢失-2
+    private int ret = Constants.RET_SUCCESS;
+
+    private String token;
+    //耗时
+    private long timeConsum;
+
+    public int getRet() {
+        return ret;
+    }
+
+    public void setRet(int ret) {
+        this.ret = ret;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public long getTimeConsum() {
+        return timeConsum;
+    }
+
+    public void setTimeConsum(long timeConsum) {
+        this.timeConsum = timeConsum;
+    }
+
+    public Response() {
+        super();
+    }
+
+    public Status getStatus() {
+        return status;
+    }
+
+    /**
+     * 在调用end()方法时,会自动设置状态,因此,如果调用了end()方法,就不要调用这个方法
+     *
+     * @param status
+     */
+    public Response<T> setStatus(Status status) {
+        this.status = status;
+        return this;
+    }
+
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public long getStartTime() {
+        return startTime;
+    }
+
+    public Response<T> setStartTime(long startTime) {
+        this.startTime = startTime;
+        return this;
+    }
+
+    public long getEndTime() {
+        return endTime;
+    }
+
+    public Response<T> setEndTime(long endTime) {
+        this.endTime = endTime;
+        return this;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    /**
+     * 设置状态和起始时间,表示操作正在进行
+     */
+    public Response<T> start() {
+        this.setStatus(Status.RUNNING);
+        this.setStartTime(System.currentTimeMillis());
+        return this;
+    }
+
+    /**
+     * 设置状态和时间,表示操作结束,没有失败
+     */
+    public Response<T> end() {
+        this.setEndTime(System.currentTimeMillis());
+        this.setTimeConsum(this.endTime - this.startTime);
+        this.setStatus(Status.OK);
+        return this;
+    }
+
+    /**
+     * 设置状态和时间,表示操作结束,并且失败
+     */
+    public Response<T> endAndFailed() {
+        this.setStatus(Status.FAIL);
+        this.setEndTime(System.currentTimeMillis());
+        return this;
+    }
+
+    /**
+     * 非参数错误通用失败信息
+     */
+    public Response<T> failure(String msg) {
+        this.msg = msg;
+        this.ret = Constants.RET_FAIL;
+        this.end();
+        return this;
+    }
+
+    /**
+     * 参数错误信息
+     */
+    public Response<T> paramFailure(String msg) {
+        this.msg = msg;
+        this.ret = Constants.RET_ERROR_PARAM;
+        this.end();
+        return this;
+    }
+
+    /**
+     * 用户信息丢失
+     */
+    public Response<T> tokenFailure(String msg) {
+        this.msg = msg;
+        this.ret = Constants.RET_NO_TOKEN;
+        this.end();
+        return this;
+    }
+
+    /**
+     * 通用成功
+     */
+    public Response<T> success() {
+        this.end();
+        return this;
+    }
+
+}

+ 132 - 0
common-biz-client/src/main/java/com/diagbot/entity/Status.java

@@ -0,0 +1,132 @@
+package com.diagbot.entity;
+
+public enum Status {
+    /**
+     * <code>PENDING = 1;</code>
+     *
+     * <pre>
+     * 操作尚未开始
+     * </pre>
+     */
+    PENDING(1),
+    /**
+     * <code>RUNNING = 2;</code>
+     *
+     * <pre>
+     * 操作开始
+     * </pre>
+     */
+    RUNNING(2),
+    /**
+     * <code>OK = 3;</code>
+     *
+     * <pre>
+     * 操作正常结束
+     * </pre>
+     */
+    OK(3),
+    /**
+     * <code>WARN = 4;</code>
+     *
+     * <pre>
+     * 有警告,但是正常结束
+     * </pre>
+     */
+    WARN(4),
+    /**
+     * <code>ERROR = 5;</code>
+     *
+     * <pre>
+     * 有错误,但是完整结束
+     * </pre>
+     */
+    ERROR(5),
+    /**
+     * <code>FAIL = 6;</code>
+     *
+     * <pre>
+     * 操作失败
+     * </pre>
+     */
+    FAIL(6),
+    ;
+
+    /**
+     * <code>PENDING = 1;</code>
+     *
+     * <pre>
+     * 操作尚未开始
+     * </pre>
+     */
+    public static final int PENDING_VALUE = 1;
+    /**
+     * <code>RUNNING = 2;</code>
+     *
+     * <pre>
+     * 操作开始
+     * </pre>
+     */
+    public static final int RUNNING_VALUE = 2;
+    /**
+     * <code>OK = 3;</code>
+     *
+     * <pre>
+     * 操作正常结束
+     * </pre>
+     */
+    public static final int OK_VALUE = 3;
+    /**
+     * <code>WARN = 4;</code>
+     *
+     * <pre>
+     * 有警告,但是正常结束
+     * </pre>
+     */
+    public static final int WARN_VALUE = 4;
+    /**
+     * <code>ERROR = 5;</code>
+     *
+     * <pre>
+     * 有错误,但是完整结束
+     * </pre>
+     */
+    public static final int ERROR_VALUE = 5;
+    /**
+     * <code>FAIL = 6;</code>
+     *
+     * <pre>
+     * 操作失败
+     * </pre>
+     */
+    public static final int FAIL_VALUE = 6;
+
+    public final int getNumber() {
+        return value;
+    }
+
+    public static Status valueOf(int value) {
+        switch (value) {
+            case 1:
+                return PENDING;
+            case 2:
+                return RUNNING;
+            case 3:
+                return OK;
+            case 4:
+                return WARN;
+            case 5:
+                return ERROR;
+            case 6:
+                return FAIL;
+            default:
+                return null;
+        }
+    }
+
+    private final int value;
+
+    private Status(int value) {
+        this.value = value;
+    }
+
+}

+ 30 - 0
common-biz-client/src/main/java/com/diagbot/facade/MrqcFacade.java

@@ -0,0 +1,30 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.MrqcServiceClient;
+import com.diagbot.entity.Response;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.vo.QueryVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/12/23 15:38
+ */
+@Component
+public class MrqcFacade {
+    @Autowired
+    private MrqcServiceClient mrqcServiceClient;
+
+    public Map<String, Object> extract(QueryVO queryVO) {
+        Response<Map<String, Object>> res = mrqcServiceClient.extract(queryVO);
+        if (res == null || res.getData() == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "病历质控没有返回结果");
+        }
+        return res.getData();
+    }
+}

+ 21 - 0
common-biz-client/src/main/java/com/diagbot/vo/MedrecVO.java

@@ -0,0 +1,21 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 病历查询结构
+ * @author: Mark Huang
+ * @Time: 2019/04/04 :15:14
+ *
+ */
+@Getter
+@Setter
+public class MedrecVO {
+    private String title;
+    private Map<String, String> content;
+    private List<String> label;
+}

+ 23 - 0
common-biz-client/src/main/java/com/diagbot/vo/QueryVO.java

@@ -0,0 +1,23 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description: 业务查询
+ * @author: Mark Huang
+ * @Time: 2019/04/04 :15:14
+ *
+ */
+@Getter
+@Setter
+public class QueryVO extends TokenVO {
+
+//    private String title;
+//    private String content;
+    private List<MedrecVO> medrec;
+    // 调用id, 0:ICSS
+    private int cid;
+}

+ 17 - 0
common-biz-client/src/main/java/com/diagbot/vo/TokenVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2019/12/24 19:17
+ */
+@Getter
+@Setter
+public class TokenVO implements Serializable {
+    private String token; //token信息
+}

+ 37 - 1
common/pom.xml

@@ -75,7 +75,7 @@
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
             <version>2.8.6</version>
-            <scope>provided</scope>
+            <scope>compile</scope>
         </dependency>
 
         <dependency>
@@ -133,6 +133,42 @@
         <!--</dependency>-->
     </dependencies>
 
+    <!-- 私有仓库 -->
+    <repositories>
+        <repository>
+            <id>nexus-releases</id>
+            <name>Nexus Release Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-releases/</url>
+        </repository>
+    </repositories>
+    <!-- 私有仓库 -->
+    <pluginRepositories>
+        <pluginRepository>
+            <id>nexus-releases</id>
+            <name>Nexus Release Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-releases/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+    <distributionManagement>
+        <repository>
+            <id>nexus-releases</id>
+            <name>Nexus Release Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>nexus-snapshots</id>
+            <name>Nexus Snapshot Repository</name>
+            <url>http://192.168.2.236:8081/repository/maven-snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
+
     <build>
         <plugins>
             <plugin>

+ 26 - 0
common/src/main/java/com/diagbot/annotation/CryptField.java

@@ -0,0 +1,26 @@
+package com.diagbot.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description: 加解密注解
+ * @author: gaodm
+ * @time: 2019/12/30 18:36
+ */
+@Inherited
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })
+public @interface CryptField {
+
+    String value() default "";
+
+    boolean encrypt() default true;
+
+    boolean decrypt() default true;
+}

+ 2 - 0
common/src/main/java/com/diagbot/biz/push/entity/AdverseReaction.java

@@ -1,5 +1,6 @@
 package com.diagbot.biz.push.entity;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -20,6 +21,7 @@ public class AdverseReaction {
     /**
      * 术语名称
      */
+    @CryptField
     private String name;
     /**
      * 词性

+ 3 - 0
common/src/main/java/com/diagbot/biz/push/entity/FeatureRate.java

@@ -1,5 +1,6 @@
 package com.diagbot.biz.push.entity;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -9,7 +10,9 @@ import lombok.Setter;
 @Getter
 @Setter
 public class FeatureRate {
+    @CryptField
     private String featureName;
+    @CryptField
     private String extraProperty;
     private String desc;
     private String rate;

+ 16 - 0
common/src/main/java/com/diagbot/biz/push/entity/FeatureRateWithExplain.java

@@ -0,0 +1,16 @@
+package com.diagbot.biz.push.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:推理返回类型带名词解释
+ * @Author:zhaops
+ * @time: 2020/3/23 10:44
+ */
+@Getter
+@Setter
+public class FeatureRateWithExplain extends FeatureRate {
+    private String description;
+    private String explains;
+}

+ 6 - 0
common/src/main/java/com/diagbot/biz/push/entity/MedicalIndication.java

@@ -1,5 +1,6 @@
 package com.diagbot.biz.push.entity;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -29,7 +30,12 @@ public class MedicalIndication {
     /**
      * 名称(术语、描述等)
      */
+    @CryptField
     private String name;
+    /**
+     * 医院入参
+     */
+    private String hisName;
     /**
      * 病情提示明细
      */

+ 2 - 0
common/src/main/java/com/diagbot/biz/push/entity/Medicition.java

@@ -1,5 +1,6 @@
 package com.diagbot.biz.push.entity;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -18,6 +19,7 @@ public class Medicition {
     /**
      * 药品名称
      */
+    @CryptField
     private String medicitionName;
     /**
      * 词性(10:药品通用名)

+ 3 - 0
common/src/main/java/com/diagbot/biz/push/entity/MedicitionClass.java

@@ -1,5 +1,6 @@
 package com.diagbot.biz.push.entity;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -28,6 +29,7 @@ public class MedicitionClass {
     /**
      * 药品大类名称
      */
+    @CryptField
     private String bigdrugsName;
     /**
      * 药品大类词性
@@ -44,6 +46,7 @@ public class MedicitionClass {
     /**
      * 药品小类名称
      */
+    @CryptField
     private String subdrugsName;
     /**
      * 药品小类词性

+ 25 - 0
common/src/main/java/com/diagbot/biz/push/entity/ResponseDataWithExplain.java

@@ -0,0 +1,25 @@
+package com.diagbot.biz.push.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:推理结果带名词解释
+ * @Author:zhaops
+ * @time: 2020/3/23 10:45
+ */
+@Getter
+@Setter
+public class ResponseDataWithExplain {
+    /**
+     * 症状
+     */
+    private List<FeatureRateWithExplain> symptom = new ArrayList<>(10);
+    /**
+     * 诊断
+     */
+    private List<FeatureRate> dis = new ArrayList<>(10);
+}

+ 4 - 1
common/src/main/java/com/diagbot/enums/SysTypeEnum.java

@@ -28,7 +28,10 @@ public enum SysTypeEnum implements KeyedNamed {
     AIPT_SERVICE(15, "aipt-service"),
     DATA_SERVICE(16, "data-service"),
     PREC_SERVICE(17, "prec-service"),
-    PRECMAN_SERVICE(18, "precman-service");
+    PRECMAN_SERVICE(18, "precman-service"),
+    MRQCMAN_SERVICE(19, "mrqcman-service"),
+    MRMAN_SERVICE(20, "mrman-service"),
+    LTKG_SERVICE(30, "ltkg-service");
 
     @Setter
     private int key;

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

@@ -4,12 +4,12 @@ import com.diagbot.annotation.BiLogger;
 import com.diagbot.annotation.BiLoggerResult;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.annotation.SysLoggerExport;
+import com.diagbot.biz.log.entity.BiRecord;
+import com.diagbot.biz.log.entity.SysLog;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.enums.BiSourceEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.biz.log.entity.BiRecord;
-import com.diagbot.biz.log.entity.SysLog;
 import com.diagbot.vo.BaseBiVO;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.ProceedingJoinPoint;

+ 208 - 0
common/src/main/java/com/diagbot/util/CryptPojoUtils.java

@@ -0,0 +1,208 @@
+package com.diagbot.util;
+
+/**
+ * @Description: 实体类加解密工具类
+ * @author: gaodm
+ * @date: 2019/12/31 21:07
+ * @version: V1.0
+ */
+
+import com.diagbot.annotation.CryptField;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Field;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+public class CryptPojoUtils {
+
+    /**
+     * 对含注解字段加密
+     */
+    public static <T> void encryptFields(T[] objects) {
+        for (Object obj : objects) {
+            encryptFieldOrList(obj);
+        }
+    }
+
+    /**
+     * 对含注解字段加密
+     */
+    public static <T> void encryptFieldOrList(T t) {
+        if (isNotCrypt(t)) {
+            return;
+        }
+        if (t instanceof List) {
+            List values = (List) t;
+            for (Object object : values) {
+                CryptPojoUtils.encryptField(object);
+            }
+        } else {
+            CryptPojoUtils.encryptField(t);
+        }
+    }
+
+    /**
+     * 对含注解字段加密
+     */
+    private static <T> void encryptField(T t) {
+        if (isNotCrypt(t)) {
+            return;
+        }
+
+        Field[] declaredFields = getAllFields(t.getClass());
+        try {
+            if (declaredFields != null && declaredFields.length > 0) {
+                for (Field field : declaredFields) {
+                    if (field.isAnnotationPresent(CryptField.class)
+                            && field.getType().toString().endsWith("String")) {
+                        field.setAccessible(true);
+                        String fieldValue = (String) field.get(t);
+                        if (StringUtils.isNotEmpty(fieldValue)) {
+                            field.set(t, CryptUtil.encrypt_char(fieldValue));
+                        }
+                    } else if (field.getType().equals(List.class)) {
+                        field.setAccessible(true);
+                        List fieldValue = (List) field.get(t);
+                        if (ListUtil.isEmpty(fieldValue)) {
+                            continue;
+                        }
+                        for (Object listValue : fieldValue) {
+                            encryptField(listValue);
+                        }
+                    } else if (field.getType().equals(LinkedList.class)) {
+                        field.setAccessible(true);
+                        LinkedList fieldValue = (LinkedList) field.get(t);
+                        if (ListUtil.isEmpty(fieldValue)) {
+                            continue;
+                        }
+                        for (Object listValue : fieldValue) {
+                            encryptField(listValue);
+                        }
+                    } else {
+                        field.setAccessible(true);
+                        Object fieldValue = field.get(t);
+                        encryptField(fieldValue);
+                    }
+                }
+            }
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 对含注解字段解密
+     */
+    public static <T> void decryptFields(T[] objects) {
+        for (Object obj : objects) {
+            decryptFieldOrList(obj);
+        }
+    }
+
+    /**
+     * 对含注解字段解密
+     */
+    public static <T> void decryptFieldOrList(T t) {
+        if (isNotCrypt(t)) {
+            return;
+        }
+        if (t instanceof List) {
+            List values = (List) t;
+            for (Object object : values) {
+                CryptPojoUtils.decryptField(object);
+            }
+        } else {
+            CryptPojoUtils.decryptField(t);
+        }
+    }
+
+    /**
+     * 对含注解字段解密
+     */
+    private static <T> void decryptField(T t) {
+        if (isNotCrypt(t)) {
+            return;
+        }
+
+        Field[] declaredFields = getAllFields(t.getClass());
+        try {
+            if (declaredFields != null && declaredFields.length > 0) {
+                for (Field field : declaredFields) {
+                    if (field.isAnnotationPresent(CryptField.class)
+                            && field.getType().toString().endsWith("String")) {
+                        field.setAccessible(true);
+                        String fieldValue = (String) field.get(t);
+                        if (StringUtils.isNotEmpty(fieldValue)) {
+                            field.set(t, CryptUtil.decrypt_char(fieldValue));
+                        }
+                    } else if (field.getType().equals(List.class)) {
+                        field.setAccessible(true);
+                        List fieldValue = (List) field.get(t);
+                        if (ListUtil.isEmpty(fieldValue)) {
+                            continue;
+                        }
+                        for (Object listValue : fieldValue) {
+                            decryptField(listValue);
+                        }
+                    } else if (field.getType().equals(LinkedList.class)) {
+                        field.setAccessible(true);
+                        LinkedList fieldValue = (LinkedList) field.get(t);
+                        if (ListUtil.isEmpty(fieldValue)) {
+                            continue;
+                        }
+                        for (Object listValue : fieldValue) {
+                            decryptField(listValue);
+                        }
+                    } else {
+                        field.setAccessible(true);
+                        Object fieldValue = field.get(t);
+                        decryptField(fieldValue);
+                    }
+                }
+            }
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+    /**
+     * 判断是否需要加解密
+     *
+     * @param o
+     * @return
+     */
+    private static boolean isNotCrypt(Object o) {
+        return o == null || o instanceof Double
+                || o instanceof Integer || o instanceof Long
+                || o instanceof Boolean || o instanceof Map
+                || o instanceof Date || o instanceof LocalDate
+                || o instanceof MultipartFile || o instanceof HttpServletRequest
+                || o instanceof HttpServletResponse;
+    }
+
+    /**
+     * 获取本类及其父类的属性的方法
+     *
+     * @param clazz 当前类对象
+     * @return 字段数组
+     */
+    private static Field[] getAllFields(Class<?> clazz) {
+        List<Field> fieldList = new ArrayList<>();
+        while (clazz != null) {
+            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
+            clazz = clazz.getSuperclass();
+        }
+        Field[] fields = new Field[fieldList.size()];
+        return fieldList.toArray(fields);
+    }
+}

+ 101 - 0
common/src/main/java/com/diagbot/util/CryptUtil.java

@@ -0,0 +1,101 @@
+package com.diagbot.util;
+
+import java.util.List;
+
+/**
+ * @Description: 加解密工具类
+ * @author: gaodm
+ * @time: 2019/12/30 11:09
+ */
+public class CryptUtil {
+
+    private final static char EN_MAX = '\u0080';//128
+    private final static int MOVE_NUM = 2;
+    private final static char DE_MAX = EN_MAX + MOVE_NUM;
+
+    /**
+     * 加密,把一个字符串在原有的基础上+2
+     *
+     * @param data 需要解密的原字符串
+     * @return 返回解密后的新字符串
+     */
+    public static String encrypt_char(String data) {
+        char[] chars = data.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            if (EN_MAX < chars[i]) {
+                chars[i] += MOVE_NUM;
+            }
+        }
+        return new String(chars);
+    }
+
+    /**
+     * 解密:把一个加密后的字符串在原有基础上-2
+     *
+     * @param data 加密后的字符串
+     * @return 返回解密后的新字符串
+     */
+    public static String decrypt_char(String data) {
+        char[] chars = data.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            if (DE_MAX < chars[i]) {
+                chars[i] -= MOVE_NUM;
+            }
+        }
+        return new String(chars);
+    }
+
+
+    /**
+     * 对List<String>进行加密
+     *
+     * @param list 加密前的list
+     * @return 加密后的list
+     */
+    public static void encryptList(List<String> list) {
+        if (ListUtil.isNotEmpty(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                list.set(i, CryptUtil.encrypt_char(list.get(i)));
+            }
+        }
+    }
+
+    /**
+     * 对List<String>进行解密
+     * @param list 解密前的list
+     * @return 解密后的list
+     */
+    public static void decryptList(List<String> list) {
+        if (ListUtil.isNotEmpty(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                list.set(i, CryptUtil.decrypt_char(list.get(i)));
+            }
+        }
+    }
+
+
+
+    public static void main(String[] args) {
+        //加密英文
+        String data = "解密后:�dsfaa2132159-4331}~\u007F";
+        String charResult = encrypt_char(data);
+        System.out.println("加密后:" + charResult);
+        //解密
+        String charStr = decrypt_char(charResult);
+        System.out.println("解密后:" + charStr);
+
+
+        //加密中文
+        data = "跳梁小豆tlxd666,z";
+        String result = encrypt_char(data);
+        System.out.println("加密后:" + result);
+        String str1 = decrypt_char(result);
+        System.out.println("解密后:" + str1);
+
+//        int num = 32;
+//        while (num <= 128) {
+//            System.out.println((char) num + "  (Unicode编码对应的数字为:) " + num);
+//            num++;
+//        }
+    }
+}

+ 3 - 0
common/src/main/java/com/diagbot/util/HttpUtils.java

@@ -66,6 +66,9 @@ public class HttpUtils {
             if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                 ip = request.getHeader("HTTP_X_FORWARDED_FOR");
             }
+            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+                ip = request.getHeader("X-Real-IP");
+            }
             if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                 ip = request.getRemoteAddr();
             }

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

@@ -75,4 +75,11 @@ syslog:
   enable: true
 
 bilog:
-  enable: false
+  enable: false
+
+crypt:
+  enable: true
+
+mrqc:
+  server:
+    address: http://192.168.2.234:8090

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

@@ -75,4 +75,11 @@ syslog:
   enable: true
 
 bilog:
-  enable: false
+  enable: false
+
+crypt:
+  enable: true
+
+mrqc:
+  server:
+    address: http://192.168.2.234:8090

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

@@ -75,4 +75,11 @@ syslog:
   enable: true
 
 bilog:
-  enable: false
+  enable: false
+
+crypt:
+  enable: true
+
+mrqc:
+  server:
+    address: http://192.168.2.186:8090

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

@@ -75,4 +75,11 @@ syslog:
   enable: true
 
 bilog:
-  enable: false
+  enable: false
+
+crypt:
+  enable: true
+
+mrqc:
+  server:
+    address: http://192.168.2.123:8090

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

@@ -75,4 +75,11 @@ syslog:
   enable: true
 
 bilog:
-  enable: false
+  enable: false
+
+crypt:
+  enable: true
+
+mrqc:
+  server:
+    address: http://192.168.2.241:8090

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


部分文件因文件數量過多而無法顯示