Quellcode durchsuchen

Merge remote-tracking branch 'origin/dev/diagbotcloud20190924_diagnose2' into dev/diagbotcloud20190924_diagnose2

zhoutg vor 5 Jahren
Ursprung
Commit
fc9c074f9b
59 geänderte Dateien mit 2762 neuen und 392 gelöschten Zeilen
  1. 199 0
      aipt-service/src/main/java/com/diagbot/aggregate/TreatmentAggregate.java
  2. 158 134
      aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java
  3. 4 4
      aipt-service/src/main/resources/mapper/ConceptMapper.xml
  4. 5 0
      bi-service/pom.xml
  5. 31 0
      bi-service/src/main/java/com/diagbot/aggregate/BiAggregate.java
  6. 43 0
      bi-service/src/main/java/com/diagbot/aggregate/KnowledgemanAgg.java
  7. 49 0
      bi-service/src/main/java/com/diagbot/aggregate/NeoAgg.java
  8. 32 0
      bi-service/src/main/java/com/diagbot/aggregate/PrecmanAgg.java
  9. 14 0
      bi-service/src/main/java/com/diagbot/client/IcssmanServiceClient.java
  10. 24 0
      bi-service/src/main/java/com/diagbot/client/KnowledgemanServiceClient.java
  11. 19 0
      bi-service/src/main/java/com/diagbot/client/NeoServiceClient.java
  12. 19 0
      bi-service/src/main/java/com/diagbot/client/PrecmanServiceClient.java
  13. 16 0
      bi-service/src/main/java/com/diagbot/client/hystrix/IcssmanServiceHystrix.java
  14. 31 0
      bi-service/src/main/java/com/diagbot/client/hystrix/KnowledgemanServiceHystrix.java
  15. 24 0
      bi-service/src/main/java/com/diagbot/client/hystrix/NeoServiceHystrix.java
  16. 23 0
      bi-service/src/main/java/com/diagbot/client/hystrix/PrecmanServiceHystrix.java
  17. 0 1
      bi-service/src/main/java/com/diagbot/client/hystrix/UserServiceHystrix.java
  18. 28 0
      bi-service/src/main/java/com/diagbot/dto/BIDTO.java
  19. 17 0
      bi-service/src/main/java/com/diagbot/dto/BIItemDTO.java
  20. 18 0
      bi-service/src/main/java/com/diagbot/dto/BIModuleDTO.java
  21. 18 0
      bi-service/src/main/java/com/diagbot/dto/PrecCountDTO.java
  22. 64 0
      bi-service/src/main/java/com/diagbot/enums/StatisticsDetailTypeEnum.java
  23. 58 0
      bi-service/src/main/java/com/diagbot/enums/StatisticsTypeEnum.java
  24. 243 0
      bi-service/src/main/java/com/diagbot/facade/StatisticsFacade.java
  25. 34 0
      bi-service/src/main/java/com/diagbot/web/StatisticsController.java
  26. 0 110
      bi-service/src/main/java/com/diagbot/web/SysLogController.java
  27. 1 1
      common/src/main/java/com/diagbot/enums/ProductTypeEnum.java
  28. 5 0
      config-server/src/main/resources/shared/bi-service-dev.yml
  29. 5 0
      config-server/src/main/resources/shared/bi-service-local.yml
  30. 5 0
      config-server/src/main/resources/shared/bi-service-pro.yml
  31. 5 0
      config-server/src/main/resources/shared/bi-service-test.yml
  32. 7 0
      docs/019.20191011数据服务模式医学知识和量表搜索/init_tran.sql
  33. 1049 0
      docs/020.20191016BI数据统计/init_user.sql
  34. 183 0
      icss-service/src/main/java/com/diagbot/aggregate/InquiryInfoAggregate.java
  35. 5 2
      icss-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java
  36. 0 14
      icss-service/src/main/java/com/diagbot/facade/DoctorInfoFacade.java
  37. 0 24
      icss-service/src/main/java/com/diagbot/facade/HospitalDeptFacade.java
  38. 3 26
      icss-service/src/main/java/com/diagbot/facade/InquiryDetailFacade.java
  39. 21 55
      icss-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java
  40. 0 16
      icss-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java
  41. 2 0
      knowledgeman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  42. 2 0
      knowledgeman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  43. 17 0
      knowledgeman-service/src/main/java/com/diagbot/dto/BIItemDTO.java
  44. 18 1
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java
  45. 14 2
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  46. 9 1
      knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptDetailMapper.java
  47. 8 0
      knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptMapper.java
  48. 8 0
      knowledgeman-service/src/main/java/com/diagbot/service/ConceptDetailService.java
  49. 12 0
      knowledgeman-service/src/main/java/com/diagbot/service/impl/ConceptDetailServiceImpl.java
  50. 9 0
      knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java
  51. 12 1
      knowledgeman-service/src/main/java/com/diagbot/web/ConceptDetailController.java
  52. 37 0
      knowledgeman-service/src/main/resources/mapper/ConceptDetailMapper.xml
  53. 35 0
      knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml
  54. 1 0
      precman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  55. 1 0
      precman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  56. 17 0
      precman-service/src/main/java/com/diagbot/dto/BIItemDTO.java
  57. 17 0
      precman-service/src/main/java/com/diagbot/dto/PrecCountDTO.java
  58. 40 0
      precman-service/src/main/java/com/diagbot/facade/CountFacade.java
  59. 43 0
      precman-service/src/main/java/com/diagbot/web/CountController.java

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

@@ -0,0 +1,199 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.client.bean.AdverseReaction;
+import com.diagbot.client.bean.Medicition;
+import com.diagbot.client.bean.MedicitionClass;
+import com.diagbot.dto.ConceptDetailDTO;
+import com.diagbot.entity.Concept;
+import com.diagbot.entity.ConceptDetail;
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.LexiconTypeEnum;
+import com.diagbot.enums.PositionTypeEnum;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/24 10:01
+ */
+@Component
+public class TreatmentAggregate {
+
+    @DataProvider("setTreatmentAll")
+    public Map<String, Object> setTreatmentAll(@InvokeParameter("treatmentMap") Map<String, Object> treatmentMap,
+                                               @DataConsumer("setCommonTreatment") ConceptDetailDTO commonTreatment,
+                                               @DataConsumer("setSurgeryTreatment") ConceptDetailDTO surgeryTreatment,
+                                               @DataConsumer("setDrugs") List<MedicitionClass> drugsList,
+                                               @DataConsumer("setAdverseReactions") List<AdverseReaction> adverseReactionList) {
+        if (treatmentMap == null) {
+            treatmentMap = new LinkedHashMap<>();
+        }
+        treatmentMap.put("commonTreatment", commonTreatment);
+        treatmentMap.put("surgeryTreatment", surgeryTreatment);
+        treatmentMap.put("treatment", drugsList);
+        treatmentMap.put("adverseReactions", adverseReactionList);
+
+        return treatmentMap;
+    }
+
+    @DataProvider("setCommonTreatment")
+    public ConceptDetailDTO setCommonTreatment(@InvokeParameter("diseaseName") String diseaseName,
+                                               @InvokeParameter("hasConDetailMap") Map<String, Map<Long, List<ConceptDetail>>> hasConDetailMap) {
+        ConceptDetailDTO conceptDetailDTO = null;
+        if (hasConDetailMap != null && hasConDetailMap.get(diseaseName) != null
+                && ListUtil.isNotEmpty(hasConDetailMap
+                .get(diseaseName)
+                .get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey())))) {
+            List<ConceptDetail> diseaseConDetailList
+                    = hasConDetailMap.get(diseaseName).get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey()));
+            for (ConceptDetail conceptDetail : diseaseConDetailList) {
+                List<String> positionList = Arrays.asList(conceptDetail.getPosition().split(",|,"));
+                if (positionList.contains(String.valueOf(PositionTypeEnum.T3.getKey()))) {
+                    conceptDetailDTO = new ConceptDetailDTO();
+                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
+                    break;
+                }
+            }
+        }
+        return conceptDetailDTO;
+    }
+
+    @DataProvider("setSurgeryTreatment")
+    public ConceptDetailDTO setSurgeryTreatment(@InvokeParameter("diseaseName") String diseaseName,
+                                                @InvokeParameter("hasConDetailMap") Map<String, Map<Long, List<ConceptDetail>>> hasConDetailMap) {
+        ConceptDetailDTO conceptDetailDTO = null;
+        if (hasConDetailMap != null && hasConDetailMap.get(diseaseName) != null
+                && ListUtil.isNotEmpty(hasConDetailMap
+                .get(diseaseName)
+                .get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey())))) {
+            List<ConceptDetail> diseaseConDetailList
+                    = hasConDetailMap.get(diseaseName).get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey()));
+            for (ConceptDetail conceptDetail : diseaseConDetailList) {
+                List<String> positionList = Arrays.asList(conceptDetail.getPosition().split(",|,"));
+                if (positionList.contains(String.valueOf(PositionTypeEnum.T4.getKey()))) {
+                    conceptDetailDTO = new ConceptDetailDTO();
+                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
+                    break;
+                }
+            }
+        }
+        return conceptDetailDTO;
+    }
+
+    @DataProvider("setDrugs")
+    public List<MedicitionClass> setDrugs(@InvokeParameter("drugsList") List<MedicitionClass> drugsList,
+                                          @InvokeParameter("conceptMap") Map<String, Map<Long, Concept>> conceptMap,
+                                          @InvokeParameter("hasConDetailMap") Map<String, Map<Long, List<ConceptDetail>>> hasConDetailMap) {
+        if (ListUtil.isNotEmpty(drugsList)) {
+            for (MedicitionClass medicitionClass : drugsList) {
+                if (conceptMap != null
+                        && conceptMap.get(medicitionClass.getBigdrugsName()) != null
+                        && conceptMap.get(medicitionClass
+                        .getBigdrugsName())
+                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
+                    Concept cateBigConcept = conceptMap
+                            .get(medicitionClass.getBigdrugsName())
+                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()));
+                    if (cateBigConcept != null) {
+                        medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
+                        if (hasConDetailMap != null
+                                && hasConDetailMap.get(cateBigConcept.getLibName()) != null
+                                && hasConDetailMap.get(cateBigConcept.getLibName())
+                                .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
+                            medicitionClass.setShowInfo("1");
+                        } else {
+                            medicitionClass.setShowInfo("0");
+                        }
+                    }
+                }
+                medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
+                medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
+                if (conceptMap != null
+                        && conceptMap.get(medicitionClass.getSubdrugsName()) != null
+                        && conceptMap.get(medicitionClass.getSubdrugsName())
+                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()))) {
+                    Concept cateSmallConcept = conceptMap
+                            .get(medicitionClass.getSubdrugsName())
+                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()));
+                    if (cateSmallConcept != null) {
+                        medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
+                    }
+                }
+                medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
+                medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
+
+                LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
+                for (Medicition medicition : medicitionList) {
+                    if (conceptMap != null
+                            && conceptMap.get(medicition.getMedicitionName()) != null
+                            && conceptMap.get(medicition.getMedicitionName())
+                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
+                        Concept drugConcept = conceptMap
+                                .get(medicition.getMedicitionName())
+                                .get(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()));
+                        if (drugConcept != null) {
+                            medicition.setConceptId(drugConcept.getId());
+                        }
+                    }
+                    medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
+                    medicition.setType(ConceptTypeEnum.Drug.getKey());
+                    if (hasConDetailMap != null
+                            && hasConDetailMap.get(medicition.getMedicitionName()) != null
+                            && hasConDetailMap.get(medicition.getMedicitionName())
+                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
+                        medicition.setShowInfo("1");
+                    } else {
+                        medicition.setShowInfo("0");
+                    }
+                }
+                medicitionClass.setMedicitionsList(medicitionList);
+            }
+        }
+        return drugsList;
+    }
+
+    @DataProvider("setAdverseReactions")
+    public List<AdverseReaction> setAdverseReactions(@InvokeParameter("adverseReactionList") List<AdverseReaction> adverseReactionList,
+                                                     @InvokeParameter("conceptMap") Map<String, Map<Long, Concept>> conceptMap,
+                                                     @InvokeParameter("hasConDetailMap") Map<String, Map<Long, List<ConceptDetail>>> hasConDetailMap,
+                                                     @InvokeParameter("isChronic") Boolean isChronic) {
+        if (isChronic) {
+            //不良反应
+            for (AdverseReaction adverseReaction : adverseReactionList) {
+                if (conceptMap != null
+                        && conceptMap.get(adverseReaction.getName()) != null
+                        && conceptMap.get(adverseReaction.getName())
+                        .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
+                    Concept adConcept = conceptMap
+                            .get(adverseReaction.getName())
+                            .get(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()));
+                    if (adConcept != null) {
+                        adverseReaction.setConceptId(adConcept.getId());
+                    }
+                }
+                adverseReaction.setLibType(LexiconTypeEnum.SIDE_EFFECTS.getKey());
+                adverseReaction.setType(ConceptTypeEnum.SIDE_EFFECTS.getKey());
+                if (hasConDetailMap != null
+                        && hasConDetailMap.get(adverseReaction.getName()) != null
+                        && hasConDetailMap.get(adverseReaction.getName())
+                        .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
+                    adverseReaction.setShowInfo("1");
+                } else {
+                    adverseReaction.setShowInfo("0");
+                }
+            }
+        }
+        return adverseReactionList;
+    }
+}

