Procházet zdrojové kódy

医学术语调试修改

rgb před 6 roky
rodič
revize
33594db716
17 změnil soubory, kde provedl 414 přidání a 106 odebrání
  1. 1 0
      icssman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  2. 1 0
      icssman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  3. 27 0
      icssman-service/src/main/java/com/diagbot/dto/GetAllDeptsDTO.java
  4. 23 7
      icssman-service/src/main/java/com/diagbot/facade/DeptInfoFacade.java
  5. 25 0
      icssman-service/src/main/java/com/diagbot/vo/GetAllDeptsVO.java
  6. 23 8
      icssman-service/src/main/java/com/diagbot/web/DeptInfoController.java
  7. 29 0
      knowledgeman-service/src/main/java/com/diagbot/client/DeptInfoServiceClient.java
  8. 36 0
      knowledgeman-service/src/main/java/com/diagbot/client/hystrix/DeptInfoServiceHystrix.java
  9. 27 0
      knowledgeman-service/src/main/java/com/diagbot/dto/GetAllDeptsDTO.java
  10. 6 0
      knowledgeman-service/src/main/java/com/diagbot/dto/GetConceptInfoDetailDTO.java
  11. 125 87
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  12. 15 1
      knowledgeman-service/src/main/java/com/diagbot/facade/MedicalFacade.java
  13. 36 0
      knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoDetailVO.java
  14. 4 2
      knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java
  15. 25 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetAllDeptsVO.java
  16. 0 1
      knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java
  17. 11 0
      knowledgeman-service/src/main/java/com/diagbot/web/MedicalController.java

+ 1 - 0
icssman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -31,6 +31,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/file/uploadImage").permitAll()
                 .antMatchers("/introduceInfo/saveIntroduce").permitAll()
                 .antMatchers("/dictionaryInfo/getList").permitAll()
+                .antMatchers("/deptInfo/getAllDepts").permitAll()
                 .antMatchers("/getIcssEnumsData").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();

+ 1 - 0
icssman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -93,6 +93,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/file/uploadImage", request)
                 || matchers("/getIcssEnumsData", request)
                 || matchers("/dictionaryInfo/getList", request)
+                || matchers("/deptInfo/getAllDepts", request)
                 || matchers("/", request)) {
             return true;
         }

+ 27 - 0
icssman-service/src/main/java/com/diagbot/dto/GetAllDeptsDTO.java

@@ -0,0 +1,27 @@
+/**
+ * 
+ */
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月19日下午2:06:21
+ */
+@ApiModel(value="获取所有科室接口出参")
+@Getter
+@Setter
+public class GetAllDeptsDTO {
+	
+	/**
+	 * 科室名称
+	 */
+	@ApiModelProperty(value="科室名称")
+	private String name;
+
+}

+ 23 - 7
icssman-service/src/main/java/com/diagbot/facade/DeptInfoFacade.java

@@ -1,9 +1,18 @@
 package com.diagbot.facade;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.DeptInfoDTO;
+import com.diagbot.dto.GetAllDeptsDTO;
 import com.diagbot.dto.GetDeptInfoDTO;
 import com.diagbot.dto.GetQuestionUsualAndTypeDTO;
 import com.diagbot.dto.QuestionTypeDTO;
@@ -20,17 +29,11 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.AddDeptInfoVO;
 import com.diagbot.vo.DeleteDeptInfoVO;
+import com.diagbot.vo.GetAllDeptsVO;
 import com.diagbot.vo.GetDeptInfoDetialsVO;
 import com.diagbot.vo.GetDeptInfoVO;
 import com.diagbot.vo.GetQuestionUsualAndTypeVO;
 import com.diagbot.vo.UpdateDeptInfoVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 /**
  * @Description:
@@ -233,4 +236,17 @@ public class DeptInfoFacade extends DeptInfoServiceImpl {
         queryWrapper.eq("id",deptId);
         return this.count(queryWrapper) > 0 ? true:false;
     }
+    
+    /**
+     * 获取所有科室
+     * @param getAllDeptsVO
+     * @return
+     */
+    public List<GetAllDeptsDTO> getAllDepts(GetAllDeptsVO getAllDeptsVO){
+    	 QueryWrapper<DeptInfo> deptInfoQe = new QueryWrapper<>();
+    	 deptInfoQe.eq("is_deleted",IsDeleteEnum.N.getKey());
+    	 deptInfoQe.like("name", getAllDeptsVO.getName());
+    	 return BeanUtil.listCopyTo(list(deptInfoQe), GetAllDeptsDTO.class);
+    }
+    
 }

