Browse Source

Merge branch 'master' into 122run

gaodm 5 years ago
parent
commit
a60a96cbc1
100 changed files with 13473 additions and 195 deletions
  1. 41 0
      aipt-service/src/main/java/com/diagbot/client/AINeoServiceClient.java
  2. 49 0
      aipt-service/src/main/java/com/diagbot/client/hystrix/AINeoServiceHystrix.java
  3. 3 0
      aipt-service/src/main/java/com/diagbot/dto/FeatureConceptDTO.java
  4. 20 0
      aipt-service/src/main/java/com/diagbot/dto/FeatureDTO.java
  5. 25 10
      aipt-service/src/main/java/com/diagbot/facade/FeatureFacade.java
  6. 75 0
      aipt-service/src/main/java/com/diagbot/facade/FeatureV2Facade.java
  7. 91 0
      aipt-service/src/main/java/com/diagbot/facade/PushV2Facade.java
  8. 12 1
      aipt-service/src/main/java/com/diagbot/mapper/ConceptMapper.java
  9. 10 0
      aipt-service/src/main/java/com/diagbot/service/ConceptService.java
  10. 12 0
      aipt-service/src/main/java/com/diagbot/service/impl/ConceptServiceImpl.java
  11. 18 0
      aipt-service/src/main/java/com/diagbot/vo/ConceptNameVO.java
  12. 15 0
      aipt-service/src/main/java/com/diagbot/vo/NLPVO.java
  13. 37 0
      aipt-service/src/main/java/com/diagbot/web/FeatureV2Controller.java
  14. 44 0
      aipt-service/src/main/java/com/diagbot/web/PushV2Controller.java
  15. 25 0
      aipt-service/src/main/resources/mapper/ConceptMapper.xml
  16. 18 0
      common/src/main/java/com/diagbot/biz/push/entity/FeatureRateV2.java
  17. 16 0
      common/src/main/java/com/diagbot/biz/push/entity/FeatureRateWithExplainV2.java
  18. 26 0
      common/src/main/java/com/diagbot/biz/push/entity/ResponseDataV2.java
  19. 25 0
      common/src/main/java/com/diagbot/biz/push/entity/ResponseDataWithExplainV2.java
  20. 5 1
      config-server/src/main/resources/shared/aipt-service-dev.yml
  21. 5 1
      config-server/src/main/resources/shared/aipt-service-local.yml
  22. 5 1
      config-server/src/main/resources/shared/aipt-service-pre.yml
  23. 5 1
      config-server/src/main/resources/shared/aipt-service-pro.yml
  24. 5 1
      config-server/src/main/resources/shared/aipt-service-test.yml
  25. 24 3
      config-server/src/main/resources/shared/application-dev.yml
  26. 24 3
      config-server/src/main/resources/shared/application-local.yml
  27. 24 3
      config-server/src/main/resources/shared/application-pre.yml
  28. 24 3
      config-server/src/main/resources/shared/application-pro.yml
  29. 24 3
      config-server/src/main/resources/shared/application-test.yml
  30. 1 1
      config-server/src/main/resources/shared/mrman-service-dev.yml
  31. 1 1
      config-server/src/main/resources/shared/mrman-service-local.yml
  32. 3 3
      config-server/src/main/resources/shared/mrman-service-pre.yml
  33. 1 1
      config-server/src/main/resources/shared/mrman-service-pro.yml
  34. 1 1
      config-server/src/main/resources/shared/mrman-service-test.yml
  35. 1071 0
      docs/032.20200429质控标签模板/init_sys-user.sql
  36. 3 0
      docs/035.20190409智能分诊执行脚本/tran_alter.sql
  37. 8132 0
      docs/035.20200420邵逸夫智能分诊数据追加脚本/init_tran.sql
  38. 2 0
      icss-service/src/main/java/com/diagbot/config/MultipartConfigurer.java
  39. 2 0
      knowledgeman-service/src/main/java/com/diagbot/config/MultipartConfigurer.java
  40. 1 1
      ltkg-service/src/main/resources/mapper/KgMapper.xml
  41. 20 0
      mrman-service/src/main/java/com/diagbot/dto/GetAllByHospitalDTO.java
  42. 27 0
      mrman-service/src/main/java/com/diagbot/dto/GetAllByHospitalDetialDTO.java
  43. 69 0
      mrman-service/src/main/java/com/diagbot/dto/GetModuleDetailInfoDTO.java
  44. 29 0
      mrman-service/src/main/java/com/diagbot/dto/GetModuleInfoOneDTO.java
  45. 19 0
      mrman-service/src/main/java/com/diagbot/dto/GetModuleTypeDTO.java
  46. 18 0
      mrman-service/src/main/java/com/diagbot/dto/GetUpdateInfoDTO.java
  47. 20 0
      mrman-service/src/main/java/com/diagbot/dto/GetUpdateInfoDetialDTO.java
  48. 23 0
      mrman-service/src/main/java/com/diagbot/dto/ModuleInfoDTO.java
  49. 17 0
      mrman-service/src/main/java/com/diagbot/dto/ModuleInfoListDTO.java
  50. 30 0
      mrman-service/src/main/java/com/diagbot/dto/ModuleQuestionDTO.java
  51. 3 1
      mrman-service/src/main/java/com/diagbot/dto/QcCasesAllDTO.java
  52. 1 0
      mrman-service/src/main/java/com/diagbot/dto/QcCasesDTO.java
  53. 57 0
      mrman-service/src/main/java/com/diagbot/dto/QcCasesEntryAllDTO.java
  54. 56 0
      mrman-service/src/main/java/com/diagbot/dto/QcCasesEntryDTO.java
  55. 0 5
      mrman-service/src/main/java/com/diagbot/dto/QcHospitalInfoAllDTO.java
  56. 27 0
      mrman-service/src/main/java/com/diagbot/dto/QcModeDTO.java
  57. 32 0
      mrman-service/src/main/java/com/diagbot/dto/QcModuleDetailDTO.java
  58. 16 0
      mrman-service/src/main/java/com/diagbot/dto/QuesCasesEntryDTO.java
  59. 34 0
      mrman-service/src/main/java/com/diagbot/dto/QuestionDTO.java
  60. 123 0
      mrman-service/src/main/java/com/diagbot/dto/QuestionPageDTO.java
  61. 2 2
      mrman-service/src/main/java/com/diagbot/entity/QcHospitalInfo.java
  62. 200 0
      mrman-service/src/main/java/com/diagbot/entity/CasesEntryHospital.java
  63. 20 0
      mrman-service/src/main/java/com/diagbot/entity/CommonParam.java
  64. 88 0
      mrman-service/src/main/java/com/diagbot/entity/DictionaryInfo.java
  65. 180 0
      mrman-service/src/main/java/com/diagbot/entity/MedRecordModule.java
  66. 68 41
      mrman-service/src/main/java/com/diagbot/entity/QcCases.java
  67. 110 54
      mrman-service/src/main/java/com/diagbot/entity/QcCasesEntry.java
  68. 157 0
      mrman-service/src/main/java/com/diagbot/entity/QcMode.java
  69. 78 0
      mrman-service/src/main/java/com/diagbot/entity/QcModuleDetail.java
  70. 78 0
      mrman-service/src/main/java/com/diagbot/entity/QcModuleInfo.java
  71. 73 0
      mrman-service/src/main/java/com/diagbot/entity/QcQuestionEntry.java
  72. 123 0
      mrman-service/src/main/java/com/diagbot/entity/QcQuestionInfo.java
  73. 73 0
      mrman-service/src/main/java/com/diagbot/entity/QcQuestionMapping.java
  74. 21 0
      mrman-service/src/main/java/com/diagbot/entity/wrapper/QuestionInfoWrapper.java
  75. 27 0
      mrman-service/src/main/java/com/diagbot/entity/wrapper/QuestionMappingWrapper.java
  76. 36 0
      mrman-service/src/main/java/com/diagbot/entity/wrapper/QuestionWrapper.java
  77. 50 0
      mrman-service/src/main/java/com/diagbot/enums/InsertOrUpdateEnum.java
  78. 49 0
      mrman-service/src/main/java/com/diagbot/enums/TagTypeEnum.java
  79. 6 6
      mrman-service/src/main/java/com/diagbot/facade/QcHospitalInfoFacade.java
  80. 196 0
      mrman-service/src/main/java/com/diagbot/facade/CasesEntryHospitalFacade.java
  81. 34 0
      mrman-service/src/main/java/com/diagbot/facade/DictionaryFacade.java
  82. 31 0
      mrman-service/src/main/java/com/diagbot/facade/MedRecordModuleFacade.java
  83. 124 0
      mrman-service/src/main/java/com/diagbot/facade/QcCacesEntryFacade.java
  84. 42 9
      mrman-service/src/main/java/com/diagbot/facade/QcCasesFacade.java
  85. 41 36
      mrman-service/src/main/java/com/diagbot/facade/QcInputcasesFacade.java
  86. 33 0
      mrman-service/src/main/java/com/diagbot/facade/QcModeFacade.java
  87. 92 0
      mrman-service/src/main/java/com/diagbot/facade/QcModuleDetailFacade.java
  88. 213 0
      mrman-service/src/main/java/com/diagbot/facade/QcModuleInfoFacade.java
  89. 26 0
      mrman-service/src/main/java/com/diagbot/facade/QcQuestionEntryFacade.java
  90. 519 0
      mrman-service/src/main/java/com/diagbot/facade/QcQuestionFacade.java
  91. 25 0
      mrman-service/src/main/java/com/diagbot/facade/QcQuestionMappingFacade.java
  92. 2 2
      mrman-service/src/main/java/com/diagbot/mapper/QcHospitalInfoMapper.java
  93. 16 0
      mrman-service/src/main/java/com/diagbot/mapper/CasesEntryHospitalMapper.java
  94. 16 0
      mrman-service/src/main/java/com/diagbot/mapper/DictionaryInfoMapper.java
  95. 16 0
      mrman-service/src/main/java/com/diagbot/mapper/MedRecordModuleMapper.java
  96. 21 0
      mrman-service/src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java
  97. 4 0
      mrman-service/src/main/java/com/diagbot/mapper/QcCasesMapper.java
  98. 16 0
      mrman-service/src/main/java/com/diagbot/mapper/QcModeMapper.java
  99. 21 0
      mrman-service/src/main/java/com/diagbot/mapper/QcModuleDetailMapper.java
  100. 0 0
      mrman-service/src/main/java/com/diagbot/mapper/QcModuleInfoMapper.java

+ 41 - 0
aipt-service/src/main/java/com/diagbot/client/AINeoServiceClient.java

@@ -0,0 +1,41 @@
+package com.diagbot.client;
+
+import com.diagbot.biz.push.entity.ResponseDataV2;
+import com.diagbot.client.bean.Response;
+import com.diagbot.client.bean.SearchData;
+import com.diagbot.client.hystrix.AINeoServiceHystrix;
+import com.diagbot.dto.FeatureDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.NLPVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/16 16:27
+ */
+@FeignClient(name = "AINeo", url = "${aineo.server.address}", fallback = AINeoServiceHystrix.class)
+public interface AINeoServiceClient {
+
+    /**
+     * 推理
+     *
+     * @param searchData
+     * @return
+     */
+    @PostMapping(value = "/api/push")
+    Response<ResponseDataV2> push(@RequestBody SearchData searchData);
+
+    /**
+     * 特征词提取
+     *
+     * @param nlpvo
+     * @return
+     */
+    @PostMapping(value = "/api/extract")
+    RespDTO<List<FeatureDTO>> extract(@RequestBody NLPVO nlpvo);
+}

+ 49 - 0
aipt-service/src/main/java/com/diagbot/client/hystrix/AINeoServiceHystrix.java

@@ -0,0 +1,49 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.biz.push.entity.ResponseDataV2;
+import com.diagbot.client.AINeoServiceClient;
+import com.diagbot.client.bean.Response;
+import com.diagbot.client.bean.SearchData;
+import com.diagbot.dto.FeatureDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.NLPVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/16 16:27
+ */
+@Component
+@Slf4j
+public class AINeoServiceHystrix implements AINeoServiceClient {
+
+    /**
+     * 推理
+     *
+     * @param searchData
+     * @return
+     */
+    @Override
+    public Response<ResponseDataV2> push(@RequestBody SearchData searchData) {
+        log.error("【hystrix】调用{}异常", "push");
+        return null;
+    }
+
+    /**
+     * 特征词提取
+     *
+     * @param nlpvo
+     * @return
+     */
+    @Override
+    public RespDTO<List<FeatureDTO>> extract(@RequestBody NLPVO nlpvo) {
+        log.error("【hystrix】调用{}异常", "extract");
+        return null;
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 package com.diagbot.dto;
 
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
@@ -14,4 +15,6 @@ public class FeatureConceptDTO extends ConceptBaseDTO {
     private Integer libType;
     private Integer libType;
     private Integer type;
     private Integer type;
     private Integer chronicLabel; //是否慢病复诊标志
     private Integer chronicLabel; //是否慢病复诊标志
+    @CryptField
+    private String origin;
 }
 }

+ 20 - 0
aipt-service/src/main/java/com/diagbot/dto/FeatureDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import com.diagbot.annotation.CryptField;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/26 13:42
+ */
+@Getter
+@Setter
+public class FeatureDTO {
+    private Long conceptId;
+    @CryptField
+    private String standard;
+    private Integer type;
+    private String origin;
+}

+ 25 - 10
aipt-service/src/main/java/com/diagbot/facade/FeatureFacade.java

@@ -1,12 +1,12 @@
 package com.diagbot.facade;
 package com.diagbot.facade;
 
 
 import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.FeatureConceptDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.util.ParamConvertUtil;
+import com.diagbot.vo.ConceptNameVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
@@ -41,24 +41,39 @@ public class FeatureFacade {
 
 
         Map<Integer, List<FeatureConceptDTO>> symptomMap
         Map<Integer, List<FeatureConceptDTO>> symptomMap
                 = EntityUtil.makeEntityListMap(symptomFeatureList, "libType");
                 = EntityUtil.makeEntityListMap(symptomFeatureList, "libType");
-        Map<Integer, Map<String, Long>> map = new LinkedHashMap<>();
+        Map<Integer, Map<String, FeatureConceptDTO>> map = new LinkedHashMap<>();
         for (Map.Entry<Integer, List<FeatureConceptDTO>> entry : symptomMap.entrySet()) {
         for (Map.Entry<Integer, List<FeatureConceptDTO>> entry : symptomMap.entrySet()) {
-            List<Concept> concepts
-                    = conceptFacade.getListByNamesAndType(entry.getValue()
+            List<String> names = entry.getValue()
                     .stream()
                     .stream()
                     .map(i -> i.getName())
                     .map(i -> i.getName())
-                    .collect(Collectors.toList()), entry.getKey());
-            Map<String, Long> conceptMap
-                    = EntityUtil.makeMapWithKeyValue(concepts, "libName", "id");
+                    .collect(Collectors.toList());
+            ConceptNameVO conceptNameVO = new ConceptNameVO();
+            conceptNameVO.setNames(names);
+            conceptNameVO.setType(entry.getKey());
+            List<FeatureConceptDTO> featureConcepts = conceptFacade.getFeatureConcept(conceptNameVO);
+            Map<String, FeatureConceptDTO> conceptMap
+                    = EntityUtil.makeEntityMap(featureConcepts, "origin");
             map.put(entry.getKey(), conceptMap);
             map.put(entry.getKey(), conceptMap);
         }
         }
 
 
         for (FeatureConceptDTO featureConceptDTO : symptomFeatureList) {
         for (FeatureConceptDTO featureConceptDTO : symptomFeatureList) {
             if (null != featureConceptDTO.getLibType()) {
             if (null != featureConceptDTO.getLibType()) {
                 featureConceptDTO.setType(ParamConvertUtil.libConvert2Concept(featureConceptDTO.getLibType()));
                 featureConceptDTO.setType(ParamConvertUtil.libConvert2Concept(featureConceptDTO.getLibType()));
-                featureConceptDTO.setConceptId(map
-                        .get(featureConceptDTO.getLibType())
-                        .get(featureConceptDTO.getName()));
+                if (map.containsKey(featureConceptDTO.getLibType())
+                        && map.get(featureConceptDTO.getLibType()).containsKey(featureConceptDTO.getName())) {
+                    featureConceptDTO.setConceptId(map
+                            .get(featureConceptDTO.getLibType())
+                            .get(featureConceptDTO.getName())
+                            .getConceptId());
+                    featureConceptDTO.setOrigin(map
+                            .get(featureConceptDTO.getLibType())
+                            .get(featureConceptDTO.getName())
+                            .getOrigin());
+                    featureConceptDTO.setName(map
+                            .get(featureConceptDTO.getLibType())
+                            .get(featureConceptDTO.getName())
+                            .getName());
+                }
             }
             }
         }
         }
         return symptomFeatureList;
         return symptomFeatureList;

+ 75 - 0
aipt-service/src/main/java/com/diagbot/facade/FeatureV2Facade.java

@@ -0,0 +1,75 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.AINeoServiceClient;
+import com.diagbot.dto.FeatureDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Concept;
+import com.diagbot.enums.LexiconTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.NLPVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/26 13:46
+ */
+@Component
+public class FeatureV2Facade {
+    @Autowired
+    private AINeoServiceClient aiNeoServiceClient;
+    @Autowired
+    private ConceptFacade conceptFacade;
+
+    /**
+     * 特征词提取
+     *
+     * @param nlpvo
+     * @return
+     */
+    public List<FeatureDTO> extract(NLPVO nlpvo) {
+        RespDTO<List<FeatureDTO>> respDTO = aiNeoServiceClient.extract(nlpvo);
+        RespDTOUtil.respNGDealCover(respDTO, "特征词提取失败");
+        return respDTO.data;
+    }
+
+    /**
+     * 症状特征词提取
+     *
+     * @param nlpvo
+     * @return
+     */
+    public List<FeatureDTO> symptomFeatureV2(NLPVO nlpvo) {
+        List<FeatureDTO> featureList = extract(nlpvo);
+        if (ListUtil.isNotEmpty(featureList)) {
+            List<FeatureDTO> symptoms = featureList
+                    .stream()
+                    .filter(i -> i.getType().equals(1))
+                    .collect(Collectors.toList());
+            List<String> names = symptoms
+                    .stream()
+                    .map(i -> i.getStandard())
+                    .collect(Collectors.toList());
+            List<Concept> concepts = conceptFacade.getListByNamesAndType(names, LexiconTypeEnum.SYMPTOM.getKey());
+            Map<String, Long> conceptMap
+                    = EntityUtil.makeMapWithKeyValue(concepts, "libName", "id");
+            symptoms.forEach(symptom -> {
+                if (conceptMap.containsKey(symptom.getStandard())) {
+                    symptom.setConceptId(conceptMap.get(symptom.getStandard()));
+                }
+            });
+            return symptoms;
+        } else {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "未提取到症状特征");
+        }
+    }
+}

+ 91 - 0
aipt-service/src/main/java/com/diagbot/facade/PushV2Facade.java

@@ -0,0 +1,91 @@
+package com.diagbot.facade;
+
+import com.diagbot.biz.push.entity.FeatureRate;
+import com.diagbot.biz.push.entity.FeatureRateV2;
+import com.diagbot.biz.push.entity.FeatureRateWithExplain;
+import com.diagbot.biz.push.entity.FeatureRateWithExplainV2;
+import com.diagbot.biz.push.entity.ResponseData;
+import com.diagbot.biz.push.entity.ResponseDataV2;
+import com.diagbot.biz.push.entity.ResponseDataWithExplain;
+import com.diagbot.biz.push.entity.ResponseDataWithExplainV2;
+import com.diagbot.biz.push.vo.SearchVO;
+import com.diagbot.client.AINeoServiceClient;
+import com.diagbot.client.bean.Response;
+import com.diagbot.client.bean.SearchData;
+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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/16 16:32
+ */
+@Component
+public class PushV2Facade {
+    @Autowired
+    private AINeoServiceClient aiNeoServiceClient;
+    @Autowired
+    private AssembleFacade assembleFacade;
+    @Autowired
+    private ConceptFacade conceptFacade;
+
+    /**
+     * 大数据原始推理结果
+     *
+     * @param searchVO
+     * @return
+     */
+    public ResponseDataV2 originalPush(SearchVO searchVO) {
+        SearchData searchData = assembleFacade.assembleData(searchVO);
+        Response<ResponseDataV2> res = aiNeoServiceClient.push(searchData);
+        if (res == null || res.getData() == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "AI没有返回结果");
+        }
+        return res.getData();
+    }
+
+    /**
+     * 推理结果带名词解释
+     *
+     * @param searchVO
+     * @return
+     */
+    public ResponseDataWithExplainV2 pushWithExplain(SearchVO searchVO) {
+        ResponseDataWithExplainV2 responseData = new ResponseDataWithExplainV2();
+        ResponseDataV2 data = this.originalPush(searchVO);
+        List<FeatureRateV2> 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<FeatureRateWithExplainV2> featureRateWithExplains
+                    = BeanUtil.listCopyTo(symptom, FeatureRateWithExplainV2.class);
+            if (klSymptomMap != null) {
+                for (FeatureRateWithExplainV2 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;
+    }
+}

+ 12 - 1
aipt-service/src/main/java/com/diagbot/mapper/ConceptMapper.java

@@ -5,11 +5,13 @@ import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.ConceptWithOrderRes;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptFindVO;
 import com.diagbot.vo.ConceptFindVO;
+import com.diagbot.vo.ConceptNameVO;
 import com.diagbot.vo.RetrievalVO;
 import com.diagbot.vo.RetrievalVO;
 
 
 import java.util.List;
 import java.util.List;
@@ -60,9 +62,18 @@ public interface ConceptMapper extends BaseMapper<Concept> {
 
 
     /**
     /**
      * 获得诊断依据问题词的标准词
      * 获得诊断依据问题词的标准词
+     *
      * @return
      * @return
      */
      */
     List<String> getStandWord();
     List<String> getStandWord();
 
 
     public List<ConceptBaseDTO> indexConcept(ConceptBaseVO conceptBaseVO);
     public List<ConceptBaseDTO> indexConcept(ConceptBaseVO conceptBaseVO);
-}
+
+    /**
+     * 特征词提取相关
+     *
+     * @param conceptNameVO
+     * @return
+     */
+    public List<FeatureConceptDTO> getFeatureConcept(ConceptNameVO conceptNameVO);
+}

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

@@ -5,11 +5,13 @@ import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.ConceptWithOrderRes;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptFindVO;
 import com.diagbot.vo.ConceptFindVO;
+import com.diagbot.vo.ConceptNameVO;
 import com.diagbot.vo.RetrievalVO;
 import com.diagbot.vo.RetrievalVO;
 
 
 import java.util.List;
 import java.util.List;
@@ -74,4 +76,12 @@ public interface ConceptService extends IService<Concept> {
      */
      */
     public List<ConceptBaseDTO> indexConcept(ConceptBaseVO conceptBaseVO);
     public List<ConceptBaseDTO> indexConcept(ConceptBaseVO conceptBaseVO);
 
 
+    /**
+     * 特征词提取相关
+     *
+     * @param conceptNameVO
+     * @return
+     */
+    public List<FeatureConceptDTO> getFeatureConcept(ConceptNameVO conceptNameVO);
+
 }
 }