+ 158 - 134
aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -4,29 +4,25 @@ import com.alibaba.fastjson.JSONObject;
 import com.diagbot.client.bean.AdverseReaction;
 import com.diagbot.client.bean.Medicition;
 import com.diagbot.client.bean.MedicitionClass;
-import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptDetail;
 import com.diagbot.entity.wrapper.ConceptWrapper;
-import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.DisTypeEnum;
 import com.diagbot.enums.LexiconRSTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
-import com.diagbot.enums.PositionTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.util.BeanUtil;
 import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.Arrays;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -38,10 +34,13 @@ import java.util.stream.Collectors;
  */
 @Component
 public class TreatmentFacade {
+
     @Autowired
     ConceptFacade conceptFacade;
     @Autowired
     ConceptDetailFacade conceptDetailFacade;
+    @Autowired
+    DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
 
     /**
      * 获取治疗方案
@@ -118,103 +117,8 @@ public class TreatmentFacade {
         //说明信息是否存在
         Map<String, Map<Long, List<ConceptDetail>>> hasConDetailMap = conceptDetailFacade.hasConDetail(conceptList);
 
-        //一般治疗&&手术治疗
-        if (hasConDetailMap != null && hasConDetailMap.get(diseaseName) != null
-                && ListUtil.isNotEmpty(hasConDetailMap
-                .get(diseaseName)
-                .get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey())))) {
-            List<ConceptDetail> diseaseConDetailList
-                    = hasConDetailMap.get(diseaseName).get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey()));
-            for (ConceptDetail conceptDetail : diseaseConDetailList) {
-                ConceptDetailDTO conceptDetailDTO = new ConceptDetailDTO();
-                List<String> positionList = Arrays.asList(conceptDetail.getPosition().split(",|,"));
-                if (positionList.contains(String.valueOf(PositionTypeEnum.T3.getKey()))
-                        && retMap.get("commonTreatment") == null) {
-                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
-                    retMap.put("commonTreatment", conceptDetailDTO);
-                }
-                if (positionList.contains(String.valueOf(PositionTypeEnum.T4.getKey()))
-                        && retMap.get("surgeryTreatment") == null) {
-                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
-                    retMap.put("surgeryTreatment", conceptDetailDTO);
-                }
-            }
-        }
-        if (!retMap.containsKey("commonTreatment")) {
-            retMap.put("commonTreatment", null);
-        }
-        if (!retMap.containsKey("surgeryTreatment")) {
-            retMap.put("surgeryTreatment", null);
-        }
-
-        if (ListUtil.isNotEmpty(drugsList)) {
-            for (MedicitionClass medicitionClass : drugsList) {
-                if (conceptMap != null
-                        && conceptMap.get(medicitionClass.getBigdrugsName()) != null
-                        && conceptMap.get(medicitionClass
-                        .getBigdrugsName())
-                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
-                    Concept cateBigConcept = conceptMap
-                            .get(medicitionClass.getBigdrugsName())
-                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()));
-                    if (cateBigConcept != null) {
-                        medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
-                        if (hasConDetailMap != null
-                                && hasConDetailMap.get(cateBigConcept.getLibName()) != null
-                                && hasConDetailMap.get(cateBigConcept.getLibName())
-                                .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
-                            medicitionClass.setShowInfo("1");
-                        } else {
-                            medicitionClass.setShowInfo("0");
-                        }
-                    }
-                }
-                medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
-                medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
-                if (conceptMap != null
-                        && conceptMap.get(medicitionClass.getSubdrugsName()) != null
-                        && conceptMap.get(medicitionClass.getSubdrugsName())
-                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()))) {
-                    Concept cateSmallConcept = conceptMap
-                            .get(medicitionClass.getSubdrugsName())
-                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()));
-                    if (cateSmallConcept != null) {
-                        medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
-                    }
-                }
-                medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
-                medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
-
-                LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
-                for (Medicition medicition : medicitionList) {
-                    if (conceptMap != null
-                            && conceptMap.get(medicition.getMedicitionName()) != null
-                            && conceptMap.get(medicition.getMedicitionName())
-                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
-                        Concept drugConcept = conceptMap
-                                .get(medicition.getMedicitionName())
-                                .get(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()));
-                        if (drugConcept != null) {
-                            medicition.setConceptId(drugConcept.getId());
-                        }
-                    }
-                    medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
-                    medicition.setType(ConceptTypeEnum.Drug.getKey());
-                    if (hasConDetailMap != null
-                            && hasConDetailMap.get(medicition.getMedicitionName()) != null
-                            && hasConDetailMap.get(medicition.getMedicitionName())
-                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
-                        medicition.setShowInfo("1");
-                    } else {
-                        medicition.setShowInfo("0");
-                    }
-                }
-                medicitionClass.setMedicitionsList(medicitionList);
-            }
-        }
-        retMap.put("treatment", drugsList);
-
-        //判断是否慢病,慢病增加回访时间,上次用药,不良反应
+        //判断是否慢病
+        Boolean isChronic = false;
         if (disType != null && disType.equals(DisTypeEnum.CHRONIC.getKey())) {
             //验证是否慢病
             conceptBaseVO.setName("慢病");
@@ -229,39 +133,159 @@ public class TreatmentFacade {
             conceptWrapper.setEndType(LexiconTypeEnum.TYPES_OF_DISEASE.getKey());
             conceptWrapper.setRelationType(LexiconRSTypeEnum.INCLUDE_OF.getKey());
             List<ConceptRes> conceptResList = conceptFacade.getConcept(conceptWrapper);
-            Boolean isChronic = ListUtil.isNotEmpty(conceptResList);
-            if (isChronic) {
-                //慢病,增加回访时间,暂时前端写死, 以后由只是图谱返回
-                retMap.put("followUp", null);
-                //上次用药-icss层处理
-                retMap.put("drugHistory", null);
-                //不良反应
-                for (AdverseReaction adverseReaction : adverseReactionList) {
-                    if (conceptMap != null
-                            && conceptMap.get(adverseReaction.getName()) != null
-                            && conceptMap.get(adverseReaction.getName())
-                            .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
-                        Concept adConcept = conceptMap
-                                .get(adverseReaction.getName())
-                                .get(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()));
-                        if (adConcept != null) {
-                            adverseReaction.setConceptId(adConcept.getId());
-                        }
-                    }
-                    adverseReaction.setLibType(LexiconTypeEnum.SIDE_EFFECTS.getKey());
-                    adverseReaction.setType(ConceptTypeEnum.SIDE_EFFECTS.getKey());
-                    if (hasConDetailMap != null
-                            && hasConDetailMap.get(adverseReaction.getName()) != null
-                            && hasConDetailMap.get(adverseReaction.getName())
-                            .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
-                        adverseReaction.setShowInfo("1");
-                    } else {
-                        adverseReaction.setShowInfo("0");
-                    }
-                }
-                retMap.put("adverseReactions", adverseReactionList);
+            isChronic = ListUtil.isNotEmpty(conceptResList);
+        }
+
+        try {
+            Map<String, Object> invokeParams = new HashMap<>();
+            invokeParams.put("treatmentMap", retMap);
+            invokeParams.put("diseaseName", diseaseName);
+            invokeParams.put("drugsList", drugsList);
+            invokeParams.put("conceptMap", conceptMap);
+            invokeParams.put("hasConDetailMap", hasConDetailMap);
+            invokeParams.put("adverseReactionList", adverseReactionList);
+            invokeParams.put("isChronic", isChronic);
+
+            retMap
+                    = dataBeanAggregateQueryFacade.get("setTreatmentAll", invokeParams, Map.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+        }
+        //判断是否慢病,慢病增加回访时间,上次用药,不良反应
+        if (isChronic) {
+            if (retMap == null) {
+                retMap = new LinkedHashMap<>();
             }
+            //慢病,增加回访时间,暂时前端写死, 以后由只是图谱返回
+            retMap.put("followUp", null);
+            //上次用药-icss层处理
+            retMap.put("drugHistory", null);
         }
+
+        //        //一般治疗&&手术治疗
+        //        if (hasConDetailMap != null && hasConDetailMap.get(diseaseName) != null
+        //                && ListUtil.isNotEmpty(hasConDetailMap
+        //                .get(diseaseName)
+        //                .get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey())))) {
+        //            List<ConceptDetail> diseaseConDetailList
+        //                    = hasConDetailMap.get(diseaseName).get(Long.valueOf(LexiconTypeEnum.DIAGNOSIS.getKey()));
+        //            for (ConceptDetail conceptDetail : diseaseConDetailList) {
+        //                ConceptDetailDTO conceptDetailDTO = new ConceptDetailDTO();
+        //                List<String> positionList = Arrays.asList(conceptDetail.getPosition().split(",|,"));
+        //                if (positionList.contains(String.valueOf(PositionTypeEnum.T3.getKey()))
+        //                        && retMap.get("commonTreatment") == null) {
+        //                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
+        //                    retMap.put("commonTreatment", conceptDetailDTO);
+        //                }
+        //                if (positionList.contains(String.valueOf(PositionTypeEnum.T4.getKey()))
+        //                        && retMap.get("surgeryTreatment") == null) {
+        //                    BeanUtil.copyProperties(conceptDetail, conceptDetailDTO);
+        //                    retMap.put("surgeryTreatment", conceptDetailDTO);
+        //                }
+        //            }
+        //        }
+        //        if (!retMap.containsKey("commonTreatment")) {
+        //            retMap.put("commonTreatment", null);
+        //        }
+        //        if (!retMap.containsKey("surgeryTreatment")) {
+        //            retMap.put("surgeryTreatment", null);
+        //        }
+
+        //        if (ListUtil.isNotEmpty(drugsList)) {
+        //            for (MedicitionClass medicitionClass : drugsList) {
+        //                if (conceptMap != null
+        //                        && conceptMap.get(medicitionClass.getBigdrugsName()) != null
+        //                        && conceptMap.get(medicitionClass
+        //                        .getBigdrugsName())
+        //                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
+        //                    Concept cateBigConcept = conceptMap
+        //                            .get(medicitionClass.getBigdrugsName())
+        //                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()));
+        //                    if (cateBigConcept != null) {
+        //                        medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
+        //                        if (hasConDetailMap != null
+        //                                && hasConDetailMap.get(cateBigConcept.getLibName()) != null
+        //                                && hasConDetailMap.get(cateBigConcept.getLibName())
+        //                                .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey()))) {
+        //                            medicitionClass.setShowInfo("1");
+        //                        } else {
+        //                            medicitionClass.setShowInfo("0");
+        //                        }
+        //                    }
+        //                }
+        //                medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
+        //                medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
+        //                if (conceptMap != null
+        //                        && conceptMap.get(medicitionClass.getSubdrugsName()) != null
+        //                        && conceptMap.get(medicitionClass.getSubdrugsName())
+        //                        .containsKey(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()))) {
+        //                    Concept cateSmallConcept = conceptMap
+        //                            .get(medicitionClass.getSubdrugsName())
+        //                            .get(Long.valueOf(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey()));
+        //                    if (cateSmallConcept != null) {
+        //                        medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
+        //                    }
+        //                }
+        //                medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
+        //                medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
+        //
+        //                LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
+        //                for (Medicition medicition : medicitionList) {
+        //                    if (conceptMap != null
+        //                            && conceptMap.get(medicition.getMedicitionName()) != null
+        //                            && conceptMap.get(medicition.getMedicitionName())
+        //                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
+        //                        Concept drugConcept = conceptMap
+        //                                .get(medicition.getMedicitionName())
+        //                                .get(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()));
+        //                        if (drugConcept != null) {
+        //                            medicition.setConceptId(drugConcept.getId());
+        //                        }
+        //                    }
+        //                    medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
+        //                    medicition.setType(ConceptTypeEnum.Drug.getKey());
+        //                    if (hasConDetailMap != null
+        //                            && hasConDetailMap.get(medicition.getMedicitionName()) != null
+        //                            && hasConDetailMap.get(medicition.getMedicitionName())
+        //                            .containsKey(Long.valueOf(LexiconTypeEnum.DRUGS.getKey()))) {
+        //                        medicition.setShowInfo("1");
+        //                    } else {
+        //                        medicition.setShowInfo("0");
+        //                    }
+        //                }
+        //                medicitionClass.setMedicitionsList(medicitionList);
+        //            }
+        //        }
+        //        retMap.put("treatment", drugsList);
+
+
+        //        //不良反应
+        //        for (AdverseReaction adverseReaction : adverseReactionList) {
+        //            if (conceptMap != null
+        //                    && conceptMap.get(adverseReaction.getName()) != null
+        //                    && conceptMap.get(adverseReaction.getName())
+        //                    .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
+        //                Concept adConcept = conceptMap
+        //                        .get(adverseReaction.getName())
+        //                        .get(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()));
+        //                if (adConcept != null) {
+        //                    adverseReaction.setConceptId(adConcept.getId());
+        //                }
+        //            }
+        //            adverseReaction.setLibType(LexiconTypeEnum.SIDE_EFFECTS.getKey());
+        //            adverseReaction.setType(ConceptTypeEnum.SIDE_EFFECTS.getKey());
+        //            if (hasConDetailMap != null
+        //                    && hasConDetailMap.get(adverseReaction.getName()) != null
+        //                    && hasConDetailMap.get(adverseReaction.getName())
+        //                    .containsKey(Long.valueOf(LexiconTypeEnum.SIDE_EFFECTS.getKey()))) {
+        //                adverseReaction.setShowInfo("1");
+        //            } else {
+        //                adverseReaction.setShowInfo("0");
+        //            }
+        //        }
+        //        retMap.put("adverseReactions", adverseReactionList);
+
+
         return retMap;
     }
 

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

@@ -680,7 +680,7 @@
                                 AND t2.is_deleted = 'N'
                                 AND t3.is_deleted = 'N'
                                 AND t6.is_deleted = 'N'
-                                AND t1.lib_type = 13
+                                AND t1.lib_type = 12
                                 AND (
                                     t2.spell LIKE CONCAT('%', UPPER(#{InputStr}), '%')
                                     OR t2. NAME LIKE CONCAT('%',(#{InputStr}), '%')
@@ -874,7 +874,7 @@
                     (
                         SELECT
                             b2.id conceptId,
-                            b2.lib_name `name`,
+                            CONCAT(b1.parentName,'(',b1.selfName,')') `name`,
                             41 AS orderNo,
                             b1.retrievalName retrievalName,
                             b1.showType + 20 showType,
@@ -931,7 +931,7 @@
                     (
                         SELECT
                             b2.id conceptId,
-                            b2.lib_name `name`,
+                            CONCAT(b1.parentName,'(',b1.selfName,')') `name`,
                             42 AS orderNo,
                             b1.retrievalName retrievalName,
                             b1.showType + 20 showType,
@@ -988,7 +988,7 @@
                     (
                         SELECT
                             b2.id conceptId,
-                            b2.lib_name `name`,
+                            CONCAT(b1.parentName,'(',b1.selfName,')') `name`,
                             43 AS orderNo,
                             b1.retrievalName retrievalName,
                             b1.showType + 20 showType,

+ 5 - 0
bi-service/pom.xml

@@ -154,6 +154,11 @@
             <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>io.github.lvyahui8</groupId>
+            <artifactId>spring-boot-data-aggregator-starter</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 31 - 0
bi-service/src/main/java/com/diagbot/aggregate/BiAggregate.java

@@ -0,0 +1,31 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.util.ListUtil;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/10/16 13:37
+ */
+@Component
+public class BiAggregate {
+    @DataProvider("biAll")
+    public List<BIItemDTO> biAll(
+            @DataConsumer("conceptDetailBI") List<BIItemDTO> biItemDTOListA,
+            @DataConsumer("queryLibTypeCou") List<BIItemDTO> biItemDTOListB,
+            @DataConsumer("precGetCount") List<BIItemDTO> biItemDTOListC,
+            @DataConsumer("neoStatistics") List<BIItemDTO> biItemDTOListD) {
+        List<BIItemDTO> res = ListUtil.newArrayList();
+        res.addAll(biItemDTOListA);
+        res.addAll(biItemDTOListB);
+        res.addAll(biItemDTOListC);
+        res.addAll(biItemDTOListD);
+        return res;
+    }
+}

+ 43 - 0
bi-service/src/main/java/com/diagbot/aggregate/KnowledgemanAgg.java

@@ -0,0 +1,43 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.client.KnowledgemanServiceClient;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/10/16 13:29
+ */
+@Component
+public class KnowledgemanAgg {
+    @Autowired
+    private KnowledgemanServiceClient knowledgemanServiceClient;
+
+    @DataProvider("conceptDetailBI")
+    public List<BIItemDTO> conceptDetailBI(){
+        List<BIItemDTO> biItemDTOList = Lists.newLinkedList();
+        RespDTO<List<BIItemDTO>> cdResp = knowledgemanServiceClient.conceptDetailBI();
+        if (RespDTOUtil.respIsOK(cdResp)) {
+            biItemDTOList.addAll(cdResp.data);
+        }
+        return biItemDTOList;
+    }
+
+    @DataProvider("queryLibTypeCou")
+    public List<BIItemDTO> queryLibTypeCou(){
+        List<BIItemDTO> biItemDTOList = Lists.newLinkedList();
+        RespDTO<List<BIItemDTO>> conceptResp = knowledgemanServiceClient.queryLibTypeCou();
+        if (RespDTOUtil.respIsOK(conceptResp)) {
+            biItemDTOList.addAll(conceptResp.data);
+        }
+        return biItemDTOList;
+    }
+}

+ 49 - 0
bi-service/src/main/java/com/diagbot/aggregate/NeoAgg.java

@@ -0,0 +1,49 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.client.NeoServiceClient;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/17 10:26
+ */
+@Component
+public class NeoAgg {
+    @Autowired
+    private NeoServiceClient neoServiceClient;
+
+    @DataProvider("neoStatistics")
+    public List<BIItemDTO> neoStatistics() {
+        List<BIItemDTO> biItemDTOList = neoServiceClient.neoStatistics();
+        if (ListUtil.isEmpty(biItemDTOList)) {
+            BIItemDTO disease = new BIItemDTO();
+            disease.setModuleName("疾病");
+            disease.setItemName("图谱推送的疾病");
+            disease.setCount(0);
+            biItemDTOList.add(disease);
+
+            BIItemDTO diseaseForChild = new BIItemDTO();
+            diseaseForChild.setModuleName("疾病");
+            diseaseForChild.setItemName("图谱推送的儿科疾病");
+            diseaseForChild.setCount(0);
+            biItemDTOList.add(diseaseForChild);
+
+            BIItemDTO gauge = new BIItemDTO();
+            gauge.setModuleName("量表");
+            gauge.setItemName("量表总数");
+            gauge.setCount(0);
+            biItemDTOList.add(diseaseForChild);
+        }
+        return biItemDTOList;
+    }
+}

+ 32 - 0
bi-service/src/main/java/com/diagbot/aggregate/PrecmanAgg.java

@@ -0,0 +1,32 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.client.PrecmanServiceClient;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/10/16 13:35
+ */
+@Component
+public class PrecmanAgg {
+    @Autowired
+    private PrecmanServiceClient precmanServiceClient;
+    @DataProvider("precGetCount")
+    public List<BIItemDTO> precGetCount(){
+        List<BIItemDTO> biItemDTOList = Lists.newLinkedList();
+        RespDTO<BIItemDTO> precResp = precmanServiceClient.getCount();
+        if (RespDTOUtil.respIsOK(precResp)) {
+            biItemDTOList.add(precResp.data);
+        }
+        return biItemDTOList;
+    }
+}

+ 14 - 0
bi-service/src/main/java/com/diagbot/client/IcssmanServiceClient.java

@@ -0,0 +1,14 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.IcssmanServiceHystrix;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * @Description: 调用ICSS后台
+ * @author: gaodm
+ * @time: 2019/10/15 11:08
+ */
+@FeignClient(value = "icssman-service", fallback = IcssmanServiceHystrix.class)
+public interface IcssmanServiceClient {
+
+}

+ 24 - 0
bi-service/src/main/java/com/diagbot/client/KnowledgemanServiceClient.java

@@ -0,0 +1,24 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.KnowledgemanServiceHystrix;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.PrecCountDTO;
+import com.diagbot.dto.RespDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+/**
+ * @Description: 调用知识库后台
+ * @author: gaodm
+ * @time: 2019/10/15 11:08
+ */
+@FeignClient(value = "knowledgeman-service", fallback = KnowledgemanServiceHystrix.class)
+public interface KnowledgemanServiceClient {
+    @PostMapping("/conceptDetail/conceptDetailBI")
+    RespDTO<List<BIItemDTO>> conceptDetailBI();
+
+    @PostMapping("/concept/queryLibTypeCou")
+    RespDTO<List<BIItemDTO>> queryLibTypeCou();
+}

+ 19 - 0
bi-service/src/main/java/com/diagbot/client/NeoServiceClient.java

@@ -0,0 +1,19 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.NeoServiceHystrix;
+import com.diagbot.dto.BIItemDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+/**
+ * @Description:图谱服务
+ * @Author:zhaops
+ * @time: 2019/10/17 10:21
+ */
+@FeignClient(name = "neo", url = "${neo.server.address}", fallback = NeoServiceHystrix.class)
+public interface NeoServiceClient {
+    @PostMapping("/knowledge/neoStatistics")
+    List<BIItemDTO> neoStatistics();
+}

+ 19 - 0
bi-service/src/main/java/com/diagbot/client/PrecmanServiceClient.java

@@ -0,0 +1,19 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.PrecmanServiceHystrix;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.RespDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @Description: 调用智能预问诊后台
+ * @author: gaodm
+ * @time: 2019/10/15 11:08
+ */
+@FeignClient(value = "precman-service", fallback = PrecmanServiceHystrix.class)
+public interface PrecmanServiceClient {
+
+    @PostMapping("/count_prec/getCount")
+    RespDTO<BIItemDTO> getCount();
+}

+ 16 - 0
bi-service/src/main/java/com/diagbot/client/hystrix/IcssmanServiceHystrix.java

@@ -0,0 +1,16 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.IcssmanServiceClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 调用ICSS后台
+ * @author: gaodm
+ * @time: 2019/10/15 11:08
+ */
+@Component
+@Slf4j
+public class IcssmanServiceHystrix implements IcssmanServiceClient {
+
+}

+ 31 - 0
bi-service/src/main/java/com/diagbot/client/hystrix/KnowledgemanServiceHystrix.java

@@ -0,0 +1,31 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.KnowledgemanServiceClient;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.PrecCountDTO;
+import com.diagbot.dto.RespDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description: 调用知识库后台
+ * @author: gaodm
+ * @time: 2019/10/15 11:08
+ */
+@Component
+@Slf4j
+public class KnowledgemanServiceHystrix implements KnowledgemanServiceClient {
+    @Override
+    public RespDTO<List<BIItemDTO>> conceptDetailBI() {
+        log.error("【hystrix】调用{}异常", "conceptDetailBI");
+        return null;
+    }
+
+    @Override
+    public RespDTO<List<BIItemDTO>> queryLibTypeCou() {
+        log.error("【hystrix】调用{}异常", "queryLibTypeCou");
+        return null;
+    }
+}

+ 24 - 0
bi-service/src/main/java/com/diagbot/client/hystrix/NeoServiceHystrix.java

@@ -0,0 +1,24 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.NeoServiceClient;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.RespDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:图谱服务
+ * @Author:zhaops
+ * @time: 2019/10/17 10:21
+ */
+@Component
+@Slf4j
+public class NeoServiceHystrix implements NeoServiceClient {
+    @Override
+    public List<BIItemDTO> neoStatistics() {
+        log.error("【hystrix】调用{}异常", "neoStatistics");
+        return null;
+    }
+}

+ 23 - 0
bi-service/src/main/java/com/diagbot/client/hystrix/PrecmanServiceHystrix.java

@@ -0,0 +1,23 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.PrecmanServiceClient;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.RespDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 调用智能预问诊后台
+ * @author: gaodm
+ * @time: 2019/10/15 11:08
+ */
+@Component
+@Slf4j
+public class PrecmanServiceHystrix implements PrecmanServiceClient {
+
+    @Override
+    public RespDTO<BIItemDTO> getCount() {
+        log.error("【hystrix】调用{}异常", "getCount");
+        return null;
+    }
+}

+ 0 - 1
bi-service/src/main/java/com/diagbot/client/hystrix/UserServiceHystrix.java

@@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import java.util.List;
 import java.util.Map;
 
-
 /**
  * @Description: 调用用户服务
  * @author: gaodm

+ 28 - 0
bi-service/src/main/java/com/diagbot/dto/BIDTO.java

@@ -0,0 +1,28 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 16:30
+ */
+@Getter
+@Setter
+public class BIDTO {
+    private BIModuleDTO diagnose;
+    private BIModuleDTO symptom;
+    private BIModuleDTO vital;
+    private BIModuleDTO lis;
+    private BIModuleDTO pacs;
+    private BIModuleDTO drug;
+    private BIModuleDTO operation;
+    private BIModuleDTO gauge;
+    private BIModuleDTO prec;
+    private BIModuleDTO treat;
+    private BIModuleDTO conceptDetail;
+    private Date gmtOperate;
+}

+ 17 - 0
bi-service/src/main/java/com/diagbot/dto/BIItemDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 15:32
+ */
+@Getter
+@Setter
+public class BIItemDTO {
+    private String moduleName;
+    private String itemName;
+    private Integer count;
+}

+ 18 - 0
bi-service/src/main/java/com/diagbot/dto/BIModuleDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 16:30
+ */
+@Getter
+@Setter
+public class BIModuleDTO {
+    private String moduleName;
+    private List<BIItemDTO> items;
+}

+ 18 - 0
bi-service/src/main/java/com/diagbot/dto/PrecCountDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @description: 返回预问诊统计内容
+ * @author: zhoutg
+ * @date: 2019/10/15 14:22
+ */
+@Getter
+@Setter
+public class PrecCountDTO {
+
+    @ApiModelProperty(value = "症状数量")
+    private int symptomNum;
+}

+ 64 - 0
bi-service/src/main/java/com/diagbot/enums/StatisticsDetailTypeEnum.java

@@ -0,0 +1,64 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/22 10:23
+ */
+public enum StatisticsDetailTypeEnum implements KeyedNamed {
+    DiseaseCount(1, "疾病总数"),
+    NeoDiseaseCount(2, "图谱推送的疾病"),
+    NeoPediatricDiseaseCount(3, "图谱推送的儿科疾病"),
+    SymptomCount(4, "症状标准词"),
+    VitalResultCount(5, "体征结果"),
+    VitalIndexCount(6, "体征指标"),
+    LisPackageCount(7, "化验套餐"),
+    LisDetailCount(8, "化验明细"),
+    PacsItemCount(9, "辅检项目"),
+    DrugCount(10, "药品通用名"),
+    OperationCount(11, "手术项目"),
+    GaugeCount(12, "量表总数"),
+    PrecSymptomCount(13, "预问诊症状条目"),
+    TreatCount(14, "治疗数目"),
+    ConceptDetailCount(15, "静态知识总数"),
+    ConceptDetailDiseaseCount(16, "疾病"),
+    LisTableCount(17, "化验公表项");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    StatisticsDetailTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static StatisticsDetailTypeEnum getEnum(int key) {
+        for (StatisticsDetailTypeEnum item : StatisticsDetailTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        StatisticsDetailTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 58 - 0
bi-service/src/main/java/com/diagbot/enums/StatisticsTypeEnum.java

@@ -0,0 +1,58 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 17:00
+ */
+public enum StatisticsTypeEnum implements KeyedNamed {
+    DIAGNOSE(1, "疾病"),
+    SYMPTOM(2, "症状"),
+    VITAL(3, "体征"),
+    LIS(4, "化验"),
+    PACS(5, "辅检"),
+    DRUG(6, "药品"),
+    OPERATION(7, "手术"),
+    GAUGE(8, "量表"),
+    PREC(9, "智能预问诊"),
+    TREAT(10, "治疗"),
+    CONCEPT_DETAIL(11, "静态知识");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    StatisticsTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static StatisticsTypeEnum getEnum(int key) {
+        for (StatisticsTypeEnum item : StatisticsTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        StatisticsTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 243 - 0
bi-service/src/main/java/com/diagbot/facade/StatisticsFacade.java

@@ -0,0 +1,243 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.BIDTO;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.BIModuleDTO;
+import com.diagbot.enums.StatisticsDetailTypeEnum;
+import com.diagbot.enums.StatisticsTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 16:23
+ */
+@Component
+public class StatisticsFacade {
+    @Autowired
+    DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
+
+    public BIDTO count() {
+        BIDTO bidto = new BIDTO();
+        List<BIItemDTO> biItemDTOList = ListUtil.newArrayList();
+        try {
+            biItemDTOList
+                    = dataBeanAggregateQueryFacade.get("biAll", null, List.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+        }
+
+        Map<String, List<BIItemDTO>> map = EntityUtil.makeEntityListMap(biItemDTOList, "moduleName");
+        bidto.setDiagnose(getBIModuleDTO(map, StatisticsTypeEnum.DIAGNOSE.getKey()));
+        bidto.setSymptom(getBIModuleDTO(map, StatisticsTypeEnum.SYMPTOM.getKey()));
+        bidto.setVital(getBIModuleDTO(map, StatisticsTypeEnum.VITAL.getKey()));
+        bidto.setLis(getBIModuleDTO(map, StatisticsTypeEnum.LIS.getKey()));
+        bidto.setPacs(getBIModuleDTO(map, StatisticsTypeEnum.PACS.getKey()));
+        bidto.setDrug(getBIModuleDTO(map, StatisticsTypeEnum.DRUG.getKey()));
+        bidto.setOperation(getBIModuleDTO(map, StatisticsTypeEnum.OPERATION.getKey()));
+        bidto.setGauge(getBIModuleDTO(map, StatisticsTypeEnum.GAUGE.getKey()));
+        bidto.setPrec(getBIModuleDTO(map, StatisticsTypeEnum.PREC.getKey()));
+        bidto.setTreat(getBIModuleDTO(map, StatisticsTypeEnum.TREAT.getKey()));
+        bidto.setConceptDetail(getBIModuleDTO(map, StatisticsTypeEnum.CONCEPT_DETAIL.getKey()));
+        bidto.setGmtOperate(DateUtil.now());
+
+        return bidto;
+    }
+
+    public BIModuleDTO getBIModuleDTO(Map<String, List<BIItemDTO>> map, Integer key) {
+        BIModuleDTO biModuleDTO = new BIModuleDTO();
+        List<BIItemDTO> queryItemList = Lists.newLinkedList();
+        Map<String, BIItemDTO> biItemMap = new LinkedHashMap<>();
+        if (map.get(StatisticsTypeEnum.getName(key)) != null) {
+            List<BIItemDTO> biItemDTOList = map.get(StatisticsTypeEnum.getName(key));
+            biItemMap = EntityUtil.makeEntityMap(biItemDTOList, "itemName");
+        }
+        switch (StatisticsTypeEnum.getEnum(key)) {
+            case DIAGNOSE:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DiseaseCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DiseaseCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.DIAGNOSE.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DiseaseCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.NeoDiseaseCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.NeoDiseaseCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.DIAGNOSE.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.NeoDiseaseCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.NeoPediatricDiseaseCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.NeoPediatricDiseaseCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.DIAGNOSE.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.NeoPediatricDiseaseCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case SYMPTOM:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.SymptomCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.SymptomCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.SYMPTOM.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.SymptomCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case VITAL:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.VitalResultCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.VitalResultCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.VITAL.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.VitalResultCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.VitalIndexCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.VitalIndexCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.VITAL.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.VitalIndexCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case LIS:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisPackageCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisPackageCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.LIS.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisPackageCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisDetailCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisDetailCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.LIS.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisDetailCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case PACS:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PacsItemCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PacsItemCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.PACS.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PacsItemCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case DRUG:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DrugCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DrugCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.DRUG.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DrugCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case OPERATION:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.OperationCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.OperationCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.OPERATION.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.OperationCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case GAUGE:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.GaugeCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.GaugeCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.GAUGE.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.GaugeCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case PREC:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PrecSymptomCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PrecSymptomCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.PREC.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PrecSymptomCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case TREAT:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.TreatCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.TreatCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.TREAT.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.TreatCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            case CONCEPT_DETAIL:
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.ConceptDetailCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.ConceptDetailCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.CONCEPT_DETAIL.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.ConceptDetailCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.ConceptDetailDiseaseCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.ConceptDetailDiseaseCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.CONCEPT_DETAIL.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.ConceptDetailDiseaseCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisTableCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisTableCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.CONCEPT_DETAIL.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.LisTableCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PacsItemCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PacsItemCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.CONCEPT_DETAIL.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.PacsItemCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                if (biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DrugCount.getKey())) != null) {
+                    queryItemList.add(biItemMap.get(StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DrugCount.getKey())));
+                } else {
+                    BIItemDTO biItemDTO = getItem(StatisticsTypeEnum.getName(StatisticsTypeEnum.CONCEPT_DETAIL.getKey()),
+                            StatisticsDetailTypeEnum.getName(StatisticsDetailTypeEnum.DrugCount.getKey()), 0);
+                    queryItemList.add(biItemDTO);
+                }
+                break;
+            default:
+                biModuleDTO = null;
+                break;
+
+        }
+        if (biModuleDTO != null) {
+            biModuleDTO.setModuleName(StatisticsTypeEnum.getName(key));
+            biModuleDTO.setItems(queryItemList);
+        }
+        return biModuleDTO;
+    }
+
+
+    public BIItemDTO getItem(String moduleName, String itemName, Integer count) {
+        BIItemDTO biItemDTO = new BIItemDTO();
+        biItemDTO.setModuleName(moduleName);
+        biItemDTO.setItemName(itemName);
+        biItemDTO.setCount(count);
+        return biItemDTO;
+    }
+}

+ 34 - 0
bi-service/src/main/java/com/diagbot/web/StatisticsController.java

@@ -0,0 +1,34 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.BIDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.StatisticsFacade;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 17:33
+ */
+@RestController
+@RequestMapping("/statistics")
+@SuppressWarnings("unchecked")
+@Api(value = "BI-统计相关API", tags = { "BI-统计相关API" })
+public class StatisticsController {
+    @Autowired
+    StatisticsFacade statisticsFacade;
+
+    @ApiOperation(value = "数据统计[by:zhaops]", notes = "")
+    @PostMapping("/count")
+    @SysLogger("count")
+    public RespDTO<BIDTO> count() {
+        BIDTO data = statisticsFacade.count();
+        return RespDTO.onSuc(data);
+    }
+}

+ 0 - 110
bi-service/src/main/java/com/diagbot/web/SysLogController.java

@@ -1,110 +0,0 @@
-package com.diagbot.web;
-
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.SysLog;
-import com.diagbot.facade.SysLogFacade;
-import com.diagbot.vo.SysLogVo;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-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.Date;
-
-/**
- * @Description: 日志操作控制层
- * @author: gaodm
- * @time: 2018/8/30 10:12
- */
-@RestController
-@RequestMapping("/log")
-public class SysLogController {
-
-    @Autowired
-    private SysLogFacade sysLogFacade;
-
-    /**
-     * 新增日志信息
-     *
-     * @param sysLogVo 新增日志输入参数
-     * @return 新增日志是否成功
-     */
-    @ApiOperation(value = "添加日志", notes = "添加日志")
-    @PostMapping("/add")
-    @SysLogger("postLog")
-    public RespDTO add(@RequestBody SysLogVo sysLogVo) {
-        //初始化新增日志信息
-        SysLog sysLog = new SysLog();
-        sysLog.setGmtCreate(new Date());
-        sysLog.setIp(sysLogVo.getIp());
-        sysLog.setMethod(sysLogVo.getMethod());
-        sysLog.setOperation(sysLogVo.getOperation());
-        sysLog.setParams(sysLogVo.getParams());
-        return RespDTO.onSuc(sysLogFacade.save(sysLog) ? "添加成功" : "添加失败");
-    }
-
-    /**
-     * 删除日志
-     *
-     * @param id 日志信息ID
-     * @return 删除是否成功
-     */
-    @ApiOperation(value = "删除日志", notes = "删除日志")
-    @DeleteMapping("/delete/{id}")
-    @SysLogger("deleteLog")
-    public RespDTO delete(@PathVariable(value = "id") Integer id) {
-        return RespDTO.onSuc(sysLogFacade.removeById(id) ? "删除成功" : "删除失败");
-    }
-
-    /**
-     * 修改日志
-     *
-     * @param sysLog 修改日志输入参数
-     * @return 修改是否成功
-     */
-    @ApiOperation(value = "修改日志", notes = "修改日志")
-    @PostMapping("/update")
-    @SysLogger("updateLog")
-    public RespDTO update(@RequestBody SysLog sysLog) {
-        return RespDTO.onSuc(sysLogFacade.updateById(sysLog) ? "修改成功" : "修改失败");
-    }
-
-    /**
-     * 获取日志列表
-     *
-     * @return 日志列信息
-     */
-    @ApiOperation(value = "获取日志列表", notes = "获取日志列表")
-    @GetMapping("/list")
-    @SysLogger("listLog")
-    public RespDTO list() {
-        Wrapper<SysLog> wrapper = new QueryWrapper<>();
-        return RespDTO.onSuc(sysLogFacade.list(wrapper));
-    }
-
-    /**
-     * 获取日志翻页信息
-     *
-     * @return 日志翻页信息
-     */
-    @ApiOperation(value = "获取日志翻页信息", notes = "获取日志翻页信息")
-    @GetMapping("/page")
-    @SysLogger("pageLog")
-    public RespDTO page() {
-        //初始化日志翻页参数
-        IPage<SysLog> wrapper = new Page<>();
-        return RespDTO.onSuc(sysLogFacade.page(wrapper, null));
-    }
-}
-

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

@@ -13,7 +13,7 @@ public enum ProductTypeEnum implements KeyedNamed {
     DIAGBOTCLOUD_OUTER(2, "云平台外部"),
     ICSS(3, "ICSS"),
     TRIAGE(4, "智能分诊"),
-    DATA(5, "数据服务模式"),
+    DATA(5, "页面推送模式"),
     PREC(6, "智能预问诊");
     @Setter
     private int key;

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

@@ -95,3 +95,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate
+
+neo:
+  server:
+    address: http://192.168.2.234:5004

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

@@ -95,3 +95,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate
+
+neo:
+  server:
+    address: http://192.168.2.234:5004

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

@@ -95,3 +95,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate
+
+neo:
+  server:
+    address: http://192.168.2.234:5004

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

@@ -95,3 +95,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate
+
+neo:
+  server:
+    address: http://192.168.2.241:5004

+ 7 - 0
docs/019.20191011数据服务模式医学知识和量表搜索/init_tran.sql

@@ -0,0 +1,7 @@
+use `sys-tran`;
+-- INSERT INTO `sys-tran`.`tran_sys_set` (`hospital_code`, `plan`, `sys_type`, `name`, `code`, `value`, `remark`) VALUES ('A001', '0', '11', '是否同时对接预问诊', 'connect_prec', '1', '是否同时对接预问诊(0-不对接,1-对接)');
+
+insert into `tran_sys_set` ( `hospital_code`, `plan`, `sys_type`, `name`, `code`, `value`, `remark`) values('A001','0','16','医学知识','knowledge_show','1','是否显示(1是,0否)');
+insert into `tran_sys_set` (`hospital_code`, `plan`, `sys_type`, `name`, `code`, `value`, `remark`) values('A001','0','16','医学知识','knowledge_no','9','显示顺序');
+insert into `tran_sys_set` (`hospital_code`, `plan`, `sys_type`, `name`, `code`, `value`, `remark`) values('A001','0','16','全部量表','scale_show','1','是否显示(1是,0否)');
+insert into `tran_sys_set` (`hospital_code`, `plan`, `sys_type`, `name`, `code`, `value`, `remark`) values('A001','0','16','全部量表','scale_no','10','显示顺序');

Datei-Diff unterdrückt, da er zu groß ist
+ 1049 - 0
docs/020.20191016BI数据统计/init_user.sql


+ 183 - 0
icss-service/src/main/java/com/diagbot/aggregate/InquiryInfoAggregate.java

@@ -0,0 +1,183 @@
+package com.diagbot.aggregate;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.TranServiceClient;
+import com.diagbot.dto.HisInquiryDTO;
+import com.diagbot.dto.HisInquirysForDjDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.DoctorInfo;
+import com.diagbot.entity.HospitalDept;
+import com.diagbot.entity.InquiryDetail;
+import com.diagbot.entity.InquiryInfo;
+import com.diagbot.entity.PatientInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.SexTypeEnum;
+import com.diagbot.facade.InquiryDetailFacade;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2019/10/23 10:18
+ */
+@Component
+public class InquiryInfoAggregate {
+
+    @Autowired
+    private TranServiceClient tranServiceClient;
+    @Autowired
+    private InquiryDetailFacade inquiryDetailFacade;
+
+    /**
+     * 历史病历列表-添加详情
+     *
+     * @param inquiryInfoList  病历集合
+     * @param hospitalDeptMap  科室信息
+     * @param doctorInfoMap    医生信息
+     * @param patientInfoMap   患者信息
+     * @param inquiryDetailMap 病历明细信息
+     * @return
+     */
+    @DataProvider("hisInquirysAddDetail")
+    public List<HisInquiryDTO> hisInquirysAddDetail(
+            @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList,
+            @DataConsumer("hospitalDeptInfoMapByIds") Map<Long, HospitalDept> hospitalDeptMap,
+            @DataConsumer("doctorInfoMapByIds") Map<Long, DoctorInfo> doctorInfoMap,
+            @DataConsumer("patientInfoMapByIds") Map<Long, PatientInfo> patientInfoMap,
+            @DataConsumer("getDetailsByInquryIds") Map<Long, List<InquiryDetail>> inquiryDetailMap) {
+
+        List<HisInquiryDTO> hisInquiryDTOList = new ArrayList<>();
+        inquiryInfoList.forEach(i -> {
+            HisInquiryDTO hisInquiryDTO = new HisInquiryDTO();
+            BeanUtil.copyProperties(i, hisInquiryDTO);
+            hisInquiryDTO.setInquiryDate(i.getGmtModified());
+            hisInquiryDTO.setInquiryTime(i.getGmtModified());
+            hisInquiryDTO.setHospitalDeptName(
+                    Optional.ofNullable(hospitalDeptMap.get(i.getHospitalDeptId()))
+                            .map(t -> t.getName()).orElse(null)
+            );
+            hisInquiryDTO.setDoctorName(
+                    Optional.ofNullable(doctorInfoMap.get(i.getDoctorId())).map(t -> t.getName()).orElse(null)
+            );
+            PatientInfo patientInfo = patientInfoMap.get(i.getPatientId());
+            if (patientInfo != null) {
+                hisInquiryDTO.setPatientName(patientInfo.getName());
+                hisInquiryDTO.setPatientIdNo(patientInfo.getIdNo());
+                hisInquiryDTO.setPatientSex(SexTypeEnum.getName(patientInfo.getSex()));
+                hisInquiryDTO.setPatientAge(DateUtil.yearCompare(patientInfo.getBirthday(), DateUtil.now()));
+            }
+
+            hisInquiryDTO.setDetailList(inquiryDetailMap.get(i.getId()));
+            hisInquiryDTOList.add(hisInquiryDTO);
+        });
+
+        return hisInquiryDTOList;
+    }
+
+    /**
+     * 获取科室信息map
+     *
+     * @param inquiryInfoList 病历集合
+     * @return 科室信息
+     */
+    @DataProvider("hospitalDeptInfoMapByIds")
+    public Map<Long, HospitalDept> hospitalDeptInfoMapByIds(
+            @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
+        List<Long> hospitalDeptIdList = inquiryInfoList.stream()
+                .map(i -> i.getHospitalDeptId()).distinct().collect(Collectors.toList());
+        RespDTO<Map<Long, HospitalDept>> retData = tranServiceClient.hospitalDeptInfoMapByIds(hospitalDeptIdList);
+        RespDTOUtil.respNGDeal(retData, "获取科室信息失败");
+        return retData.data;
+    }
+
+    /**
+     * 获取医生信息map
+     *
+     * @param inquiryInfoList 病历集合
+     * @return 医生信息
+     */
+    @DataProvider("doctorInfoMapByIds")
+    public Map<Long, DoctorInfo> doctorInfoMapByIds(
+            @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
+        List<Long> doctorIdList = inquiryInfoList.stream()
+                .map(i -> i.getDoctorId()).distinct().collect(Collectors.toList());
+        RespDTO<Map<Long, DoctorInfo>> retData = tranServiceClient.doctorInfoMapByIds(doctorIdList);
+        RespDTOUtil.respNGDealCover(retData, "获取医生信息失败");
+        return retData.data;
+    }
+
+    /**
+     * 获取病人信息map
+     *
+     * @param inquiryInfoList 病历集合
+     * @return 病人信息
+     */
+    @DataProvider("patientInfoMapByIds")
+    public Map<Long, PatientInfo> patientInfoMapByIds(
+            @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
+        List<Long> patientIdList = inquiryInfoList.stream()
+                .map(i -> i.getPatientId()).distinct().collect(Collectors.toList());
+        RespDTO<Map<Long, PatientInfo>> retData = tranServiceClient.patientInfoMapByIds(patientIdList);
+        RespDTOUtil.respNGDealCover(retData, "获取患者信息失败");
+        return retData.data;
+    }
+
+    /**
+     * 获取病历明细map
+     *
+     * @param inquiryInfoList 病历集合
+     * @return 病历明细
+     */
+    @DataProvider("getDetailsByInquryIds")
+    public Map<Long, List<InquiryDetail>> getDetailsByInquryIds(
+            @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
+        List<Long> inquiryIdList = inquiryInfoList.stream()
+                .map(i -> i.getId()).distinct().collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(inquiryIdList)) {
+            QueryWrapper<InquiryDetail> queryWrapper = new QueryWrapper<InquiryDetail>();
+            queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("inquiry_id", inquiryIdList);
+            List<InquiryDetail> inquiryDetails = inquiryDetailFacade.list(queryWrapper);
+            return inquiryDetails.stream().collect(Collectors.groupingBy(InquiryDetail::getInquiryId));
+        }
+        return new HashMap<>();
+    }
+
+    /**
+     * 对接-历史病历列表-添加详情
+     *
+     * @param inquiryInfoList
+     * @param inquiryDetailMap
+     * @return
+     */
+    @DataProvider("hisInquirysForDjAddDetail")
+    public List<HisInquirysForDjDTO> hisInquirysForDjAddDetail(
+            @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList,
+            @DataConsumer("getDetailsByInquryIds") Map<Long, List<InquiryDetail>> inquiryDetailMap) {
+        List<HisInquirysForDjDTO> hisInquirysForDjDTOList = BeanUtil.listCopyTo(
+                inquiryInfoList, HisInquirysForDjDTO.class);
+
+        hisInquirysForDjDTOList.forEach(i -> {
+            i.setContentList(inquiryDetailMap.get(i.getId()).stream()
+                    .map(k -> k.getContentValue()).collect(Collectors.toList()));
+        });
+        return hisInquirysForDjDTOList;
+    }
+
+
+}

+ 5 - 2
icss-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java

@@ -115,8 +115,11 @@ public class PushItemAggregate {
     public List<QuestionPushDTO> setVitalModule(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
                                                 @InvokeParameter("data") PushDTO data,
                                                 @InvokeParameter("pushVO") PushVO pushVO) {
-        ConceptPushDTO dept = data.getDept();
-        List<QuestionPushDTO> moduleVitalDTO = getVitalModule(dept, pushVO);
+        List<QuestionPushDTO> moduleVitalDTO = Lists.newLinkedList();
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.VitalModule.getKey()))) {
+            ConceptPushDTO dept = data.getDept();
+            moduleVitalDTO = getVitalModule(dept, pushVO);
+        }
         return moduleVitalDTO;
     }
 

+ 0 - 14
icss-service/src/main/java/com/diagbot/facade/DoctorInfoFacade.java

@@ -3,14 +3,12 @@ package com.diagbot.facade;
 import com.diagbot.client.TranServiceClient;
 import com.diagbot.dto.DoctorInfoDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.DoctorInfo;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.vo.DoctorInfoVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @Description:
@@ -34,16 +32,4 @@ public class DoctorInfoFacade {
         return doctorInfoDTOList.data;
     }
 
-    /**
-     * 根据ids获取医生信息map
-     *
-     * @param ids 医生ids
-     * @return 医生信息
-     */
-    public Map<Long, DoctorInfo> doctorInfoMapByIds(List<Long> ids) {
-        RespDTO<Map<Long, DoctorInfo>> retData = tranServiceClient.doctorInfoMapByIds(ids);
-        RespDTOUtil.respNGDealCover(retData, "获取医生信息失败");
-        return retData.data;
-    }
-
 }

+ 0 - 24
icss-service/src/main/java/com/diagbot/facade/HospitalDeptFacade.java

@@ -1,16 +1,7 @@
 package com.diagbot.facade;
 
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import com.diagbot.client.TranServiceClient;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.HospitalDept;
-import com.diagbot.util.RespDTOUtil;
-
 /**
  * @author rgb
  * @Description
@@ -19,19 +10,4 @@ import com.diagbot.util.RespDTOUtil;
 @Component
 public class HospitalDeptFacade {
 
-    @Autowired
-    private TranServiceClient tranServiceClient;
-
-    /**
-     * 根据ids获取科室信息map
-     *
-     * @param ids 科室ids
-     * @return 科室信息
-     */
-    public Map<Long, HospitalDept> hospitalDeptInfoMapByIds(List<Long> ids) {
-        RespDTO<Map<Long, HospitalDept>> retData = tranServiceClient.hospitalDeptInfoMapByIds(ids);
-        RespDTOUtil.respNGDeal(retData,"获取科室信息失败");
-        return retData.data;
-    }
-
 }

+ 3 - 26
icss-service/src/main/java/com/diagbot/facade/InquiryDetailFacade.java

@@ -1,17 +1,12 @@
 package com.diagbot.facade;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import com.diagbot.util.ListUtil;
-import org.springframework.stereotype.Component;
-
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.InquiryDetailServiceImpl;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
 
 /**
  * @author rengb
@@ -45,22 +40,4 @@ public class InquiryDetailFacade extends InquiryDetailServiceImpl {
         return this.list(queryWrapper);
     }
 
-    /**
-     * 根据病历id集合获取病历明细
-     *
-     * @param inquiryIds
-     * @return
-     */
-    public Map<Long, List<InquiryDetail>> getDetailsByInquryIds(List<Long> inquiryIds) {
-        if (ListUtil.isNotEmpty(inquiryIds)){
-            QueryWrapper<InquiryDetail> queryWrapper = new QueryWrapper<InquiryDetail>();
-            queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .in("inquiry_id", inquiryIds);
-            List<InquiryDetail> inquiryDetails = this.list(queryWrapper);
-            return inquiryDetails.stream().collect(Collectors.groupingBy(InquiryDetail::getInquiryId));
-        }
-        return new HashMap<>();
-    }
-
-
 }

