zhaops 4 лет назад
Родитель
Сommit
43cb8572d4

+ 17 - 0
src/main/java/com/diagbot/dto/ConceptScaleDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/12 13:50
+ */
+@Getter
+@Setter
+public class ConceptScaleDTO {
+    List<ConceptScaleDetailDTO> scaleDetails;
+}

+ 64 - 0
src/main/java/com/diagbot/dto/ConceptScaleDetailDTO.java

@@ -0,0 +1,64 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/12 13:54
+ */
+@Getter
+@Setter
+public class ConceptScaleDetailDTO {
+
+    /**
+     * 下级
+     */
+    private List<ConceptScaleDetailDTO> subList = new ArrayList<>();
+
+    private Long id;
+    /**
+     * -1:表示顶级,其他值表示上级id
+     */
+    private Long parentId;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 编码
+     */
+    private String ruleCode;
+
+    /**
+     * 扣分
+     */
+    private BigDecimal score;
+
+    /**
+     * 0表格1有分数2无分数
+     */
+    private Integer textType;
+
+    /**
+     * 选择类型(1单选2多选)
+     */
+    private Integer selectType;
+
+    /**
+     * 显示顺序
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 1 - 1
src/main/java/com/diagbot/dto/StaticKnowledgeDTO.java

@@ -46,5 +46,5 @@ public class StaticKnowledgeDTO {
     /**
      * 量表结构
      */
-    private KlScaleByIdDTO scale;
+    private ConceptScaleDTO scale;
 }

+ 47 - 7
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.ConceptDetailDTO;
+import com.diagbot.dto.ConceptScaleDTO;
+import com.diagbot.dto.ConceptScaleDetailDTO;
 import com.diagbot.dto.DictionaryInfoDTO;
 import com.diagbot.dto.KlConceptDetailDTO;
 import com.diagbot.dto.KlConceptStaticDTO;
@@ -192,13 +194,7 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
 
         if (type.equals(LexiconEnum.Scale.getKey())) {
             //量表详情
-            KlScaleByIdVO klScaleByIdVO = new KlScaleByIdVO();
-            //klScaleByIdVO.setId(staticInfo.getId());
-            klScaleByIdVO.setName(concept.getLibName());
-            List<KlScaleByIdDTO> scales = klScaleFacade.getKlScaleById(klScaleByIdVO);
-            if (ListUtil.isNotEmpty(scales)) {
-                staticKnowledgeDTO.setScale(scales.get(0));
-            }
+            staticKnowledgeDTO.setScale(getScaleStructure(concept.getId()));
         } else {
             //医学知识详情
             String sql = "";
@@ -788,4 +784,48 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         }
         return retMap;
     }
+
+    /**
+     * 获取量表结构
+     * @param conceptId
+     * @return
+     */
+    public ConceptScaleDTO getScaleStructure(Long conceptId) {
+        ConceptScaleDTO retDTO = new ConceptScaleDTO();
+        List<KlConceptScale> scaleList = klConceptScaleFacade.list(new QueryWrapper<KlConceptScale>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId)
+                .orderByAsc("parent_id", "order_no"));
+        if (ListUtil.isEmpty(scaleList)) {
+            return null;
+        }
+        List<ConceptScaleDetailDTO> scaleDetailList = BeanUtil.listCopyTo(scaleList, ConceptScaleDetailDTO.class);
+        Map<Long, List<ConceptScaleDetailDTO>> parentMap
+                = scaleDetailList.stream().collect(Collectors.groupingBy(ConceptScaleDetailDTO::getParentId));
+        List<ConceptScaleDetailDTO> retScacleDetailList = parentMap.get(-1L);
+        if (ListUtil.isEmpty(retScacleDetailList)) {
+            return null;
+        }
+        for (ConceptScaleDetailDTO detail : retScacleDetailList) {
+            scaleRecursion(detail, parentMap);
+        }
+        retDTO.setScaleDetails(retScacleDetailList);
+        return retDTO;
+    }
+
+    /**
+     * 递归
+     * @param item
+     * @param treeMap
+     */
+    public void scaleRecursion(ConceptScaleDetailDTO item,
+                                                  Map<Long, List<ConceptScaleDetailDTO>> treeMap) {
+        List<ConceptScaleDetailDTO> list = treeMap.get(item.getId());
+        if (ListUtil.isNotEmpty(list)) {
+            item.setSubList(list);
+            for (ConceptScaleDetailDTO bean : list) {
+                scaleRecursion(bean, treeMap);
+            }
+        }
+    }
 }