Browse Source

术语集合内容维护

zhaops 3 years ago
parent
commit
4bae3ee9f8

+ 21 - 0
cdssman-service/src/main/java/com/diagbot/dto/ConceptCollectionDTO.java

@@ -0,0 +1,21 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/8/6 9:43
+ */
+@Data
+public class ConceptCollectionDTO {
+    private Long collectionId;
+    private String collectionLibName;
+    private Integer collectionLibType;
+    private Integer collectionStatus;
+    private String collectionRemark;
+    private Long relationId;
+    private String concatConceptLibName;
+    private Integer conceptLibType;
+    private Integer conceptStatus;
+}

+ 23 - 1
cdssman-service/src/main/java/com/diagbot/enums/LexiconEnum.java

@@ -48,6 +48,27 @@ public enum LexiconEnum implements KeyedNamed {
     SymptomClass(305,"症状类别"),
     OperationClass(306,"手术和操作类别"),
     DisSysType(307,"疾病系统分类"),
+    DiseaseCollection(308,"疾病集合"),
+    MedicineCollection(309,"药品通用名集合"),
+    FormCollection(310,"药品剂型集合"),
+    SymptomCollection(311,"症状集合"),
+    VitalCollection(312,"体格检查项目集合"),
+    VitalResultCollection(313,"体格检查结果集合"),
+    OperationCollection(314,"手术和操作集合"),
+    LisNameCollection(315,"实验室检查套餐集合"),
+    PacsNameCollection(316,"辅助检查项目集合"),
+    PacsSubNameCollection(317,"辅助检查子项目集合"),
+    PacsDescribeCollection(318,"辅助检查描述集合"),
+    PacsResultCollection(319,"辅助检查结果集合"),
+    AnesthesiaCollection(320,"麻醉集合"),
+    DeptCollection(321,"科室集合"),
+    FoodCollection(322,"食物集合"),
+    AllergenCollection(323,"其他过敏原集合"),
+    DeviceCollection(324,"医疗器械及物品集合"),
+    PartCollection(325,"部位集合"),
+    TcmdiseaseCollection(326,"中医疾病集合"),
+    TcmsyndromeCollection(327,"中医证候集合"),
+    InducementCollection(328,"诱因集合"),
     ICD10ClassNode(400,"ICD10疾病类别根节点"),
     DeptDiseaseNode(401,"科室疾病类别根节点"),
     MedChemClassNode(402,"药品化学物质类别根节点"),
@@ -58,7 +79,8 @@ public enum LexiconEnum implements KeyedNamed {
     OperationClassNode(407,"手术和操作类别根节点"),
     LisClassNode(408,"实验室检查类别根节点"),
     PacsClassNode(409,"辅助检查类别根节点"),
-    Age(410,"年龄");
+    Age(410,"年龄"),
+    Law(130,"政策法规");
 
 
     @Setter

+ 230 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlConceptCollectionFacade.java

@@ -0,0 +1,230 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.ConceptCollectionDTO;
+import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.entity.KlConcept;
+import com.diagbot.entity.KlLibraryInfo;
+import com.diagbot.entity.KlRelation;
+import com.diagbot.entity.KlRelationOrder;
+import com.diagbot.entity.KlRule;
+import com.diagbot.entity.KlRuleBase;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.LexiconEnum;
+import com.diagbot.enums.StatusEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.KlRuleConditionService;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.ConceptCollectionBaseVO;
+import com.diagbot.vo.ConceptCollectionPageVO;
+import com.diagbot.vo.ConceptCollectionSaveVO;
+import com.diagbot.vo.IdVO;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/8/5 17:25
+ */
+@Component
+public class KlConceptCollectionFacade {
+    @Autowired
+    KlConceptFacade klConceptFacade;
+    @Autowired
+    KlLibraryInfoFacade klLibraryInfoFacade;
+    @Autowired
+    KlRelationFacade klRelationFacade;
+    @Autowired
+    KlRelationOrderFacade klRelationOrderFacade;
+    @Autowired
+    KlDictionaryInfoFacade klDictionaryInfoFacade;
+    @Autowired
+    KlRuleFacade klRuleFacade;
+    @Autowired
+    KlRuleBaseFacade klRuleBaseFacade;
+    @Autowired
+    KlRuleConditionService klRuleConditionService;
+
+    /**
+     * 获取术语集合列表
+     *
+     * @param conceptCollectionPageVO
+     * @return
+     */
+    public IPage<ConceptCollectionDTO> getConceptCollectionPage(ConceptCollectionPageVO conceptCollectionPageVO) {
+        return klRelationFacade.getConceptCollectionPage(conceptCollectionPageVO);
+    }
+
+
+    //todo 保存
+    /**
+     * 保存(新增和修改)
+     * @param conceptCollectionSaveVO
+     * @return
+     */
+    public Boolean saveOrUpdateRecord(ConceptCollectionSaveVO conceptCollectionSaveVO) {
+        Map<Long, List<DictionaryInfoDTO>> allDictionaryMap = klDictionaryInfoFacade.getListByGroupType();
+        List<DictionaryInfoDTO> dictionary = allDictionaryMap.get(61);
+        Map<String, String> dictionaryMap
+                = dictionary.stream().collect(Collectors.toMap(DictionaryInfoDTO::getName, DictionaryInfoDTO::getVal));
+        if (null == conceptCollectionSaveVO.getCollectionId()) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "术语集合不允许为空,保存失败");
+        }
+        if (ListUtil.isEmpty(conceptCollectionSaveVO.getConcepts())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "基础术语列表不允许为空,保存失败");
+        }
+
+        KlConcept collection = klConceptFacade.getById(conceptCollectionSaveVO.getCollectionId());
+        if (null == collection) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "术语集合不存在,保存失败");
+        } else if (collection.getStatus().equals(StatusEnum.Disable.getKey())) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "集合已禁用,保存失败");
+        } else if (!collection.getLibName().equals(conceptCollectionSaveVO.getCollectionLibName())) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "术语集合名称不允许修改,保存失败");
+        }
+
+        //校验术语集合和基础术语类型是否对应
+        String dicVal = dictionaryMap.get(LexiconEnum.getName(conceptCollectionSaveVO.getCollectionLibType()));
+        if(StringUtils.isBlank(dicVal)){
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "术语集合和基础术语关联字典未维护,请维护字典");
+        }
+        Integer conceptLibType=Integer.valueOf(dicVal.split("-")[2]);
+        for (ConceptCollectionBaseVO concept : conceptCollectionSaveVO.concepts) {
+            if (!concept.getConceptLibType().equals(conceptLibType)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "集合【" + LexiconEnum.getName(conceptCollectionSaveVO.getCollectionLibType())
+                                + "】和基础术语【" + LexiconEnum.getName(conceptLibType) + "】不是对应关系,保存失败");
+            }
+        }
+
+        //检验基础术语
+
+        //todo 过滤已禁用基础术语
+
+        //todo 删除已有记录
+
+        return true;
+    }
+
+    /**
+     * 根据术语集合id获取集合相关信息
+     *
+     * @param idVO
+     * @return
+     */
+    public ConceptCollectionSaveVO getRecordById(IdVO idVO) {
+        ConceptCollectionSaveVO retItem = new ConceptCollectionSaveVO();
+        KlConcept collection = klConceptFacade.getById(idVO.getId());
+        if (null == collection) {
+            return null;
+        }
+        retItem.setCollectionId(idVO.getId());
+        retItem.setCollectionLibName(collection.getLibName());
+        retItem.setCollectionLibType(collection.getLibType());
+        //remark
+        KlLibraryInfo libraryInfo = klLibraryInfoFacade.getOne(new QueryWrapper<KlLibraryInfo>()
+                .eq("concept_id", collection.getId())
+                .eq("is_concept", 1));
+        if (null != libraryInfo) {
+            retItem.setCollectionRemark(libraryInfo.getRemark());
+        }
+
+        List<KlRelation> relationList = klRelationFacade.list(new QueryWrapper<KlRelation>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("start_id", idVO.getId())
+                .eq("relation_id", 600));
+
+        if (ListUtil.isEmpty(relationList)) {
+            return retItem;
+        }
+
+        Map<Long, KlRelation> relationMap = relationList.stream().collect(Collectors.toMap(KlRelation::getId, v -> v));
+        List<Long> conceptIds = relationList.stream().map(KlRelation::getEndId).collect(Collectors.toList());
+        List<Long> relationIds = relationList.stream().map(KlRelation::getId).collect(Collectors.toList());
+        List<KlRelationOrder> relationOrderList = klRelationOrderFacade.list(new QueryWrapper<KlRelationOrder>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("t_relation_id", relationIds)
+                .orderByAsc("order_no"));
+
+        List<KlConcept> conceptList = klConceptFacade.list(new QueryWrapper<KlConcept>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("status", StatusEnum.Enable.getKey())
+                .in("id", conceptIds));
+        Map<Long, KlConcept> conceptMap = conceptList.stream().collect(Collectors.toMap(KlConcept::getId, v -> v));
+
+        List<ConceptCollectionBaseVO> subConceptList = Lists.newLinkedList();
+        if (ListUtil.isNotEmpty(relationOrderList)) {
+            for (KlRelationOrder order : relationOrderList) {
+                KlConcept concept = conceptMap.get(relationMap.get(order.gettRelationId()).getEndId());
+                if (null != concept) {
+                    ConceptCollectionBaseVO conceptVO = new ConceptCollectionBaseVO();
+                    conceptVO.setConceptId(concept.getId());
+                    conceptVO.setConceptLibName(concept.getLibName());
+                    conceptVO.setConceptLibType(concept.getLibType());
+                    subConceptList.add(conceptVO);
+                }
+            }
+        } else {
+            for (KlConcept concept : conceptList) {
+                ConceptCollectionBaseVO conceptVO = new ConceptCollectionBaseVO();
+                conceptVO.setConceptId(concept.getId());
+                conceptVO.setConceptLibName(concept.getLibName());
+                conceptVO.setConceptLibType(concept.getLibType());
+                subConceptList.add(conceptVO);
+            }
+        }
+
+        retItem.setConcepts(subConceptList);
+
+        return retItem;
+    }
+
+    /**
+     * 删除术语集合关联关系
+     *
+     * @param idVO
+     * @return
+     */
+    public Boolean deleteById(IdVO idVO) {
+        KlConcept collection = klConceptFacade.getById(idVO.getId());
+        if (null == collection) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "术语集合不存在");
+        }
+
+        //校验术语集合是否被使用
+        List<KlRule> ruleList = klRuleFacade.list(new QueryWrapper<KlRule>()
+                .eq("concept_id", collection.getId()));
+        if (ListUtil.isNotEmpty(ruleList)) {
+            throw new CommonException(CommonErrorCode.FAIL, "删除失败,【" + collection.getLibName() + "】已在规则中使用");
+        }
+        List<KlRuleBase> baseRuleList = klRuleBaseFacade.list(new QueryWrapper<KlRuleBase>()
+                .eq("concept_id", collection.getId()));
+        if (ListUtil.isNotEmpty(baseRuleList)) {
+            throw new CommonException(CommonErrorCode.FAIL, "删除失败,【" + collection.getLibName() + "】已在规则中使用");
+        }
+
+        List<KlRelation> relationList = klRelationFacade.list(new QueryWrapper<KlRelation>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("start_id", idVO.getId())
+                .eq("relation_id", 600));
+
+        if (ListUtil.isEmpty(relationList)) {
+            return true;
+        }
+
+        List<Long> relationIds = relationList.stream().map(KlRelation::getId).collect(Collectors.toList());
+
+        klRelationFacade.remove(new QueryWrapper<KlRelation>().in("id", relationIds));
+        klRelationOrderFacade.remove(new QueryWrapper<KlRelationOrder>().in("t_relation_id", relationIds));
+        return true;
+    }
+}