+ 21 - 55
icss-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -18,16 +18,12 @@ import com.diagbot.dto.ReadInquiryDTO;
 import com.diagbot.dto.ReadInquiryDrugDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SaveInquiryDTO;
-import com.diagbot.entity.DoctorInfo;
-import com.diagbot.entity.HospitalDept;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.entity.InquiryDrug;
 import com.diagbot.entity.InquiryEvaluation;
 import com.diagbot.entity.InquiryInfo;
 import com.diagbot.entity.InquiryScale;
-import com.diagbot.entity.PatientInfo;
 import com.diagbot.enums.IsDeleteEnum;
-import com.diagbot.enums.SexTypeEnum;
 import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -55,6 +51,7 @@ import com.diagbot.vo.PatientInfoVO;
 import com.diagbot.vo.ReadInquiryVO;
 import com.diagbot.vo.SaveInquiryToHisVO;
 import com.diagbot.vo.SaveInquiryVO;
+import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -66,12 +63,11 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLEncoder;
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -111,6 +107,8 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
     private InquiryScaleService inquiryScaleService;
     @Autowired
     private IndexDataFacade indexDataFacade;
+    @Autowired
+    private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
 
     /**
      * 问诊记录保存
@@ -326,48 +324,18 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         BeanUtil.copyProperties(iPage, hisInquiryDTOPage);
 
         List<InquiryInfo> inquiryInfoList = iPage.getRecords();
-        if (inquiryInfoList.size() == 0) {
+        if (ListUtil.isEmpty(inquiryInfoList)) {
             return null;
         }
 
-        List<Long> hospitalDeptIdList = inquiryInfoList.stream()
-                .map(i -> i.getHospitalDeptId()).distinct().collect(Collectors.toList());
-        List<Long> doctorIdList = inquiryInfoList.stream()
-                .map(i -> i.getDoctorId()).distinct().collect(Collectors.toList());
-        List<Long> patientIdList = inquiryInfoList.stream()
-                .map(i -> i.getPatientId()).distinct().collect(Collectors.toList());
-        List<Long> inquiryIdList = inquiryInfoList.stream()
-                .map(i -> i.getId()).distinct().collect(Collectors.toList());
-
-        Map<Long, HospitalDept> hospitalDeptMap = hospitalDeptFacade.hospitalDeptInfoMapByIds(hospitalDeptIdList);
-        Map<Long, DoctorInfo> doctorInfoMap = doctorInfoFacade.doctorInfoMapByIds(doctorIdList);
-        Map<Long, PatientInfo> patientInfoMap = patientInfoFacade.patientInfoMapByIds(patientIdList);
-        Map<Long, List<InquiryDetail>> inquiryDetailMap = inquiryDetailFacade.getDetailsByInquryIds(inquiryIdList);
-
-        List<HisInquiryDTO> hisInquiryDTOList = new ArrayList<>();
-        inquiryInfoList.forEach(i -> {
-            HisInquiryDTO hisInquiryDTO = new HisInquiryDTO();
-            BeanUtil.copyProperties(i, hisInquiryDTO);
-            hisInquiryDTO.setInquiryDate(i.getGmtModified());
-            hisInquiryDTO.setInquiryTime(i.getGmtModified());
-            hisInquiryDTO.setHospitalDeptName(
-                    Optional.ofNullable(hospitalDeptMap.get(i.getHospitalDeptId()))
-                            .map(t -> t.getName()).orElse(null)
-            );
-            hisInquiryDTO.setDoctorName(
-                    Optional.ofNullable(doctorInfoMap.get(i.getDoctorId())).map(t -> t.getName()).orElse(null)
-            );
-            PatientInfo patientInfo = patientInfoMap.get(i.getPatientId());
-            if (patientInfo != null) {
-                hisInquiryDTO.setPatientName(patientInfo.getName());
-                hisInquiryDTO.setPatientIdNo(patientInfo.getIdNo());
-                hisInquiryDTO.setPatientSex(SexTypeEnum.getName(patientInfo.getSex()));
-                hisInquiryDTO.setPatientAge(DateUtil.yearCompare(patientInfo.getBirthday(), DateUtil.now()));
-            }
-
-            hisInquiryDTO.setDetailList(inquiryDetailMap.get(i.getId()));
-            hisInquiryDTOList.add(hisInquiryDTO);
-        });
+        List<HisInquiryDTO> hisInquiryDTOList = ListUtil.newArrayList();
+        try {
+            hisInquiryDTOList = dataBeanAggregateQueryFacade.get("hisInquirysAddDetail",
+                    Collections.singletonMap("inquiryInfoList",inquiryInfoList),
+                    List.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
         hisInquiryDTOPage.setRecords(hisInquiryDTOList);
         return hisInquiryDTOPage;
@@ -429,20 +397,18 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
             return null;
         }
 
-        Map<Long, List<InquiryDetail>> inquiryDetailMap = inquiryDetailFacade.getDetailsByInquryIds(
-                inquiryInfoList.stream().map(i -> i.getId()).collect(Collectors.toList()));
-        List<HisInquirysForDjDTO> hisInquirysForDjDTOList = BeanUtil.listCopyTo(
-                inquiryInfoList, HisInquirysForDjDTO.class);
-
-        hisInquirysForDjDTOList.forEach(i -> {
-            i.setContentList(inquiryDetailMap.get(i.getId()).stream()
-                    .map(k -> k.getContentValue()).collect(Collectors.toList()));
-        });
+        List<HisInquirysForDjDTO> hisInquirysForDjDTOList = ListUtil.newArrayList();
+        try {
+            hisInquirysForDjDTOList = dataBeanAggregateQueryFacade.get("hisInquirysForDjAddDetail",
+                    Collections.singletonMap("inquiryInfoList",inquiryInfoList),
+                    List.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
         return hisInquirysForDjDTOList;
     }
 
-
     /**
      * 病历详情
      *

+ 0 - 16
icss-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java

@@ -7,7 +7,6 @@ import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.PatientInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DoctorPageMode;
-import com.diagbot.entity.PatientInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.vo.GetTopPatientInfoVO;
@@ -16,9 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
 
-import java.util.List;
-import java.util.Map;
-
 /**
  * @Description: 患者业务逻辑
  * @author: wangyu
@@ -69,16 +65,4 @@ public class PatientInfoFacade {
         return getTopPatientInfoDTO;
     }
 
-    /**
-     * 根据ids获取病人信息
-     *
-     * @param ids 病人ids
-     * @return 病人信息
-     */
-    public Map<Long, PatientInfo> patientInfoMapByIds(List<Long> ids) {
-        RespDTO<Map<Long, PatientInfo>> retData = tranServiceClient.patientInfoMapByIds(ids);
-        RespDTOUtil.respNGDealCover(retData, "获取患者信息失败");
-        return retData.data;
-    }
-
 }

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