+ 12 - 0
aipt-service/src/main/java/com/diagbot/service/impl/ConceptServiceImpl.java

@@ -5,6 +5,7 @@ import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.ConceptWithOrderRes;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.entity.wrapper.ConceptWrapper;
@@ -13,6 +14,7 @@ import com.diagbot.service.ConceptService;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptFindVO;
 import com.diagbot.vo.ConceptFindVO;
+import com.diagbot.vo.ConceptNameVO;
 import com.diagbot.vo.RetrievalVO;
 import com.diagbot.vo.RetrievalVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -103,4 +105,14 @@ public class ConceptServiceImpl extends ServiceImpl<ConceptMapper, Concept> impl
     public List<ConceptBaseDTO> indexConcept(ConceptBaseVO conceptBaseVO) {
     public List<ConceptBaseDTO> indexConcept(ConceptBaseVO conceptBaseVO) {
         return baseMapper.indexConcept(conceptBaseVO);
         return baseMapper.indexConcept(conceptBaseVO);
     }
     }
+
+    /**
+     * 特征词提取相关
+     *
+     * @param conceptNameVO
+     * @return
+     */
+    public List<FeatureConceptDTO> getFeatureConcept(ConceptNameVO conceptNameVO){
+        return baseMapper.getFeatureConcept(conceptNameVO);
+    }
 }
 }

+ 18 - 0
aipt-service/src/main/java/com/diagbot/vo/ConceptNameVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/28 13:11
+ */
+@Getter
+@Setter
+public class ConceptNameVO {
+    private List<String> names;
+    private Integer type;
+}

+ 15 - 0
aipt-service/src/main/java/com/diagbot/vo/NLPVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/26 13:41
+ */
+@Getter
+@Setter
+public class NLPVO {
+    private String text;
+}

+ 37 - 0
aipt-service/src/main/java/com/diagbot/web/FeatureV2Controller.java

@@ -0,0 +1,37 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.FeatureDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.FeatureV2Facade;
+import com.diagbot.vo.NLPVO;
+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 java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/26 13:49
+ */
+@RestController
+@RequestMapping("/featureV2")
+@Api(value = "文本特征词提取V2相关API", tags = { "文本特征词提取V2相关API" })
+public class FeatureV2Controller {
+    @Autowired
+    private FeatureV2Facade featureV2Facade;
+
+    @ApiOperation(value = "知识库标准化-症状特征词提取", notes = "")
+    @PostMapping("/symptomFeatureV2")
+    @SysLogger("symptomFeatureV2")
+    public RespDTO<List<FeatureDTO>> symptomFeatureV2(@RequestBody NLPVO nlpvo) {
+        List<FeatureDTO> data = featureV2Facade.symptomFeatureV2(nlpvo);
+        return RespDTO.onSuc(data);
+    }
+}

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