+ 7 - 2
cdssman-service/src/main/java/com/diagbot/mapper/KlRelationMapper.java

@@ -1,11 +1,14 @@
 package com.diagbot.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.ConceptCollectionDTO;
 import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.dto.RelationNameDTO;
 import com.diagbot.dto.RelationNodeDTO;
 import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.ConceptCollectionPageVO;
 import com.diagbot.vo.DisNameFindVO;
 import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationVO;
@@ -26,13 +29,15 @@ import java.util.List;
  * @since 2021-03-01
  */
 public interface KlRelationMapper extends BaseMapper<KlRelation> {
-    List<RelationNodeDTO> getRelationNodeDTOs(@Param(value="conceptId")Long conceptId, @Param(value="relationId")Long relationId, @Param(value="endTypeId")Long endTypeId);
+    List<RelationNodeDTO> getRelationNodeDTOs(@Param(value = "conceptId") Long conceptId, @Param(value = "relationId") Long relationId, @Param(value = "endTypeId") Long endTypeId);
 
     List<MedClassMedDTO> getMedClassMedList();
 
     List<RelationDTO> getRelations(RelationVO relationVO);
 
-    List<RelationNameDTO> getRelationNameDTOs(@Param(value="conceptIds")List<Long> conceptIds,@Param(value="relationId")Integer relationId);
+    List<RelationNameDTO> getRelationNameDTOs(@Param(value = "conceptIds") List<Long> conceptIds, @Param(value = "relationId") Integer relationId);
 
     List<GetAllForRelationDTO> findDisNameAll(DisNameFindVO disNameFindVO);
+
+    IPage<ConceptCollectionDTO> getConceptCollectionPage(@Param("conceptCollectionPageVO") ConceptCollectionPageVO conceptCollectionPageVO);
 }