@@ -41,6 +41,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/versionInfo/getVersionInfoOuter").permitAll()
                 .antMatchers("/diagnose/initNeo").permitAll()
                 .antMatchers("/lisMapping/getUniqueNameWithList").permitAll()
+                .antMatchers("/conceptDetail/conceptDetailBI").permitAll()
+                .antMatchers("/concept/queryLibTypeCou").permitAll()
                 .antMatchers("/**").authenticated();
 //                .antMatchers("/**").permitAll();
     }

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

@@ -104,6 +104,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/versionInfo/getVersionInfoOuter", request)
                 || matchers("/diagnose/initNeo", request)
                 || matchers("/lisMapping/getUniqueNameWithList", request)
+                || matchers("/conceptDetail/conceptDetailBI", request)
+                || matchers("/concept/queryLibTypeCou", request)
                 || matchers("/", request)) {
             return true;
         }

+ 17 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/BIItemDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 15:32
+ */
+@Getter
+@Setter
+public class BIItemDTO {
+    private String moduleName;
+    private String itemName;
+    private Integer count;
+}

+ 18 - 1
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java

@@ -4,10 +4,12 @@ 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.BIItemDTO;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptIndexDTO;
 import com.diagbot.dto.GetConceptDetailListDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptDetail;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconTypeEnum;
