Browse Source

更新术语医学知识接口关系的增删改功能

MarkHuang 6 years ago
parent
commit
64f9627178

+ 15 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/RelationDTO.java

@@ -26,6 +26,11 @@ public class RelationDTO {
      */
     private String startName;
 
+    /**
+     * 关系起点术语类型
+     */
+    private String startType;
+
     /**
      * 关系id
      */
@@ -46,4 +51,14 @@ public class RelationDTO {
      */
     private String endName;
 
+    /**
+     * 关系终点术语类型
+     */
+    private String endType;
+
+    /**
+     * 其它信息
+     */
+    private String msg;
+
 }

+ 93 - 20
knowledgeman-service/src/main/java/com/diagbot/facade/RelationFacade.java

@@ -2,6 +2,8 @@ package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSON;
 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.dto.ConceptDTO;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.entity.Concept;
@@ -10,6 +12,7 @@ import com.diagbot.entity.LibraryInfo;
 import com.diagbot.entity.Relation;
 import com.diagbot.service.impl.RelationServiceImpl;
 import com.diagbot.vo.AmendTermVo;
+import com.diagbot.vo.RelationVo;
 import com.diagbot.vo.TermVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +38,21 @@ public class RelationFacade extends RelationServiceImpl {
     @Autowired
     private RelationshipFacade relationshipFacade;
 
+
+    /**
+     *
+     * 获取所有医学术语的关系
+     *
+     * @param page
+     * @result IPage<RelationDTO>
+     */
+    public IPage<RelationDTO> getAllRelations(Page page) {
+        RelationDTO relationDTO = new RelationDTO();
+
+        return getAllRelation(page, relationDTO);
+    }
+
+
     /**
      * 获取指定医学术语的关联关系
      *
@@ -53,29 +71,46 @@ public class RelationFacade extends RelationServiceImpl {
     /**
      *
      *
-     * 获取指定医学术语的所有信息
+     * 获取指定医学术语的所有上级关系
      *
-     * @param termVo
+     * @param relationVo
      * @result List<Relation>
      */
-    public List<RelationDTO> getAllRelation(TermVo termVo) {
+    public List<RelationDTO> getRelations(RelationVo relationVo) {
         List<RelationDTO> relationDTOs = new ArrayList<>();
+        RelationDTO relationDTO = new RelationDTO();
+        int concept_id = 0;
 
-        if (termVo.getConcept_id() == 0) {
-            ConceptDTO conceptDTO = conceptFacade.getConcept(termVo);
+        if (relationVo.getStart_term().length() > 0 && relationVo.getEnd_term().length() > 0) {
+            QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
+            query.eq("name", relationVo.getStart_term());
+            query.eq("type", relationVo.getStart_type());
 
-            if (conceptDTO != null) {
-                termVo.setConcept_id(conceptDTO.getId());
+            LibraryInfo libraryInfo = libraryInfoFacade.getOne(query);
+
+            if (libraryInfo == null) {
+                relationDTO.setMsg("术语 \"" + relationVo.getStart_term() + "\" 不存在!");
+                relationDTOs.add(relationDTO);
+
+                return relationDTOs;
             }
+            concept_id = (libraryInfo == null) ? 0 : libraryInfo.getConceptId();
+        }
+        else if (relationVo.getStart_concept_id() > 0) {
+            concept_id = relationVo.getStart_concept_id();
         }
 
-        List<Relation> relations = new ArrayList<>();
-        relations = getList(relations, termVo.getConcept_id(), -1);
-        relationDTOs.addAll(ConvertListtoDTO(relations));
+        if (concept_id > 0) {
+            List<Relation> relations = new ArrayList<>();
+            relations = getList(relations, concept_id, -1);
+            relationDTOs.addAll(ConvertListtoDTO(relations));
+        }
 
         return relationDTOs;
     }
 
+
+
     public List<RelationDTO> ConvertListtoDTO (List<Relation> src) {
         List<RelationDTO> dest = new ArrayList<>();
         RelationDTO relationDTO;
@@ -210,24 +245,62 @@ public class RelationFacade extends RelationServiceImpl {
         }
     }
 
+
     /**
-     * 清空医学术语关系表
      *
+     * 删除指定医学术语的关系
+     *
+     * @param relationVo
+     * @result RelationDTO
      */
-    public void deleteRelation() {
-        truncateRelation();
+    public RelationDTO removeRelations(RelationVo relationVo) {
+        RelationDTO relationDTO = new RelationDTO();
+        QueryWrapper<Relation> query;
+
+        int startid = relationVo.getStart_concept_id();
+        int relationid = relationVo.getRelation_id();
+        int endid = relationVo.getEnd_concept_id();
+        String startname = relationVo.getStart_term().trim();
+        String relationname = relationVo.getRelation_name().trim();
+        String endname = relationVo.getEnd_term().trim();
+
+        if (startid > 0 && relationid > 0 && endid > 0) {
+            query = new QueryWrapper<>();
+            query.eq("start_id", startid);
+            query.eq("relation_id", relationid);
+            query.eq("end_id", endid);
+
+            relationDTO.setMsg(String.valueOf(remove(query)));
+        }
+        else if (startname.length() > 0 && endname.length() > 0 && relationname.length() > 0) {
+            relationDTO = getRelationbyName(relationVo);
+
+            if (relationDTO != null) {
+                int id = relationDTO.getId();
+                query = new QueryWrapper<>();
+                query.eq("id", id);
+
+                relationDTO.setMsg(String.valueOf(remove(query)));
+            }
+            else {
+                relationDTO.setMsg("此关系不存在!");
+            }
+        }
+        else {
+            relationDTO.setMsg("此关系不存在!");
+        }
+
+        return relationDTO;
     }
 
+
     /**
-     * 根据概念Id删除医学术语关系
+     * 清空医学术语关系表
      *
      */
-    public void removeRelationbyIds(List<Integer> Ids) {
-        int concept_id = 0;
-        for (int i=0; i<Ids.size(); i++) {
-            concept_id = Ids.get(i);
+    public void deleteRelation() {
+        truncateRelation();
+    }
 
 
-        }
-    }
 }

+ 22 - 2
knowledgeman-service/src/main/java/com/diagbot/mapper/RelationMapper.java

@@ -1,9 +1,11 @@
 package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.entity.Relation;
-import com.diagbot.vo.TermVo;
+import com.diagbot.vo.RelationVo;
 
 import java.util.List;
 
@@ -16,14 +18,32 @@ import java.util.List;
  * @since 2019-01-31
  */
 public interface RelationMapper extends BaseMapper<Relation> {
+    /**
+     * 获取所有术语关系
+     *
+     * @param relationDTO
+     * @return IPage<RelationDTO>
+     */
+    public IPage<RelationDTO> getAllRelation(Page page, RelationDTO relationDTO);
+
+
     /**
      * 获取术语上级信息
      *
      * @param relationDTO
-     * @result List<RelationDTO>
+     * @return List<RelationDTO>
      */
     public List<RelationDTO> getRelation(RelationDTO relationDTO);
 
+    /**
+     * 按名称获取术语关系
+     *
+     * @param relationVo
+     * @return RelationDTO
+     *
+     */
+    public RelationDTO getRelationbyName(RelationVo relationVo);
+
     /**
      * 删除所有术语关系信息
      *

+ 7 - 1
knowledgeman-service/src/main/java/com/diagbot/service/RelationService.java

@@ -1,9 +1,11 @@
 package com.diagbot.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.entity.Relation;
-import com.diagbot.vo.TermVo;
+import com.diagbot.vo.RelationVo;
 
 import java.util.List;
 
@@ -16,8 +18,12 @@ import java.util.List;
  * @since 2019-01-31
  */
 public interface RelationService extends IService<Relation> {
+    public IPage<RelationDTO> getAllRelation(Page page, RelationDTO relationDTO);
+
     public List<RelationDTO> getRelation(RelationDTO relationDTO);
 
+    public RelationDTO getRelationbyName(RelationVo relationVo);
+
     public void truncateRelation();
 
     public List<Relation> getLimboRelation();

+ 13 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/RelationServiceImpl.java

@@ -1,10 +1,13 @@
 package com.diagbot.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.entity.Relation;
 import com.diagbot.mapper.RelationMapper;
 import com.diagbot.service.RelationService;
+import com.diagbot.vo.RelationVo;
 import com.diagbot.vo.TermVo;
 import org.springframework.stereotype.Service;
 
@@ -20,11 +23,21 @@ import java.util.List;
  */
 @Service
 public class RelationServiceImpl extends ServiceImpl<RelationMapper, Relation> implements RelationService {
+    @Override
+    public IPage<RelationDTO> getAllRelation(Page page, RelationDTO relationDTO) {
+        return baseMapper.getAllRelation(page, relationDTO);
+    }
+
     @Override
     public List<RelationDTO> getRelation(RelationDTO relationDTO) {
         return baseMapper.getRelation(relationDTO);
     }
 
+    @Override
+    public RelationDTO getRelationbyName(RelationVo relationVo) {
+        return baseMapper.getRelationbyName(relationVo);
+    }
+
     @Override
     public void truncateRelation() { baseMapper.truncateRelation(); }
 

+ 32 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/AllRelationVo.java

@@ -0,0 +1,32 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/15 10:40
+ */
+@Getter
+@Setter
+public class AllRelationVo extends Page {
+    @NotNull(message = "请输入起始节点术语名")
+    private String start_term;
+
+    @NotNull(message = "请输入起始节点术语类型")
+    private String start_type;
+
+    private int start_concept_id;
+
+    private String relation_name;
+
+    private String end_term;
+
+    private int end_concept_id;
+
+    private String end_type;
+}

+ 33 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RelationVo.java

@@ -0,0 +1,33 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/15 10:40
+ */
+@Getter
+@Setter
+public class RelationVo {
+    @NotNull(message = "请输入起始节点术语名")
+    private String start_term;
+
+    @NotNull(message = "请输入起始节点术语类型")
+    private String start_type;
+
+    private int start_concept_id;
+
+    private String relation_name;
+
+    private int relation_id;
+
+    private String end_term;
+
+    private int end_concept_id;
+
+    private String end_type;
+}

+ 26 - 3
knowledgeman-service/src/main/java/com/diagbot/web/RelationController.java

@@ -1,10 +1,13 @@
 package com.diagbot.web;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.RelationFacade;
+import com.diagbot.vo.AllRelationVo;
+import com.diagbot.vo.RelationVo;
 import com.diagbot.vo.TermVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -33,12 +36,32 @@ public class RelationController {
     @Autowired
     RelationFacade relationFacade;
 
-    @ApiOperation(value = "标准术语关系查询",
+    @ApiOperation(value = "标准术语查询关系",
             notes = "Term:术语名称, 必填<br>Type:术语类型, 必填<br>")
     @PostMapping("/getConceptRelation")
     @SysLogger("getConceptRelation")
-    public RespDTO<List<RelationDTO>> getConceptRelation(@Valid @RequestBody TermVo termvo) {
-        List<RelationDTO> data = relationFacade.getAllRelation(termvo);
+    public RespDTO<List<RelationDTO>> getConceptRelation(@Valid @RequestBody RelationVo relationVo) {
+        List<RelationDTO> data = relationFacade.getRelations(relationVo);
+
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "所有术语关系查询")
+    @PostMapping("/getAllRelation")
+    @SysLogger("getAllRelation")
+    public RespDTO<IPage<RelationDTO>> getAllRelation(@RequestBody AllRelationVo allrelationVo) {
+        IPage<RelationDTO> data = relationFacade.getAllRelations(allrelationVo);
+
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "标准术语关系删除",
+            notes = "StartTerm:起始术语名称, 必填<br>StartType:起始术语类型, 必填<br>Relation:关系名称, 必填<br>" +
+                    "EndTerm:终点术语名称, 必填<br>EndType:终点术语类型, 必填<br>")
+    @PostMapping("/removeRelation")
+    @SysLogger("removeRelation")
+    public RespDTO<RelationDTO> removeRelation(@Valid @RequestBody RelationVo relationVo) {
+        RelationDTO data = relationFacade.removeRelations(relationVo);
 
         return RespDTO.onSuc(data);
     }

+ 21 - 0
knowledgeman-service/src/main/resources/mapper/RelationMapper.xml

@@ -10,6 +10,27 @@
         <result column="end_id" property="endId" />
     </resultMap>
 
+    <select id="getAllRelation" resultType="com.diagbot.dto.RelationDTO">
+        SELECT c.id, c.start_id, c.name as startName, c.type as startType, c.relation_id, d.name as relationName,
+        e.end_id, e.name as endName, e.type as endType FROM
+            (SELECT a.id, a.start_id, b.name, b.type, a.relation_id FROM relation a, library_info b
+                WHERE b.is_concept = 1 and a.start_id = b.concept_id) c,
+            lexicon_relationship d,
+            (SELECT a.id, a.end_id, b.name, b.type FROM relation a, library_info b
+                WHERE b.is_concept = 1 and a.end_id = b.concept_id) e
+        WHERE c.id = e.id and c.relation_id = d.id ORDER BY c.id
+    </select>
+
+    <select id="getRelationbyName" parameterType="com.diagbot.vo.RelationVo" resultType="com.diagbot.dto.RelationDTO">
+        SELECT c.id, c.start_id, c.relation_id, e.end_id FROM
+            (SELECT a.id, a.start_id, a.relation_id FROM relation a, library_info b
+                WHERE a.start_id = b.concept_id and b.name = #{start_term}) c,
+            lexicon_relationship d,
+            (SELECT a.id, a.end_id FROM relation a, library_info b
+                WHERE a.end_id = b.concept_id and b.name = #{end_term}) e
+        WHERE c.id = e.id and c.relation_id = d.id and d.name = #{relation_name}
+    </select>
+
     <select id="getRelation" parameterType="com.diagbot.dto.RelationDTO" resultType="com.diagbot.dto.RelationDTO">
         SELECT id, start_id, relation_id, end_id
         FROM relation