@@ -0,0 +1,44 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.biz.push.entity.ResponseData;
+import com.diagbot.biz.push.entity.ResponseDataV2;
+import com.diagbot.biz.push.entity.ResponseDataWithExplainV2;
+import com.diagbot.biz.push.vo.SearchVO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.PushV2Facade;
+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.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/16 16:34
+ */
+@RestController
+@RequestMapping("/pushV2")
+@Api(value = "推理V2相关API", tags = { "知识库标准化-推理V2相关API" })
+public class PushV2Controller {
+    @Autowired
+    private PushV2Facade pushV2Facade;
+
+    @PostMapping("/originalPush")
+    @SysLogger("originalPush")
+    public RespDTO<ResponseDataV2> originalPush(@Valid @RequestBody SearchVO searchVO) {
+        ResponseDataV2 data = pushV2Facade.originalPush(searchVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @PostMapping("/pushWithExplainV2")
+    @SysLogger("pushWithExplainV2")
+    public RespDTO<ResponseDataWithExplainV2> pushWithExplainV2(@Valid @RequestBody SearchVO searchVO) {
+        ResponseDataWithExplainV2 data = pushV2Facade.pushWithExplain(searchVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 25 - 0
aipt-service/src/main/resources/mapper/ConceptMapper.xml

@@ -1288,4 +1288,29 @@
         and a.type_id = #{libType} and b.lib_type = #{libType}
         and a.type_id = #{libType} and b.lib_type = #{libType}
     </select>
     </select>
 
 
+
+    <select id="getFeatureConcept" resultType="com.diagbot.dto.FeatureConceptDTO" parameterType="com.diagbot.vo.ConceptNameVO">
+        SELECT
+        a.NAME AS origin,
+        b.lib_name AS NAME,
+        b.id AS conceptId,
+        b.lib_type AS libType
+        FROM
+        kl_library_info a,
+        kl_concept b
+        WHERE
+        a.concept_id = b.id
+        AND a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        <if test="type!=null and type !=''">
+            AND a.type_id = #{type}
+            AND b.lib_type = #{type}
+        </if>
+        <if test="names!=null and names.size>0">
+            AND a.name IN
+            <foreach collection="names" item="name" open="(" close=")" separator=",">
+                #{name}
+            </foreach>
+        </if>
+    </select>
 </mapper>
 </mapper>

+ 18 - 0
common/src/main/java/com/diagbot/biz/push/entity/FeatureRateV2.java

@@ -0,0 +1,18 @@
+package com.diagbot.biz.push.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/17 10:19
+ */
+@Getter
+@Setter
+public class FeatureRateV2 extends FeatureRate {
+    /**
+     * 诊断分类
+     */
+    private String bigClass;
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.biz.push.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/17 10:24
+ */
+@Getter
+@Setter
+public class FeatureRateWithExplainV2 extends FeatureRateV2 {
+    private String description;
+    private String explains;
+}

+ 26 - 0
common/src/main/java/com/diagbot/biz/push/entity/ResponseDataV2.java

@@ -0,0 +1,26 @@
+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/4/17 10:13
+ */
+@Getter
+@Setter
+public class ResponseDataV2 {
+    /**
+     * 症状
+     */
+    private List<FeatureRateV2> symptom = new ArrayList<>(10);
+
+    /**
+     * 诊断
+     */
+    private List<FeatureRateV2> dis = new ArrayList<>(10);
+}

+ 25 - 0
common/src/main/java/com/diagbot/biz/push/entity/ResponseDataWithExplainV2.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/4/17 10:25
+ */
+@Getter
+@Setter
+public class ResponseDataWithExplainV2 {
+    /**
+     * 症状
+     */
+    private List<FeatureRateWithExplainV2> symptom = new ArrayList<>(10);
+    /**
+     * 诊断
+     */
+    private List<FeatureRateV2> dis = new ArrayList<>(10);
+}

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

@@ -103,4 +103,8 @@ ai:
 
 
 nlp:
 nlp:
   server:
   server:
-    address: http://192.168.2.234:5002
+    address: http://192.168.2.234:5002
+
+aineo:
+  server:
+    address: http://192.168.2.234:8888

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

@@ -103,4 +103,8 @@ ai:
 
 
 nlp:
 nlp:
   server:
   server:
-    address: http://192.168.2.234:5002
+    address: http://192.168.2.234:5002
+
+aineo:
+  server:
+    address: http://192.168.2.234:8888

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

@@ -103,4 +103,8 @@ ai:
 
 
 nlp:
 nlp:
   server:
   server:
-    address: http://192.168.2.186:5002
+    address: http://192.168.2.186:5002
+
+aineo:
+  server:
+    address: http://192.168.3.150:8888

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

@@ -103,4 +103,8 @@ ai:
 
 
 nlp:
 nlp:
   server:
   server:
-    address: http://192.168.2.123:5002
+    address: http://192.168.2.123:5002
+
+aineo:
+  server:
+    address: http://192.168.2.123:8888

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

@@ -103,4 +103,8 @@ ai:
 
 
 nlp:
 nlp:
   server:
   server:
-    address: http://192.168.2.241:5002
+    address: http://192.168.2.241:5002
+
+aineo:
+  server:
+    address: http://192.168.3.150:8888

+ 24 - 3
config-server/src/main/resources/shared/application-dev.yml

@@ -3,10 +3,20 @@
 #    org.springframework.security: INFO
 #    org.springframework.security: INFO
 
 
 hystrix:
 hystrix:
+  threadpool:
+    default:
+      coreSize: 200 #并发执行的最大线程数,默认10
+      maxQueueSize: 200 #BlockingQueue的最大队列数
+      queueSizeRejectionThreshold: 50 #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
   command:
   command:
     default:
     default:
       execution:
       execution:
+        timeout:
+          enabled: true
         isolation:
         isolation:
+          strategy: SEMAPHORE
+          semaphore:
+            maxConcurrentRequests: 2000
           thread:
           thread:
             timeoutInMilliseconds: 20000
             timeoutInMilliseconds: 20000
 
 
@@ -16,6 +26,20 @@ ribbon:
   MaxAutoRetries: 0
   MaxAutoRetries: 0
   MaxAutoRetriesNextServer: 1
   MaxAutoRetriesNextServer: 1
 
 
+feign:
+  hystrix:
+    enabled: true
+  #开启Feign请求压缩
+  compression:
+    response:
+      enabled: true
+  httpclient:
+    enabled: false
+  okhttp:
+    enabled: true
+    max-connections: 1000 # 默认值
+    max-connections-per-route: 250 # 默认值
+
 eureka:
 eureka:
   instance:
   instance:
     prefer-ip-address: true #使用IP注册
     prefer-ip-address: true #使用IP注册
@@ -50,9 +74,6 @@ management:
   endpoint:
   endpoint:
     health:
     health:
       show-details: always
       show-details: always
-feign:
-  hystrix:
-    enabled: true
 
 
 spring:
 spring:
   #消息总线
   #消息总线

+ 24 - 3
config-server/src/main/resources/shared/application-local.yml

@@ -3,10 +3,20 @@
 #    org.springframework.security: INFO
 #    org.springframework.security: INFO
 
 
 hystrix:
 hystrix:
+  threadpool:
+    default:
+      coreSize: 200 #并发执行的最大线程数,默认10
+      maxQueueSize: 200 #BlockingQueue的最大队列数
+      queueSizeRejectionThreshold: 50 #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
   command:
   command:
     default:
     default:
       execution:
       execution:
+        timeout:
+          enabled: true
         isolation:
         isolation:
+          strategy: SEMAPHORE
+          semaphore:
+            maxConcurrentRequests: 2000
           thread:
           thread:
             timeoutInMilliseconds: 20000
             timeoutInMilliseconds: 20000
 
 
@@ -16,6 +26,20 @@ ribbon:
   MaxAutoRetries: 0
   MaxAutoRetries: 0
   MaxAutoRetriesNextServer: 1
   MaxAutoRetriesNextServer: 1
 
 
+feign:
+  hystrix:
+    enabled: true
+  #开启Feign请求压缩
+  compression:
+    response:
+      enabled: true
+  httpclient:
+    enabled: false
+  okhttp:
+    enabled: true
+    max-connections: 1000 # 默认值
+    max-connections-per-route: 250 # 默认值
+
 eureka:
 eureka:
   instance:
   instance:
     prefer-ip-address: true #使用IP注册
     prefer-ip-address: true #使用IP注册
@@ -50,9 +74,6 @@ management:
   endpoint:
   endpoint:
     health:
     health:
       show-details: always
       show-details: always
-feign:
-  hystrix:
-    enabled: true
 
 
 spring:
 spring:
   #消息总线
   #消息总线

+ 24 - 3
config-server/src/main/resources/shared/application-pre.yml

@@ -3,10 +3,20 @@
 #    org.springframework.security: INFO
 #    org.springframework.security: INFO
 
 
 hystrix:
 hystrix:
+  threadpool:
+    default:
+      coreSize: 200 #并发执行的最大线程数,默认10
+      maxQueueSize: 200 #BlockingQueue的最大队列数
+      queueSizeRejectionThreshold: 50 #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
   command:
   command:
     default:
     default:
       execution:
       execution:
+        timeout:
+          enabled: true
         isolation:
         isolation:
+          strategy: SEMAPHORE
+          semaphore:
+            maxConcurrentRequests: 2000
           thread:
           thread:
             timeoutInMilliseconds: 20000
             timeoutInMilliseconds: 20000
 
 
@@ -16,6 +26,20 @@ ribbon:
   MaxAutoRetries: 0
   MaxAutoRetries: 0
   MaxAutoRetriesNextServer: 1
   MaxAutoRetriesNextServer: 1
 
 
+feign:
+  hystrix:
+    enabled: true
+  #开启Feign请求压缩
+  compression:
+    response:
+      enabled: true
+  httpclient:
+    enabled: false
+  okhttp:
+    enabled: true
+    max-connections: 1000 # 默认值
+    max-connections-per-route: 250 # 默认值
+
 eureka:
 eureka:
   instance:
   instance:
     prefer-ip-address: true #使用IP注册
     prefer-ip-address: true #使用IP注册
@@ -50,9 +74,6 @@ management:
   endpoint:
   endpoint:
     health:
     health:
       show-details: always
       show-details: always
-feign:
-  hystrix:
-    enabled: true
 
 
 spring:
 spring:
   #消息总线
   #消息总线

+ 24 - 3
config-server/src/main/resources/shared/application-pro.yml

@@ -3,10 +3,20 @@
 #    org.springframework.security: INFO
 #    org.springframework.security: INFO
 
 
 hystrix:
 hystrix:
+  threadpool:
+    default:
+      coreSize: 200 #并发执行的最大线程数,默认10
+      maxQueueSize: 200 #BlockingQueue的最大队列数
+      queueSizeRejectionThreshold: 50 #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
   command:
   command:
     default:
     default:
       execution:
       execution:
+        timeout:
+          enabled: true
         isolation:
         isolation:
+          strategy: SEMAPHORE
+          semaphore:
+            maxConcurrentRequests: 2000
           thread:
           thread:
             timeoutInMilliseconds: 20000
             timeoutInMilliseconds: 20000
 
 
@@ -16,6 +26,20 @@ ribbon:
   MaxAutoRetries: 0
   MaxAutoRetries: 0
   MaxAutoRetriesNextServer: 1
   MaxAutoRetriesNextServer: 1
 
 
+feign:
+  hystrix:
+    enabled: true
+  #开启Feign请求压缩
+  compression:
+    response:
+      enabled: true
+  httpclient:
+    enabled: false
+  okhttp:
+    enabled: true
+    max-connections: 1000 # 默认值
+    max-connections-per-route: 250 # 默认值
+
 eureka:
 eureka:
   instance:
   instance:
     prefer-ip-address: true #使用IP注册
     prefer-ip-address: true #使用IP注册
@@ -50,9 +74,6 @@ management:
   endpoint:
   endpoint:
     health:
     health:
       show-details: always
       show-details: always
-feign:
-  hystrix:
-    enabled: true
 
 
 spring:
 spring:
   #消息总线
   #消息总线

+ 24 - 3
config-server/src/main/resources/shared/application-test.yml

@@ -3,10 +3,20 @@
 #    org.springframework.security: INFO
 #    org.springframework.security: INFO
 
 
 hystrix:
 hystrix:
+  threadpool:
+    default:
+      coreSize: 200 #并发执行的最大线程数,默认10
+      maxQueueSize: 200 #BlockingQueue的最大队列数
+      queueSizeRejectionThreshold: 50 #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
   command:
   command:
     default:
     default:
       execution:
       execution:
+        timeout:
+          enabled: true
         isolation:
         isolation:
+          strategy: SEMAPHORE
+          semaphore:
+            maxConcurrentRequests: 2000
           thread:
           thread:
             timeoutInMilliseconds: 20000
             timeoutInMilliseconds: 20000
 
 
@@ -16,6 +26,20 @@ ribbon:
   MaxAutoRetries: 0
   MaxAutoRetries: 0
   MaxAutoRetriesNextServer: 1
   MaxAutoRetriesNextServer: 1
 
 
+feign:
+  hystrix:
+    enabled: true
+  #开启Feign请求压缩
+  compression:
+    response:
+      enabled: true
+  httpclient:
+    enabled: false
+  okhttp:
+    enabled: true
+    max-connections: 1000 # 默认值
+    max-connections-per-route: 250 # 默认值
+
 eureka:
 eureka:
   instance:
   instance:
     prefer-ip-address: true #使用IP注册
     prefer-ip-address: true #使用IP注册
@@ -50,9 +74,6 @@ management:
   endpoint:
   endpoint:
     health:
     health:
       show-details: always
       show-details: always
-feign:
-  hystrix:
-    enabled: true
 
 
 spring:
 spring:
   #消息总线
   #消息总线

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

@@ -52,7 +52,7 @@ spring:
         master:
         master:
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
           platform: mysql
           platform: mysql
-          url: jdbc:mysql://192.168.2.236:3306/sys-qctest?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          url: jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
           username: root
           username: root
           password: lantone
           password: lantone
           druid:
           druid:

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

@@ -52,7 +52,7 @@ spring:
         master:
         master:
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
           platform: mysql
           platform: mysql
-          url: jdbc:mysql://192.168.2.236:3306/sys-mrqc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          url: jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
           username: root
           username: root
           password: lantone
           password: lantone
           druid:
           druid:

+ 3 - 3
config-server/src/main/resources/shared/mrman-service-pre.yml

@@ -52,9 +52,9 @@ spring:
         master:
         master:
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
           platform: mysql
           platform: mysql
-          url: jdbc:mysql://192.168.2.236:3306/sys-mrqc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
-          username: root
-          password: lantone
+          url: jdbc:mysql://192.168.2.121:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: teamback
+          password: goTulmLeon
           druid:
           druid:
             initial-size: 5
             initial-size: 5
         slave:
         slave:

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

@@ -52,7 +52,7 @@ spring:
         master:
         master:
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
           platform: mysql
           platform: mysql
-          url: jdbc:mysql://192.168.2.236:3306/sys-mrqc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          url: jdbc:mysql://192.168.2.122:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
           username: root
           username: root
           password: lantone
           password: lantone
           druid:
           druid:

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

@@ -53,7 +53,7 @@ spring:
         master:
         master:
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
           platform: mysql
           platform: mysql
-          url: jdbc:mysql://192.168.2.236:3306/sys-mrqc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          url: jdbc:mysql://192.168.2.241:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
           username: root
           username: root
           password: lantone
           password: lantone
           druid:
           druid:

File diff suppressed because it is too large
+ 1071 - 0
docs/032.20200429质控标签模板/init_sys-user.sql


+ 3 - 0
docs/035.20190409智能分诊执行脚本/tran_alter.sql

@@ -0,0 +1,3 @@
+use `sys-tran`;
+ALTER TABLE `sys-tran`.`tran_opt_info` ADD COLUMN `way_type` INT(11) NULL COMMENT '1咨询医生2预约挂号3去挂号' AFTER `opt_type`;
+ALTER TABLE `sys-tran`.`tran_inquiry_triage` CHANGE `id_type` `id_type` TINYINT(4) DEFAULT 0 NOT NULL COMMENT '1咨询医生2预约挂号3结果页去挂号4非结果去挂号', ADD COLUMN `correlation` VARCHAR(255) NOT NULL COMMENT '相关情况' AFTER `symptom`;

File diff suppressed because it is too large
+ 8132 - 0
docs/035.20200420邵逸夫智能分诊数据追加脚本/init_tran.sql


+ 2 - 0
icss-service/src/main/java/com/diagbot/config/MultipartConfigurer.java

@@ -22,6 +22,8 @@ public class MultipartConfigurer {
     @Bean
     @Bean
     public MultipartConfigElement multipartConfigElement() {
     public MultipartConfigElement multipartConfigElement() {
         MultipartConfigFactory factory = new MultipartConfigFactory();
         MultipartConfigFactory factory = new MultipartConfigFactory();
+        //  上传文件临时文件夹
+        factory.setLocation(System.getProperty("/data/tmp"));
         //  单个数据大小
         //  单个数据大小
         factory.setMaxFileSize(DataSize.ofMegabytes(500));
         factory.setMaxFileSize(DataSize.ofMegabytes(500));
         /// 总上传数据大小
         /// 总上传数据大小

+ 2 - 0
knowledgeman-service/src/main/java/com/diagbot/config/MultipartConfigurer.java

@@ -22,6 +22,8 @@ public class MultipartConfigurer {
     @Bean
     @Bean
     public MultipartConfigElement multipartConfigElement() {
     public MultipartConfigElement multipartConfigElement() {
         MultipartConfigFactory factory = new MultipartConfigFactory();
         MultipartConfigFactory factory = new MultipartConfigFactory();
+        //  上传文件临时文件夹
+        factory.setLocation(System.getProperty("/data/tmp"));
         //  单个数据大小
         //  单个数据大小
         factory.setMaxFileSize(DataSize.ofMegabytes(500));
         factory.setMaxFileSize(DataSize.ofMegabytes(500));
         /// 总上传数据大小
         /// 总上传数据大小

+ 1 - 1
ltkg-service/src/main/resources/mapper/KgMapper.xml

@@ -38,7 +38,7 @@
     <select id="getGraph" parameterType='com.diagbot.vo.KgQueryVO' resultMap="GraphResultMap">
     <select id="getGraph" parameterType='com.diagbot.vo.KgQueryVO' resultMap="GraphResultMap">
         MATCH (n:${labelName})-[r]->(m)
         MATCH (n:${labelName})-[r]->(m)
         where n.name = #{inputStr}
         where n.name = #{inputStr}
-        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["diagnose","symptom"]
+        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["疾病","症状","药品通用名"]
         RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName, count(p) as pCount
         RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName, count(p) as pCount
         ORDER BY rType
         ORDER BY rType
         LIMIT 100
         LIMIT 100

+ 20 - 0
mrman-service/src/main/java/com/diagbot/dto/GetAllByHospitalDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2020/3/31 11:21
+ */
+@Getter
+@Setter
+public class GetAllByHospitalDTO {
+    private Long casesId;
+    private String casesName;
+    private String remark;
+    private List<GetAllByHospitalDetialDTO> getAllByHospitalDetialDTOS;
+}

+ 27 - 0
mrman-service/src/main/java/com/diagbot/dto/GetAllByHospitalDetialDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2020/4/1 16:10
+ */
+@Getter
+@Setter
+public class GetAllByHospitalDetialDTO {
+    private Long casesEntryId;
+    private String casesName;
+    private String code;
+    private String name;
+    private String modeName;
+    private String precond;
+    private Long modeId;
+    private BigDecimal score;
+    private Integer isUsed;
+    private Integer isReject;
+    private String msg;
+}

+ 69 - 0
mrman-service/src/main/java/com/diagbot/dto/GetModuleDetailInfoDTO.java

@@ -0,0 +1,69 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2018/12/28 13:35
+ */
+@Setter
+@Getter
+public class GetModuleDetailInfoDTO {
+
+    /**
+     * 前置内容
+     */
+    private String prefix;
+
+    /**
+     * 后置内容
+     */
+    private String suffix;
+
+    /**
+     * questionId
+     */
+    private Long questionId;
+
+    /**
+     * 标签名
+     */
+    private String tagName;
+
+    /**
+     * 标签类型
+     */
+    private Integer tagType;
+
+    /**
+     * 关联模板
+     */
+    private Long relationModule;
+
+    /**
+     * 子模板名称
+     */
+    private String relationModuleName;
+
+    /**
+     * 特殊标识
+     */
+    private String flag;
+
+    /**
+     * 必填(0:不必填,1:必填)
+     */
+    private Integer required;
+
+    /**
+     * 特殊标记(0:没有标记,1:拼接到主诉)
+     */
+    private Integer specFlag;
+
+    /**
+     * 性别(1:男 2:女 3:通用)
+     */
+    private Integer sexType;
+}

+ 29 - 0
mrman-service/src/main/java/com/diagbot/dto/GetModuleInfoOneDTO.java

@@ -0,0 +1,29 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2018/12/28 17:11
+ */
+@Setter
+@Getter
+public class GetModuleInfoOneDTO {
+    //模板id
+    private Long id;
+    //模板名称
+    private String name;
+    //医院ID
+    private Long hospitalId;
+    //数据模块ID
+    private Long modeId;
+    //模板明细
+    private Map<Integer, List<QcModuleDetailDTO>> moduleDetail;
+    //备注
+    private String remark;
+}

+ 19 - 0
mrman-service/src/main/java/com/diagbot/dto/GetModuleTypeDTO.java

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2019/3/28 14:44
+ */
+@Getter
+@Setter
+public class GetModuleTypeDTO {
+    //类型
+    private String val;
+    //类型名称
+    private String name;
+
+}

+ 18 - 0
mrman-service/src/main/java/com/diagbot/dto/GetUpdateInfoDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.QcCasesEntry;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2020/4/1 17:10
+ */
+@Getter
+@Setter
+public class GetUpdateInfoDTO extends QcCasesEntry {
+    List<GetUpdateInfoDetialDTO> getUpdateInfoDetialDTOS;
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/dto/GetUpdateInfoDetialDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2020/4/1 17:18
+ */
+@Getter
+@Setter
+public class GetUpdateInfoDetialDTO {
+    private String hospitalName;
+    private BigDecimal score;
+    private Integer isUsed;
+    private String msg;
+}

+ 23 - 0
mrman-service/src/main/java/com/diagbot/dto/ModuleInfoDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.QcModuleDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2018/12/26 15:44
+ */
+@Getter
+@Setter
+public class ModuleInfoDTO {
+    //模板id
+    private Long id;
+    //模板名称
+    private String name;
+    //模板明细
+    private List<QcModuleDetail> moduleDetail;
+}

+ 17 - 0
mrman-service/src/main/java/com/diagbot/dto/ModuleInfoListDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.QcModuleInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2018/12/27 11:46
+ */
+@Getter
+@Setter
+public class ModuleInfoListDTO extends QcModuleInfo {
+    //操作人名称
+    private String userName;
+}

+ 30 - 0
mrman-service/src/main/java/com/diagbot/dto/ModuleQuestionDTO.java

@@ -0,0 +1,30 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 返回标签内容
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Getter
+@Setter
+public class ModuleQuestionDTO {
+
+    private Long id;// id
+    private String name;//key
+    private String val;//value
+    private String tagName;//标签名称
+    private Integer controlType; //控件类型
+    private Integer tagType; //标签标识
+    private Integer groupId; //分组id
+    private Integer retract; //缩进(0:不缩进 1:缩进)
+    private Integer addLine; //换行(0:不换行,1:换行)
+    private Integer bold;//换行(0:不换行,1:加粗)
+    private String casesEntryIds;//质控条目id列表
+    private List<ModuleQuestionDTO> questionMapping = new ArrayList<>();     //下级标签
+}

+ 3 - 1
mrman-service/src/main/java/com/diagbot/dto/QcCasesAllDTO.java

@@ -44,10 +44,12 @@ public class QcCasesAllDTO {
      */
      */
     private String name;
     private String name;
 
 
+    private String prefix;
+
     /**
     /**
      * 备注
      * 备注
      */
      */
     private String remark;
     private String remark;
 
 
-    private List<QcCasesEntry> qcCasesEntry;
+    private List<QcCasesEntryDTO> qcCasesEntry;
 }
 }

+ 1 - 0
mrman-service/src/main/java/com/diagbot/dto/QcCasesDTO.java

@@ -13,5 +13,6 @@ import lombok.Setter;
 public class QcCasesDTO  {
 public class QcCasesDTO  {
     private Long Id ;
     private Long Id ;
     private String name;
     private String name;
+    private String prefix;
     private String remark;
     private String remark;
 }
 }

+ 57 - 0
mrman-service/src/main/java/com/diagbot/dto/QcCasesEntryAllDTO.java

@@ -0,0 +1,57 @@
+package com.diagbot.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.diagbot.entity.QcCasesEntry;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2020/3/30 16:54
+ */
+@Getter
+@Setter
+public class QcCasesEntryAllDTO {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 病历id
+     */
+    private Long casesId;
+
+    private String casesName;
+
+    /**
+     * 数据模块ID-对应qc_mode.id
+     */
+    private Long modeId;
+
+    private String modeName;
+    private String code;
+
+    /**
+     * 条目
+     */
+    private String name;
+
+    private String precond;
+
+    /**
+     * 顺序号
+     */
+    private Integer orderNo;
+
+
+    /**
+     * 备注
+     */
+
+    private String remark;
+}

+ 56 - 0
mrman-service/src/main/java/com/diagbot/dto/QcCasesEntryDTO.java

@@ -0,0 +1,56 @@
+package com.diagbot.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-04-27 10:09
+ */
+@Setter
+@Getter
+public class QcCasesEntryDTO {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 病历id
+     */
+    private Long casesId;
+
+    private String casesName;
+
+    /**
+     * 数据模块ID-对应qc_mode.id
+     */
+    private Long modeId;
+
+    private String modeName;
+
+    private String code;
+
+    /**
+     * 条目
+     */
+    private String name;
+
+    private String precond;
+
+    /**
+     * 顺序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 0 - 5
mrman-service/src/main/java/com/diagbot/dto/QcHospitalInfoAllDTO.java

@@ -1,13 +1,8 @@
 package com.diagbot.dto;
 package com.diagbot.dto;
 
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.diagbot.entity.QcHospitalInfo;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
-import java.time.LocalDateTime;
-
 /**
 /**
  * @author wangfeng
  * @author wangfeng
  * @Description:
  * @Description:

+ 27 - 0
mrman-service/src/main/java/com/diagbot/dto/QcModeDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-04-26 17:25
+ */
+@Setter
+@Getter
+public class QcModeDTO {
+    private Long id;
+
+    /**
+     * 模块名称
+     */
+    private String name;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+}

+ 32 - 0
mrman-service/src/main/java/com/diagbot/dto/QcModuleDetailDTO.java

@@ -0,0 +1,32 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 模型明细表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-27
+ */
+@Data
+public class QcModuleDetailDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 分组Id
+     */
+    private Integer groupId;
+
+    /**
+     * questionId
+     */
+    private Long questionId;
+
+    private QuestionDTO questionDTO;
+
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/dto/QuesCasesEntryDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-04-27 10:09
+ */
+@Data
+public class QuesCasesEntryDTO {
+    private static final long serialVersionUID = 1L;
+
+    private Long casesEntryId; // 条目id
+    private String casesEntryName; // 条目名称
+}

+ 34 - 0
mrman-service/src/main/java/com/diagbot/dto/QuestionDTO.java

@@ -0,0 +1,34 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 返回标签内容
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Getter
+@Setter
+public class QuestionDTO {
+
+    private Long id;// id
+    private String name;//key
+    private String val;//value
+    private String tagName;//标签名称
+    private Integer controlType; //控件类型
+    private Integer tagType; //标签标识
+    private Long hospitalId; //医院ID
+    private Long modeId; //数据模块ID
+    private Integer retract; //缩进(0:不缩进 1:缩进)
+    private Integer addLine; //换行(0:不换行,1:换行)
+    private Integer monoLine; //独占一行(0:不换行,1:换行)
+    private Integer bold;//换行(0:不换行,1:加粗)
+    private Integer position; //显示位置(1:靠右显示)
+    private List<QuesCasesEntryDTO> quesCasesEntryDTOList = new ArrayList<>(); //质控条目明细
+    private List<QuestionDTO> questionMapping = new ArrayList<>();     //下级标签
+    private String remark;//备注
+}

+ 123 - 0
mrman-service/src/main/java/com/diagbot/dto/QuestionPageDTO.java

@@ -0,0 +1,123 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 标签基础表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-03
+ */
+
+@Getter
+@Setter
+public class QuestionPageDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    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 hospitalId;
+
+    /**
+     * 数据模块ID
+     */
+    private Long modeId;
+
+    /**
+     * 标签名
+     */
+    private String tagName;
+
+    /**
+     * 内容
+     */
+    private String name;
+
+    /**
+     * value
+     */
+    private String val;
+
+    /**
+     * 标签标识(1:单标签 4:组合标签)
+     */
+    private Integer tagType;
+
+    /**
+     * 控件类型(0:无类型)
+     */
+    private Integer controlType;
+
+    /**
+     * 缩进(0:不缩进 1:缩进)
+     */
+    private Integer retract;
+
+    /**
+     * 内容换行(0:不换行,1:换行)
+     */
+    private Integer addLine;
+
+    /**
+     * 独占一行(0:不换行,1:换行)
+     */
+    private Integer monoLine;
+
+    /**
+     * 换行(0:不换行,1:加粗)
+     */
+    private Integer bold;
+
+    /**
+     * 显示位置(1:靠右显示)
+     */
+    private Integer position;
+
+    /**
+     * 质控条目id列表
+     */
+    private String casesEntryIds;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 2 - 2
mrman-service/src/main/java/com/diagbot/entity/QcHospitalInfo.java

@@ -15,8 +15,8 @@ import java.util.Date;
  * @author wangfeng
  * @author wangfeng
  * @since 2020-03-17
  * @since 2020-03-17
  */
  */
-@TableName("qc_hospital_info")
-public class QcHospitalInfo implements Serializable {
+@TableName("bas_hospital_info")
+public class BasHospitalInfo implements Serializable {
 
 
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 

+ 200 - 0
mrman-service/src/main/java/com/diagbot/entity/CasesEntryHospital.java

@@ -0,0 +1,200 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 病历条目
+ * </p>
+ *
+ * @author wangyu
+ * @since 2020-03-31
+ */
+@TableName("qc_cases_entry_hospital")
+public class CasesEntryHospital 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 casesEntryId;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 扣分值
+     */
+    private BigDecimal score;
+
+    /**
+     * 条目提示信息
+     */
+    private String msg;
+
+    /**
+     * 0-未启用 1-启用
+     */
+    private Integer isUsed;
+
+    /**
+     * 单项否决(1-单项否决 0-非)
+     */
+    private Integer isReject;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getCasesEntryId() {
+        return casesEntryId;
+    }
+
+    public void setCasesEntryId(Long casesEntryId) {
+        this.casesEntryId = casesEntryId;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public BigDecimal getScore() {
+        return score;
+    }
+
+    public void setScore(BigDecimal score) {
+        this.score = score;
+    }
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+    public Integer getIsUsed() {
+        return isUsed;
+    }
+
+    public void setIsUsed(Integer isUsed) {
+        this.isUsed = isUsed;
+    }
+    public Integer getIsReject() {
+        return isReject;
+    }
+
+    public void setIsReject(Integer isReject) {
+        this.isReject = isReject;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "QcCasesEntryHospital{" +
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", casesEntryId=" + casesEntryId +
+                ", hospitalId=" + hospitalId +
+                ", score=" + score +
+                ", msg=" + msg +
+                ", isUsed=" + isUsed +
+                ", isReject=" + isReject +
+                ", remark=" + remark +
+                "}";
+    }
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/entity/CommonParam.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/12/14 14:15
+ */
+@Getter
+@Setter
+public class CommonParam {
+    private String person;     //操作人
+    private Date now;          //当前时间
+    private int insertOrUpdate;//更新或新增标识
+    private QcQuestionInfo qcQuestionInfo; //主表信息
+}

+ 88 - 0
mrman-service/src/main/java/com/diagbot/entity/DictionaryInfo.java

@@ -0,0 +1,88 @@
+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>
+ * icss字典表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+@TableName("sys_dictionary_info")
+@Getter
+@Setter
+public class DictionaryInfo 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;
+
+    /**
+     * 分组(值自定义)
+     */
+    private Long groupType;
+
+    /**
+     * 内容
+     */
+    private String name;
+
+    /**
+     * 值
+     */
+    private String val;
+
+    /**
+     * 返回类型(0: 都返回,1:后台维护返回 2:icss界面返回)
+     */
+    private Integer returnType;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 180 - 0
mrman-service/src/main/java/com/diagbot/entity/MedRecordModule.java

@@ -0,0 +1,180 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-29
+ */
+public class MedRecordModule implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 数据模块ID
+     */
+    private Long modeId;
+
+    /**
+     * 数据模块名称
+     */
+    private String modeName;
+
+    /**
+     * 模板类型
+     */
+    private String recTypeDetail;
+
+    /**
+     * 住院号示例
+     */
+    private String behospitalCodes;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public Long getModeId() {
+        return modeId;
+    }
+
+    public void setModeId(Long modeId) {
+        this.modeId = modeId;
+    }
+    public String getModeName() {
+        return modeName;
+    }
+
+    public void setModeName(String modeName) {
+        this.modeName = modeName;
+    }
+    public String getRecTypeDetail() {
+        return recTypeDetail;
+    }
+
+    public void setRecTypeDetail(String recTypeDetail) {
+        this.recTypeDetail = recTypeDetail;
+    }
+    public String getBehospitalCodes() {
+        return behospitalCodes;
+    }
+
+    public void setBehospitalCodes(String behospitalCodes) {
+        this.behospitalCodes = behospitalCodes;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "MedRecordModule{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", modeId=" + modeId +
+            ", modeName=" + modeName +
+            ", recTypeDetail=" + recTypeDetail +
+            ", behospitalCodes=" + behospitalCodes +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 68 - 41
mrman-service/src/main/java/com/diagbot/entity/QcCases.java

@@ -5,14 +5,15 @@ import com.baomidou.mybatisplus.annotation.TableId;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 
 /**
 /**
  * <p>
  * <p>
- * 病历
+ * 模块数据标准
  * </p>
  * </p>
  *
  *
  * @author wangfeng
  * @author wangfeng
- * @since 2020-03-10
+ * @since 2020-04-27
  */
  */
 public class QcCases implements Serializable {
 public class QcCases implements Serializable {
 
 
@@ -24,6 +25,26 @@ public class QcCases implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
     private Long id;
 
 
+    /**
+     * 模块名称
+     */
+    private String name;
+
+    /**
+     * 模块编码前缀
+     */
+    private String prefix;
+
+    /**
+     * 顺序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
     /**
     /**
      * 是否删除,N:未删除,Y:删除
      * 是否删除,N:未删除,Y:删除
      */
      */
@@ -32,12 +53,12 @@ public class QcCases implements Serializable {
     /**
     /**
      * 记录创建时间
      * 记录创建时间
      */
      */
-    private LocalDateTime gmtCreate;
+    private Date gmtCreate;
 
 
     /**
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
      */
-    private LocalDateTime gmtModified;
+    private Date gmtModified;
 
 
     /**
     /**
      * 创建人,0表示无创建人值
      * 创建人,0表示无创建人值
@@ -49,16 +70,6 @@ public class QcCases implements Serializable {
      */
      */
     private String modifier;
     private String modifier;
 
 
-    /**
-     * 病历
-     */
-    private String name;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
     public Long getId() {
     public Long getId() {
         return id;
         return id;
     }
     }
@@ -66,6 +77,34 @@ public class QcCases implements Serializable {
     public void setId(Long id) {
     public void setId(Long id) {
         this.id = id;
         this.id = id;
     }
     }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getPrefix() {
+        return prefix;
+    }
+
+    public void setPrefix(String prefix) {
+        this.prefix = prefix;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
     public String getIsDeleted() {
     public String getIsDeleted() {
         return isDeleted;
         return isDeleted;
     }
     }
@@ -73,18 +112,18 @@ public class QcCases implements Serializable {
     public void setIsDeleted(String isDeleted) {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
         this.isDeleted = isDeleted;
     }
     }
-    public LocalDateTime getGmtCreate() {
+    public Date getGmtCreate() {
         return gmtCreate;
         return gmtCreate;
     }
     }
 
 
-    public void setGmtCreate(LocalDateTime gmtCreate) {
+    public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
         this.gmtCreate = gmtCreate;
     }
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
         return gmtModified;
     }
     }
 
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
         this.gmtModified = gmtModified;
     }
     }
     public String getCreator() {
     public String getCreator() {
@@ -101,32 +140,20 @@ public class QcCases implements Serializable {
     public void setModifier(String modifier) {
     public void setModifier(String modifier) {
         this.modifier = modifier;
         this.modifier = modifier;
     }
     }
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-    public String getRemark() {
-        return remark;
-    }
-
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
 
 
     @Override
     @Override
     public String toString() {
     public String toString() {
         return "QcCases{" +
         return "QcCases{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", name=" + name +
-            ", remark=" + remark +
-        "}";
+                "id=" + id +
+                ", name=" + name +
+                ", prefix=" + prefix +
+                ", orderNo=" + orderNo +
+                ", remark=" + remark +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                "}";
     }
     }
 }
 }

+ 110 - 54
mrman-service/src/main/java/com/diagbot/entity/QcCasesEntry.java

@@ -2,9 +2,9 @@ package com.diagbot.entity;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
-
-import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
  * </p>
  * </p>
  *
  *
  * @author wangfeng
  * @author wangfeng
- * @since 2020-03-10
+ * @since 2020-04-27
  */
  */
 public class QcCasesEntry implements Serializable {
 public class QcCasesEntry implements Serializable {
 
 
@@ -25,44 +25,60 @@ public class QcCasesEntry implements Serializable {
     private Long id;
     private Long id;
 
 
     /**
     /**
-     * 是否删除,N:未删除,Y:删除
+     * 病历id
      */
      */
-    private String isDeleted;
+    private Long casesId;
+
+    private String casesName;
 
 
     /**
     /**
-     * 记录创建时间
+     * 数据模块ID-对应qc_mode.id
      */
      */
-    private LocalDateTime gmtCreate;
+    private Long modeId;
+
+    private String code;
 
 
     /**
     /**
-     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     * 条目
      */
      */
-    private LocalDateTime gmtModified;
+    private String name;
+
+    private String precond;
 
 
     /**
     /**
-     * 创建人,0表示无创建人值
+     * 顺序号
      */
      */
-    private String creator;
+    private Integer orderNo;
 
 
     /**
     /**
-     * 修改人,如果为0则表示纪录未修改
+     * 备注
      */
      */
-    private String modifier;
+    private String remark;
 
 
     /**
     /**
-     * 病历id
+     * 是否删除,N:未删除,Y:删除
      */
      */
-    private Long casesId;
+    private String isDeleted;
 
 
     /**
     /**
-     * 条目
+     * 记录创建时间
      */
      */
-    private String name;
+    private Date gmtCreate;
 
 
     /**
     /**
-     * 备注
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
      */
-    private String remark;
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
 
 
     public Long getId() {
     public Long getId() {
         return id;
         return id;
@@ -71,6 +87,62 @@ public class QcCasesEntry implements Serializable {
     public void setId(Long id) {
     public void setId(Long id) {
         this.id = id;
         this.id = id;
     }
     }
+    public Long getCasesId() {
+        return casesId;
+    }
+
+    public void setCasesId(Long casesId) {
+        this.casesId = casesId;
+    }
+    public String getCasesName() {
+        return casesName;
+    }
+
+    public void setCasesName(String casesName) {
+        this.casesName = casesName;
+    }
+    public Long getModeId() {
+        return modeId;
+    }
+
+    public void setModeId(Long modeId) {
+        this.modeId = modeId;
+    }
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getPrecond() {
+        return precond;
+    }
+
+    public void setPrecond(String precond) {
+        this.precond = precond;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
     public String getIsDeleted() {
     public String getIsDeleted() {
         return isDeleted;
         return isDeleted;
     }
     }
@@ -78,18 +150,18 @@ public class QcCasesEntry implements Serializable {
     public void setIsDeleted(String isDeleted) {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
         this.isDeleted = isDeleted;
     }
     }
-    public LocalDateTime getGmtCreate() {
+    public Date getGmtCreate() {
         return gmtCreate;
         return gmtCreate;
     }
     }
 
 
-    public void setGmtCreate(LocalDateTime gmtCreate) {
+    public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
         this.gmtCreate = gmtCreate;
     }
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
         return gmtModified;
     }
     }
 
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
         this.gmtModified = gmtModified;
     }
     }
     public String getCreator() {
     public String getCreator() {
@@ -106,40 +178,24 @@ public class QcCasesEntry implements Serializable {
     public void setModifier(String modifier) {
     public void setModifier(String modifier) {
         this.modifier = modifier;
         this.modifier = modifier;
     }
     }
-    public Long getCasesId() {
-        return casesId;
-    }
-
-    public void setCasesId(Long casesId) {
-        this.casesId = casesId;
-    }
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-    public String getRemark() {
-        return remark;
-    }
-
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
 
 
     @Override
     @Override
     public String toString() {
     public String toString() {
         return "QcCasesEntry{" +
         return "QcCasesEntry{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", casesId=" + casesId +
-            ", name=" + name +
-            ", remark=" + remark +
-        "}";
+                "id=" + id +
+                ", casesId=" + casesId +
+                ", casesName=" + casesName +
+                ", modeId=" + modeId +
+                ", code=" + code +
+                ", name=" + name +
+                ", precond=" + precond +
+                ", orderNo=" + orderNo +
+                ", remark=" + remark +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                "}";
     }
     }
 }
 }

+ 157 - 0
mrman-service/src/main/java/com/diagbot/entity/QcMode.java

@@ -0,0 +1,157 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 病历
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-04-26
+ */
+public class QcMode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 模块名称
+     */
+    private String name;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 上级模块
+     */
+    private Long parentId;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "QcMode{" +
+            "id=" + id +
+            ", name=" + name +
+            ", orderNo=" + orderNo +
+            ", parentId=" + parentId +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 78 - 0
mrman-service/src/main/java/com/diagbot/entity/QcModuleDetail.java

@@ -0,0 +1,78 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 模型明细表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-27
+ */
+@Data
+public class QcModuleDetail 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;
+
+    /**
+     * module_id
+     */
+    private Long moduleId;
+
+    /**
+     * 分组Id
+     */
+    private Integer groupId;
+
+    /**
+     * questionId
+     */
+    private Long questionId;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 78 - 0
mrman-service/src/main/java/com/diagbot/entity/QcModuleInfo.java

@@ -0,0 +1,78 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 模型表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-27
+ */
+@Data
+public class QcModuleInfo 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;
+
+    /**
+     * 模板名称
+     */
+    private String name;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 数据模块ID
+     */
+    private Long modeId;
+
+    /**
+     * med_record_module的id
+     */
+    private Long recordModuleId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 73 - 0
mrman-service/src/main/java/com/diagbot/entity/QcQuestionEntry.java

@@ -0,0 +1,73 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 标签条目映射表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-07
+ */
+@Data
+public class QcQuestionEntry 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;
+
+    /**
+     * question_id
+     */
+    private Long questionId;
+
+    /**
+     * cases_entry_id
+     */
+    private Long casesEntryId;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 123 - 0
mrman-service/src/main/java/com/diagbot/entity/QcQuestionInfo.java

@@ -0,0 +1,123 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 标签基础表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-27
+ */
+@Data
+public class QcQuestionInfo 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 hospitalId;
+
+    /**
+     * 数据模块ID
+     */
+    private Long modeId;
+
+    /**
+     * 标签名
+     */
+    private String tagName;
+
+    /**
+     * key
+     */
+    private String name;
+
+    /**
+     * value
+     */
+    private String val;
+
+    /**
+     * 标签标识(1:单标签 4:组合标签)
+     */
+    private Integer tagType;
+
+    /**
+     * 控件类型(0:无类型)
+     */
+    private Integer controlType;
+
+    /**
+     * 缩进(0:不缩进 1:缩进)
+     */
+    private Integer retract;
+
+    /**
+     * 内容换行(0:不换行,1:换行)
+     */
+    private Integer addLine;
+
+    /**
+     * 独占一行(0:不换行,1:换行)
+     */
+    private Integer monoLine;
+
+    /**
+     * 换行(0:不换行,1:加粗)
+     */
+    private Integer bold;
+
+    /**
+     * 显示位置(1:靠右显示)
+     */
+    private Integer position;
+
+    /**
+     * 质控条目id列表
+     */
+    private String casesEntryIds;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 73 - 0
mrman-service/src/main/java/com/diagbot/entity/QcQuestionMapping.java

@@ -0,0 +1,73 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 标签映射表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-27
+ */
+@Data
+public class QcQuestionMapping 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;
+
+    /**
+     * 上级question
+     */
+    private Long parentQuestion;
+
+    /**
+     * 下级question
+     */
+    private Long sonQuestion;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 21 - 0
mrman-service/src/main/java/com/diagbot/entity/wrapper/QuestionInfoWrapper.java

@@ -0,0 +1,21 @@
+package com.diagbot.entity.wrapper;
+
+import com.diagbot.entity.QcQuestionInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 标签扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+@Getter
+@Setter
+public class QuestionInfoWrapper extends QcQuestionInfo {
+
+    private Long parentQuestion; //父级问题ID
+
+}

+ 27 - 0
mrman-service/src/main/java/com/diagbot/entity/wrapper/QuestionMappingWrapper.java

@@ -0,0 +1,27 @@
+package com.diagbot.entity.wrapper;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 标签映射表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-03
+ */
+@Getter
+@Setter
+public class QuestionMappingWrapper implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 下级question
+     */
+    private Long sonQuestion;
+
+}

+ 36 - 0
mrman-service/src/main/java/com/diagbot/entity/wrapper/QuestionWrapper.java

@@ -0,0 +1,36 @@
+package com.diagbot.entity.wrapper;
+
+import com.diagbot.vo.QuesCasesEntryVO;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 标签保存参数
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-03
+ */
+
+@Data
+public class QuestionWrapper implements Serializable {
+    private Long id; //主键
+    private Long hospitalId; //医院ID
+    private Long modeId; //数据模块ID
+    private String tagName; //标签名
+    private String name; //界面名称
+    private String val; // value
+    private Integer tagType; //标签显示类型
+    private Integer controlType; //控件类型
+    private Integer retract; // 缩进(0:不缩进 1:缩进)
+    private Integer addLine; // 内容换行(0:不换行,1:换行)
+    private Integer monoLine; // 独占一行(0:不换行,1:换行)
+    private Integer bold; //换行(0:不换行,1:加粗)
+    private Integer position; //显示位置(1:靠右显示)
+    private List<QuestionMappingWrapper> questionMappings = new ArrayList<>(); //映射关系
+    private List<QuesCasesEntryVO> quesCasesEntryVOList; // 质控条目明细
+}

+ 50 - 0
mrman-service/src/main/java/com/diagbot/enums/InsertOrUpdateEnum.java

@@ -0,0 +1,50 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum InsertOrUpdateEnum implements KeyedNamed {
+    Insert(1, "新增"),
+    Update(2, "修改");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    InsertOrUpdateEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static InsertOrUpdateEnum getEnum(int key) {
+        for (InsertOrUpdateEnum item : InsertOrUpdateEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        InsertOrUpdateEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 49 - 0
mrman-service/src/main/java/com/diagbot/enums/TagTypeEnum.java

@@ -0,0 +1,49 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:标签显示类型
+ * @Author:zhoutg
+ * @time: 2018/11/21 11:39
+ */
+public enum TagTypeEnum implements KeyedNamed {
+    T1(1, "单标签"),
+    T4(4, "组合标签");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    TagTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static TagTypeEnum getEnum(int key) {
+        for (TagTypeEnum item : TagTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        TagTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 6 - 6
mrman-service/src/main/java/com/diagbot/facade/QcHospitalInfoFacade.java

@@ -1,9 +1,9 @@
 package com.diagbot.facade;
 package com.diagbot.facade;
 
 
 import com.diagbot.dto.QcHospitalInfoAllDTO;
 import com.diagbot.dto.QcHospitalInfoAllDTO;
-import com.diagbot.entity.QcHospitalInfo;
-import com.diagbot.service.QcHospitalInfoService;
-import com.diagbot.service.impl.QcHospitalInfoServiceImpl;
+import com.diagbot.entity.BasHospitalInfo;
+import com.diagbot.service.BasHospitalInfoService;
+import com.diagbot.service.impl.BasHospitalInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.BeanUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
@@ -17,17 +17,17 @@ import java.util.List;
  * @date 2020-03-17 13:47
  * @date 2020-03-17 13:47
  */
  */
 @Component
 @Component
-public class QcHospitalInfoFacade extends QcHospitalInfoServiceImpl {
+public class BasHospitalInfoFacade extends BasHospitalInfoServiceImpl {
 
 
     @Autowired
     @Autowired
-    QcHospitalInfoService qcHospitalInfoService;
+    BasHospitalInfoService qcHospitalInfoService;
 
 
     /**
     /**
      *
      *
      * @return
      * @return
      */
      */
     public List<QcHospitalInfoAllDTO> getHospitalInfoAll() {
     public List<QcHospitalInfoAllDTO> getHospitalInfoAll() {
-        List<QcHospitalInfo> data = qcHospitalInfoService.list();
+        List<BasHospitalInfo> data = qcHospitalInfoService.list();
         List<QcHospitalInfoAllDTO> dataNew = new ArrayList<QcHospitalInfoAllDTO>();
         List<QcHospitalInfoAllDTO> dataNew = new ArrayList<QcHospitalInfoAllDTO>();
         dataNew = BeanUtil.listCopyTo(data, QcHospitalInfoAllDTO.class);
         dataNew = BeanUtil.listCopyTo(data, QcHospitalInfoAllDTO.class);
         return dataNew;
         return dataNew;

+ 196 - 0
mrman-service/src/main/java/com/diagbot/facade/CasesEntryHospitalFacade.java

@@ -0,0 +1,196 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.dto.GetAllByHospitalDTO;
+import com.diagbot.dto.GetAllByHospitalDetialDTO;
+import com.diagbot.dto.QcCasesEntryDTO;
+import com.diagbot.entity.CasesEntryHospital;
+import com.diagbot.entity.QcCases;
+import com.diagbot.entity.QcCasesEntry;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.CasesEntryHospitalService;
+import com.diagbot.service.impl.CasesEntryHospitalServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.SqlExecuteUtil;
+import com.diagbot.vo.GetAllByHospitalVO;
+import com.diagbot.vo.InsertByHospitalVO;
+import com.diagbot.vo.UpdateByHospitalVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2020/3/31 11:13
+ */
+@Component
+public class CasesEntryHospitalFacade extends CasesEntryHospitalServiceImpl {
+    @Autowired
+    @Qualifier("casesEntryHospitalServiceImpl")
+    private CasesEntryHospitalServiceImpl casesEntryHospitalService;
+    @Autowired
+    private QcCacesEntryFacade qcCacesEntryFacade;
+    @Autowired
+    private QcCasesFacade qcCasesFacade;
+
+    /**
+     * 获取指定医院病例条目
+     *
+     * @param getAllByHospitalVO
+     * @return
+     */
+    public List<GetAllByHospitalDTO> getAllByHospital(GetAllByHospitalVO getAllByHospitalVO){
+        //获取病例条目关系
+        QueryWrapper<CasesEntryHospital> casesEntryHospitalQueryWrapper = new QueryWrapper<>();
+        casesEntryHospitalQueryWrapper
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id",getAllByHospitalVO.getHospitalId());
+        List<CasesEntryHospital> casesEntryHospitals = this.list(casesEntryHospitalQueryWrapper);
+        Map<Long,CasesEntryHospital> casesEntryHospitalMap = casesEntryHospitals.stream().collect(Collectors.toMap(CasesEntryHospital::getCasesEntryId,casesEntryHospital -> casesEntryHospital));
+        List<Long> casesEntryIds = new ArrayList<>();
+        casesEntryIds = casesEntryHospitals.stream().map(CasesEntryHospital::getCasesEntryId).collect(Collectors.toList());
+        //获取病例条目
+        List<QcCasesEntryDTO> qcCasesEntries = new ArrayList<>();
+        if(ListUtil.isNotEmpty(casesEntryIds)){
+            qcCasesEntries = new ArrayList<QcCasesEntryDTO>(qcCacesEntryFacade.getByCasesEntryId(casesEntryIds));
+        }
+        //获取病例
+        QueryWrapper<QcCases> qcCasesQueryWrapper = new QueryWrapper<>();
+        qcCasesQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
+        List<QcCases> qcCases = qcCasesFacade.list(qcCasesQueryWrapper);
+        List<GetAllByHospitalDTO> getAllByHospitalDTOS = new ArrayList<>();
+        GetAllByHospitalDTO getAllByHospitalDTO = new GetAllByHospitalDTO();
+        GetAllByHospitalDetialDTO getAllByHospitalDetialDTO = new GetAllByHospitalDetialDTO();
+        List<GetAllByHospitalDetialDTO> getAllByHospitalDetialDTOS = new ArrayList<>();
+        for (QcCases qcCases_new : qcCases) {
+            getAllByHospitalDTO = new GetAllByHospitalDTO();
+            getAllByHospitalDTO.setCasesId(qcCases_new.getId());
+            getAllByHospitalDTO.setCasesName(qcCases_new.getName());
+            getAllByHospitalDTO.setRemark(qcCases_new.getRemark());
+            getAllByHospitalDetialDTOS = new ArrayList<>();
+            for (QcCasesEntryDTO qcCasesEntry : qcCasesEntries) {
+                if(getAllByHospitalDTO.getCasesName().equals(qcCasesEntry.getCasesName())){
+                    getAllByHospitalDetialDTO = new GetAllByHospitalDetialDTO();
+                    getAllByHospitalDetialDTO.setCasesEntryId(qcCasesEntry.getId());
+                    getAllByHospitalDetialDTO.setCasesName(qcCasesEntry.getCasesName());
+                    getAllByHospitalDetialDTO.setCode(qcCasesEntry.getCode());
+                    getAllByHospitalDetialDTO.setModeId(qcCasesEntry.getModeId());
+                    getAllByHospitalDetialDTO.setModeName(qcCasesEntry.getModeName());
+                    getAllByHospitalDetialDTO.setMsg(casesEntryHospitalMap.get(qcCasesEntry.getId()).getMsg());
+                    getAllByHospitalDetialDTO.setIsUsed(casesEntryHospitalMap.get(qcCasesEntry.getId()).getIsUsed());
+                    getAllByHospitalDetialDTO.setScore(casesEntryHospitalMap.get(qcCasesEntry.getId()).getScore());
+                    getAllByHospitalDetialDTO.setPrecond(qcCasesEntry.getPrecond());
+                    getAllByHospitalDetialDTO.setName(qcCasesEntry.getName());
+                    getAllByHospitalDetialDTOS.add(getAllByHospitalDetialDTO);
+                }
+            }
+            getAllByHospitalDTO.setGetAllByHospitalDetialDTOS(getAllByHospitalDetialDTOS);
+            if(ListUtil.isNotEmpty(getAllByHospitalDTO.getGetAllByHospitalDetialDTOS())){
+                getAllByHospitalDTOS.add(getAllByHospitalDTO);
+            }
+        }
+
+        return getAllByHospitalDTOS;
+    }
+
+    /**
+     * 修改指定医院病例条目
+     *
+     * @param updateByHospitalVO
+     * @return
+     */
+    public Boolean updateByHospital(UpdateByHospitalVO updateByHospitalVO){
+        QueryWrapper<CasesEntryHospital> casesEntryHospitalQueryWrapper = new QueryWrapper<>();
+        casesEntryHospitalQueryWrapper
+                .eq("is_deleted",IsDeleteEnum.N.getKey())
+                .in("hospital_id",updateByHospitalVO.getHospitalIds());
+        this.remove(casesEntryHospitalQueryWrapper);
+        //添加新的
+        casesEntryHospitalService.saveBatch(updateByHospitalVO.getCasesEntryHospitals());
+
+        return true;
+    }
+
+    /**
+     * 新增指定医院条目
+     *
+     * @param insertByHospitalVO
+     * @return
+     */
+    public Boolean insertByHospital(InsertByHospitalVO insertByHospitalVO){
+
+            QueryWrapper<QcCasesEntry> qcCasesEntryWrapper = new QueryWrapper<>();
+            qcCasesEntryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
+                    .ne("id",insertByHospitalVO.getId()==null? -1:insertByHospitalVO.getId())
+                    .eq("name",insertByHospitalVO.getName())
+                    .eq("cases_id",insertByHospitalVO.getCasesId());
+            int sum = qcCacesEntryFacade.count(qcCasesEntryWrapper);
+            if (sum != 0) {
+                throw new CommonException(CommonErrorCode.NOT_EXISTS, "该条目名称存在");
+            }
+        QueryWrapper<QcCasesEntry> qcCasesEntryQueryWrapper = new QueryWrapper<>();
+        qcCasesEntryQueryWrapper.eq("id",insertByHospitalVO.getId());
+        List<QcCasesEntry> qcCasesEntries = qcCacesEntryFacade.list(qcCasesEntryQueryWrapper);
+        QcCasesEntry qcCasesEntry = new QcCasesEntry();
+        Date date = DateUtil.now();
+        if(ListUtil.isNotEmpty(qcCasesEntries)){
+            qcCasesEntry = new QcCasesEntry();
+            BeanUtil.copyProperties(insertByHospitalVO,qcCasesEntry);
+            qcCasesEntry.setGmtCreate(date);
+            qcCasesEntry.setGmtModified(date);
+            qcCacesEntryFacade.updateById(qcCasesEntry);
+            //修改时添加明细前先删除
+            List<Long> hospitalIds = new ArrayList<>();
+            for (CasesEntryHospital casesEntryHospital : insertByHospitalVO.getCasesEntryHospitals()) {
+                if(!hospitalIds.contains(casesEntryHospital.getHospitalId())){
+                    hospitalIds.add(casesEntryHospital.getHospitalId());
+                }
+            }
+            QueryWrapper<CasesEntryHospital> casesEntryHospitalQueryWrapper = new QueryWrapper<>();
+            casesEntryHospitalQueryWrapper.eq("cases_entry_id",qcCasesEntry.getId());
+            casesEntryHospitalService.remove(casesEntryHospitalQueryWrapper);
+        }else {
+            qcCasesEntry = new QcCasesEntry();
+            BeanUtil.copyProperties(insertByHospitalVO,qcCasesEntry);
+            qcCasesEntry.setGmtCreate(date);
+            qcCasesEntry.setGmtModified(date);
+            boolean res= qcCacesEntryFacade.save(qcCasesEntry);
+            //先保存, 在更新Coed
+            if(res){
+                Long id = qcCasesEntry.getId();
+                String code = qcCasesEntry.getCode()+id;
+                UpdateWrapper<QcCasesEntry> qcCasesEntryQueryUpdate = new UpdateWrapper<>();
+                qcCasesEntryQueryUpdate
+                        .eq("is_deleted",IsDeleteEnum.N.getKey())
+                        .eq("id",id)
+                        .set("code",code);
+                qcCacesEntryFacade.update(qcCasesEntryQueryUpdate);
+            }
+        }
+        //添加分值明细
+        List<CasesEntryHospital> casesEntryHospitals = new ArrayList<>();
+        CasesEntryHospital casesEntryHospital = new CasesEntryHospital();
+        for (CasesEntryHospital casesEntryHospital_new : insertByHospitalVO.getCasesEntryHospitals()) {
+            casesEntryHospital = new CasesEntryHospital();
+            BeanUtil.copyProperties(casesEntryHospital_new,casesEntryHospital);
+            casesEntryHospital.setCasesEntryId(qcCasesEntry.getId());
+            casesEntryHospital.setGmtCreate(date);
+            casesEntryHospital.setGmtModified(date);
+            casesEntryHospitals.add(casesEntryHospital);
+        }
+        casesEntryHospitalService.saveBatch(casesEntryHospitals);
+        return true;
+    }
+}

+ 34 - 0
mrman-service/src/main/java/com/diagbot/facade/DictionaryFacade.java

@@ -0,0 +1,34 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.DictionaryInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.DictionaryInfoServiceImpl;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class DictionaryFacade extends DictionaryInfoServiceImpl {
+
+    /**
+     * 返回字典信息
+     *
+     * @return
+     */
+    public Map<Long, List<DictionaryInfo>> getList() {
+        List<DictionaryInfo> list = this.list(new QueryWrapper<DictionaryInfo>()
+                .in("return_type", ListUtil.arrayToList(new Integer[] {0, 1}))
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .orderByAsc("group_type", "order_no"));
+        return EntityUtil.makeEntityListMap(list, "groupType");
+    }
+}

+ 31 - 0
mrman-service/src/main/java/com/diagbot/facade/MedRecordModuleFacade.java

@@ -0,0 +1,31 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.MedRecordModule;
+import com.diagbot.service.impl.MedRecordModuleServiceImpl;
+import com.diagbot.vo.MedRecordModuleVO;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2020-03-17 13:47
+ */
+@Component
+public class MedRecordModuleFacade extends MedRecordModuleServiceImpl {
+
+    /**
+     * 获取所有的模板类型
+     *
+     * @param medRecordModuleVO
+     * @return
+     */
+    public List<MedRecordModule> getList(MedRecordModuleVO medRecordModuleVO) {
+        return this.list(new QueryWrapper<MedRecordModule>()
+                .eq("hospital_id", medRecordModuleVO.getHospitalId())
+                .eq("mode_id", medRecordModuleVO.getModeId())
+        );
+    }
+}

+ 124 - 0
mrman-service/src/main/java/com/diagbot/facade/QcCacesEntryFacade.java

@@ -0,0 +1,124 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.GetUpdateInfoDTO;
+import com.diagbot.dto.GetUpdateInfoDetialDTO;
+import com.diagbot.dto.QcCasesEntryAllDTO;
+import com.diagbot.dto.QcHospitalInfoAllDTO;
+import com.diagbot.entity.CasesEntryHospital;
+import com.diagbot.entity.QcCasesEntry;
+import com.diagbot.entity.QcQuestionEntry;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.QcCasesEntryServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.vo.GetUpdateInfoVO;
+import com.diagbot.vo.QcCasesEntryAllVO;
+import com.diagbot.vo.QcCasesEntryIndexVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2020/3/30 16:52
+ */
+@Component
+public class QcCacesEntryFacade extends QcCasesEntryServiceImpl {
+    @Autowired
+    private QcCacesEntryFacade qcCacesEntryFacade;
+    @Autowired
+    private CasesEntryHospitalFacade casesEntryHospitalFacade;
+    @Autowired
+    private BasHospitalInfoFacade qcHospitalInfoFacade;
+    @Autowired
+    QcQuestionEntryFacade qcQuestionEntryFacade;
+
+    /**
+     * 分页获取病例条目
+     *
+     * @param qcCasesEntryAllVO
+     * @return
+     */
+    public IPage<QcCasesEntryAllDTO> getAll(QcCasesEntryAllVO qcCasesEntryAllVO){
+        return this.getAllQcCasesEntry(qcCasesEntryAllVO);
+    }
+
+    /**
+     * 分页获取病例条目
+     *
+     * @param qcCasesEntryIndexVO
+     * @return
+     */
+    public IPage<QcCasesEntryAllDTO> getAllQcCasesEntryIndexFac(QcCasesEntryIndexVO qcCasesEntryIndexVO){
+        return this.getAllQcCasesEntryIndex(qcCasesEntryIndexVO);
+    }
+
+    /**
+     * 修改时获取病例条目信息
+     *
+     * @param getUpdateInfoVO
+     * @return
+     */
+    public List<GetUpdateInfoDTO>  getUpdateInfo(GetUpdateInfoVO getUpdateInfoVO){
+        QueryWrapper<QcCasesEntry> qcCasesEntryQueryWrapper = new QueryWrapper<>();
+        qcCasesEntryQueryWrapper
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id",getUpdateInfoVO.getId());
+        QcCasesEntry qcCasesEntry = qcCacesEntryFacade.getOne(qcCasesEntryQueryWrapper);
+        QueryWrapper<CasesEntryHospital> casesEntryHospitalQueryWrapper = new QueryWrapper<>();
+        casesEntryHospitalQueryWrapper
+                .eq("is_deleted",IsDeleteEnum.N.getKey())
+                .eq("cases_entry_id",qcCasesEntry.getId())
+                .groupBy("hospital_id");
+        List<CasesEntryHospital> casesEntryHospitals = casesEntryHospitalFacade.list(casesEntryHospitalQueryWrapper);
+        List<GetUpdateInfoDTO> getUpdateInfoDTOS = new ArrayList<>();
+        GetUpdateInfoDTO getUpdateInfoDTO = new GetUpdateInfoDTO();
+        List<GetUpdateInfoDetialDTO> getUpdateInfoDetialDTOS = new ArrayList<>();
+        GetUpdateInfoDetialDTO getUpdateInfoDetialDTO = new GetUpdateInfoDetialDTO();
+        BeanUtil.copyProperties(qcCasesEntry,getUpdateInfoDTO);
+        Map<Long,String> hospitalNameMap = qcHospitalInfoFacade.getHospitalInfoAll().stream().collect(Collectors.toMap(QcHospitalInfoAllDTO::getId,qcHospitalInfoAllDTO -> qcHospitalInfoAllDTO.getName()));
+        for (CasesEntryHospital casesEntryHospital: casesEntryHospitals) {
+            getUpdateInfoDetialDTO = new GetUpdateInfoDetialDTO();
+            getUpdateInfoDetialDTO.setHospitalName(hospitalNameMap.get(casesEntryHospital.getHospitalId()));
+            getUpdateInfoDetialDTO.setMsg(casesEntryHospital.getMsg());
+            getUpdateInfoDetialDTO.setIsUsed(casesEntryHospital.getIsUsed());
+            getUpdateInfoDetialDTO.setScore(casesEntryHospital.getScore());
+            getUpdateInfoDetialDTOS.add(getUpdateInfoDetialDTO);
+            getUpdateInfoDTO.setGetUpdateInfoDetialDTOS(getUpdateInfoDetialDTOS);
+        }
+        getUpdateInfoDTOS.add(getUpdateInfoDTO);
+        return getUpdateInfoDTOS;
+    }
+
+    /**
+     * 条目删除
+     *
+     * @param getUpdateInfoVO
+     * @return
+     */
+    public Boolean deleteQcCasesEntry(GetUpdateInfoVO getUpdateInfoVO){
+       //删除条目
+        QueryWrapper<QcCasesEntry> qcCasesEntryQueryWrapper = new QueryWrapper<>();
+        qcCasesEntryQueryWrapper.eq("id",getUpdateInfoVO.getId());
+        boolean res = this.remove(qcCasesEntryQueryWrapper);
+        //删除明细
+        QueryWrapper<CasesEntryHospital> casesEntryHospitalQueryWrapper = new QueryWrapper<>();
+        casesEntryHospitalQueryWrapper.eq("cases_entry_id",getUpdateInfoVO.getId());
+        casesEntryHospitalFacade.remove(casesEntryHospitalQueryWrapper);
+        //删除模块
+        UpdateWrapper<QcQuestionEntry> qcQuescQuestionInfoUpdate = new UpdateWrapper<>();
+        qcQuescQuestionInfoUpdate
+                .eq("cases_entry_id",getUpdateInfoVO.getId());
+        qcQuestionEntryFacade.remove(qcQuescQuestionInfoUpdate);
+
+        return res;
+
+    }
+}

+ 42 - 9
mrman-service/src/main/java/com/diagbot/facade/QcCasesFacade.java

@@ -1,17 +1,18 @@
 package com.diagbot.facade;
 package com.diagbot.facade;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.QcCasesAllDTO;
 import com.diagbot.dto.QcCasesAllDTO;
 import com.diagbot.dto.QcCasesDTO;
 import com.diagbot.dto.QcCasesDTO;
-import com.diagbot.dto.QcHospitalInfoAllDTO;
+import com.diagbot.dto.QcCasesEntryDTO;
 import com.diagbot.entity.QcCases;
 import com.diagbot.entity.QcCases;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.IsDeleteEnum;
-import com.diagbot.service.QcCasesEntryService;
 import com.diagbot.service.QcCasesService;
 import com.diagbot.service.QcCasesService;
 import com.diagbot.service.impl.QcCasesServiceImpl;
 import com.diagbot.service.impl.QcCasesServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.vo.GetAllByHospitalVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
@@ -30,14 +31,16 @@ public class QcCasesFacade extends QcCasesServiceImpl {
     @Autowired
     @Autowired
     QcCasesService qcCasesService;
     QcCasesService qcCasesService;
     @Autowired
     @Autowired
-    QcCasesEntryService qcCasesEntryService;
+    QcCacesEntryFacade qcCasesEntryService;
+    @Autowired
+    CasesEntryHospitalFacade casesEntryHospitalFacade;
 
 
     public List<QcCasesAllDTO> getAlls() {
     public List<QcCasesAllDTO> getAlls() {
         //查出所有病例
         //查出所有病例
         QueryWrapper<QcCases> qcCasesQuery = new QueryWrapper<>();
         QueryWrapper<QcCases> qcCasesQuery = new QueryWrapper<>();
         qcCasesQuery
         qcCasesQuery
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .orderByDesc("gmt_modified");
+                .orderByAsc("id");
         List<QcCases> data = list(qcCasesQuery);
         List<QcCases> data = list(qcCasesQuery);
         List<QcCasesAllDTO> dataNew = new ArrayList<QcCasesAllDTO>();
         List<QcCasesAllDTO> dataNew = new ArrayList<QcCasesAllDTO>();
         dataNew = BeanUtil.listCopyTo(data, QcCasesAllDTO.class);
         dataNew = BeanUtil.listCopyTo(data, QcCasesAllDTO.class);
@@ -45,16 +48,46 @@ public class QcCasesFacade extends QcCasesServiceImpl {
         QueryWrapper<QcCasesEntry> qcCasesEntryQuery = new QueryWrapper<>();
         QueryWrapper<QcCasesEntry> qcCasesEntryQuery = new QueryWrapper<>();
         qcCasesEntryQuery
         qcCasesEntryQuery
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .orderByDesc("gmt_modified");
-        List<QcCasesEntry> dataEntry = qcCasesEntryService.list(qcCasesEntryQuery);
+                .orderByDesc("order_no");
+        List<QcCasesEntryDTO> dataEntryDTO = qcCasesEntryService.getQcCasesEntryAll();
+        /*List<QcCasesEntryDTO> dataEntryDTO = new ArrayList<>();
+        dataEntryDTO = BeanUtil.listCopyTo(dataEntry,QcCasesEntryDTO.class);*/
        // 然后把所有病例类型放进去
        // 然后把所有病例类型放进去
-        Map<Long, List<QcCasesEntry>> map
-                = EntityUtil.makeEntityListMap(dataEntry, "casesId");
+        Map<Long, List<QcCasesEntryDTO>> map
+                = EntityUtil.makeEntityListMap(dataEntryDTO, "casesId");
       //List<QcCases> data = qcCasesService.list();
       //List<QcCases> data = qcCasesService.list();
         //把模板放进文件夹中
         //把模板放进文件夹中
         if (dataNew.size() > 0) {
         if (dataNew.size() > 0) {
             for (QcCasesAllDTO ts : dataNew) {
             for (QcCasesAllDTO ts : dataNew) {
-                List<QcCasesEntry> tmp = map.get(ts.getId());
+                List<QcCasesEntryDTO> tmp = map.get(ts.getId());
+                if (ListUtil.isNotEmpty(tmp)) {
+                    ts.setQcCasesEntry(tmp);
+                }
+            }
+        }
+        return dataNew;
+    }
+
+
+    public List<QcCasesAllDTO> getAllByHospital(GetAllByHospitalVO getAllByHospitalVO){
+        //查出所有病例
+        QueryWrapper<QcCases> qcCasesQuery = new QueryWrapper<>();
+        qcCasesQuery
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .orderByAsc("id");
+        List<QcCases> data = list(qcCasesQuery);
+        List<QcCasesAllDTO> dataNew = new ArrayList<QcCasesAllDTO>();
+        dataNew = BeanUtil.listCopyTo(data, QcCasesAllDTO.class);
+        // 查出所有病例病例类型
+        List<QcCasesEntryDTO> dataEntry = this.getCasesEntryByHospitalId(getAllByHospitalVO.getHospitalId());
+        // 然后把所有病例类型放进去
+        Map<Long, List<QcCasesEntryDTO>> map
+                = EntityUtil.makeEntityListMap(dataEntry, "casesId");
+        //List<QcCases> data = qcCasesService.list();
+        //把模板放进文件夹中
+        if (dataNew.size() > 0) {
+            for (QcCasesAllDTO ts : dataNew) {
+                List<QcCasesEntryDTO> tmp = map.get(ts.getId());
                 if (ListUtil.isNotEmpty(tmp)) {
                 if (ListUtil.isNotEmpty(tmp)) {
                     ts.setQcCasesEntry(tmp);
                     ts.setQcCasesEntry(tmp);
                 }
                 }

+ 41 - 36
mrman-service/src/main/java/com/diagbot/facade/QcInputcasesFacade.java

@@ -4,12 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.diagbot.dto.ModuleMappingDTO;
 import com.diagbot.dto.ModuleMappingDTO;
 import com.diagbot.dto.QcAllInputcasesDTO;
 import com.diagbot.dto.QcAllInputcasesDTO;
-import com.diagbot.dto.QcInputcasesAllDTO;
 import com.diagbot.dto.QcInputcasesMappingDTO;
 import com.diagbot.dto.QcInputcasesMappingDTO;
 import com.diagbot.entity.CasesNumber;
 import com.diagbot.entity.CasesNumber;
 import com.diagbot.entity.Mode;
 import com.diagbot.entity.Mode;
 import com.diagbot.entity.ModelMapping;
 import com.diagbot.entity.ModelMapping;
-import com.diagbot.entity.QcHospitalInfo;
+import com.diagbot.entity.BasHospitalInfo;
 import com.diagbot.entity.QcInputcases;
 import com.diagbot.entity.QcInputcases;
 import com.diagbot.entity.QcInputcasesMapping;
 import com.diagbot.entity.QcInputcasesMapping;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.IsDeleteEnum;
@@ -33,7 +32,6 @@ import com.diagbot.vo.QcInputcasesSaveVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
-import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
@@ -59,7 +57,7 @@ public class QcInputcasesFacade extends QcInputcasesServiceImpl {
     @Autowired
     @Autowired
     ModeService modeService;
     ModeService modeService;
     @Autowired
     @Autowired
-    QcHospitalInfoFacade qcHospitalInfoFacade;
+    BasHospitalInfoFacade qcHospitalInfoFacade;
 
 
    /* public List<QcInputcasesAllDTO> getInputcasesAlls(Long textId) {
    /* public List<QcInputcasesAllDTO> getInputcasesAlls(Long textId) {
         //查出所有病例
         //查出所有病例
@@ -228,23 +226,53 @@ public class QcInputcasesFacade extends QcInputcasesServiceImpl {
     public List<QcAllInputcasesDTO> getAllInputcases(QcInputcasesAllVO qcInputcasesAllVO){
     public List<QcAllInputcasesDTO> getAllInputcases(QcInputcasesAllVO qcInputcasesAllVO){
         List<Long> hospitalIds = new ArrayList<>();
         List<Long> hospitalIds = new ArrayList<>();
         if (StringUtil.isNotEmpty(qcInputcasesAllVO.getHospitalName())){
         if (StringUtil.isNotEmpty(qcInputcasesAllVO.getHospitalName())){
-            QueryWrapper<QcHospitalInfo> qcHospitalInfoQueryWrapper = new QueryWrapper<>();
+            QueryWrapper<BasHospitalInfo> qcHospitalInfoQueryWrapper = new QueryWrapper<>();
             qcHospitalInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
             qcHospitalInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
                     .like("name",qcInputcasesAllVO.getHospitalName());
                     .like("name",qcInputcasesAllVO.getHospitalName());
-            hospitalIds = qcHospitalInfoFacade.list().stream().map(QcHospitalInfo::getId).collect(Collectors.toList());
+            hospitalIds = qcHospitalInfoFacade.list(qcHospitalInfoQueryWrapper).stream().map(BasHospitalInfo::getId).collect(Collectors.toList());
         }
         }
         //病例
         //病例
         QueryWrapper<CasesNumber> casesNumberQueryWrapper = new QueryWrapper<>();
         QueryWrapper<CasesNumber> casesNumberQueryWrapper = new QueryWrapper<>();
         casesNumberQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
         casesNumberQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
-                .orderByDesc("gmt_modified");
+                .orderByAsc("id");
         if(StringUtil.isNotEmpty(qcInputcasesAllVO.getCaseNumber())){
         if(StringUtil.isNotEmpty(qcInputcasesAllVO.getCaseNumber())){
             casesNumberQueryWrapper.like("case_number",qcInputcasesAllVO.getCaseNumber());
             casesNumberQueryWrapper.like("case_number",qcInputcasesAllVO.getCaseNumber());
         }
         }
         if(StringUtil.isNotEmpty(qcInputcasesAllVO.getHospitalName())){
         if(StringUtil.isNotEmpty(qcInputcasesAllVO.getHospitalName())){
-            casesNumberQueryWrapper.in("hospital_id",hospitalIds);
+            if(ListUtil.isNotEmpty(hospitalIds)){
+                casesNumberQueryWrapper.in("hospital_id",hospitalIds);
+            }else {
+                casesNumberQueryWrapper.in("hospital_id","-10");
+            }
         }
         }
+
         List<CasesNumber> casesNumbers = casesNumberService.list(casesNumberQueryWrapper);
         List<CasesNumber> casesNumbers = casesNumberService.list(casesNumberQueryWrapper);
+        //将病例内容放入出参
         List<QcAllInputcasesDTO> res = new ArrayList<>();
         List<QcAllInputcasesDTO> res = new ArrayList<>();
+        QueryWrapper<BasHospitalInfo> hospitalInfoQueryWrapper = new QueryWrapper<>();
+        hospitalInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
+        List<BasHospitalInfo> qcHospitalInfos = qcHospitalInfoFacade.list();
+        Map<Long,String> hospitalMap = new HashMap<>();
+        hospitalMap = qcHospitalInfos.stream().collect(Collectors.toMap(BasHospitalInfo::getId, hospitalInfo -> hospitalInfo.getName()));
+        res = BeanUtil.listCopyTo(casesNumbers,QcAllInputcasesDTO.class);
+        for (QcAllInputcasesDTO qcAllInputcasesDTO : res) {
+            qcAllInputcasesDTO.setHospitalName(hospitalMap.get(Long.parseLong(qcAllInputcasesDTO.getHospitalId())));
+        }
+        return  res;
+    }
+
+    public List<QcAllInputcasesDTO> getInputcasesDetial(QcInputcasesAllVO qcInputcasesAllVO){
+        //病例
+        QueryWrapper<CasesNumber> casesNumberQueryWrapper = new QueryWrapper<>();
+        casesNumberQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
+                .orderByAsc("id");
+        if(StringUtil.isNotEmpty(qcInputcasesAllVO.getCaseNumber())){
+            casesNumberQueryWrapper.like("case_number",qcInputcasesAllVO.getCaseNumber());
+        }
+        List<CasesNumber> casesNumbers = casesNumberService.list(casesNumberQueryWrapper);
+        //将病例内容放入出参
+        List<QcAllInputcasesDTO> res = new ArrayList<>();
+        res = BeanUtil.listCopyTo(casesNumbers,QcAllInputcasesDTO.class);
         //病例内容
         //病例内容
         QueryWrapper<ModelMapping> modelMappingQueryWrapper = new QueryWrapper<>();
         QueryWrapper<ModelMapping> modelMappingQueryWrapper = new QueryWrapper<>();
         modelMappingQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
         modelMappingQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
@@ -255,18 +283,13 @@ public class QcInputcasesFacade extends QcInputcasesServiceImpl {
         QueryWrapper<Mode> modelQueryWrapper = new QueryWrapper<>();
         QueryWrapper<Mode> modelQueryWrapper = new QueryWrapper<>();
         modelQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
         modelQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
         List<Mode> modes = modeService.list();
         List<Mode> modes = modeService.list();
-        Map<Long,String> modeMap = new HashMap<>();
-        modeMap = modes.stream().collect(Collectors.toMap(Mode::getId,mode -> mode.getName()));
         //病例列表
         //病例列表
-        QueryWrapper<QcHospitalInfo> hospitalInfoQueryWrapper = new QueryWrapper<>();
+        QueryWrapper<BasHospitalInfo> hospitalInfoQueryWrapper = new QueryWrapper<>();
         hospitalInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
         hospitalInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey());
-        List<QcHospitalInfo> qcHospitalInfos = qcHospitalInfoFacade.list();
+        List<BasHospitalInfo> qcHospitalInfos = qcHospitalInfoFacade.list();
         Map<Long,String> hospitalMap = new HashMap<>();
         Map<Long,String> hospitalMap = new HashMap<>();
-        hospitalMap = qcHospitalInfos.stream().collect(Collectors.toMap(QcHospitalInfo::getId,hospitalInfo -> hospitalInfo.getName()));
-        //将病例内容放入出参
-        res = BeanUtil.listCopyTo(casesNumbers,QcAllInputcasesDTO.class);
+        hospitalMap = qcHospitalInfos.stream().collect(Collectors.toMap(BasHospitalInfo::getId, hospitalInfo -> hospitalInfo.getName()));
         List<ModuleMappingDTO> moduleMappingDTOS = new ArrayList<>();
         List<ModuleMappingDTO> moduleMappingDTOS = new ArrayList<>();
-        List<Long> modIds = new ArrayList<>();
         ModuleMappingDTO moduleMappingDTO = new ModuleMappingDTO();
         ModuleMappingDTO moduleMappingDTO = new ModuleMappingDTO();
         List<String> modeList = new ArrayList();
         List<String> modeList = new ArrayList();
         for (QcAllInputcasesDTO qcAllInputcasesDTO : res) {
         for (QcAllInputcasesDTO qcAllInputcasesDTO : res) {
@@ -278,7 +301,7 @@ public class QcInputcasesFacade extends QcInputcasesServiceImpl {
                 if(modelMap.get(mode.getId()) != null){
                 if(modelMap.get(mode.getId()) != null){
                     modeList = new ArrayList();
                     modeList = new ArrayList();
                     for (ModelMapping modelMapping: modelMap.get(mode.getId())) {
                     for (ModelMapping modelMapping: modelMap.get(mode.getId())) {
-                        if (modelMapping.getCaseNumberId().intValue() == qcAllInputcasesDTO.getId()){
+                        if (modelMapping.getCaseNumberId().intValue() == qcAllInputcasesDTO.getId().intValue()){
                             modeList.add(modelMapping.getText());
                             modeList.add(modelMapping.getText());
                             moduleMappingDTO.setText(modeList);
                             moduleMappingDTO.setText(modeList);
                         }
                         }
@@ -289,23 +312,6 @@ public class QcInputcasesFacade extends QcInputcasesServiceImpl {
             qcAllInputcasesDTO.setHospitalName(hospitalMap.get(Long.parseLong(qcAllInputcasesDTO.getHospitalId())));
             qcAllInputcasesDTO.setHospitalName(hospitalMap.get(Long.parseLong(qcAllInputcasesDTO.getHospitalId())));
             qcAllInputcasesDTO.setModuleMappingDTOList(moduleMappingDTOS);
             qcAllInputcasesDTO.setModuleMappingDTOList(moduleMappingDTOS);
         }
         }
-       /* for (QcAllInputcasesDTO qcAllInputcasesDTO : res) {
-            for (ModelMapping modelMapping : modelMappings) {
-                if (qcAllInputcasesDTO.getId().intValue() == modelMapping.getCaseNumberId().intValue()){
-                        if(!modIds.contains(modelMapping.getModeId())){
-                            moduleMappingDTO = new ModuleMappingDTO();
-                            moduleMappingDTO.setModeId(modelMapping.getModeId());
-                            moduleMappingDTO.setName(modeMap.get(modelMapping.getModeId()));
-                            moduleMappingDTO.setText(modelMapping.getText());
-                            moduleMappingDTOS.add(moduleMappingDTO);
-                            modIds.add(modelMapping.getModeId());
-                        }
-                }
-            }
-            qcAllInputcasesDTO.setHospitalName(hospitalMap.get(Long.parseLong(qcAllInputcasesDTO.getHospitalId())));
-            qcAllInputcasesDTO.setModuleMappingDTOList(moduleMappingDTOS);
-        }*/
-
         // 查出所有病例病例类型
         // 查出所有病例病例类型
         List<QcInputcasesMappingDTO> qcInputcasesMapping = qcInputcasesMappingService.getInputMapping(qcInputcasesAllVO.getCaseNumber());
         List<QcInputcasesMappingDTO> qcInputcasesMapping = qcInputcasesMappingService.getInputMapping(qcInputcasesAllVO.getCaseNumber());
         // 然后把所有病例类型放进去
         // 然后把所有病例类型放进去
@@ -319,8 +325,7 @@ public class QcInputcasesFacade extends QcInputcasesServiceImpl {
                 }
                 }
             }
             }
         }
         }
-
-        return  res;
+        return res;
     }
     }
 
 
     /**
     /**

+ 33 - 0
mrman-service/src/main/java/com/diagbot/facade/QcModeFacade.java

@@ -0,0 +1,33 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.QcModeDTO;
+import com.diagbot.entity.QcMode;
+import com.diagbot.service.QcModeService;
+import com.diagbot.service.impl.QcModeServiceImpl;
+import com.diagbot.util.BeanUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-04-26 17:24
+ */
+@Component
+public class QcModeFacade extends QcModeServiceImpl {
+
+    @Autowired
+    QcModeService qcModeService;
+
+    public List<QcModeDTO> getModeAll() {
+        List<QcMode> data = qcModeService.list();
+        List<QcModeDTO> dataNew = new ArrayList<QcModeDTO>();
+        dataNew = BeanUtil.listCopyTo(data, QcModeDTO.class);
+        return dataNew;
+
+    }
+}

+ 92 - 0
mrman-service/src/main/java/com/diagbot/facade/QcModuleDetailFacade.java

@@ -0,0 +1,92 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.entity.QcModuleDetail;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.QcModuleDetailService;
+import com.diagbot.service.impl.QcModuleDetailServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.AddModuleDetailVO;
+import com.diagbot.vo.AddModuleInfoVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class QcModuleDetailFacade extends QcModuleDetailServiceImpl {
+
+    @Autowired
+    private QcModuleInfoFacade moduleInfoFacade;
+    @Autowired
+    @Qualifier("qcModuleDetailServiceImpl")
+    private QcModuleDetailService qcModuleDetailService;
+
+    /**
+     * 根据questionId删除明细
+     *
+     * @param map
+     * @return
+     */
+    public void deleteByQuestionIdFac(Map map) {
+        this.deleteByQuestionIds(map);
+    }
+
+
+    /**
+     * 根据moduleId删除明细
+     *
+     * @param map
+     * @return
+     */
+    public void deleteByModuleIdFac(Map map) {
+        this.deleteByModuleIds(map);
+    }
+
+    /**
+     * 添加模板明细
+     *
+     * @param addModuleInfoVO
+     * @return
+     */
+    public Boolean saveOrUpdateInfos(AddModuleInfoVO addModuleInfoVO, Long moduleId) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+      //如果该模板添加过明细,先删除
+        UpdateWrapper<QcModuleDetail> moduleDetailUpdateWrapper = new UpdateWrapper<>();
+        moduleDetailUpdateWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("module_id", moduleId)
+                .set("is_deleted", IsDeleteEnum.Y.getKey())
+                .set("modifier", userId)
+                .set("gmt_modified", now);
+        this.update(new QcModuleDetail(), moduleDetailUpdateWrapper);
+
+        List<QcModuleDetail> moduleDetailList = new ArrayList<>();
+        int i = 1;
+        for (AddModuleDetailVO detailVO : addModuleInfoVO.getModuleDetail()) {
+            QcModuleDetail qcModuleDetail = new QcModuleDetail();
+            BeanUtil.copyProperties(detailVO, qcModuleDetail);
+            qcModuleDetail.setOrderNo(i++);
+            qcModuleDetail.setModuleId(moduleId);
+            qcModuleDetail.setGmtCreate(now);
+            qcModuleDetail.setGmtModified(now);
+            qcModuleDetail.setCreator(userId);
+            qcModuleDetail.setModifier(userId);
+            moduleDetailList.add(qcModuleDetail);
+        }
+        //添加模板明细
+        qcModuleDetailService.saveBatch(moduleDetailList);
+        return true;
+    }
+}

+ 213 - 0
mrman-service/src/main/java/com/diagbot/facade/QcModuleInfoFacade.java

@@ -0,0 +1,213 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.GetModuleInfoOneDTO;
+import com.diagbot.dto.ModuleInfoListDTO;
+import com.diagbot.dto.QcModuleDetailDTO;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.entity.QcModuleDetail;
+import com.diagbot.entity.QcModuleInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.QcModuleInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.AddModuleInfoVO;
+import com.diagbot.vo.GetModuleInfoOneVO;
+import com.diagbot.vo.GetModuleInfoVO;
+import com.diagbot.vo.QuestionIdsVO;
+import com.diagbot.vo.UpdateModuleInfoVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class QcModuleInfoFacade extends QcModuleInfoServiceImpl {
+
+    @Autowired
+    QcModuleDetailFacade qcModuleDetailFacade;
+    @Autowired
+    UserServiceClient userServiceClient;
+    @Autowired
+    DictionaryFacade dictionaryFacade;
+    @Autowired
+    QcQuestionFacade qcQuestionFacade;
+
+    /**
+     * 根据id删除标签模板
+     *
+     * @param ids
+     * @return
+     */
+    public Boolean deleteByIdsFac(String ids) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date date = DateUtil.now();
+        Map paramMap = new HashMap<>();
+        paramMap.put("delete", IsDeleteEnum.Y.getKey());
+        paramMap.put("ids", Arrays.asList(ids.split(",")));
+        paramMap.put("gmtModified", date);
+        paramMap.put("modifier", userId);
+        //删除模板
+        this.deleteByIds(paramMap);
+        //删除明细表
+        qcModuleDetailFacade.deleteByModuleIdFac(paramMap);
+        return true;
+    }
+
+    /**
+     * 添加模板
+     *
+     * @param addModulInfoVO
+     * @return
+     */
+    public Boolean saveOrUpdateModuleInfo(AddModuleInfoVO addModulInfoVO) {
+        // 校验名称是否相同
+        int count = this.count(new QueryWrapper<QcModuleInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("mode_id", addModulInfoVO.getModeId())
+                .eq("hospital_id", addModulInfoVO.getHospitalId())
+                .eq("name", addModulInfoVO.getName())
+                .ne("id", addModulInfoVO.getId() == null ? -1 : addModulInfoVO.getId()));
+        if (count > 0) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "相同【医院】【模块】下,模板名称已存在");
+        }
+
+        // 同一文书类型下只有一份
+         QcModuleInfo existBean = this.getOne(new QueryWrapper<QcModuleInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("mode_id", addModulInfoVO.getModeId())
+                .eq("hospital_id", addModulInfoVO.getHospitalId())
+                .eq("record_module_id", addModulInfoVO.getRecordModuleId())
+                .ne("id", addModulInfoVO.getId() == null ? -1 : addModulInfoVO.getId()));
+        if (existBean != null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "相同【医院】【模块】下,模块类型已存在,模板名称【" + existBean.getName() + "】" );
+        }
+
+        Long moduleId = null;
+        Boolean bac = false;
+        if (addModulInfoVO.getId() == null) {
+            String userId = UserUtils.getCurrentPrincipleID();
+            Date now = DateUtil.now();
+            QcModuleInfo moduleInfo = new QcModuleInfo();
+            BeanUtil.copyProperties(addModulInfoVO, moduleInfo);
+            moduleInfo.setCreator(userId);
+            moduleInfo.setModifier(userId);
+            moduleInfo.setGmtCreate(now);
+            moduleInfo.setGmtModified(now);
+            this.save(moduleInfo);
+            moduleId = moduleInfo.getId();
+            bac = qcModuleDetailFacade.saveOrUpdateInfos(addModulInfoVO, moduleId);
+        } else {
+            UpdateModuleInfoVO updateModuleInfoVO = new UpdateModuleInfoVO();
+            BeanUtil.copyProperties(addModulInfoVO, updateModuleInfoVO);
+            bac = this.updateModuleInfo(updateModuleInfoVO);
+        }
+        return bac;
+    }
+
+    /**
+     * 修改模板
+     *
+     * @param updateModuleInfoVO
+     * @return
+     */
+    public Boolean updateModuleInfo(UpdateModuleInfoVO updateModuleInfoVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        UpdateWrapper<QcModuleInfo> moduleInfoUpdateWrapper = new UpdateWrapper<>();
+        moduleInfoUpdateWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", updateModuleInfoVO.getId())
+                .set("name", updateModuleInfoVO.getName())
+                .set("mode_id", updateModuleInfoVO.getModeId())
+                .set("record_module_id", updateModuleInfoVO.getRecordModuleId())
+                .set("modifier", userId)
+                .set("gmt_modified", DateUtil.now())
+                .set("remark", updateModuleInfoVO.getRemark());
+        this.update(new QcModuleInfo(), moduleInfoUpdateWrapper);
+        AddModuleInfoVO addModuleInfoVO = new AddModuleInfoVO();
+        BeanUtil.copyProperties(updateModuleInfoVO, addModuleInfoVO);
+        return qcModuleDetailFacade.saveOrUpdateInfos(addModuleInfoVO, updateModuleInfoVO.getId());
+    }
+
+
+    /**
+     * 模板维护页面获取模板列表
+     *
+     * @param getModuleInfoVO
+     * @return
+     */
+    public IPage<ModuleInfoListDTO> getModuleInfoList(GetModuleInfoVO getModuleInfoVO) {
+        //获取模板信息
+        IPage<ModuleInfoListDTO> moduleInfoDTOIPage = this.getModuleInfoListByType(getModuleInfoVO);
+        return moduleInfoDTOIPage;
+    }
+
+    /**
+     * 根据id获取模板信息
+     *
+     * @param getModuleInfoOneVO
+     * @return
+     */
+    public GetModuleInfoOneDTO getById(GetModuleInfoOneVO getModuleInfoOneVO) {
+        GetModuleInfoOneDTO getModuleInfoOneDTO = new GetModuleInfoOneDTO();
+        //获取模板信息
+        QueryWrapper<QcModuleInfo> moduleInfoQueryWrapper = new QueryWrapper<>();
+        moduleInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", getModuleInfoOneVO.getModuleId());
+        QcModuleInfo moduleInfo = this.getOne(moduleInfoQueryWrapper, false);
+        if (null == moduleInfo) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "模板已删除【" + getModuleInfoOneVO.getModuleId() + "】");
+        }
+        BeanUtil.copyProperties(moduleInfo, getModuleInfoOneDTO);
+        List<QcModuleDetail> qcModuleDetailList = qcModuleDetailFacade.list(new QueryWrapper<QcModuleDetail>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("module_id", getModuleInfoOneDTO.getId())
+                .orderByAsc("order_no")
+        );
+        List<QcModuleDetailDTO> qcModuleDetailDTOList = BeanUtil.listCopyTo(qcModuleDetailList, QcModuleDetailDTO.class);
+
+        // 根据questionId获取所有的标签
+        List<Long> questionIds = qcModuleDetailList.stream().map(r -> r.getQuestionId()).collect(Collectors.toList());
+        QuestionIdsVO questionIdsVO = new QuestionIdsVO();
+        questionIdsVO.setIds(questionIds);
+        Map<Long, QuestionDTO> questionDTOMap = qcQuestionFacade.getByIds(questionIdsVO);
+        for (QcModuleDetailDTO bean : qcModuleDetailDTOList) {
+            QuestionDTO questionDTO = questionDTOMap.get(bean.getQuestionId());
+            if (questionDTO != null) {
+                bean.setQuestionDTO(questionDTO);
+            }
+        }
+        Map<Integer, List<QcModuleDetailDTO>> map = EntityUtil.makeEntityListMap(qcModuleDetailDTOList, "groupId");
+        getModuleInfoOneDTO.setModuleDetail(map);
+        return getModuleInfoOneDTO;
+    }
+
+
+    /**
+     * 校验questionId是否在模板中使用
+     *
+     * @param map
+     * @return
+     */
+    public List<QcModuleInfo> getModuleNameByQuestionIdFac(Map map) {
+        return this.getModuleNameByQuestionId(map);
+    }
+}

+ 26 - 0
mrman-service/src/main/java/com/diagbot/facade/QcQuestionEntryFacade.java

@@ -0,0 +1,26 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.QuesCasesEntryDTO;
+import com.diagbot.service.impl.QcQuestionEntryServiceImpl;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2020-03-10 16:32
+ */
+@Component
+public class QcQuestionEntryFacade extends QcQuestionEntryServiceImpl {
+
+    /**
+     * 根据questionId获取质控条目明细
+     *
+     * @param id
+     * @return
+     */
+    public List<QuesCasesEntryDTO> getByQuestionIdFac(Long id) {
+        return this.getByQuestionId(id);
+    }
+}

+ 519 - 0
mrman-service/src/main/java/com/diagbot/facade/QcQuestionFacade.java

@@ -0,0 +1,519 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.dto.QuestionPageDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.QcModuleInfo;
+import com.diagbot.entity.QcQuestionEntry;
+import com.diagbot.entity.QcQuestionInfo;
+import com.diagbot.entity.QcQuestionMapping;
+import com.diagbot.entity.wrapper.QuestionInfoWrapper;
+import com.diagbot.entity.wrapper.QuestionMappingWrapper;
+import com.diagbot.entity.wrapper.QuestionWrapper;
+import com.diagbot.enums.InsertOrUpdateEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.TagTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.QcQuestionEntryService;
+import com.diagbot.service.QcQuestionMappingService;
+import com.diagbot.service.impl.QcQuestionInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.DeleteQuestionVO;
+import com.diagbot.vo.QuesCasesEntryVO;
+import com.diagbot.vo.QuestionIdsVO;
+import com.diagbot.vo.QuestionIndexVO;
+import com.diagbot.vo.QuestionPageVO;
+import com.diagbot.vo.QuestionSaveVO;
+import com.diagbot.vo.QuestionVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class QcQuestionFacade extends QcQuestionInfoServiceImpl {
+
+//    @Autowired
+//    @Qualifier("questionInfoServiceImpl")
+//    QuestionInfoService questionInfoService;
+    @Autowired
+    @Qualifier("qcQuestionMappingServiceImpl")
+    QcQuestionMappingService qcQuestionMappingService;
+    @Autowired
+    QcQuestionMappingFacade qcQuestionMappingFacade;
+    @Autowired
+    UserServiceClient userServiceClient;
+//    @Autowired
+//    ModuleDetailFacade moduleDetailFacade;
+    @Autowired
+    QcModuleInfoFacade qcModuleInfoFacade;
+    @Autowired
+    QcCacesEntryFacade qcCacesEntryFacade;
+    @Autowired
+    QcQuestionEntryFacade qcQuestionEntryFacade;
+    @Autowired
+    @Qualifier("qcQuestionEntryServiceImpl")
+    QcQuestionEntryService questionEntryService;
+
+    /**
+     * 标签保存
+     *
+     * @param questionSaveVO
+     */
+    public void saveOrUpdate(QuestionSaveVO questionSaveVO) {
+        QuestionWrapper questionWrapper = questionSaveVO.getQuestionWrapper();
+        CommonParam param = initCommonParam();
+        //保存|修改主表信息
+        saveQuestionInfo(questionWrapper, param);
+        // 保存组合标签和字标签映射表
+        saveQuestionMapping(questionWrapper, param);
+        // 保存标签和条目映射表
+        saveQuestionEntry(questionWrapper.getQuesCasesEntryVOList(), param);
+    }
+
+    /**
+     * 初始化参数
+     *
+     * @return
+     */
+    public CommonParam initCommonParam() {
+        CommonParam param = new CommonParam();
+        String person = UserUtils.getCurrentPrincipleID();
+        param.setNow(DateUtil.now());
+        param.setPerson(person);
+        param.setInsertOrUpdate(InsertOrUpdateEnum.Insert.getKey());
+        return param;
+    }
+
+    /**
+     * 保存映射关系
+     *
+     * @param questionWrapper
+     * @param param
+     */
+    public void saveQuestionMapping(QuestionWrapper questionWrapper, CommonParam param) {
+        QcQuestionInfo questionInfo = param.getQcQuestionInfo();
+        Date now = param.getNow();
+        String person = param.getPerson();
+        //先删除原明细,再插入新明细
+        List<QuestionMappingWrapper> questionMappings = questionWrapper.getQuestionMappings();
+        if (ListUtil.isNotEmpty(questionMappings)) {
+            deleteMapping(questionInfo.getId(), param);//删除原映射关系
+            saveMapping(questionMappings, person, now, questionInfo.getId());
+        }
+    }
+
+    /**
+     * 保存标签和条目映射关系
+     *
+     * @param quesCasesEntryVOList
+     * @param param
+     */
+    public void saveQuestionEntry(List<QuesCasesEntryVO> quesCasesEntryVOList, CommonParam param) {
+        Date now = param.getNow();
+        String person = param.getPerson();
+
+        //先删除原明细, 不能先判断本次更新是否有值
+        qcQuestionEntryFacade.update(new QcQuestionEntry(),
+                new UpdateWrapper<QcQuestionEntry>()
+                        .eq("question_id", param.getQcQuestionInfo().getId())
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .set("gmt_modified", now)
+                        .set("modifier", person)
+                        .set("is_deleted", IsDeleteEnum.Y.getKey()));
+
+        if (ListUtil.isEmpty(quesCasesEntryVOList)) {
+            return ;
+        }
+
+        //再插入新明细
+        List<QcQuestionEntry> qcQuestionEntryList = new ArrayList<>();
+        int i = 1;
+        for (QuesCasesEntryVO vo : quesCasesEntryVOList) {
+            QcQuestionEntry bean = new QcQuestionEntry();
+            bean.setQuestionId(param.getQcQuestionInfo().getId());
+            bean.setCasesEntryId(vo.getCasesEntryId());
+            bean.setCreator(person);
+            bean.setGmtCreate(now);
+            bean.setModifier(person);
+            bean.setGmtModified(now);
+            bean.setOrderNo(i++);
+            qcQuestionEntryList.add(bean);
+        }
+        questionEntryService.saveBatch(qcQuestionEntryList);
+    }
+
+    /**
+     * 删除映射关系
+     *
+     * @param questionId
+     * @param param
+     */
+    public void deleteMapping(Long questionId, CommonParam param) {
+        qcQuestionMappingFacade.update(new QcQuestionMapping(),
+                new UpdateWrapper<QcQuestionMapping>()
+                        .eq("parent_question", questionId)
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .set("gmt_modified", param.getNow())
+                        .set("modifier", param.getPerson())
+                        .set("is_deleted", IsDeleteEnum.Y.getKey()));
+    }
+
+    /**
+     * 保存映射关系
+     *
+     * @param questionMappings
+     * @param person
+     * @param now
+     * @param id
+     */
+    public void saveMapping(List<QuestionMappingWrapper> questionMappings, String person, Date now, Long id) {
+        List<QcQuestionMapping> saveMapping = new ArrayList<>();
+        int i = 1;
+        for (QuestionMappingWrapper mapping : questionMappings) {
+            QcQuestionMapping bean = new QcQuestionMapping();
+            BeanUtil.copyProperties(mapping, bean);
+            bean.setCreator(person);
+            bean.setGmtCreate(now);
+            bean.setModifier(person);
+            bean.setGmtModified(now);
+            bean.setParentQuestion(id);
+            bean.setOrderNo(i++);
+            saveMapping.add(bean);
+        }
+        qcQuestionMappingService.saveBatch(saveMapping);
+    }
+
+    /**
+     * 保存主表
+     *
+     * @param questionWrapper
+     * @param param
+     */
+    public void saveQuestionInfo(QuestionWrapper questionWrapper, CommonParam param) {
+        QcQuestionInfo qcQuestionInfo = new QcQuestionInfo();
+        if (questionWrapper.getId() != null) {
+            qcQuestionInfo = this.getOne(new QueryWrapper<QcQuestionInfo>()
+                    .eq("id", questionWrapper.getId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey()), false);
+            if (qcQuestionInfo == null) { //校验
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "字段不存在");
+            }
+            param.setInsertOrUpdate(InsertOrUpdateEnum.Update.getKey());
+        }
+        BeanUtil.copyProperties(questionWrapper, qcQuestionInfo);
+        List<QcQuestionInfo> questionInfoList = this.list(new QueryWrapper<QcQuestionInfo>()
+                .eq("tag_name", qcQuestionInfo.getTagName())
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("mode_id", qcQuestionInfo.getModeId())
+                .eq("hospital_id", qcQuestionInfo.getHospitalId())
+                .ne("id", qcQuestionInfo.getId() == null ? -1 : qcQuestionInfo.getId()));
+        if (ListUtil.isNotEmpty(questionInfoList)) { //标签type、tagName唯一
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "备注名称已存在");
+        }
+        if (InsertOrUpdateEnum.Insert.getKey() == param.getInsertOrUpdate()) {
+            qcQuestionInfo.setCreator(param.getPerson()); //创建人
+            qcQuestionInfo.setGmtCreate(param.getNow());//创建时间
+        }
+        qcQuestionInfo.setGmtModified(param.getNow());//修改时间
+        qcQuestionInfo.setModifier(param.getPerson());//修改人
+        param.setQcQuestionInfo(qcQuestionInfo);
+        this.saveOrUpdate(qcQuestionInfo);
+    }
+
+    /**
+     * 标签列表
+     *
+     * @param questionPageVO
+     * @return
+     */
+    public IPage<QuestionPageDTO> getListFac(QuestionPageVO questionPageVO) {
+        IPage<QuestionPageDTO> res = this.getList(questionPageVO);
+//        if (res.getTotal() <= 0) {
+//            return res;
+//        }
+//        List<String> personIds = res.getRecords().stream().map(row -> row.getModifier()).collect(Collectors.toList());
+//        RespDTO<Map<String, String>> mapRespDTO = userServiceClient.getUserInfoByIds(personIds);
+//        if (mapRespDTO == null || !CommonErrorCode.OK.getCode().equals(mapRespDTO.code)) {
+//            throw new CommonException(CommonErrorCode.RPC_ERROR, "获取操作人失败");
+//        }
+//        for (QuestionPageDTO bean : res.getRecords()) {
+//            bean.setModifier(mapRespDTO.data.get(bean.getModifier()));
+//        }
+        return res;
+    }
+
+    /**
+     * 根据id删除标签
+     *
+     * @param deleteQuestionVO
+     * @return
+     */
+    public Boolean deleteByIdsFac(DeleteQuestionVO deleteQuestionVO) {
+        String ids = deleteQuestionVO.getIds();
+        if (StringUtil.isEmpty(ids)) {
+            return true;
+        }
+        List<String> idList = Arrays.asList(ids.split(","));
+        Date now = DateUtil.now();
+        String person = UserUtils.getCurrentPrincipleID();
+        for (String id : idList) {
+            Map paramMap = new HashMap<>();
+            paramMap.put("delete", IsDeleteEnum.Y.getKey());
+            paramMap.put("ids", Arrays.asList(ids.split(",")));
+            paramMap.put("gmtModified", now);
+            paramMap.put("modifier", person);
+            // 映射关系删除校验,如果有父项关联,不能删除
+            List<QcQuestionInfo> questionInfoList = getParentQuestion(Long.parseLong(id));
+            if (ListUtil.isNotEmpty(questionInfoList)) {
+                StringBuffer sb = new StringBuffer();
+                sb.append("请先删除上级关联:");
+                for (QcQuestionInfo ques : questionInfoList) {
+                    sb.append("【" + ques.getTagName() + "】");
+                }
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                        sb.toString());
+            }
+
+            // 从模板中查找是否有关联
+            Map<String, Object> paraMap = new HashMap<>();
+            if (deleteQuestionVO.getHospitalId() != null) {
+                paraMap.put("hospitalId", deleteQuestionVO.getHospitalId());
+            }
+            paraMap.put("questionId", Long.parseLong(id));
+            List<QcModuleInfo> qcModuleInfoList = qcModuleInfoFacade.getModuleNameByQuestionIdFac(paraMap);
+            if (ListUtil.isNotEmpty(qcModuleInfoList)) {
+                StringBuffer errMsg = new StringBuffer();
+                errMsg.append("该字段已关联模板");
+                for (QcModuleInfo bean : qcModuleInfoList) {
+                    errMsg.append("【" + bean.getName() + "】");
+                }
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, errMsg.toString());
+            }
+
+            //删除自身
+            this.deleteByIds(paramMap);
+
+            //删除映射关系
+            qcQuestionMappingFacade.deleteByIdsFac(paramMap);
+        }
+        return true;
+    }
+
+
+    /**
+     * 检索
+     *
+     * @param questionIndexVO
+     * @return
+     */
+    public List<QcQuestionInfo> indexFac(QuestionIndexVO questionIndexVO) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("hospitalId", questionIndexVO.getHospitalId());
+        paramMap.put("modeId", questionIndexVO.getModeId());
+        paramMap.put("tagName", questionIndexVO.getTagName());
+        paramMap.put("controlType", questionIndexVO.getControlType());
+        paramMap.put("notIds", questionIndexVO.getNotIds());
+        paramMap.put("tagType", questionIndexVO.getTagType());
+        paramMap.put("notTagType", questionIndexVO.getNotTagType());
+        paramMap.put("notControlType", questionIndexVO.getNotControlType());
+        List<QcQuestionInfo> res = this.index(paramMap);
+        return res;
+    }
+
+//    /**
+//     * 根据主标签id 检索子标签
+//     *
+//     * @param questionIndexSubVO
+//     * @return
+//     */
+//    public List<QuestionInfo> indexSub(QuestionIndexSubVO questionIndexSubVO) {
+//        Map<String, Object> paramMap = new HashMap<>();
+//        paramMap.put("age", questionIndexSubVO.getAge());
+//        paramMap.put("sexType", questionIndexSubVO.getSexType());
+//        paramMap.put("tagName", questionIndexSubVO.getTagName());
+//        paramMap.put("type", questionIndexSubVO.getType());
+//        paramMap.put("controlType", questionIndexSubVO.getControlType());
+//        paramMap.put("notIds", questionIndexSubVO.getNotIds());
+//        paramMap.put("tagType", questionIndexSubVO.getTagType());
+//        paramMap.put("existName", questionIndexSubVO.getExistName());
+//        paramMap.put("notTagType", questionIndexSubVO.getNotTagType());
+//        paramMap.put("notControlType", questionIndexSubVO.getNotControlType());
+//
+//        QueryWrapper<QuestionMapping> questionMappingQueryWrapper = new QueryWrapper<>();
+//        questionMappingQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+//                .eq("parent_question", questionIndexSubVO.getParentId());
+//        List<QuestionMapping> questionMappingList = questionMappingFacade.list(questionMappingQueryWrapper);
+//        if (ListUtil.isNotEmpty(questionMappingList)) {
+//            List<Long> sonIds = questionMappingList.stream().map(questionMapping -> questionMapping.getSonQuestion())
+//                    .collect(Collectors.toList());
+//            paramMap.put("ids", sonIds);
+//        }
+//        List<QuestionInfo> res = this.index(paramMap);
+//        return res;
+//    }
+
+
+    /**
+     * 根据参数返回标签内容
+     *
+     * @param questionVO 获取标签内容参数
+     * @return 标签内容
+     */
+    public QuestionDTO getById(QuestionVO questionVO) {
+        Map paramMap = new HashMap<>();
+        paramMap.put("id", questionVO.getId());
+
+        QcQuestionInfo questionInfo = this.getOne(new QueryWrapper<QcQuestionInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", questionVO.getId()), false
+        );
+        if (questionInfo == null) { //无数据直接返回,不通过报错的形式返回
+            return new QuestionDTO();
+        }
+        QuestionDTO res = new QuestionDTO();
+        BeanUtil.copyProperties(questionInfo, res);
+
+        // 如果是单标签且有明细内容,就获取条目内容Fac
+        if (TagTypeEnum.T1.getKey() == res.getTagType()) {
+            res.setQuesCasesEntryDTOList(qcQuestionEntryFacade.getByQuestionIdFac(questionVO.getId()));
+        }
+
+        //获取子标签
+        List<QuestionInfoWrapper> questionMapping = this.getByQuestionMapping(paramMap);
+        List<QuestionDTO> sonQuestionList = BeanUtil.listCopyTo(questionMapping, QuestionDTO.class);
+        res.setQuestionMapping(sonQuestionList);
+        return res;
+    }
+
+
+//    /**
+//     * 查询多个id返回标签内容
+//     *
+//     * @param questionIdsVO 获取标签内容参数
+//     * @return 标签内容
+//     */
+//    public Map<Long, QuestionDTO> getByIds(QuestionIdsVO questionIdsVO) {
+//        Map<Long, QuestionDTO> data = new HashMap<>();
+//        if (StringUtil.isEmpty(questionIdsVO.getIds())) {
+//            return data;
+//        }
+//        String[] ids = questionIdsVO.getIds().split(",");
+//        for (String id : ids) {
+//            QuestionVO questionVO = new QuestionVO();
+//            questionVO.setId(Long.parseLong(id));
+//            QuestionDTO item = this.getById(questionVO);
+//            data.put(item.getId(), item);
+//        }
+//        return data;
+//    }
+
+
+    /**
+     * 查询多个id返回标签内容【优化版】
+     *
+     * @param questionIdsVO 获取标签内容参数
+     * @return 标签内容Fac
+     */
+    public Map<Long, QuestionDTO> getByIds(QuestionIdsVO questionIdsVO) {
+        List<Long> idList = questionIdsVO.getIds();
+        if (ListUtil.isEmpty(idList)) {
+            return new HashMap<>();
+        }
+        List<QcQuestionInfo> qcQuestionInfoList = this.list(new QueryWrapper<QcQuestionInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("id", idList)
+        );
+        List<QuestionDTO> questionDTOList = BeanUtil.listCopyTo(qcQuestionInfoList, QuestionDTO.class);
+        if (ListUtil.isNotEmpty(questionDTOList)) {
+            List<Long> ids = questionDTOList.stream().map(r -> r.getId()).collect(Collectors.toList());
+            Map paramMap = new HashMap<>();
+            paramMap.put("ids", ids);
+            //获取子标签
+            List<QuestionInfoWrapper> questionMapping = this.getByQuestionMapping(paramMap);
+            Map<Long, List<QuestionInfoWrapper>> map = EntityUtil.makeEntityListMap(questionMapping, "parentQuestion");
+            for (QuestionDTO bean : questionDTOList) {
+                List<QuestionInfoWrapper> questionInfoWrapperList = map.get(bean.getId());
+                if (ListUtil.isNotEmpty(questionInfoWrapperList)) {
+                    bean.setQuestionMapping(BeanUtil.listCopyTo(questionInfoWrapperList, QuestionDTO.class));
+                }
+            }
+        }
+        return questionDTOList.stream().collect(Collectors.toMap(r -> r.getId(), r -> r));
+    }
+
+//    /**
+//     * 根据id返回被引用的父标签
+//     *
+//     * @param subQuestionVO 获取父标签内容参数
+//     * @return 标签内容
+//     */
+//    public List<QuestionInfo> getBySubQuestionId(SubQuestionVO subQuestionVO) {
+//        List<QuestionDetail> list = questionDetailFacade.list(new QueryWrapper<QuestionDetail>()
+//                .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                .apply("find_in_set({0}, sub_question)", subQuestionVO.getId())
+//        );
+//        if (ListUtil.isNotEmpty(list)) {
+//            List<Long> ids = list.stream().map(r -> r.getQuestionId()).distinct().collect(Collectors.toList());
+//            return this.list(new QueryWrapper<QuestionInfo>()
+//                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                    .in("id", ids)
+//            );
+//        }
+//        return null;
+//    }
+
+
+
+//    /**
+//     * 获取所有需要删除的缓存id列表
+//     *
+//     * @param id
+//     * @return
+//     */
+//    public List<Long> getDeleteId(Long id) {
+//        List<Long> list = new ArrayList<>();
+//        list.add(id); //添加自身id
+//        getParent(id, list); //添加父级
+//        return list;
+//    }
+
+
+//    public void getParent(Long id, List<Long> list) {
+//        List<QuestionMapping> questionMappingList = questionMappingFacade.list(
+//                new QueryWrapper<QuestionMapping>()
+//                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                        .eq("son_question", id)
+//        );
+//        if (ListUtil.isNotEmpty(questionMappingList)) {
+//            for (QuestionMapping questionMapping : questionMappingList) {
+//                Long parentId = questionMapping.getParentQuestion();
+//                if (!list.contains(parentId)) {
+//                    list.add(parentId);
+//                    getParent(parentId, list);
+//                }
+//            }
+//        }
+//    }
+}

+ 25 - 0
mrman-service/src/main/java/com/diagbot/facade/QcQuestionMappingFacade.java

@@ -0,0 +1,25 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.QcQuestionMappingServiceImpl;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2020-03-10 16:32
+ */
+@Component
+public class QcQuestionMappingFacade extends QcQuestionMappingServiceImpl {
+
+    /**
+     * 根据id删除标签
+     *
+     * @param map
+     * @return
+     */
+    public void deleteByIdsFac(Map map) {
+        this.deleteByIds(map);
+    }
+}

+ 2 - 2
mrman-service/src/main/java/com/diagbot/mapper/QcHospitalInfoMapper.java

@@ -1,6 +1,6 @@
 package com.diagbot.mapper;
 package com.diagbot.mapper;
 
 
-import com.diagbot.entity.QcHospitalInfo;
+import com.diagbot.entity.BasHospitalInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 
 /**
 /**
@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author wangfeng
  * @author wangfeng
  * @since 2020-03-17
  * @since 2020-03-17
  */
  */
-public interface QcHospitalInfoMapper extends BaseMapper<QcHospitalInfo> {
+public interface BasHospitalInfoMapper extends BaseMapper<BasHospitalInfo> {
 
 
 }
 }

+ 16 - 0
mrman-service/src/main/java/com/diagbot/mapper/CasesEntryHospitalMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.CasesEntryHospital;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 病历条目 Mapper 接口
+ * </p>
+ *
+ * @author wangyu
+ * @since 2020-03-31
+ */
+public interface CasesEntryHospitalMapper extends BaseMapper<CasesEntryHospital> {
+
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/mapper/DictionaryInfoMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.DictionaryInfo;
+
+/**
+ * <p>
+ * icss字典表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+public interface DictionaryInfoMapper extends BaseMapper<DictionaryInfo> {
+
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/mapper/MedRecordModuleMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedRecordModule;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-29
+ */
+public interface MedRecordModuleMapper extends BaseMapper<MedRecordModule> {
+
+}

+ 21 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java

@@ -1,7 +1,15 @@
 package com.diagbot.mapper;
 package com.diagbot.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.QcCasesEntryAllDTO;
+import com.diagbot.dto.QcCasesEntryDTO;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.entity.QcCasesEntry;
+import com.diagbot.vo.QcCasesEntryAllVO;
+import com.diagbot.vo.QcCasesEntryIndexVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -13,4 +21,17 @@ import com.diagbot.entity.QcCasesEntry;
  */
  */
 public interface QcCasesEntryMapper extends BaseMapper<QcCasesEntry> {
 public interface QcCasesEntryMapper extends BaseMapper<QcCasesEntry> {
 
 
+    /**
+     * 分页获取病例条目
+     *
+     * @param qcCasesEntryAllVO
+     * @return
+     */
+    IPage<QcCasesEntryAllDTO> getAllQcCasesEntry(QcCasesEntryAllVO qcCasesEntryAllVO);
+
+    IPage<QcCasesEntryAllDTO> getQcCasesEntryIndex(QcCasesEntryIndexVO qcCasesEntryIndexVO);
+
+    List<QcCasesEntryDTO> getByCasesEntryId( @Param("ids") List<Long> ids);
+
+    List<QcCasesEntryDTO> getQcCasesEntryAll();
 }
 }

+ 4 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcCasesMapper.java

@@ -2,7 +2,9 @@ package com.diagbot.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.dto.QcCasesDTO;
 import com.diagbot.dto.QcCasesDTO;
+import com.diagbot.dto.QcCasesEntryDTO;
 import com.diagbot.entity.QcCases;
 import com.diagbot.entity.QcCases;
+import com.diagbot.entity.QcCasesEntry;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -17,4 +19,6 @@ import java.util.List;
 public interface QcCasesMapper extends BaseMapper<QcCases> {
 public interface QcCasesMapper extends BaseMapper<QcCases> {
 
 
     List<QcCasesDTO> getCasesList(Long casesId);
     List<QcCasesDTO> getCasesList(Long casesId);
+
+    List<QcCasesEntryDTO> getCasesEntryByHospitalId(Long hospitalId);
 }
 }

+ 16 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcModeMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.QcMode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 病历 Mapper 接口
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-04-26
+ */
+public interface QcModeMapper extends BaseMapper<QcMode> {
+
+}

+ 21 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcModuleDetailMapper.java

@@ -0,0 +1,21 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.QcModuleDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 模型明细表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-27
+ */
+public interface QcModuleDetailMapper extends BaseMapper<QcModuleDetail> {
+
+    public void deleteByQuestionIds(Map map);
+
+    public void deleteByModuleIds(Map map);
+}

+ 0 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcModuleInfoMapper.java


Some files were not shown because too many files changed in this diff