@@ -16,6 +18,7 @@ import com.diagbot.exception.CommonException;
 import com.diagbot.service.ConceptDetailService;
 import com.diagbot.service.impl.ConceptDetailServiceImpl;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.AddConceptDetailVO;
@@ -23,12 +26,15 @@ import com.diagbot.vo.ConceptIndexVO;
 import com.diagbot.vo.GetConceptDetailListVO;
 import com.diagbot.vo.GetConceptDetailVO;
 import com.diagbot.vo.RemoveConceptDetailVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
+import javax.swing.text.html.parser.Entity;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -46,6 +52,8 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
     @Autowired
     @Qualifier("conceptDetailServiceImpl")
     private ConceptDetailService conceptDetailService;
+    @Autowired
+    private ConceptFacade conceptFacade;
 
     /**
      * 获取医学术语命名列表
@@ -165,4 +173,13 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
         return retList;
     }
 
-}
+    /**
+     * 静态知识数量统计
+     *
+     * @return
+     */
+    public List<BIItemDTO> conceptDetailBI() {
+        List<BIItemDTO> retList = conceptDetailService.conDetailCount();
+        return retList;
+    }
+}

+ 14 - 2
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.ICSSManServiceClient;
 import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.GetAllConceptDTO;
@@ -21,6 +22,7 @@ import com.diagbot.entity.Lexicon;
 import com.diagbot.entity.LibraryInfo;
 import com.diagbot.entity.QuestionInfo;
 import com.diagbot.entity.Relation;
