Browse Source

静态知识检索

zhaops 4 years ago
parent
commit
603acfc2a8

+ 22 - 0
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -40,6 +40,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -340,11 +341,32 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
 
         List<StaticKnowledgeIndexPageDTO> records = page.getRecords();
 
+        if (ListUtil.isEmpty(records)) {
+            return page;
+        }
+        List<Long> conceptIds = records.stream().map(StaticKnowledgeIndexPageDTO::getId).collect(Collectors.toList());
+        List<KlConceptDetail> details = klConceptDetailFacade.list(new QueryWrapper<KlConceptDetail>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("concept_id", conceptIds)
+                .orderByAsc("concept_id", "order_no"));
+        Map<Long, List<KlConceptDetail>> detailMap = details.stream()
+                .collect(Collectors.groupingBy(KlConceptDetail::getConceptId));
+
         records.forEach(i -> {
             i.setTypeName(medRetrievalFacade.convertTypeName(i.getTypeName(), 2, dicTypeName));
             if (dicTypeMap.containsKey(i.getTypeName())) {
                 i.setType(Integer.valueOf(dicTypeMap.get(i.getTypeName())));
             }
+            i.setHasInfo(1);
+            i.setHasStaticKnowledge(detailMap.get(i.getId()).stream()
+                    .filter(x -> x.getContentType().contains("1")).count() > 0 ? 1 : 0);
+            i.setHasNotice(detailMap.get(i.getId()).stream()
+                    .filter(x -> x.getContentType().contains("2")).count() > 0 ? 1 : 0);
+            i.setHasClinicalPathway(detailMap.get(i.getId()).stream()
+                    .filter(x -> x.getContentType().contains("3")).count() > 0 ? 1 : 0);
+            i.setHasTreatInfo(detailMap.get(i.getId()).stream()
+                    .filter(x -> x.getContentType().contains("4")).count() > 0 ? 1 : 0);
+            i.setAbstractContent(detailMap.get(i.getId()).get(0).getContent());
         });
 
         page.setRecords(records);

+ 2 - 0
src/main/java/com/diagbot/service/impl/KlConceptStaticServiceImpl.java

@@ -23,10 +23,12 @@ import org.springframework.stereotype.Service;
 @Service
 public class KlConceptStaticServiceImpl extends ServiceImpl<KlConceptStaticMapper, KlConceptStatic> implements KlConceptStaticService {
 
+    @Override
     public IPage<KlConceptStaticDTO> getPage(@Param("klConceptStaticPageVO") KlConceptStaticPageVO klConceptStaticPageVO) {
         return baseMapper.getPage(klConceptStaticPageVO);
     }
 
+    @Override
     public IPage<StaticKnowledgeIndexPageDTO> staticIndexPage(@Param("staticKnowledgeIndexPageVO") StaticKnowledgeIndexPageVO staticKnowledgeIndexPageVO) {
         return baseMapper.staticIndexPage(staticKnowledgeIndexPageVO);
     }

+ 3 - 14
src/main/resources/mapper/KlConceptStaticMapper.xml

@@ -74,13 +74,7 @@
         s1.concept_id AS conceptId,
         s1.clinical_pathway_name AS clinicalPathwayName,
         s1.notice_name AS noticeName,
-        s1.`status` AS status,
-        IF( count( s2.id )> 0, 1, 0 ) AS hasInfo ,
-        IF( sum( IF ( FIND_IN_SET( 1, s2.content_type )> 0, 1, 0 ))> 0, 1, 0 ) AS hasStaticKnowledge,
-        IF( sum( IF ( FIND_IN_SET( 2, s2.content_type )> 0, 1, 0 ))> 0, 1, 0 ) AS hasNotice,
-        IF( sum( IF ( FIND_IN_SET( 3, s2.content_type )> 0, 1, 0 ))> 0, 1, 0 ) AS hasClinicalPathway,
-        IF( sum( IF ( FIND_IN_SET( 4, s2.content_type )> 0, 1, 0 ))> 0, 1, 0 ) AS hasTreatInfo,
-        s2.content as abstractContent
+        s1.`status` AS status
         FROM
         (
         SELECT
@@ -316,17 +310,12 @@
             </if>
         </if>
         ) s,
-        kl_concept_static s1,
-        kl_concept_detail s2
+        kl_concept_static s1
         WHERE s.id = s1.concept_id
-        AND s.id = s2.concept_id
         AND s1.is_deleted = 'N'
-        AND s2.is_deleted = 'N'
-        AND (FIND_IN_SET( 1, s2.content_type ) OR FIND_IN_SET( 2, s2.content_type ) OR FIND_IN_SET( 3, s2.content_type ))
         GROUP BY s.id
         ORDER BY s.type ASC,
-        s.isConcept DESC,
-        s2.order_no ASC
+        s.isConcept DESC
         ) f
     </select>
 </mapper>