+ 25 - 0
icssman-service/src/main/java/com/diagbot/vo/GetAllDeptsVO.java

@@ -0,0 +1,25 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月5日下午5:00:52
+ */
+@ApiModel(value="获取所有科室接口传参")
+@Getter
+@Setter
+public class GetAllDeptsVO {
+	
+	/**
+	 * 科室名称
+	 */
+	@ApiModelProperty(value="科室名称")
+	private String name;
+
+
+}

+ 23 - 8
icssman-service/src/main/java/com/diagbot/web/DeptInfoController.java

@@ -1,27 +1,33 @@
 package com.diagbot.web;
 
 
+import java.util.List;
+
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+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 com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetAllDeptsDTO;
 import com.diagbot.dto.GetDeptInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DeptInfo;
 import com.diagbot.facade.DeptInfoFacade;
 import com.diagbot.vo.AddDeptInfoVO;
 import com.diagbot.vo.DeleteDeptInfoVO;
+import com.diagbot.vo.GetAllDeptsVO;
 import com.diagbot.vo.GetDeptInfoDetialsVO;
 import com.diagbot.vo.GetDeptInfoVO;
 import com.diagbot.vo.UpdateDeptInfoVO;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-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;
 
 /**
  * <p>
@@ -88,4 +94,13 @@ public class DeptInfoController {
         DeptInfo data = deptInfoFacade.getDeptInfoDetials(getDeptInfoDetialsVO);
         return RespDTO.onSuc(data);
     }
+    
+    @ApiOperation(value = "获取所有科室[by:rengb]")
+    @PostMapping("/getAllDepts")
+    @SysLogger("getAllDepts")
+    public RespDTO<List<GetAllDeptsDTO>> getAllDepts(@Valid @RequestBody GetAllDeptsVO getAllDeptsVO) {
+        return RespDTO.onSuc(deptInfoFacade.getAllDepts(getAllDeptsVO));
+    }
+    
+    
 }

+ 29 - 0
knowledgeman-service/src/main/java/com/diagbot/client/DeptInfoServiceClient.java

@@ -0,0 +1,29 @@
+package com.diagbot.client;
+
+import java.util.List;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import com.diagbot.client.hystrix.DeptInfoServiceHystrix;
+import com.diagbot.dto.GetAllDeptsDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.GetAllDeptsVO;
+
+
+/**
+ * @Description: 调用科室服务
+ * @author: gaodm
+ * @time: 2018/8/6 9:52
+ */
+@FeignClient(value = "icssman-service", fallback = DeptInfoServiceHystrix.class)
+public interface DeptInfoServiceClient {
+	
+	@PostMapping(value = "/deptInfo/getAllDepts")
+	RespDTO<List<GetAllDeptsDTO>> getAllDepts(@RequestBody GetAllDeptsVO getAllDeptsVO);
+    
+}
+
+
+

+ 36 - 0
knowledgeman-service/src/main/java/com/diagbot/client/hystrix/DeptInfoServiceHystrix.java

@@ -0,0 +1,36 @@
+package com.diagbot.client.hystrix;
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import com.diagbot.client.DeptInfoServiceClient;
+import com.diagbot.dto.GetAllDeptsDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.GetAllDeptsVO;
+
+import lombok.extern.slf4j.Slf4j;
+
+
+/**
+ * @Description: 调用科室服务
+ * @author: gaodm
+ * @time: 2018/8/6 9:52
+ */
+@Component
+@Slf4j
+public class DeptInfoServiceHystrix implements DeptInfoServiceClient {
+	
+	@Override
+	public RespDTO<List<GetAllDeptsDTO>> getAllDepts(@RequestBody GetAllDeptsVO getAllDeptsVO) {
+		log.error("【hystrix】调用{}异常", "getAllDepts");
+        return null;
+	}
+
+	
+	
+	
+	
+	
+}

+ 27 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/GetAllDeptsDTO.java

@@ -0,0 +1,27 @@
+/**
+ * 
+ */
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月19日下午2:06:21
+ */
+@ApiModel(value="获取所有科室接口出参")
+@Getter
+@Setter
+public class GetAllDeptsDTO {
+	
+	/**
+	 * 科室名称
+	 */
+	@ApiModelProperty(value="科室名称")
+	private String name;
+
+}

+ 6 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/GetConceptInfoDetailDTO.java