+import com.diagbot.entity.ScaleContent;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.DiseaseClassifyEnum;
 import com.diagbot.enums.IsDeleteEnum;
@@ -119,6 +121,8 @@ public class ConceptFacade extends ConceptServiceImpl {
     private LisMappingFacade lisMappingFacade;
     @Autowired
     private ICSSManServiceClient icssManServiceClient;
+    @Autowired
+    private ScaleContentFacade scaleContentFacade;
 
     /**
      * 获取所有化验公表项
@@ -850,8 +854,8 @@ public class ConceptFacade extends ConceptServiceImpl {
                                         sbf.append("第" + count + "行无法导入,导入数据无法为纯数字;").append("<br/>");
                                         break;
                                     }
-                                    if (nm.length() > 30) {
-                                        sbf.append("第" + count + "行导入错误,标准词和同义词最大字数不可超过30个字;").append("<br/>");
+                                    if (nm.length() > 50) {
+                                        sbf.append("第" + count + "行导入错误,标准词和同义词最大字数不可超过50个字;").append("<br/>");
                                         break;
                                     }
                                     AddConceptInfoDetailVO addConceptInfoDetailVO = new AddConceptInfoDetailVO();
@@ -1218,6 +1222,14 @@ public class ConceptFacade extends ConceptServiceImpl {
         }
     }
 
+    /**
+     * 知识库标准化-获取医学数据统计
+     * @return
+     */
+    public List<BIItemDTO> queryLibTypeCou(){
+        return this.baseMapper.queryLibTypeCou();
+    }
+
     /**
      * 根据概念Id列表获取概念列表Map
      *

+ 9 - 1
knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptDetailMapper.java

@@ -2,6 +2,7 @@ package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.GetConceptDetailListDTO;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptIndexDTO;
@@ -32,5 +33,12 @@ public interface ConceptDetailMapper extends BaseMapper<ConceptDetail> {
 	 * @return
 	 */
 	public List<ConceptIndexDTO> index(ConceptIndexVO conceptIndexVO);
-   
+
+	/**
+	 * 统计
+	 *
+	 * @return
+	 */
+	public List<BIItemDTO> conDetailCount();
+
 }