+ 6 - 0
cdssman-service/src/main/java/com/diagbot/service/KlRelationService.java

@@ -1,15 +1,19 @@
 package com.diagbot.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.ConceptCollectionDTO;
 import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.MedClassMedDTO;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.dto.RelationNameDTO;
 import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.ConceptCollectionPageVO;
 import com.diagbot.vo.DisNameFindVO;
 import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationVO;
 import io.swagger.models.auth.In;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -29,4 +33,6 @@ public interface KlRelationService extends IService<KlRelation> {
     List<RelationNameDTO> getRelationNameDTOs(List<Long> conceptIds, Integer relationId);
 
     List<GetAllForRelationDTO> findDisNameAll(DisNameFindVO disNameFindVO);
+
+    IPage<ConceptCollectionDTO> getConceptCollectionPage(@Param("conceptCollectionPageVO") ConceptCollectionPageVO conceptCollectionPageVO);
 }

+ 11 - 4
cdssman-service/src/main/java/com/diagbot/service/impl/KlRelationServiceImpl.java

@@ -1,7 +1,9 @@
 package com.diagbot.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.ConceptCollectionDTO;
 import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.MedClassMedDTO;
 import com.diagbot.dto.RelationDTO;
@@ -9,8 +11,8 @@ import com.diagbot.dto.RelationNameDTO;
 import com.diagbot.entity.KlRelation;
 import com.diagbot.mapper.KlRelationMapper;
 import com.diagbot.service.KlRelationService;
