Преглед изворни кода

Merge branch 'dev/knowledge' into dev/KLBstand

gaodm пре 6 година
родитељ
комит
e6369ee316
17 измењених фајлова са 398 додато и 240 уклоњено
  1. 5 1
      knowledgeman-service/src/main/java/com/diagbot/dto/GetAllInformationDTO.java
  2. 5 1
      knowledgeman-service/src/main/java/com/diagbot/dto/GetRelationInfoListDTO.java
  3. 84 71
      knowledgeman-service/src/main/java/com/diagbot/entity/LibraryInfo.java
  4. 124 90
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  5. 1 1
      knowledgeman-service/src/main/java/com/diagbot/facade/LibraryDetailFacade.java
  6. 76 46
      knowledgeman-service/src/main/java/com/diagbot/facade/RelationFacade.java
  7. 8 0
      knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java
  8. 6 2
      knowledgeman-service/src/main/java/com/diagbot/vo/AddRelationInfoVO.java
  9. 6 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetAllInformationVO.java
  10. 6 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetRelationInfoListVO.java
  11. 8 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RemoveConceptInfoVO.java
  12. 8 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RemoveRelationInfoVO.java
  13. 1 1
      knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java
  14. 1 1
      knowledgeman-service/src/main/java/com/diagbot/web/RelationController.java
  15. 30 8
      knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml
  16. 14 10
      knowledgeman-service/src/main/resources/mapper/LibraryInfoMapper.xml
  17. 15 8
      knowledgeman-service/src/main/resources/mapper/RelationMapper.xml

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