+ 8 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptMapper.java

@@ -2,6 +2,7 @@ package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
@@ -15,6 +16,7 @@ import com.diagbot.vo.IndexLexiconVO;
 import com.diagbot.vo.IndexVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -69,5 +71,11 @@ public interface ConceptMapper extends BaseMapper<Concept> {
      * @return
      */
     List<ConceptBaseDTO> indexByLexicon(IndexLexiconVO indexLexiconVO);
+
+    /**
+     * 知识库标准化-获取医学数据统计
+     * @return
+     */
+    List<BIItemDTO> queryLibTypeCou();
     
 }

+ 8 - 0
knowledgeman-service/src/main/java/com/diagbot/service/ConceptDetailService.java

@@ -1,6 +1,7 @@
 package com.diagbot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptIndexDTO;
 import com.diagbot.entity.ConceptDetail;
@@ -34,4 +35,11 @@ public interface ConceptDetailService extends IService<ConceptDetail> {
      * @return
      */
     public List<ConceptIndexDTO> index(ConceptIndexVO conceptIndexVO);
+
+    /**
+     * 统计
+     *
+     * @return
+     */
+    public List<BIItemDTO> conDetailCount();
 }

+ 12 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/ConceptDetailServiceImpl.java

@@ -1,5 +1,6 @@
 package com.diagbot.service.impl;
 