+import com.diagbot.vo.ConceptCollectionPageVO;
 import com.diagbot.vo.DisNameFindVO;
-import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
@@ -32,17 +34,22 @@ public class KlRelationServiceImpl extends ServiceImpl<KlRelationMapper, KlRelat
         return baseMapper.getMedClassMedList();
     }
 
-    public List<RelationDTO> getRelations(RelationVO relationVO){
+    public List<RelationDTO> getRelations(RelationVO relationVO) {
         return baseMapper.getRelations(relationVO);
     }
 
     @Override
-    public List<RelationNameDTO> getRelationNameDTOs(List<Long> conceptIds,Integer relationId) {
-        return baseMapper.getRelationNameDTOs(conceptIds,relationId);
+    public List<RelationNameDTO> getRelationNameDTOs(List<Long> conceptIds, Integer relationId) {
+        return baseMapper.getRelationNameDTOs(conceptIds, relationId);
     }
 
     @Override
     public List<GetAllForRelationDTO> findDisNameAll(DisNameFindVO disNameFindVO) {
         return baseMapper.findDisNameAll(disNameFindVO);
     }
+
+    @Override
+    public IPage<ConceptCollectionDTO> getConceptCollectionPage(@Param("conceptCollectionPageVO") ConceptCollectionPageVO conceptCollectionPageVO) {
+        return baseMapper.getConceptCollectionPage(conceptCollectionPageVO);
+    }
 }

+ 15 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptCollectionBaseVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/8/6 15:03
+ */
+@Data
+public class ConceptCollectionBaseVO {
+    private Long conceptId;
+    private String conceptLibName;
+    private Integer conceptLibType;
+}

+ 29 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptCollectionPageVO.java

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/8/6 13:15
+ */
+@Data
+public class ConceptCollectionPageVO extends Page {
+    /**
+     * 术语集合名称
+     */
+    private String collectionLibName;
+    /**
+     * 术语集合类型
+     */
+    private Integer collectionLibType;
+    /**
+     * 说明
+     */
+    private String collectionRemark;
+    /**
+     * 基础术语名称
+     */
+    private String conceptLibName;
+}

+ 16 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptCollectionSaveVO.java

@@ -0,0 +1,16 @@
+package com.diagbot.vo;
+
+import com.diagbot.dto.ConceptCollectionDTO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/8/6 14:57
+ */
+@Data
+public class ConceptCollectionSaveVO extends ConceptCollectionDTO {
+    public List<ConceptCollectionBaseVO> concepts;
+}

+ 64 - 0
cdssman-service/src/main/java/com/diagbot/web/KlConceptCollectionController.java

@@ -0,0 +1,64 @@
+package com.diagbot.web;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.ConceptCollectionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.KlConceptCollectionFacade;
+import com.diagbot.vo.ConceptCollectionPageVO;
+import com.diagbot.vo.ConceptCollectionSaveVO;
+import com.diagbot.vo.IdVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/8/6 14:37
+ */
+@RestController
+@RequestMapping("/kl/conceptCollection")
+@Api(value = "术语集合维护相关API", tags = { "术语集合维护相关API" })
+@SuppressWarnings("unchecked")
+public class KlConceptCollectionController {
+
+    @Autowired
+    private KlConceptCollectionFacade klConceptCollectionFacade;
+
+    @ApiOperation(value = "获取术语集合列表[zhaops]",
+            notes = "collectionLibName:术语集合名称 <br>" +
+                    "collectionLibType: 术语集合类型<br>" +
+                    "conceptLibName: 术语集合类型<br>" +
+                    "collectionRemark: 基础术语名称<br>")
+    @PostMapping("/getPage")
+    @SysLogger("getPage")
+    public RespDTO<IPage<ConceptCollectionDTO>> getPage(@Valid @RequestBody ConceptCollectionPageVO conceptCollectionPageVO) {
+        IPage<ConceptCollectionDTO> data = klConceptCollectionFacade.getConceptCollectionPage(conceptCollectionPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "根据术语集合id获取集合相关信息[zhaops]",
+            notes = "id: 术语集合id <br>")
+    @PostMapping("/getRecordById")
+    @SysLogger("getRecordById")
+    public RespDTO<ConceptCollectionSaveVO> getRecordById(@Valid @RequestBody IdVO idVO) {
+        ConceptCollectionSaveVO data = klConceptCollectionFacade.getRecordById(idVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "根据术语集合id删除术语集合关联关系[zhaops]",
+            notes = "id: 术语集合id <br>")
+    @PostMapping("/deleteById")
+    @SysLogger("deleteById")
+    public RespDTO<Boolean> deleteById(@Valid @RequestBody IdVO idVO) {
+        Boolean data = klConceptCollectionFacade.deleteById(idVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 52 - 0
cdssman-service/src/main/resources/mapper/KlRelationMapper.xml

@@ -200,4 +200,56 @@
 
     </select>
 
+    <select id="getConceptCollectionPage" resultType="com.diagbot.dto.ConceptCollectionDTO">
+        SELECT
+        t1.*,
+        GROUP_CONCAT( t2.id ) AS relationId,
+        t4.id AS conceptId,
+        group_concat( t4.lib_name ) AS concatConceptLibName,
+        t4.lib_type AS sub_lib_type AS conceptLibType,
+        t4.STATUS AS sub_status AS conceptStatus
+        FROM
+        (
+        SELECT
+        a.id AS collectionId,
+        a.lib_name AS collectionLibName,
+        a.lib_type AS collectionLibType,
+        a.lib_id AS collectionLibId,
+        a.`status` AS collectionStatus,
+        b.remark AS collectionRemark
+        FROM
+        kl_concept a,
+        kl_library_info b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.id = b.concept_id
+        AND a.`status` = 1
+        AND b.is_concept = 1
+        <if test="conceptCollectionPageVO.collectionLibType!=null">
+            AND  a.lib_type = #{conceptCollectionPageVO.collectionLibType}
+        </if>
+        <if test="conceptCollectionPageVO.collectionLibName != null and conceptCollectionPageVO.collectionLibName != ''">
+            AND a.lib_name LIKE concat('%',#{conceptCollectionPageVO.collectionLibName},'%')
+        </if>
+        <if test="conceptCollectionPageVO.collectionRemark != null and conceptCollectionPageVO.collectionRemark != ''">
+            AND b.remark LIKE concat('%',#{conceptCollectionPageVO.collectionRemark},'%')
+        </if>
+        ) t1,
+        kl_relation t2,
+        kl_relation_order t3,
+        kl_concept t4
+        WHERE
+        t1.collectionId = t2.start_id
+        AND t3.t_relation_id = t2.id
+        AND t2.relation_id = 600
+        AND t2.end_id = t4.id
+        AND t4.is_deleted = 'N'
+        AND t4.`status` = 1
+        <if test="conceptCollectionPageVO.conceptLibName != null and conceptCollectionPageVO.conceptLibName != ''">
+            AND t4.lib_name LIKE concat('%',#{conceptCollectionPageVO.conceptLibName},'%')
+        </if>
+        GROUP BY
+        t1.collectionId
+    </select>
 </mapper>