@@ -30,6 +30,12 @@ public class GetConceptInfoDetailDTO {
      */
 	@ApiModelProperty(value="说明")
     private String remark;
+	
+	/**
+     * 是否标准词,1:是,0:否
+     */
+	@ApiModelProperty(value="是否标准词,1:是,0:否")
+    private Integer isConcept;
     
     
 

+ 125 - 87
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -40,7 +40,6 @@ import com.diagbot.service.LibraryInfoService;
 import com.diagbot.service.impl.ConceptServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.AddConceptInfoDetailVO;
@@ -109,7 +108,7 @@ public class ConceptFacade extends ConceptServiceImpl {
     		medicalQe.in("concept_id", libraryInfoList.stream().map(i->i.getConceptId()).collect(Collectors.toList()));
     		Map<Long,Medical> medicalMap =medicalFacade.list(medicalQe).stream().collect(Collectors.toMap(Medical::getConceptId, i->i));
     		libraryInfoList = libraryInfoList.stream().filter(i->{
-    			if(medicalMap.get(i.getConceptId())!=null){
+    			if(medicalMap.get(i.getConceptId())==null){
     				return true;
     			}else{
     				return false;
@@ -180,13 +179,18 @@ public class ConceptFacade extends ConceptServiceImpl {
     	String currentUser = UserUtils.getCurrentPrincipleID();
     	Date now = DateUtil.now(); 
     	
-    	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
-    	libraryInfoQe.eq("concept_id", removeConceptInfoVO.getConceptId());
+    	QueryWrapper<LibraryInfo> libraryInfoQe1 = new QueryWrapper<>();
+    	libraryInfoQe1.eq("concept_id", removeConceptInfoVO.getConceptId());
+    	libraryInfoQe1.eq("is_concept", 0);
+    	libraryinfoFacade.remove(libraryInfoQe1);
+    	
+    	QueryWrapper<LibraryInfo> libraryInfoQe2 = new QueryWrapper<>();
+    	libraryInfoQe2.eq("concept_id", removeConceptInfoVO.getConceptId());
     	LibraryInfo libraryInfo = new LibraryInfo();
     	libraryInfo.setIsDeleted("Y");
     	libraryInfo.setGmtModified(now);
     	libraryInfo.setModifier(currentUser);
-    	libraryinfoFacade.update(libraryInfo, libraryInfoQe);
+    	libraryinfoFacade.update(libraryInfo, libraryInfoQe2);
     	
     	Concept concept = new Concept();
     	concept.setId(removeConceptInfoVO.getConceptId());
@@ -201,7 +205,7 @@ public class ConceptFacade extends ConceptServiceImpl {
     /**
      * 获取医学术语命名详情
      * @param getConceptInfoDetailVO
-     * @return 1-标准术语,0-同义词
+     * @return libName-标准术语,otherNames-同义词
      */
     public Map<String,List<GetConceptInfoDetailDTO>> getConceptInfoDetail(GetConceptInfoDetailVO getConceptInfoDetailVO){
     	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
@@ -219,127 +223,159 @@ public class ConceptFacade extends ConceptServiceImpl {
     
     /**
      * 医学术语命名添加或者编辑
+     * 说明:1、不允许单个非标准术语添加
+     * 
      * @param addConceptInfoVO
      * @return
      */
-    @SuppressWarnings("unchecked")
 	public Boolean addConceptInfo(AddConceptInfoVO addConceptInfoVO){
-    	Map<String,Object> ckMap = checkAddConceptInfoVO(addConceptInfoVO);
-    	Object message = ckMap.get("message");
-    	if(message!=null){
-    		throw new CommonException(CommonErrorCode.RPC_ERROR,message.toString());
-    	}
-    	
-    	saveConceptInfos((List<LibraryInfo>)ckMap.get("libraryInfoList"));
-    	
-    	return true;
-    }
-    
-    /**
-     * 医学术语命名保存
-     * @param libraryInfoList
-     * @return
-     */
-    private void saveConceptInfos(List<LibraryInfo> saveOrUpdateLibraryInfoList){
-    	if(ListUtil.isNotEmpty(saveOrUpdateLibraryInfoList)){
-    		libraryInfoService.saveOrUpdateBatch(saveOrUpdateLibraryInfoList);
-    	}
-    }
-    
-    /**
-     * 校验即将添加的数据
-     * @param addConceptInfoVO
-     * @return 返回map中,包含2个字段:message和libraryInfoList,message-为空时,表示正常,取LibraryInfo的集合libraryInfoList
-     */
-    private Map<String,Object> checkAddConceptInfoVO(AddConceptInfoVO addConceptInfoVO){
-    	Map<String,Object> retMap = new HashMap<>();
-    	
+		if(addConceptInfoVO.getDetailList().stream().distinct().count()!=addConceptInfoVO.getDetailList().size()){
+			throw new CommonException(CommonErrorCode.RPC_ERROR,"存在重复数据("+addConceptInfoVO.getName()+")");
+		}
+		
     	List<AddConceptInfoDetailVO> addConceptInfoDetailVOMainList = addConceptInfoVO.getDetailList().stream().filter(i->i.getIsConcept()==1).collect(Collectors.toList());
     	if(addConceptInfoDetailVOMainList.size()==0){
-    		retMap.put("message", "无标准术语");
-    		return retMap;
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,"无标准术语("+addConceptInfoVO.getName()+")");
     	}
     	if(addConceptInfoDetailVOMainList.size()>1){
-    		retMap.put("message", "标准术语只能有一个");
-    		return retMap;
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,"标准术语只能有一个("+addConceptInfoVO.getName()+")");
     	}
     	
     	List<LibraryInfo> saveOrUpdateLibraryInfoList = new ArrayList<>();
     	
     	AddConceptInfoDetailVO addConceptInfoDetailVOMain = addConceptInfoDetailVOMainList.get(0);//提交过来的标准术语
     	
-    	StringBuffer sbf = new StringBuffer();
+    	//查询当前添加的术语是否已经在数据库中
+    	QueryWrapper<LibraryInfo> libraryInfoQe1 = new QueryWrapper<>();
+    	libraryInfoQe1.eq("type", addConceptInfoVO.getType());
+    	libraryInfoQe1.in("name", addConceptInfoVO.getDetailList().stream().map(i->i.getName()).collect(Collectors.toList()));
+    	List<LibraryInfo> libraryInfoList = libraryinfoFacade.list(libraryInfoQe1);
     	
-    	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
-    	libraryInfoQe.eq("type", addConceptInfoVO.getType());
-    	libraryInfoQe.in("name", addConceptInfoVO.getDetailList().stream().map(i->i.getName()).collect(Collectors.toList()));
-    	Map<String,LibraryInfo> libraryInfoMap = libraryinfoFacade.list(libraryInfoQe).stream().collect(Collectors.toMap(LibraryInfo::getName, i->i));
+    	String currentUser = UserUtils.getCurrentPrincipleID();
+    	Date now = DateUtil.now(); 
     	
+    	Map<String,LibraryInfo> libraryInfoMap = libraryInfoList.stream().collect(Collectors.toMap(LibraryInfo::getName, i->i));
     	LibraryInfo libraryInfoMain = libraryInfoMap.get(addConceptInfoDetailVOMain.getName());
-    	if(libraryInfoMain!=null&&libraryInfoMain.getIsDeleted().equals("N")&&libraryInfoMain.getIsConcept()==0){
-    		retMap.put("message", "标准术语已被占用");
-    		return retMap;
+    	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());
+			libraryinfoFacade.save(libraryInfoMain);
+			concept.setLibId(libraryInfoMain.getId());
+			concept.setGmtCreated(now);
+			concept.setCreator(currentUser);
+			concept.setGmtModified(now);
+			concept.setModifier(currentUser);
+			save(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;
+    		}
+    		
+    		QueryWrapper<LibraryInfo> libraryInfoQe2 = new QueryWrapper<>();
+    		libraryInfoQe2.eq("concept_id", conceptId);
+    		libraryInfoQe2.ne("id", libraryInfoMain.getId());
+    		oldlibraryInfoCount = libraryinfoFacade.count(libraryInfoQe2);
+    		libraryinfoFacade.remove(libraryInfoQe2);
     	}
     	
+    	StringBuffer sbf = new StringBuffer();
 		for(AddConceptInfoDetailVO i:addConceptInfoVO.getDetailList()){
 			if(i.getIsConcept()==1){
 				continue;
 			}
 			LibraryInfo libraryInfo = libraryInfoMap.get(i.getName());
-			if(libraryInfo!=null){
-				if(libraryInfo.getIsDeleted().equals("N")&&(libraryInfoMain == null||libraryInfo.getConceptId()!=libraryInfoMain.getConceptId())){
-					sbf.append(i.getName()).append(" ");
-					continue;
-				}
-				libraryInfo.setIsDeleted("N");
-				libraryInfo.setRemark(i.getRemark());
-			}else{
+			if(libraryInfo==null){
 				libraryInfo = new LibraryInfo();
-				BeanUtil.copyProperties(i, 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.setName(i.getName());
+			libraryInfo.setIsConcept(0);
+			libraryInfo.setIsDeleted("N");
+			libraryInfo.setRemark(i.getRemark());
 			saveOrUpdateLibraryInfoList.add(libraryInfo);
 		}
 		
 		if(sbf.length()>0){
 			sbf.append("已被占用");
-			retMap.put("message", sbf.toString());
-			return retMap;
+			throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
 		}
 		
-		Long conceptId = null;
-		if(libraryInfoMain==null){
-			libraryInfoMain = new LibraryInfo();
-			BeanUtil.copyProperties(addConceptInfoDetailVOMain, libraryInfoMain);
-			libraryInfoMain.setType(addConceptInfoVO.getType());
-			libraryinfoFacade.save(libraryInfoMain);
-			Concept concept = new Concept();
-			concept.setLibId(libraryInfoMain.getId());
-			save(concept);
-			conceptId = concept.getId();
-		}else{
-			libraryInfoMain.setRemark(addConceptInfoDetailVOMain.getRemark());
-			Concept concept = new Concept();
-			if(libraryInfoMain.getIsDeleted().equals("N")){
-				conceptId = libraryInfoMain.getConceptId();
-			}else{
-				libraryInfoMain.setIsDeleted("N");
-				if(libraryInfoMain.getIsConcept()==1){
-					concept.setIsDeleted("N");
-				}else{
-					concept.setLibId(libraryInfoMain.getId());
-				}
-			}
+		//更新前后同义词个数不一样,修改更新时间
+		if(oldlibraryInfoCount!=saveOrUpdateLibraryInfoList.size()){
+			isUpdateConcept = true;
 		}
 		
-		saveOrUpdateLibraryInfoList.add(libraryInfoMain);
 		for(LibraryInfo i : saveOrUpdateLibraryInfoList){
+			i.setId(null);
 			i.setConceptId(conceptId);
 			i.setType(addConceptInfoVO.getType());
 		}
+		saveOrUpdateLibraryInfoList.add(libraryInfoMain);
 		
-		retMap.put("libraryInfoList", saveOrUpdateLibraryInfoList);
+		libraryInfoService.saveOrUpdateBatch(saveOrUpdateLibraryInfoList);
 		
-    	return retMap;
+		if(isUpdateConcept){
+			concept.setGmtModified(now);
+			concept.setModifier(currentUser);
+			updateById(concept);
+		}
+		
+    	return true;
     }
 
     /**
@@ -456,7 +492,9 @@ public class ConceptFacade extends ConceptServiceImpl {
         	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
         }
 
-        
+        addConceptInfoVOList.forEach(i->{
+        	addConceptInfo(i);
+        });
         
         return true;
     }

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

@@ -24,7 +24,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.DeptInfoServiceClient;
 import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.GetAllDeptsDTO;
 import com.diagbot.dto.GetMedicalInfoDetailDTO;
 import com.diagbot.dto.GetMedicalInfoListDTO;
 import com.diagbot.dto.RespDTO;
@@ -41,6 +43,7 @@ import com.diagbot.util.DateUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.AddMedicalInfoVO;
+import com.diagbot.vo.GetAllDeptsVO;
 import com.diagbot.vo.GetMedicalInfoDetailVO;
 import com.diagbot.vo.GetMedicalInfoListVO;
 import com.diagbot.vo.RemoveMedicalInfoVO;
@@ -63,6 +66,8 @@ public class MedicalFacade extends MedicalServiceImpl {
     @Autowired
     private UserServiceClient userServiceClient;
     @Autowired
+    private DeptInfoServiceClient deptInfoServiceClient;
+    @Autowired
     private BodypartFacade bodypartFacade;
     
     /**
@@ -318,7 +323,7 @@ public class MedicalFacade extends MedicalServiceImpl {
                                 addMedicalInfoVO.setGender(gender);
                                 addMedicalInfoVO.setBodypart(bodypart);
                                 addMedicalInfoVO.setSubBodypart(subBodypart);
-                                addMedicalInfoVO.setBodypart(displayOrder);
+                                addMedicalInfoVO.setDisplayOrder(displayOrder);
                                 addMedicalInfoVO.setDept(dept);
                                 addMedicalInfoVO.setCode(code);
                                 addMedicalInfoVO.setNote(note);
@@ -432,4 +437,13 @@ public class MedicalFacade extends MedicalServiceImpl {
         }
     }
     
+    /**
+     * 获取术语医学属性所需全部科室
+     * @param getAllDeptsVO
+     * @return
+     */
+    public List<GetAllDeptsDTO> getAllDepts(GetAllDeptsVO getAllDeptsVO){
+    	 return deptInfoServiceClient.getAllDepts(getAllDeptsVO).data;
+    }
+    
 }

+ 36 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoDetailVO.java

@@ -3,6 +3,8 @@ package com.diagbot.vo;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
+import org.hibernate.validator.constraints.Range;
+
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -29,6 +31,7 @@ public class AddConceptInfoDetailVO {
      */
 	@ApiModelProperty(value="是否标准词",required=true)
 	@NotNull(message="是否标准词必传")
+	@Range(max=1,min=0,message="是否标准词必须是0或1")
     private Integer isConcept;
 	
     /**
@@ -42,4 +45,37 @@ public class AddConceptInfoDetailVO {
      */
     private String type;
 
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((name == null) ? 0 : name.hashCode());
+		result = prime * result + ((type == null) ? 0 : type.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		AddConceptInfoDetailVO other = (AddConceptInfoDetailVO) obj;
+		if (name == null) {
+			if (other.name != null)
+				return false;
+		} else if (!name.equals(other.name))
+			return false;
+		if (type == null) {
+			if (other.type != null)
+				return false;
+		} else if (!type.equals(other.type))
+			return false;
+		return true;
+	}
+    
+    
+
 }

+ 4 - 2
knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java

@@ -19,8 +19,10 @@ import lombok.Setter;
 public class AddConceptInfoVO {
 	
 	/**
-     * 标准术语名称 导入提示使用
+     * 标准术语名称 提示使用
      */
+	@ApiModelProperty(value="标准术语名称",required=true)
+	@NotBlank(message="标准术语名称必传")
     private String name;
     
     /**
@@ -33,7 +35,7 @@ public class AddConceptInfoVO {
 	/**
      * 术语明细
      */
-	@ApiModelProperty(value="术语明细")
+	@ApiModelProperty(value="术语明细",required=true)
 	@NotEmpty(message="术语明细不能为空")
 	private List<AddConceptInfoDetailVO> detailList;
 

+ 25 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetAllDeptsVO.java

@@ -0,0 +1,25 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月5日下午5:00:52
+ */
+@ApiModel(value="获取所有科室接口传参")
+@Getter
+@Setter
+public class GetAllDeptsVO {
+	
+	/**
+	 * 科室名称
+	 */
+	@ApiModelProperty(value="科室名称")
+	private String name;
+
+
+}

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

@@ -87,7 +87,6 @@ public class ConceptController {
     
     @ApiOperation(value = "医学术语命名excel文件导入[by:rengb]")
     @PostMapping("/conceptInfoExcelIm")
-    @SysLogger("conceptInfoExcelIm")
     @Transactional
     public RespDTO<Boolean> conceptInfoExcelIm(@RequestParam("uploadfile") MultipartFile file,HttpServletRequest request) {
         return RespDTO.onSuc(conceptFacade.conceptInfoExcelIm(file));

+ 11 - 0
knowledgeman-service/src/main/java/com/diagbot/web/MedicalController.java

@@ -1,6 +1,8 @@
 package com.diagbot.web;
 
 
+import java.util.List;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 
@@ -15,11 +17,13 @@ import org.springframework.web.multipart.MultipartFile;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetAllDeptsDTO;
 import com.diagbot.dto.GetMedicalInfoDetailDTO;
 import com.diagbot.dto.GetMedicalInfoListDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.MedicalFacade;
 import com.diagbot.vo.AddMedicalInfoVO;
+import com.diagbot.vo.GetAllDeptsVO;
 import com.diagbot.vo.GetMedicalInfoDetailVO;
 import com.diagbot.vo.GetMedicalInfoListVO;
 import com.diagbot.vo.RemoveMedicalInfoVO;
@@ -81,4 +85,11 @@ public class MedicalController {
         return RespDTO.onSuc(medicalFacade.medicalInfoExcelIm(file));
     }
     
+    @ApiOperation(value = "获取术语医学属性所需全部科室[by:rengb]")
+    @PostMapping("/getAllDepts")
+    @SysLogger("getAllDepts")
+    public RespDTO<List<GetAllDeptsDTO>> getAllDepts(@RequestBody GetAllDeptsVO getAllDeptsVO) {
+        return RespDTO.onSuc(medicalFacade.getAllDepts(getAllDeptsVO));
+    }
+    
 }