Browse Source

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

MarkHuang 6 years ago
parent
commit
a75d9bc6af

+ 1 - 1
knowledgeman-service/src/main/java/com/diagbot/dto/ConceptDTO.java

@@ -48,7 +48,7 @@ public class ConceptDTO {
     /**
      * 术语基本信息
      */
-    private LibraryInfo libraryInfo;
+    private List<LibraryInfo> libraryInfo;
 
     /**
      * 术语相关医学知识

+ 5 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/MedicalDTO.java

@@ -86,4 +86,9 @@ public class MedicalDTO {
      */
     private String note;
 
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String is_deleted;
+
 }

+ 3 - 3
knowledgeman-service/src/main/java/com/diagbot/entity/LibraryDetail.java

@@ -27,7 +27,7 @@ public class LibraryDetail implements Serializable {
     /**
      * 是否删除,N:未删除,Y:删除
      */
-    private String isDeleted;
+    private char isDeleted;
 
     /**
      * 记录创建时间
@@ -91,11 +91,11 @@ public class LibraryDetail implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
-    public String getIsDeleted() {
+    public char getIsDeleted() {
         return isDeleted;
     }
 
-    public void setIsDeleted(String isDeleted) {
+    public void setIsDeleted(char isDeleted) {
         this.isDeleted = isDeleted;
     }
     public LocalDateTime getGmtCreate() {

+ 14 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/Medical.java

@@ -94,6 +94,11 @@ public class Medical implements Serializable {
      */
     private String note;
 
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String is_deleted;
+
     public Integer getId() {
         return id;
     }
@@ -207,6 +212,14 @@ public class Medical implements Serializable {
         this.note = note;
     }
 
+    public String getIs_deleted() {
+        return is_deleted;
+    }
+
+    public void setIs_deleted(String is_deleted) {
+        this.is_deleted = is_deleted;
+    }
+
     @Override
     public String toString() {
         return "Medical{" +
@@ -226,6 +239,7 @@ public class Medical implements Serializable {
         ", dept=" + dept +
         ", code=" + code +
         ", note=" + note +
+        ", is_deleted=" + is_deleted +
         "}";
     }
 }

+ 75 - 4
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -14,6 +14,7 @@ import com.diagbot.service.impl.ConceptServiceImpl;
 import com.diagbot.vo.AmendTermVo;
 //import com.diagbot.vo.MedicalVo;
 import com.diagbot.vo.TermVo;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -55,6 +56,7 @@ public class ConceptFacade extends ConceptServiceImpl {
 
         List<ConceptDTO> conceptDTOs = new ArrayList<>();
         ConceptDTO conceptDTO;
+        List<LibraryInfo> libraryinfos;
 
         // 获取医学术语的基本信息
         QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
@@ -63,11 +65,15 @@ public class ConceptFacade extends ConceptServiceImpl {
         List<LibraryInfo> libraryInfos = libraryinfoFacade.list(query);
 
         for (LibraryInfo libraryInfo:libraryInfos) {
+            libraryinfos = new ArrayList<>();
+
             conceptDTO = new ConceptDTO();
             conceptDTO.setId(libraryInfo.getConceptId());
             conceptDTO.setLibId(libraryInfo.getId().intValue());
             conceptDTO.setName(libraryInfo.getName());
-            conceptDTO.setLibraryInfo(libraryInfo);
+
+            libraryinfos.add(libraryInfo);
+            conceptDTO.setLibraryInfo(libraryinfos);
 
             conceptDTOs.add(conceptDTO);
         }
@@ -211,6 +217,53 @@ public class ConceptFacade extends ConceptServiceImpl {
         termVo.setTerm(amendTermVo.getConcept());
         termVo.setType(amendTermVo.getNewtype());
 
+        LibraryInfo libraryInfo = libraryinfoFacade.upsertLibraryInfo(amendTermVo);
+
+        QueryWrapper<Concept> query = new QueryWrapper<>();
+        query.eq("lib_id", libraryInfo.getId());
+        Concept concept = getOne(query);
+
+        if (concept == null) {
+            concept = new Concept();
+            concept.setLibId(libraryInfo.getId().intValue());
+            saveOrUpdate(concept);
+
+            concept = getOne(query);
+        }
+
+        libraryInfo.setConceptId(concept.getId());
+        libraryInfo.setIsConcept(1);
+        libraryinfoFacade.saveOrUpdate(libraryInfo);
+
+        if (amendTermVo.getLibraryInfo() != null && amendTermVo.getLibraryInfo().size() > 0) {
+            List<LibraryInfo> libraryInfos = amendTermVo.getLibraryInfo();
+            for (LibraryInfo libraryinfo:libraryInfos) {
+                libraryinfo.setConceptId(concept.getId());
+                libraryinfo.setIsConcept(0);
+                libraryinfo.setIsDeleted("N");
+                libraryinfoFacade.saveOrUpdate(libraryinfo);
+            }
+        }
+
+        /*
+        QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
+        query.eq("name", amendTermVo.getConcept());
+        query.eq("type", amendTermVo.getNewtype());
+        libraryInfo = libraryinfoFacade.getOne(query);
+
+        // 如果术语不存在, 或者术语存在,但处于删除状态
+        if (libraryInfo == null) {
+            AmendTermVo amendconcept = new AmendTermVo();
+            amendconcept.setOldterm("");
+            amendconcept.setNewterm(amendTermVo.getConcept());
+            amendconcept.setConcept(amendTermVo.getConcept());
+            amendconcept.setNewtype(amendTermVo.getNewtype());
+            libraryInfo = libraryinfoFacade.upsertLibraryInfo(amendconcept);
+        }
+        *
+
+        // 如果术语已存在
+
         // 如果概念术语不存在,添加新术语,然后添加新的概念
         conceptDTO = getConcept(termVo);
         if (conceptDTO == null) {
@@ -236,11 +289,28 @@ public class ConceptFacade extends ConceptServiceImpl {
             conceptDTO = getConcept(termVo);
         }
 
+
         amendTermVo.setConcept_id(conceptDTO.getId());
         LibraryInfo libraryInfo = libraryinfoFacade.upsertLibraryInfo(amendTermVo);
         conceptDTO.setLibraryInfo(libraryInfo);
 
-        conceptDTO = updateConceptInfo(amendTermVo, conceptDTO);
+//        conceptDTO = updateConceptInfo(amendTermVo, conceptDTO);
+        */
+
+        query = new QueryWrapper<>();
+        query.eq("name", amendTermVo.getNewterm());
+        query.eq("type", amendTermVo.getNewtype());
+        concept = getOne(query);
+
+        BeanUtils.copyProperties(concept, conceptDTO);
+
+        QueryWrapper<LibraryInfo> conceptquery = new QueryWrapper<>();
+        conceptquery = new QueryWrapper<>();
+        conceptquery.eq("concept_id", concept.getId());
+        conceptquery.isNull("is_concept");
+        List<LibraryInfo> libraryInfos = libraryinfoFacade.list(conceptquery);
+
+        conceptDTO.setLibraryInfo(libraryInfos);
 
         return conceptDTO;
     }
@@ -251,10 +321,10 @@ public class ConceptFacade extends ConceptServiceImpl {
      * @param amendTermVo
      * @param conceptDTO
      * @return ConceptDTO
-     */
+     *
     public ConceptDTO updateConceptInfo(AmendTermVo amendTermVo, ConceptDTO conceptDTO) {
 
-        libraryDetailFacade.upsertLibraryInfo(amendTermVo);
+        libraryDetailFacade.upsertConceptKnowledge(amendTermVo);
         conceptDTO.setInformation(amendTermVo.getInformation());
 
         medicalFacade.upsertMedicalInfo(amendTermVo);
@@ -265,6 +335,7 @@ public class ConceptFacade extends ConceptServiceImpl {
 
         return conceptDTO;
     }
+    */
 
 
 

+ 67 - 23
knowledgeman-service/src/main/java/com/diagbot/facade/LibraryDetailFacade.java

@@ -96,41 +96,85 @@ public class LibraryDetailFacade extends LibraryDetailServiceImpl {
      * 更新或添加医学术语静态信息
      *
      * @param amendTermVo
-     * @return
+     * @return ConceptDTO
      */
-    public void upsertLibraryInfo(AmendTermVo amendTermVo) {
+    public ConceptDTO upsertConceptKnowledge(AmendTermVo amendTermVo) {
 
-        if (amendTermVo.getInformation() != null && amendTermVo.getInformation().size() > 0) {
-            for (int i=0; i<amendTermVo.getInformation().size(); i++) {
-                LibraryDetail detail = amendTermVo.getInformation().get(i);
-                int concept_id = detail.getConceptId().intValue();
+        ConceptDTO conceptDTO = new ConceptDTO();
 
-                if (concept_id > 0) {
-                    String title = detail.getTitle();
+        LibraryDetail libraryDetail;
+        List<LibraryDetail> libraryDetails;
 
-//                    TermVo termVo = new TermVo();
-//                    termVo.setConcept_id(concept_id);
+        conceptDTO.setName(amendTermVo.getNewterm());
+        QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
+        query.eq("name", amendTermVo.getNewterm());
+        query.eq("type", amendTermVo.getNewtype());
+        LibraryInfo libraryInfo = libraryInfoFacade.getOne(query);
 
-                    Map<String, Object> map = new HashMap<>();
-                    map.put("concept_id", concept_id);
-                    List<LibraryDetail> details = getLibraryDetails(map);
+        if (amendTermVo.getInformation() != null && libraryInfo != null) {
 
-                    if (details != null && details.size() > 0) {
-                        for (LibraryDetail item : details) {
-                            if (item.getTitle().equals(title)) {
-                                detail.setId(item.getId());
-                                break;
-                            }
-                        }
-                    }
+            conceptDTO.setLibId(libraryInfo.getId().intValue());
+            conceptDTO.setId(libraryInfo.getConceptId());
+            conceptDTO.setMedicalInfo(new ArrayList<>());
 
-                    this.saveOrUpdate(detail);
+            for (int i=0; i<amendTermVo.getInformation().size(); i++) {
+                libraryDetail = amendTermVo.getInformation().get(i);
+
+                QueryWrapper<LibraryDetail> detquery = new QueryWrapper<>();
+                detquery.eq("concept_id", libraryInfo.getConceptId());
+                libraryDetails = list(detquery);
+
+                if (libraryDetails.size() > 0) {
+                    LibraryDetail exist_medical = libraryDetails.get(0);
+                    libraryDetail.setId(exist_medical.getId());
+                }
+                else {
+                    libraryDetail.setConceptId(libraryInfo.getConceptId().longValue());
                 }
+
+                this.saveOrUpdate(libraryDetail);
+
+                conceptDTO.getInformation().add(libraryDetail);
             }
         }
         else {
-            amendTermVo.setInformation(null);
+            conceptDTO.setInformation(null);
+        }
+
+        return conceptDTO;
+    }
+
+    /**
+     * 删除术语医学信息
+     *
+     * @param termVo
+     * @return ConceptDTO
+     */
+    public Boolean deleteConceptKnowledge(TermVo termVo) {
+
+        Boolean isdeleted = false;
+        List<LibraryDetail> libraryDetails;
+
+        QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
+        query.eq("name", termVo.getTerm());
+        query.eq("type", termVo.getType());
+        LibraryInfo libraryInfo = libraryInfoFacade.getOne(query);
+
+        if (libraryInfo != null) {
+            QueryWrapper<LibraryDetail> detquery = new QueryWrapper<>();
+            detquery.eq("concept_id", libraryInfo.getConceptId());
+            libraryDetails = list(detquery);
+
+            if (libraryDetails != null && libraryDetails.size() > 0) {
+                for (LibraryDetail libraryDetail:libraryDetails) {
+                    libraryDetail.setIsDeleted('Y');
+                    saveOrUpdate(libraryDetail);
+                }
+                isdeleted = true;
+            }
         }
+
+        return isdeleted;
     }
 
     /**

+ 52 - 5
knowledgeman-service/src/main/java/com/diagbot/facade/LibraryInfoFacade.java

@@ -56,13 +56,60 @@ public class LibraryInfoFacade extends LibraryInfoServiceImpl {
      */
     public LibraryInfo upsertLibraryInfo(AmendTermVo amendTermVo) {
 
-        String oldterm = amendTermVo.getOldterm();
-        String newterm = amendTermVo.getNewterm();
-        String type = amendTermVo.getNewtype();
-        String concept = amendTermVo.getConcept();
+        String oldterm = amendTermVo.getOldterm().trim();
+        String oldtype = amendTermVo.getOldtype().trim();
+        String newterm = amendTermVo.getNewterm().trim();
+        String newtype = amendTermVo.getNewtype().trim();
+        String concept = amendTermVo.getConcept().trim();
         int concept_id = amendTermVo.getConcept_id();
 
+        QueryWrapper<LibraryInfo> queryWrapper;
+        LibraryInfo libraryInfo = null;
 
+        // 原先的术语名称不为空,则修改原先的术语
+        if (oldterm.length() > 0 && oldtype.length() > 0) {
+            queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("name", oldterm);
+            queryWrapper.eq("type", oldtype);
+
+            libraryInfo = getOne(queryWrapper);
+
+            if (libraryInfo != null) {
+                libraryInfo.setName(newterm);
+                libraryInfo.setType(newtype);
+
+                if (libraryInfo.getIsDeleted() == "Y") {
+                    libraryInfo.setIsDeleted("N");
+                }
+
+                saveOrUpdate(libraryInfo);
+            }
+        }
+        else {
+            queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("name", newterm);
+            queryWrapper.eq("type", newtype);
+
+            libraryInfo = getOne(queryWrapper);
+
+            // 新的术语不存在
+            if (libraryInfo == null) {
+                libraryInfo = new LibraryInfo();
+                libraryInfo.setName(newterm);
+                libraryInfo.setType(newtype);
+
+                saveOrUpdate(libraryInfo);
+            }
+            // 新的术语存在,但处于删除状态
+            else if (libraryInfo.getIsDeleted() == "Y") {
+                libraryInfo.setIsDeleted("N");
+                saveOrUpdate(libraryInfo);
+            }
+
+            libraryInfo = getOne(queryWrapper);
+        }
+
+        /*
         Map<String, Object> map = new HashMap<>();
         map.put("name", concept);
         map.put("type", type);
@@ -100,7 +147,7 @@ public class LibraryInfoFacade extends LibraryInfoServiceImpl {
         }
 
         this.saveOrUpdate(libraryInfo);
-
+        */
         return libraryInfo;
     }
 

+ 18 - 10
knowledgeman-service/src/main/java/com/diagbot/facade/MedicalFacade.java

@@ -98,7 +98,7 @@ public class MedicalFacade extends MedicalServiceImpl {
     public ConceptDTO upsertMedicalInfo(AmendTermVo amendTermVo) {
         ConceptDTO conceptDTO = new ConceptDTO();
 
-        Map<String, Object> map;
+//        Map<String, Object> map;
         Medical medical;
         List<Medical> medicals;
 
@@ -118,16 +118,20 @@ public class MedicalFacade extends MedicalServiceImpl {
                 medical = amendTermVo.getMedicalInfo().get(i);
 //                medical = amendTermVo.getMedicalInfo();
 
-                map = new HashMap<>();
-                map.put("name", amendTermVo.getNewterm());
-                medicals = getMedicalInfo(map);
+//                map = new HashMap<>();
+//                map.put("name", amendTermVo.getNewterm());
+//                medicals = getMedicalInfo(map);
+
+                QueryWrapper<Medical> medquery = new QueryWrapper<>();
+                medquery.eq("name", amendTermVo.getNewterm());
+                medicals = list(medquery);
 
                 if (medicals.size() > 0) {
-                    Medical exist_medical = getMedicalInfo(map).get(0);
+                    Medical exist_medical = medicals.get(0);
                     medical.setId(exist_medical.getId());
                 }
                 else {
-                    medical.setConceptId(amendTermVo.getConcept_id());
+                    medical.setConceptId(libraryInfo.getConceptId());
                 }
 
 
@@ -152,7 +156,7 @@ public class MedicalFacade extends MedicalServiceImpl {
     public Boolean deleteMedicalInfo(TermVo termVo) {
 
         Boolean isdeleted = false;
-        Medical medical;
+        List<Medical> medicals;
 
         QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
         query.eq("name", termVo.getTerm());
@@ -163,10 +167,14 @@ public class MedicalFacade extends MedicalServiceImpl {
             QueryWrapper<Medical> medquery = new QueryWrapper<>();
             medquery.eq("name", termVo.getTerm());
             medquery.eq("concept_id", libraryInfo.getConceptId());
-            medical = getOne(medquery);
+            medicals = list(medquery);
 
-            if (medical != null) {
-                return remove(medquery);
+            if (medicals != null && medicals.size() > 0) {
+                for (Medical medical:medicals) {
+                    medical.setIs_deleted("Y");
+                    saveOrUpdate(medical);
+                }
+                isdeleted = true;
             }
         }
 

+ 5 - 4
knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -88,10 +88,11 @@ public class ConceptController {
 
         return RespDTO.onSuc(data);
     }
+    */
 
-    @ApiOperation(value = "术语修改",
-            notes = "OldTerm: 原来的术语名称, 必填<br/>NewTerm: 新的术语名称, 必填<br/>" +
-                    "Concept: 概念名称,必填<br/>Type: 新的术语类型, 必填<br/>")
+    @ApiOperation(value = "术语基本信息修改",
+            notes = "Concept: 概念名称,必填<br/>NewTerm: 新的术语名称, 必填<br/>" +
+                    "NewType: 新的术语类型, 必填<br/>")
     @PostMapping("/updateConceptInfo")
     @SysLogger("updateConceptInfo")
     public RespDTO<ConceptDTO> updateConceptInfo(@Valid @RequestBody AmendTermVo amendTermVo) {
@@ -99,7 +100,7 @@ public class ConceptController {
 
         return RespDTO.onSuc(data);
     }
-    */
+
 
     @ApiOperation(value = "术语导入", notes = "导入术语信息")
     @PostMapping("/importTermExcel")

+ 17 - 17
knowledgeman-service/src/main/java/com/diagbot/web/LibraryDetailController.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.ConceptDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.TermDTO;
 import com.diagbot.facade.LibraryDetailFacade;
+import com.diagbot.vo.AmendTermVo;
 import com.diagbot.vo.TermVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -30,16 +31,7 @@ import javax.validation.Valid;
 public class LibraryDetailController {
     @Autowired
     private LibraryDetailFacade libraryDetailFacade;
-    /*
-    @ApiOperation(value = "查询所有术语")
-    @PostMapping("getAllConcept")
-    @SysLogger("getAllConcept")
-    public RespDTO<TermDTO> getAllConcept() {
-        List<ConceptDTO> data = conceptFacade.getAllConcept();
 
-        return RespDTO.onSuc(data);
-    }
-    */
 
     @ApiOperation(value = "术语静态知识查询",
             notes = "Term:术语名称, 必填<br>Type:术语类型, 必填<br>")
@@ -51,17 +43,25 @@ public class LibraryDetailController {
         return RespDTO.onSuc(data);
     }
 
-    /*
-    @ApiOperation(value = "术语修改",
+
+    @ApiOperation(value = "术语静态知识修改",
             notes = "OldTerm: 原来的术语名称, 必填<br/>NewTerm: 新的术语名称, 必填<br/>" +
-                    "Concept: 概念名称,必填<br/>Type: 新的术语类型, 必填<br/>")
-    @PostMapping("/updateConceptInfo")
-    @SysLogger("updateConceptInfo")
-    public RespDTO<ConceptDTO> updateConceptInfo(@Valid @RequestBody AmendTermVo amendTermVo) {
-        ConceptDTO data = conceptFacade.upsertConceptInfo(amendTermVo);
+                    "OldType: 原来的术语类型, 必填<br/>NewType: 新的术语类型, 必填<br/>")
+    @PostMapping("/upsertConceptKnowledge")
+    @SysLogger("upsertConceptKnowledge")
+    public RespDTO<ConceptDTO> upsertConceptKnowledge(@Valid @RequestBody AmendTermVo amendTermVo) {
+        ConceptDTO data = libraryDetailFacade.upsertConceptKnowledge(amendTermVo);
 
         return RespDTO.onSuc(data);
     }
-    */
 
+    @ApiOperation(value = "术语静态知识删除",
+            notes = "Term: 术语名称, 必填<br/>Type: 术语类型, 必填<br/>")
+    @PostMapping("/deleteConceptKnowledge")
+    @SysLogger("deleteConceptKnowledge")
+    public RespDTO<ConceptDTO> deleteConceptKnowledge(@Valid @RequestBody TermVo termVo) {
+        Boolean result = libraryDetailFacade.deleteConceptKnowledge(termVo);
+
+        return RespDTO.onSuc(result);
+    }
 }

+ 1 - 4
knowledgeman-service/src/main/java/com/diagbot/web/MedicalController.java

@@ -45,8 +45,7 @@ public class MedicalController {
     }
 
     @ApiOperation(value = "术语医学知识修改",
-            notes = "OldTerm: 原来的术语名称, 必填<br/>NewTerm: 新的术语名称, 必填<br/>" +
-                    "OldType: 原来的术语类型, 必填<br/>NewType: 新的术语类型, 必填<br/>")
+            notes = "NewTerm: 新的术语名称, 必填<br/>NewType: 新的术语类型, 必填<br/>")
     @PostMapping("/upsertMedicalInfo")
     @SysLogger("upsertMedicalInfo")
     public RespDTO<ConceptDTO> upsertMedicalInfo(@Valid @RequestBody AmendTermVo amendTermVo) {
@@ -64,6 +63,4 @@ public class MedicalController {
 
         return RespDTO.onSuc(result);
     }
-
-
 }

+ 1 - 0
knowledgeman-service/src/main/resources/mapper/MedicalMapper.xml

@@ -20,6 +20,7 @@
         <result column="dept" property="dept" />
         <result column="code" property="code" />
         <result column="note" property="note" />
+        <result column="is_deleted" property="is_deleted" />
     </resultMap>
 
     <select id="getTypeId" parameterType="com.diagbot.vo.TypeVo" resultType="com.diagbot.dto.TypeDTO">