@@ -55,7 +55,11 @@ public class GetAllInformationDTO {
 	@ApiModelProperty(value="操作时间")
     private Date operTime;
     
-    
+	/**
+     * 状态:Y-已删除,N-启用中
+     */
+	@ApiModelProperty(value="状态:Y-已删除,N-启用中")
+	private String isDeleted;
     
     
     

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

@@ -84,7 +84,11 @@ public class GetRelationInfoListDTO {
 	@ApiModelProperty(value="操作时间")
     private Date operTime;
     
-    
+	/**
+     * 状态:Y-已删除,N-启用中
+     */
+	@ApiModelProperty(value="状态:Y-已删除,N-启用中")
+	private String isDeleted;
     
     
     

+ 84 - 71
knowledgeman-service/src/main/java/com/diagbot/entity/LibraryInfo.java

@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
  * </p>
  *
  * @author gaodm
- * @since 2019-03-26
+ * @since 2019-04-19
  */
 public class LibraryInfo implements Serializable {
 
@@ -25,59 +25,64 @@ public class LibraryInfo implements Serializable {
     private Long id;
 
     /**
-     * 是否删除,N:未删除,Y:删除
+     * 名称
      */
-    private String isDeleted;
+    private String name;
 
     /**
-     * 记录创建时间
+     * 术语类型id
      */
-    private Date gmtCreated;
+    private Long typeId;
 
     /**
-     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     * 类型
      */
-    private Date gmtModified;
+    private String type;
 
     /**
-     * 创建人,0表示无创建人值
+     * 概念id
      */
-    private String creator;
+    private Long conceptId;
 
     /**
-     * 修改人,如果为0则表示纪录未修改
+     * 是否标准词,1:是,0:否
      */
-    private String modifier;
+    private Integer isConcept;
 
     /**
-     * 名称
+     * 术语排序
      */
-    private String name;
+    private Integer orderNo;
 
     /**
-     * 类型
+     * 是否删除,N:未删除,Y:删除
      */
-    private String type;
+    private String isDeleted;
 
     /**
-     * 备注
+     * 创建人,0表示无创建人值
      */
-    private String remark;
+    private String creator;
 
     /**
-     * 概念id
+     * 修改人,如果为0则表示纪录未修改
      */
-    private Long conceptId;
+    private String modifier;
 
     /**
-     * 术语排序
+     * 记录创建时间
      */
-    private Integer orderNo;
+    private Date gmtCreated;
 
     /**
-     * 是否标准词,1:是,0:否
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private Integer isConcept;
+    private Date gmtModified;
+
+    /**
+     * 备注
+     */
+    private String remark;
 
     public Long getId() {
         return id;
@@ -86,26 +91,54 @@ public class LibraryInfo implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
-    public String getIsDeleted() {
-        return isDeleted;
+    public String getName() {
+        return name;
     }
 
-    public void setIsDeleted(String isDeleted) {
-        this.isDeleted = isDeleted;
+    public void setName(String name) {
+        this.name = name;
     }
-    public Date getGmtCreated() {
-        return gmtCreated;
+    public Long getTypeId() {
+        return typeId;
     }
 
-    public void setGmtCreated(Date gmtCreated) {
-        this.gmtCreated = gmtCreated;
+    public void setTypeId(Long typeId) {
+        this.typeId = typeId;
     }
-    public Date getGmtModified() {
-        return gmtModified;
+    public String getType() {
+        return type;
     }
 
-    public void setGmtModified(Date gmtModified) {
-        this.gmtModified = gmtModified;
+    public void setType(String type) {
+        this.type = type;
+    }
+    public Long getConceptId() {
+        return conceptId;
+    }
+
+    public void setConceptId(Long conceptId) {
+        this.conceptId = conceptId;
+    }
+    public Integer getIsConcept() {
+        return isConcept;
+    }
+
+    public void setIsConcept(Integer isConcept) {
+        this.isConcept = isConcept;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
     }
     public String getCreator() {
         return creator;
@@ -121,19 +154,19 @@ public class LibraryInfo implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
-    public String getName() {
-        return name;
+    public Date getGmtCreated() {
+        return gmtCreated;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public void setGmtCreated(Date gmtCreated) {
+        this.gmtCreated = gmtCreated;
     }
-    public String getType() {
-        return type;
+    public Date getGmtModified() {
+        return gmtModified;
     }
 
-    public void setType(String type) {
-        this.type = type;
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
     }
     public String getRemark() {
         return remark;
@@ -142,43 +175,23 @@ public class LibraryInfo implements Serializable {
     public void setRemark(String remark) {
         this.remark = remark;
     }
-    public Long getConceptId() {
-        return conceptId;
-    }
-
-    public void setConceptId(Long conceptId) {
-        this.conceptId = conceptId;
-    }
-    public Integer getOrderNo() {
-        return orderNo;
-    }
-
-    public void setOrderNo(Integer orderNo) {
-        this.orderNo = orderNo;
-    }
-    public Integer getIsConcept() {
-        return isConcept;
-    }
-
-    public void setIsConcept(Integer isConcept) {
-        this.isConcept = isConcept;
-    }
 
     @Override
     public String toString() {
         return "LibraryInfo{" +
         "id=" + id +
-        ", isDeleted=" + isDeleted +
-        ", gmtCreated=" + gmtCreated +
-        ", gmtModified=" + gmtModified +
-        ", creator=" + creator +
-        ", modifier=" + modifier +
         ", name=" + name +
+        ", typeId=" + typeId +
         ", type=" + type +
-        ", remark=" + remark +
         ", conceptId=" + conceptId +
-        ", orderNo=" + orderNo +
         ", isConcept=" + isConcept +
+        ", orderNo=" + orderNo +
+        ", isDeleted=" + isDeleted +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
+        ", gmtCreated=" + gmtCreated +
+        ", gmtModified=" + gmtModified +
+        ", remark=" + remark +
         "}";
     }
 }

+ 124 - 90
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -31,10 +31,9 @@ import com.diagbot.dto.GetAllLisConceptDTO;
 import com.diagbot.dto.GetConceptInfoDetailDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.Concept;
-import com.diagbot.entity.LibraryDetail;
+import com.diagbot.entity.Lexicon;
 import com.diagbot.entity.LibraryInfo;
 import com.diagbot.entity.Medical;
-import com.diagbot.entity.Relation;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.LibraryInfoService;
@@ -61,17 +60,19 @@ public class ConceptFacade extends ConceptServiceImpl {
 
     @Autowired
     private LibraryInfoFacade libraryinfoFacade;
-    @Autowired
-    private LibraryDetailFacade libraryDetailFacade;
+//    @Autowired
+//    private LibraryDetailFacade libraryDetailFacade;
     @Autowired
     private MedicalFacade medicalFacade;
-    @Autowired
-    private RelationFacade relationFacade;
+//    @Autowired
+//    private RelationFacade relationFacade;
     @Autowired
     @Qualifier("libraryInfoServiceImpl")
     private LibraryInfoService libraryInfoService;
     @Autowired
     private UserServiceClient userServiceClient;
+    @Autowired
+    private LexiconFacade lexiconFacade;
     
     /**
      * 获取所有化验公表项
@@ -157,12 +158,12 @@ public class ConceptFacade extends ConceptServiceImpl {
     }
     
     /**
-     * 医学术语命名删除
+     * 医学术语命名删除或者恢复
      * @param removeConceptInfoVO
      * @return
      */
     public Boolean removeConceptInfo(RemoveConceptInfoVO removeConceptInfoVO) {
-    	StringBuffer sbf = new StringBuffer();
+    	/*StringBuffer sbf = new StringBuffer();
     	
     	QueryWrapper<Medical> medicalQe = new QueryWrapper<Medical>();
     	medicalQe.eq("is_deleted", "N");
@@ -187,12 +188,12 @@ public class ConceptFacade extends ConceptServiceImpl {
     	
     	if(sbf.length()>0){
     		throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
-    	}
+    	}*/
     	
     	String currentUser = UserUtils.getCurrentPrincipleID();
     	Date now = DateUtil.now(); 
     	
-    	QueryWrapper<LibraryInfo> libraryInfoQe1 = new QueryWrapper<>();
+    	/*QueryWrapper<LibraryInfo> libraryInfoQe1 = new QueryWrapper<>();
     	libraryInfoQe1.eq("concept_id", removeConceptInfoVO.getConceptId());
     	libraryInfoQe1.eq("is_concept", 0);
     	libraryinfoFacade.remove(libraryInfoQe1);
@@ -203,13 +204,31 @@ public class ConceptFacade extends ConceptServiceImpl {
     	libraryInfo.setIsDeleted("Y");
     	libraryInfo.setGmtModified(now);
     	libraryInfo.setModifier(currentUser);
-    	libraryinfoFacade.update(libraryInfo, libraryInfoQe2);
-    	
-    	Concept concept = new Concept();
+    	libraryinfoFacade.update(libraryInfo, libraryInfoQe2);*/
+  
+    	/*Concept concept = new Concept();
     	concept.setId(removeConceptInfoVO.getConceptId());
     	concept.setIsDeleted("Y");
     	concept.setModifier(currentUser);
     	concept.setGmtModified(now);
+    	this.updateById(concept);*/
+    	
+    	Concept concept = this.getById(removeConceptInfoVO.getConceptId());
+    	if(concept==null){
+    		throw new CommonException(CommonErrorCode.NOT_EXISTS);
+    	}
+    	if(concept.getIsDeleted().equals(removeConceptInfoVO.getIsDeleted())){
+    		if(removeConceptInfoVO.getIsDeleted().equals("Y")){
+    			throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已删除!");
+    		}
+    		if(removeConceptInfoVO.getIsDeleted().equals("N")){
+    			throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已恢复!");
+    		}
+    	}
+    	
+    	concept.setIsDeleted(removeConceptInfoVO.getIsDeleted());
+    	concept.setModifier(currentUser);
+    	concept.setGmtModified(now);
     	this.updateById(concept);
     	
         return true;
@@ -223,8 +242,6 @@ public class ConceptFacade extends ConceptServiceImpl {
     public Map<String,List<GetConceptInfoDetailDTO>> getConceptInfoDetail(GetConceptInfoDetailVO getConceptInfoDetailVO){
     	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
     	libraryInfoQe.eq("concept_id", getConceptInfoDetailVO.getConceptId());
-    	libraryInfoQe.eq("is_deleted", "N");
-    	libraryInfoQe.orderByAsc("order_no");
     	List<LibraryInfo> libraryInfoList = libraryinfoFacade.list(libraryInfoQe);
     	
     	Map<String,List<GetConceptInfoDetailDTO>> retMap = new HashMap<>();
@@ -236,22 +253,31 @@ public class ConceptFacade extends ConceptServiceImpl {
     
     /**
      * 医学术语命名添加或者编辑
-     * 说明:1、不允许单个非标准术语添加
-     * 
      * @param addConceptInfoVO
      * @return
      */
 	public Boolean addConceptInfo(AddConceptInfoVO addConceptInfoVO){
+		String lineNumStr = "";
+		if(addConceptInfoVO.getLineNum()!=null){
+			lineNumStr = "第"+addConceptInfoVO.getLineNum()+"行";
+		}
 		if(addConceptInfoVO.getDetailList().stream().distinct().count()!=addConceptInfoVO.getDetailList().size()){
-			throw new CommonException(CommonErrorCode.RPC_ERROR,"存在重复数据("+addConceptInfoVO.getName()+")");
+			throw new CommonException(CommonErrorCode.RPC_ERROR,lineNumStr+"存在重复数据!");
 		}
 		
     	List<AddConceptInfoDetailVO> addConceptInfoDetailVOMainList = addConceptInfoVO.getDetailList().stream().filter(i->i.getIsConcept()==1).collect(Collectors.toList());
     	if(addConceptInfoDetailVOMainList.size()==0){
-    		throw new CommonException(CommonErrorCode.RPC_ERROR,"无标准术语("+addConceptInfoVO.getName()+")");
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,lineNumStr+"无标准术语!");
     	}
     	if(addConceptInfoDetailVOMainList.size()>1){
-    		throw new CommonException(CommonErrorCode.RPC_ERROR,"标准术语只能有一个("+addConceptInfoVO.getName()+")");
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,lineNumStr+"标准术语只能有一个!");
+    	}
+    	
+    	QueryWrapper<Lexicon> lexiconQe = new QueryWrapper<>();
+    	lexiconQe.eq("name", addConceptInfoVO.getType());
+    	Lexicon lexicon = lexiconFacade.getOne(lexiconQe);
+    	if(lexicon==null){
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,lineNumStr+"数据有误,该类型信息在数据库中不存在!");
     	}
     	
     	List<LibraryInfo> saveOrUpdateLibraryInfoList = new ArrayList<>();
@@ -271,65 +297,47 @@ public class ConceptFacade extends ConceptServiceImpl {
     	LibraryInfo libraryInfoMain = libraryInfoMap.get(addConceptInfoDetailVOMain.getName());
     	Concept concept = new Concept();
     	Long conceptId = null;
-    	int oldlibraryInfoCount = 0;
-    	boolean isUpdateConcept = false;
     	if(libraryInfoMain==null){
     		libraryInfoMain = new LibraryInfo();
 			BeanUtil.copyProperties(addConceptInfoDetailVOMain, libraryInfoMain);
 			libraryInfoMain.setGmtCreated(now);
 			libraryInfoMain.setCreator(currentUser);
-			libraryInfoMain.setGmtModified(now);
-			libraryInfoMain.setModifier(currentUser);
 			libraryInfoMain.setType(addConceptInfoVO.getType());
+			libraryInfoMain.setTypeId(lexicon.getId());
 			libraryinfoFacade.save(libraryInfoMain);
 			concept.setLibId(libraryInfoMain.getId());
 			concept.setGmtCreated(now);
 			concept.setCreator(currentUser);
-			concept.setGmtModified(now);
-			concept.setModifier(currentUser);
-			save(concept);
+			concept.setId(addConceptInfoVO.getConceptId());
+			saveOrUpdate(concept);
 			conceptId = concept.getId();
-			libraryInfoMain.setConceptId(conceptId);
     	}else{
-    		if(libraryInfoMain.getIsDeleted().equals("N")&&libraryInfoMain.getIsConcept()==0
-    				&&(libraryInfoList.stream().filter(i->i.getIsDeleted().equals("N")).count()==1||libraryInfoList.stream().filter(i->i.getIsDeleted().equals("N")).map(i->i.getConceptId()).distinct().count()>1)){
-        		QueryWrapper<LibraryInfo> libraryInfoQe2 = new QueryWrapper<>();
-        		libraryInfoQe2.eq("is_deleted", "N");
-        		libraryInfoQe2.eq("is_concept", 1);
-        		libraryInfoQe2.eq("concept_id", libraryInfoMain.getConceptId());
-        		LibraryInfo libraryInfo = libraryinfoFacade.getOne(libraryInfoQe2);
-        		if(libraryInfo!=null){
-        			throw new CommonException(CommonErrorCode.RPC_ERROR,"标准术语已作为同义词被概念"+libraryInfo.getName()+"-"+libraryInfo.getType()+"占用");
-        		}
-        	}
-    		
     		conceptId = libraryInfoMain.getConceptId();
-    		concept.setId(conceptId);
-
-    		if(libraryInfoMain.getIsDeleted().equals("Y")
-    				||(libraryInfoMain.getIsDeleted().equals("N")&&libraryInfoMain.getIsConcept()==0)
-    				||!(StringUtil.isBlank(libraryInfoMain.getRemark())?"":libraryInfoMain.getRemark()).equals((StringUtil.isBlank(addConceptInfoDetailVOMain.getRemark())?"":addConceptInfoDetailVOMain.getRemark()))){
-        		concept.setLibId(libraryInfoMain.getId());
-        		concept.setIsDeleted("N");
-        		concept.setGmtModified(now);
-    			concept.setModifier(currentUser);
-    			
-    			libraryInfoMain.setIsDeleted("N");
-    			libraryInfoMain.setIsConcept(1);
-    			libraryInfoMain.setGmtModified(now);
-    			libraryInfoMain.setModifier(currentUser);
-    			libraryInfoMain.setRemark(addConceptInfoDetailVOMain.getRemark());
-    			
-    			isUpdateConcept = true;
-    		}
+    		int ckConceptId = conceptId.intValue();
+    		concept = getById(conceptId);
     		
-    		QueryWrapper<LibraryInfo> libraryInfoQe2 = new QueryWrapper<>();
-    		libraryInfoQe2.eq("concept_id", conceptId);
-    		libraryInfoQe2.ne("id", libraryInfoMain.getId());
-    		oldlibraryInfoCount = libraryinfoFacade.count(libraryInfoQe2);
-    		libraryinfoFacade.remove(libraryInfoQe2);
+    		//如果标准词之前作为同义词被其他占用的情况
+    		if(libraryInfoMain.getIsConcept()==1){
+    			//新增操作时,已经建立的标准词提示
+        		if(addConceptInfoVO.getLineNum()==null&&addConceptInfoVO.getConceptId()==null){
+        			if(concept.getIsDeleted().equals("N")){
+        				throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已经建立!");
+        			}else{
+        				throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已经建立且处于已删除状态,可前往列表中恢复该条数据!");
+        			}
+        		}
+        	}else if(addConceptInfoVO.getLineNum()==null&&addConceptInfoVO.getConceptId()==null&&concept!=null
+        			||libraryInfoList.stream().filter(i->i.getConceptId().intValue()==ckConceptId).count()==1){
+        		throw new CommonException(CommonErrorCode.RPC_ERROR,lineNumStr+"标准术语已作为同义词被占用!");
+        	}
     	}
     	
+    	//先删除概念下的同义词,后续再插入
+    	QueryWrapper<LibraryInfo> libraryInfoQe2 = new QueryWrapper<>();
+		libraryInfoQe2.eq("concept_id", conceptId);
+		libraryInfoQe2.ne("id", libraryInfoMain.getId());
+		libraryinfoFacade.remove(libraryInfoQe2);
+    	
     	StringBuffer sbf = new StringBuffer();
 		for(AddConceptInfoDetailVO i:addConceptInfoVO.getDetailList()){
 			if(i.getIsConcept()==1){
@@ -340,25 +348,15 @@ public class ConceptFacade extends ConceptServiceImpl {
 				libraryInfo = new LibraryInfo();
 				libraryInfo.setGmtCreated(now);
 				libraryInfo.setCreator(currentUser);
-				libraryInfo.setGmtModified(now);
-				libraryInfo.setModifier(currentUser);
-				isUpdateConcept = true;
-			}else if(libraryInfo.getIsDeleted().equals("Y")){
-				libraryInfo.setGmtModified(now);
-				libraryInfo.setModifier(currentUser);
-				isUpdateConcept = true;	
 			}else if(libraryInfo.getConceptId().intValue()!=conceptId.intValue()){
 				sbf.append(i.getName()).append(" ");
 				continue;
-			}else if(!(StringUtil.isBlank(i.getRemark())?"":i.getRemark()).equals((StringUtil.isBlank(libraryInfo.getRemark())?"":libraryInfo.getRemark()))){
-				libraryInfo.setGmtModified(now);
-				libraryInfo.setModifier(currentUser);
-				isUpdateConcept = true;
 			}
 			
+			libraryInfo.setGmtModified(now);
+			libraryInfo.setModifier(currentUser);
 			libraryInfo.setName(i.getName());
 			libraryInfo.setIsConcept(0);
-			libraryInfo.setIsDeleted("N");
 			libraryInfo.setRemark(i.getRemark());
 			saveOrUpdateLibraryInfoList.add(libraryInfo);
 		}
@@ -368,29 +366,30 @@ public class ConceptFacade extends ConceptServiceImpl {
 			throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
 		}
 		
-		//更新前后同义词个数不一样,修改更新时间
-		if(oldlibraryInfoCount!=saveOrUpdateLibraryInfoList.size()){
-			isUpdateConcept = true;
-		}
-		
 		for(LibraryInfo i : saveOrUpdateLibraryInfoList){
 			i.setId(null);
 			i.setConceptId(conceptId);
 			i.setType(addConceptInfoVO.getType());
+			i.setTypeId(lexicon.getId());
 		}
+		libraryInfoMain.setIsConcept(1);
+		libraryInfoMain.setRemark(addConceptInfoDetailVOMain.getRemark());
+		libraryInfoMain.setConceptId(conceptId);
+		libraryInfoMain.setGmtModified(now);
+		libraryInfoMain.setModifier(currentUser);
 		saveOrUpdateLibraryInfoList.add(libraryInfoMain);
 		
 		libraryInfoService.saveOrUpdateBatch(saveOrUpdateLibraryInfoList);
 		
-		if(isUpdateConcept){
-			concept.setGmtModified(now);
-			concept.setModifier(currentUser);
-			updateById(concept);
-		}
+		concept.setId(conceptId);
+    	concept.setLibId(libraryInfoMain.getId());
+		concept.setGmtModified(now);
+		concept.setModifier(currentUser);
+		updateById(concept);
 		
     	return true;
     }
-
+	
     /**
      * 医学术语命名excel文件导入
      * @param file
@@ -401,6 +400,7 @@ public class ConceptFacade extends ConceptServiceImpl {
         StringBuffer sbf = new StringBuffer();
         InputStream inputStream = null;
         Workbook wb = null;
+        String title_1="",title_2="",title_3="",title_4="";
         try {
             if (!file.isEmpty()) {
                 inputStream = file.getInputStream();
@@ -420,9 +420,17 @@ public class ConceptFacade extends ConceptServiceImpl {
                             Sheet sheet = wb.getSheetAt(0);
                             int count = 0;
                             String libName, libType, otherNames, remark;
+                            String regEx="[0-9]+|[`~·!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]+";
                             for (Row row : sheet) {
                                 count++;
-                                if (count == 1 || row == null) {
+                                if(row == null){
+                                	continue;
+                                }
+                                if (count == 1) {
+                                	title_1 = getValue(row.getCell(0)).trim().replace(" ", "");
+                                	title_2 = getValue(row.getCell(1)).trim().replace(" ", "");
+                                	title_3 = getValue(row.getCell(2)).trim().replace(" ", "");
+                                	title_4 = getValue(row.getCell(3)).trim().replace(" ", "");
                                     continue;
                                 }
                                 libName = getValue(row.getCell(0)).trim().replace(" ", "");
@@ -437,8 +445,13 @@ public class ConceptFacade extends ConceptServiceImpl {
                                     sbf.append("第" + count + "行数据不完整;").append("<br/>");
                                     continue;
                                 }
+                                if(StringUtil.isNotEmpty(remark)&&remark.length()>120){
+                                	 sbf.append("第" + count + "行导入错误,说明最大可输入120个字;").append("<br/>");
+                                     continue;
+                                }
                                 
                                 AddConceptInfoVO addConceptInfoVO = new AddConceptInfoVO();
+                                addConceptInfoVO.setLineNum(count);
                                 addConceptInfoVO.setName(libName);
                                 addConceptInfoVO.setType(libType);
                                 List<AddConceptInfoDetailVO> detailList = new ArrayList<>();
@@ -446,6 +459,14 @@ public class ConceptFacade extends ConceptServiceImpl {
                                 	if(StringUtil.isBlank(nm)){
                                 		continue;
                                 	}
+                                	if(nm.matches(regEx)){
+                                		sbf.append("第" + count + "行无法导入,导入数据无法为纯数字或纯特殊字符;").append("<br/>");
+                                   	 	break;
+                                	}
+                                	if(nm.length()>30){
+                                		sbf.append("第" + count + "行导入错误,标准词和同义词最大字数不可超过30个字;").append("<br/>");
+                                        break;
+                                	}
                                 	AddConceptInfoDetailVO addConceptInfoDetailVO = new AddConceptInfoDetailVO();
                                 	addConceptInfoDetailVO.setName(nm);
                                 	addConceptInfoDetailVO.setType(libType);
@@ -489,6 +510,19 @@ public class ConceptFacade extends ConceptServiceImpl {
         	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
         }
         
+        /**********************非规范的excel导入提醒*****************************************/
+        if(title_1.indexOf("标准术语")==-1
+        		||title_2.indexOf("类型")==-1
+        		||title_3.indexOf("术语同义词")==-1
+        		||title_4.indexOf("标准术语说明")==-1){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,"导入数据不正确,请选择正确数据导入!");
+        }
+        
+        /****************************导入空文件************************/
+        if(addConceptInfoVOList.size()==0){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,"导入数据不能为空!");
+        }
+        
         /****************excel文件中所有术语存在重复提示---名字和类型一样即重复***********************/
         List<AddConceptInfoDetailVO> addConceptInfoDetailVOList = new ArrayList<>();
         addConceptInfoVOList.forEach(i->{
@@ -501,10 +535,10 @@ public class ConceptFacade extends ConceptServiceImpl {
         	}
         }
         if(sbf.length()>0){
-        	sbf.append("(术语存在重复)");
+        	sbf.append("数据重复,请修改导入数据!");
         	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
         }
-
+        
         addConceptInfoVOList.forEach(i->{
         	addConceptInfo(i);
         });
@@ -545,5 +579,5 @@ public class ConceptFacade extends ConceptServiceImpl {
             return "";
         }
     }
-
+    
 }

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

@@ -120,7 +120,7 @@ public class LibraryDetailFacade extends LibraryDetailServiceImpl {
 		
 		if(libraryDetail!=null&&libraryDetail.getIsDeleted().equals("N")){
 			if(addLibraryDetailVO.getIsTip()==1){
-				throw new CommonException(CommonErrorCode.RPC_ERROR,"根据(术语、术语来源、标题名称)该静态知识已经建立是否覆盖该内容?是,覆盖内容,否,不覆盖。");
+				throw new CommonException(CommonErrorCode.RPC_ERROR,"根据(术语、术语来源、标题名称)该静态知识已经建立,确定要覆盖该内容吗?确定,覆盖内容,取消,不覆盖。");
 			}
 		}
 		

+ 76 - 46
knowledgeman-service/src/main/java/com/diagbot/facade/RelationFacade.java

@@ -75,47 +75,35 @@ public class RelationFacade extends RelationServiceImpl {
     	if(ids.size()>0){
     		RespDTO<Map<String, String>> respDTO = userServiceClient.getUserInfoByIds(ids);
         	if (respDTO == null || !CommonErrorCode.OK.getCode().equals(respDTO.code)) {
-                throw new CommonException(CommonErrorCode.RPC_ERROR,
-                        "获取用户信息失败");
+                throw new CommonException(CommonErrorCode.RPC_ERROR,"获取用户信息失败");
             }
         	ipage.getRecords().forEach(i->{
         		i.setOperName(respDTO.data.get(i.getOperName()));
         	});
     	}
-    	
-    	List<Long> conceptIds = new ArrayList<>();
-    	conceptIds.addAll(ipage.getRecords().stream().map(i->i.getStartId()).collect(Collectors.toList()));
-    	conceptIds.addAll(ipage.getRecords().stream().map(i->i.getEndId()).collect(Collectors.toList()));
-    	conceptIds = conceptIds.stream().distinct().collect(Collectors.toList());
-    	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
-    	libraryInfoQe.eq("is_deleted", "N");
-    	libraryInfoQe.eq("is_concept", 1);
-    	libraryInfoQe.in("concept_id", conceptIds);
-    	Map<Long,LibraryInfo> libraryInfoMap = libraryInfoFacade.list(libraryInfoQe).stream().collect(Collectors.toMap(LibraryInfo::getConceptId, i->i));
-    	
-    	ipage.getRecords().forEach(i->{
-    		if(libraryInfoMap.get(i.getStartId())!=null){
-    			i.setStartType(libraryInfoMap.get(i.getStartId()).getType());
-    		}
-    		if(libraryInfoMap.get(i.getEndId())!=null){
-    			i.setEndType(libraryInfoMap.get(i.getEndId()).getType());
-    		}
-    	});
     	return ipage;
     }
     
     /**
-     * 医学术语关系删除
+     * 医学术语关系删除或者恢复
      * @param removeRelationInfoVO
      * @return
      */
     public Boolean removeRelationInfo(RemoveRelationInfoVO removeRelationInfoVO) {
     	Relation relation = this.getById(removeRelationInfoVO.getId());
-    	if(relation==null||relation.getIsDeleted().equals("Y")){
+    	if(relation==null){
     		throw new CommonException(CommonErrorCode.NOT_EXISTS);
     	}
+    	if(relation.getIsDeleted().equals(removeRelationInfoVO.getIsDeleted())){
+    		if(removeRelationInfoVO.getIsDeleted().equals("Y")){
+    			throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已删除!");
+    		}
+    		if(removeRelationInfoVO.getIsDeleted().equals("N")){
+    			throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已恢复!");
+    		}
+    	}
     	
-    	relation.setIsDeleted("Y");
+    	relation.setIsDeleted(removeRelationInfoVO.getIsDeleted());
     	relation.setModifier(UserUtils.getCurrentPrincipleID());
     	relation.setGmtModified(DateUtil.now());
         return updateById(relation);
@@ -183,16 +171,22 @@ public class RelationFacade extends RelationServiceImpl {
 			throw new CommonException(CommonErrorCode.RPC_ERROR,message.toString());
 		}
 		
-		if(ckMap.get("relation")!=null){
-			return saveOrUpdate((Relation)(ckMap.get("relation")));
+		Relation relation = (Relation)ckMap.get("relation");
+		if(relation.getId()!=null){
+			if(relation.getIsDeleted().equals("Y")){
+				throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已经建立且处于已删除状态,可前往列表中恢复该条数据!");
+			}else{
+				throw new CommonException(CommonErrorCode.RPC_ERROR,"该数据已存在!");
+			}
 		}
-		return true;
+		
+		return saveOrUpdate((Relation)(ckMap.get("relation")));
     }
 	
 	/**
 	 * 校验即将添加的数据
 	 * @param addRelationInfoVO
-	 * @return 返回map中,包含2个字段:message和relation,message-为空时,表示正常,取relation-relation可能为空,表示已经有了,并且无需更新
+	 * @return 返回map中,包含2个字段:message和relation,message-为空时,表示正常,取relation-relation执行更新或者插入操作
 	 */
 	private Map<String,Object> checkAddRelationInfoVO(AddRelationInfoVO addRelationInfoVO){
 		Map<String,Object> retMap = new HashMap<>();
@@ -204,12 +198,20 @@ public class RelationFacade extends RelationServiceImpl {
 		libraryInfoQe1.eq("type", addRelationInfoVO.getStartType());
 		LibraryInfo startLibraryInfo = libraryInfoFacade.getOne(libraryInfoQe1);
 		if(startLibraryInfo==null){
-			retMap.put("message", "关系起点术语不存在");
+			retMap.put("message", "数据库中无该起始术语!");
 			return retMap;
 		}
 		Concept startConcept = conceptFacade.getById(startLibraryInfo.getConceptId());
-		if(startConcept==null||startConcept.getIsDeleted().equals("Y")||startConcept.getLibId().intValue()!=startLibraryInfo.getId().intValue()){
-			retMap.put("message", "关系起点术语不存在");
+		if(startConcept==null){
+			retMap.put("message", "数据库中无该起始术语!");
+			return retMap;
+		}
+		if(startConcept.getLibId().intValue()!=startLibraryInfo.getId().intValue()){
+			retMap.put("message", "数据库中该起始术语概念绑定数据有问题!");
+			return retMap;
+		}
+		if(startConcept.getIsDeleted().equals("Y")){
+			retMap.put("message", "数据库中该起始术语状态为已删除!");
 			return retMap;
 		}
 
@@ -220,12 +222,20 @@ public class RelationFacade extends RelationServiceImpl {
 		libraryInfoQe2.eq("type", addRelationInfoVO.getEndType());
 		LibraryInfo endLibraryInfo = libraryInfoFacade.getOne(libraryInfoQe2);
 		if(endLibraryInfo==null){
-			retMap.put("message", "关系终点术语不存在");
+			retMap.put("message", "数据库中无该终点术语");
 			return retMap;
 		}
 		Concept endConcept = conceptFacade.getById(endLibraryInfo.getConceptId());
-		if(endConcept==null||endConcept.getIsDeleted().equals("Y")||endConcept.getLibId().intValue()!=endLibraryInfo.getId().intValue()){
-			retMap.put("message", "关系终点术语不存在");
+		if(endConcept==null){
+			retMap.put("message", "数据库中无该终点术语");
+			return retMap;
+		}
+		if(endConcept.getLibId().intValue()!=endLibraryInfo.getId().intValue()){
+			retMap.put("message", "数据库中该终点术语概念绑定数据有问题!");
+			return retMap;
+		}
+		if(endConcept.getIsDeleted().equals("Y")){
+			retMap.put("message", "数据库中该终点术语状态为已删除!");
 			return retMap;
 		}
 		
@@ -234,7 +244,7 @@ public class RelationFacade extends RelationServiceImpl {
 		lexiconRelationshipQe.eq("name", addRelationInfoVO.getRelationName());
 		LexiconRelationship lexiconRelationship = lexiconRelationshipFacade.getOne(lexiconRelationshipQe);
 		if(lexiconRelationship==null){
-			retMap.put("message", "术语关系类型不存在");
+			retMap.put("message", "该关系信息在数据库中不存在");
 			return retMap;
 		}
 		
@@ -243,9 +253,6 @@ public class RelationFacade extends RelationServiceImpl {
 		relationQe.eq("end_id", endConcept.getId());
 		relationQe.eq("relation_id", lexiconRelationship.getId());
 		Relation relation = getOne(relationQe);
-		if(relation!=null&&relation.getIsDeleted().equals("N")){
-			return retMap;
-		}
 		
 		String currentUser = UserUtils.getCurrentPrincipleID();
 		Date now = DateUtil.now();
@@ -256,9 +263,8 @@ public class RelationFacade extends RelationServiceImpl {
 			relation.setRelationId(lexiconRelationship.getId());
 			relation.setCreator(currentUser);
 			relation.setGmtCreated(now);
-		}else if(relation.getIsDeleted().equals("Y")){
-			relation.setIsDeleted("N");
 		}
+		
 		relation.setModifier(currentUser);
 		relation.setGmtModified(now);
 		retMap.put("relation", relation);
@@ -275,6 +281,7 @@ public class RelationFacade extends RelationServiceImpl {
         StringBuffer sbf = new StringBuffer();
         InputStream inputStream = null;
         Workbook wb = null;
+        String title_1="",title_2="",title_3="",title_4="",title_5="";
         try {
             if (!file.isEmpty()) {
                 inputStream = file.getInputStream();
@@ -296,7 +303,15 @@ public class RelationFacade extends RelationServiceImpl {
                             String startName, startType, endName, endType, relationName;
                             for (Row row : sheet) {
                                 count++;
-                                if (count == 1 || row == null) {
+                                if(row == null){
+                                	continue;
+                                }
+                                if (count == 1) {
+                                	title_1 = getValue(row.getCell(0)).trim().replace(" ", "");
+                                	title_2 = getValue(row.getCell(1)).trim().replace(" ", "");
+                                	title_3 = getValue(row.getCell(2)).trim().replace(" ", "");
+                                	title_4 = getValue(row.getCell(3)).trim().replace(" ", "");
+                                	title_5 = getValue(row.getCell(4)).trim().replace(" ", "");
                                     continue;
                                 }
                                 startName = getValue(row.getCell(0)).trim().replace(" ", "");
@@ -316,7 +331,7 @@ public class RelationFacade extends RelationServiceImpl {
                                     continue;
                                 }
                                 
-                                addRelationInfoVOList.add(new AddRelationInfoVO(startName,startType,endName,endType,relationName));
+                                addRelationInfoVOList.add(new AddRelationInfoVO(startName,startType,endName,endType,relationName,count));
                             }
                         } else {
                             sbf.append("非excel文件无法解析!").append("<br/>");
@@ -347,6 +362,19 @@ public class RelationFacade extends RelationServiceImpl {
         	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
         }
         
+        /**********************非规范的excel导入提醒*****************************************/
+        if(title_1.indexOf("关系起点术语名称")==-1
+        		||title_2.indexOf("关系起点术语类型")==-1
+        		||title_3.indexOf("关系终点术语名称")==-1
+        		||title_4.indexOf("关系终点术语类型")==-1
+        		||title_5.indexOf("关系类型名称")==-1){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,"导入数据不正确,请选择正确数据导入!");
+        }
+        
+        if(addRelationInfoVOList.size()==0){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,"导入数据不能为空!");
+        }
+        
         /****************excel文件中数据存在重复提示---数据一模一样即重复***********************/
         Map<String,List<AddRelationInfoVO>> addRelationInfoVOListMap = addRelationInfoVOList.stream().collect(Collectors.groupingBy(i->{
         	AddRelationInfoVO addRelationInfoVO = (AddRelationInfoVO)i;
@@ -366,13 +394,11 @@ public class RelationFacade extends RelationServiceImpl {
         List<Relation> saveOrUpdateRelationList = new ArrayList<>();
         Map<String,Object> ckMap = null;
     	Object message = null;
-    	int count = 0;
     	for(AddRelationInfoVO i : addRelationInfoVOList){
-    		count++;
     		ckMap = checkAddRelationInfoVO(i);
     		message = ckMap.get("message");
     		if(message!=null){
-    			sbf.append(message.toString()).append("(第").append(count).append("行)").append("<br/>");
+    			sbf.append("第").append(i.getLineNum()).append("行数据有误,").append(message.toString()).append("<br/>");
     		}else if(ckMap.get("relation")!=null){
     			saveOrUpdateRelationList.add((Relation)(ckMap.get("relation")));
     		}
@@ -381,9 +407,13 @@ public class RelationFacade extends RelationServiceImpl {
         	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
         }
         
+        if(saveOrUpdateRelationList.size()==0){
+        	return true;
+        }
+        
         return relationService.saveOrUpdateBatch(saveOrUpdateRelationList);
     }
-    
+	
     @SuppressWarnings("deprecation")
     private String getValue(Cell cell) {
         try {

+ 8 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java

@@ -18,6 +18,12 @@ import lombok.Setter;
 @Setter
 public class AddConceptInfoVO {
 	
+	/**
+     * 概念id,当不为空时,即编辑操作
+     */
+	@ApiModelProperty(value="概念id")
+    private Long conceptId;
+	
 	/**
      * 标准术语名称 提示使用
      */
@@ -38,5 +44,7 @@ public class AddConceptInfoVO {
 	@ApiModelProperty(value="术语明细",required=true)
 	@NotEmpty(message="术语明细不能为空")
 	private List<AddConceptInfoDetailVO> detailList;
+	
+	private Integer lineNum;
 
 }

+ 6 - 2
knowledgeman-service/src/main/java/com/diagbot/vo/AddRelationInfoVO.java

@@ -50,21 +50,25 @@ public class AddRelationInfoVO {
 	@ApiModelProperty(value = "关系名称", required = true)
 	private String relationName;
 	
+	private int lineNum;
+	
 	public AddRelationInfoVO() {
 		super();
 	}
 	
 	public AddRelationInfoVO(@NotBlank(message = "关系起点术语名称必填") String startName,
 			@NotBlank(message = "关系起点术语类型必填") String startType, @NotBlank(message = "关系终点术语名称必填") String endName,
-			@NotBlank(message = "关系终点术语类型必填") String endType, @NotBlank(message = "关系名称必填") String relationName) {
+			@NotBlank(message = "关系终点术语类型必填") String endType, @NotBlank(message = "关系名称必填") String relationName,
+			int lineNum) {
 		super();
 		this.startName = startName;
 		this.startType = startType;
 		this.endName = endName;
 		this.endType = endType;
 		this.relationName = relationName;
+		this.lineNum = lineNum;
 	}
-
+	
 	@Override
 	public int hashCode() {
 		final int prime = 31;

+ 6 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetAllInformationVO.java

@@ -28,4 +28,10 @@ public class GetAllInformationVO extends Page {
     @ApiModelProperty(value="术语类型")
     private String type;
     
+    /**
+     * 状态:Y-已删除,N-启用中
+     */
+	@ApiModelProperty(value="状态:Y-已删除,N-启用中")
+	private String isDeleted;
+    
 }

+ 6 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetRelationInfoListVO.java

@@ -33,5 +33,11 @@ public class GetRelationInfoListVO extends Page {
      */
 	@ApiModelProperty(value="关系终点术语名称")
     private String endName;
+	
+	/**
+     * 状态:Y-已删除,N-启用中
+     */
+	@ApiModelProperty(value="状态:Y-已删除,N-启用中")
+	private String isDeleted;
     
 }

+ 8 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RemoveConceptInfoVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 import io.swagger.annotations.ApiModelProperty;
@@ -21,5 +22,12 @@ public class RemoveConceptInfoVO {
 	@ApiModelProperty(value="概念id",required=true)
 	@NotNull(message="概念id必传")
     private Long conceptId;
+	
+	/**
+     * 状态:Y-删除,N-恢复
+     */
+	@NotBlank(message="状态必填")
+	@ApiModelProperty(value="状态:Y-删除,N-恢复",required=true)
+	private String isDeleted;
     
 }

+ 8 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RemoveRelationInfoVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 import io.swagger.annotations.ApiModelProperty;
@@ -21,5 +22,12 @@ public class RemoveRelationInfoVO {
 	@ApiModelProperty(value="医学术语关系id",required=true)
 	@NotNull(message="医学术语关系id必传")
     private Long id;
+	
+	/**
+     * 状态:Y-删除,N-恢复
+     */
+	@NotBlank(message="状态必填")
+	@ApiModelProperty(value="状态:Y-删除,N-恢复",required=true)
+	private String isDeleted;
     
 }

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

@@ -71,7 +71,7 @@ public class ConceptController {
         return RespDTO.onSuc(conceptFacade.getAllInformation(getAllInformationVO));
     }
     
-    @ApiOperation(value = "医学术语命名删除[by:rengb]")
+    @ApiOperation(value = "医学术语命名删除或者恢复[by:rengb]")
     @PostMapping("/removeConceptInfo")
     @SysLogger("removeConceptInfo")
     @Transactional

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

@@ -50,7 +50,7 @@ public class RelationController {
         return RespDTO.onSuc(relationFacade.getRelationInfoList(getRelationInfoListVO));
     }
     
-    @ApiOperation(value = "医学术语关系删除[by:rengb]")
+    @ApiOperation(value = "医学术语关系删除或者恢复[by:rengb]")
     @PostMapping("/removeRelationInfo")
     @SysLogger("removeRelationInfo")
     @Transactional

+ 30 - 8
knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml

@@ -15,16 +15,38 @@
     
     <select id="getAllLisConcept" parameterType="com.diagbot.vo.GetAllLisConceptVO" resultType="com.diagbot.dto.GetAllLisConceptDTO">
     	SELECT
+    		conceptName
+    	FROM
+    	((SELECT
+		b.`name` as conceptName
+		FROM concept a JOIN library_info b ON a.lib_id=b.id
+		WHERE a.is_deleted='N' AND b.type='化验套餐'
+		ORDER BY a.gmt_modified DESC)
+		UNION
+		(SELECT
 		conceptName
-		FROM(
-		SELECT
-		DISTINCT
-		CONCAT(c.cate_name,'-',c.std_name) as conceptName
+		FROM
+		(SELECT
+		CONCAT(t1.conceptName,'-',t3.conceptName) as conceptName
+		FROM
+		(SELECT
+		a.id as conceptId,
+		b.`name` as conceptName
+		FROM concept a JOIN library_info b ON a.lib_id=b.id
+		WHERE a.is_deleted='N' AND b.type='化验套餐') t1
+		JOIN
+		relation t2 
+		ON t1.conceptId=t2.end_id 
+		JOIN
+		(SELECT
+		a.id as conceptId,
+		b.`name` as conceptName
 		FROM concept a JOIN library_info b ON a.lib_id=b.id
-		JOIN medical c on b.concept_id=c.concept_id
-		WHERE a.is_deleted='N' AND b.is_deleted='N' AND c.is_deleted='N' 
-		AND b.type='化验明细') t
-		WHERE 1=1 and (conceptName is not null)
+		WHERE a.is_deleted='N' AND b.type='化验明细') t3
+		ON t2.start_id=t3.conceptId
+		WHERE t2.is_deleted='N' AND t2.relation_id=3
+		ORDER BY t2.gmt_modified DESC) t)) t
+		WHERE 1=1
 		<if test="conceptName!=null and conceptName!=''">
 			and (conceptName LIKE CONCAT('%',#{conceptName},'%'))
 		</if>

+ 14 - 10
knowledgeman-service/src/main/resources/mapper/LibraryInfoMapper.xml

@@ -5,17 +5,18 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.LibraryInfo">
         <id column="id" property="id" />
-        <result column="is_deleted" property="isDeleted" />
-        <result column="gmt_created" property="gmtCreated" />
-        <result column="gmt_modified" property="gmtModified" />
-        <result column="creator" property="creator" />
-        <result column="modifier" property="modifier" />
         <result column="name" property="name" />
+        <result column="type_id" property="typeId" />
         <result column="type" property="type" />
-        <result column="remark" property="remark" />
         <result column="concept_id" property="conceptId" />
-        <result column="order_no" property="orderNo" />
         <result column="is_concept" property="isConcept" />
+        <result column="order_no" property="orderNo" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="gmt_created" property="gmtCreated" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="remark" property="remark" />
     </resultMap>
 
     <select id="getAllInformation" resultType="com.diagbot.dto.GetAllInformationDTO">
@@ -28,9 +29,9 @@
 		b.type AS libType,
 		GROUP_CONCAT(b.`name` ORDER BY b.id ASC SEPARATOR '、') as otherNames,
 		a.modifier as operName,
-		a.gmt_modified as operTime
+		a.gmt_modified as operTime,
+		a.is_deleted as isDeleted
 		FROM concept a JOIN library_info b ON a.id=b.concept_id
-		WHERE a.is_deleted='N' AND b.is_deleted='N'
 		GROUP BY a.id) t
 		where 1=1
 		<if test="name!=null and name!=''">
@@ -39,7 +40,10 @@
 		<if test="type!=null and type!=''">
             AND libType = #{type}
         </if>
-		ORDER BY operTime DESC
+        <if test="isDeleted!=null and isDeleted!=''">
+        	AND isDeleted=#{isDeleted}
+        </if>
+		ORDER BY isDeleted ASC,operTime DESC
     </select>
 
 </mapper>

+ 15 - 8
knowledgeman-service/src/main/resources/mapper/RelationMapper.xml

@@ -19,17 +19,24 @@
     	SELECT * FROM 
 		(SELECT
 		a.id,
-		a.start_id as startId,
-		(SELECT name FROM library_info where concept_id=a.start_id and is_concept=1 and is_deleted='N') as startName,
-		a.end_id as endId,
-		(SELECT name FROM library_info where concept_id=a.end_id and is_concept=1 and is_deleted='N') as endName,
+		(SELECT id FROM concept where id=a.start_id and is_deleted='N') as startId,
+		(SELECT name FROM library_info where concept_id=a.start_id and is_concept=1) as startName,
+		(SELECT type FROM library_info where concept_id=a.start_id and is_concept=1) as startType,
+		(SELECT id FROM concept where id=a.end_id and is_deleted='N') as endId,
+		(SELECT name FROM library_info where concept_id=a.end_id and is_concept=1) as endName,
+		(SELECT type FROM library_info where concept_id=a.end_id and is_concept=1) as endType,
 		a.relation_id as relationId,
 		(SELECT name FROM lexicon_relationship where id=a.relation_id and is_deleted='N') as relationName,
 		a.gmt_modified as operTime,
-		a.modifier as operName
-		from relation a
-		where a.is_deleted='N') t
+		a.modifier as operName,
+		a.is_deleted as isDeleted
+		from relation a) t
 		where 1=1 
+		and startId is not null 
+		and endId is not null
+		<if test="isDeleted!=null and isDeleted!=''">
+			and isDeleted=#{isDeleted}
+		</if>
 		<if test="relationId!=null">
 			and relationId=#{relationId}
 		</if>
@@ -39,7 +46,7 @@
 		<if test="endName!=null and endName!=''">
 			and endName like concat('%',#{endName},'%')
 		</if>
-		ORDER BY operTime desc
+		ORDER BY isDeleted asc, operTime desc
     </select>
 
 </mapper>