+import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptIndexDTO;
 import com.diagbot.entity.ConceptDetail;
@@ -33,4 +34,15 @@ public class ConceptDetailServiceImpl extends ServiceImpl<ConceptDetailMapper, C
     public List<ConceptIndexDTO> index(ConceptIndexVO conceptIndexVO) {
         return baseMapper.index(conceptIndexVO);
     }
+
+
+    /**
+     * 统计
+     *
+     * @return
+     */
+    @Override
+    public List<BIItemDTO> conDetailCount() {
+        return baseMapper.conDetailCount();
+    }
 }

+ 9 - 0
knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -2,6 +2,7 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.GetAllConceptDTO;
 import com.diagbot.dto.GetAllForRelationDTO;
@@ -112,6 +113,14 @@ public class ConceptController {
         return RespDTO.onSuc(conceptFacade.conceptInfoExcelIm(file));
     }
 
+    @ApiOperation(value = "知识库标准化-获取医学数据统计[by:rengb]")
+    @PostMapping("/queryLibTypeCou")
+    @SysLogger("queryLibTypeCou")
+    @ApiIgnore
+    public RespDTO<List<BIItemDTO>> queryLibTypeCou() {
+        return RespDTO.onSuc(conceptFacade.queryLibTypeCou());
+    }
+
     /**
      * 根据概念Id列表获取概念列表Map
      *

+ 12 - 1
knowledgeman-service/src/main/java/com/diagbot/web/ConceptDetailController.java

@@ -2,6 +2,7 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptIndexDTO;
 import com.diagbot.dto.GetConceptDetailListDTO;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -79,4 +81,13 @@ public class ConceptDetailController {
         List<ConceptIndexDTO> data = conceptDetailFacade.indexFac(conceptIndexVO);
         return RespDTO.onSuc(data);
     }
-}
+
+    @ApiOperation(value = "数据统计-静态知识数据统计[by:zhaops]", notes = "")
+    @PostMapping("/conceptDetailBI")
+    @SysLogger("conceptDetailBI")
+    @ApiIgnore
+    public RespDTO<List<BIItemDTO>> conceptDetailBI() {
+        List<BIItemDTO> data = conceptDetailFacade.conceptDetailBI();
+        return RespDTO.onSuc(data);
+    }
+}

+ 37 - 0
knowledgeman-service/src/main/resources/mapper/ConceptDetailMapper.xml

@@ -57,6 +57,43 @@
 		<if test="name != null and name != ''">
             AND a.lib_name like concat('%',#{name} ,'%' )
         </if>
+        AND a.lib_type not in(12,13,14)
 		ORDER BY a.gmt_modified DESC
     </select>
+
+    <select id="conDetailCount" resultType="com.diagbot.dto.BIItemDTO">
+        SELECT
+            "静态知识" AS moduleName,
+            "静态知识总数" AS itemName,
+            count(DISTINCT kc.id) AS count
+        FROM
+            kl_concept kc,
+            kl_concept_detail kcd
+        WHERE
+            kc.is_deleted = 'N'
+            AND kcd.is_deleted = 'N'
+            AND kc.id = kcd.concept_id
+
+        UNION
+
+        SELECT DISTINCT
+            "静态知识" AS moduleName,
+            CASE
+            WHEN t2.lib_type = 18 THEN '疾病'
+            WHEN t2.lib_type = 46 THEN '化验公表项'
+            WHEN t2.lib_type = 16 THEN '辅检项目'
+            WHEN t2.lib_type = 10 THEN '药品通用名'
+            ELSE ''
+            END AS itemName,
+            COUNT(t2.id) AS count
+        FROM
+            (SELECT DISTINCT concept_id FROM kl_concept_detail WHERE is_deleted = "N") t1,
+            kl_concept t2
+        WHERE
+            t1.concept_id = t2.id
+            AND t2.is_deleted = "N"
+            AND t2.lib_type IN (18, 46, 16, 10)
+        GROUP BY
+            lib_type
+    </select>
 </mapper>

+ 35 - 0
knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml

@@ -291,5 +291,40 @@
 		and (a.name like concat('%',#{name},'%')
 		or a.spell like concat('%',#{name},'%'))
 	</select>
+
+	<select id="queryLibTypeCou" parameterType="list" resultType="com.diagbot.dto.BIItemDTO">
+		SELECT
+		a.moduleName,
+		a.itemName,
+		CASE WHEN b.lib_type IS NULL THEN 0 else b.count END AS count
+		FROM
+		(SELECT
+		id,
+		CASE WHEN id=18 then '疾病'
+		WHEN id=1 THEN '症状'
+		WHEN id=35 OR id=33 THEN '体征'
+		WHEN id=12 OR id=13 THEN '化验'
+		WHEN id=16 THEN '辅检'
+		WHEN id=10 THEN '药品'
+		WHEN id=25 THEN '手术'
+		WHEN id=11 THEN '治疗'
+		ELSE '' END AS moduleName,
+		CASE WHEN id=18 THEN '疾病总数'
+		WHEN id=1 THEN '症状标准词'
+		WHEN id=25 THEN '手术项目'
+		WHEN id=11 THEN '治疗数目'
+		ELSE `name` END AS itemName
+		FROM kl_lexicon
+		WHERE id in (18,1,35,33,12,13,16,10,25,11)
+		) a
+		LEFT JOIN
+		(SELECT
+		lib_type,COUNT(id) AS count
+		FROM kl_concept
+		WHERE lib_type in (18,1,35,33,12,13,16,10,25,11)
+		AND is_deleted='N'
+		GROUP BY lib_type) b
+		ON a.id=b.lib_type
+	</select>
     
 </mapper>

+ 1 - 0
precman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -28,6 +28,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
                 .antMatchers("/file_prec/uploadImage").permitAll()
                 .antMatchers("/dictionaryInfo_prec/getList").permitAll()
+                .antMatchers("/count_prec/getCount").permitAll()
                 .antMatchers("/**").authenticated();
 //                .antMatchers("/**").permitAll();
     }

+ 1 - 0
precman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -91,6 +91,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/hystrix/**", request)
                 || matchers("/file_prec/uploadImage", request)
                 || matchers("/dictionaryInfo_prec/getList", request)
+                || matchers("/count_prec/getCount", request)
                 || matchers("/", request)) {
             return true;
         }

+ 17 - 0
precman-service/src/main/java/com/diagbot/dto/BIItemDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/15 15:32
+ */
+@Getter
+@Setter
+public class BIItemDTO {
+    private String moduleName;
+    private String itemName;
+    private Integer count;
+}

+ 17 - 0
precman-service/src/main/java/com/diagbot/dto/PrecCountDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+/**
+ * @description: 返回预问诊统计内容
+ * @author: zhoutg
+ * @date: 2019/10/15 14:22
+ */
+@Getter
+@Setter
+public class PrecCountDTO {
+
+    @ApiModelProperty(value = "症状数量")
+    private int symptomNum;
+}

+ 40 - 0
precman-service/src/main/java/com/diagbot/facade/CountFacade.java

@@ -0,0 +1,40 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.entity.QuestionInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.QuestionTypeEnum;
+import com.diagbot.enums.TagTypeEnum;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class CountFacade {
+
+    @Autowired
+    QuestionFacade questionFacade;
+
+    /**
+     * 返回统计信息
+     *
+     * @return
+     */
+    public BIItemDTO getCount() {
+        BIItemDTO biItemDTO = new BIItemDTO();
+        int symptomNum = questionFacade.count(new QueryWrapper<QuestionInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("type", QuestionTypeEnum.Symptom.getKey())
+                .eq("tag_type", TagTypeEnum.T4.getKey())
+        );
+        biItemDTO.setModuleName("智能预问诊");
+        biItemDTO.setItemName("预问诊症状条目");
+        biItemDTO.setCount(symptomNum);
+        return biItemDTO;
+    }
+}

+ 43 - 0
precman-service/src/main/java/com/diagbot/web/CountController.java

@@ -0,0 +1,43 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.BIItemDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.CountFacade;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * <p>
+ * 统计 前端控制器
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+@RequestMapping("/count_prec")
+@RestController
+@SuppressWarnings("unchecked")
+@Api(value = "预问诊统计API", tags = { "预问诊统计API" })
+@ApiIgnore
+public class CountController {
+
+
+    @Autowired
+    CountFacade countFacade;
+
+    @ApiOperation(value = "返回预问诊统计信息[by:zhoutg]",
+            notes = "")
+    @PostMapping("/getCount")
+    @SysLogger("getCount")
+    public RespDTO<BIItemDTO> getCount() {
+        BIItemDTO data = countFacade.getCount();
+        return RespDTO.onSuc(data);
+    }
+}