Browse Source

Merge remote-tracking branch 'origin/dev/icss' into dev/icss

wangyu 6 years ago
parent
commit
77600fadd1
30 changed files with 408 additions and 214 deletions
  1. 2 2
      common/pom.xml
  2. 30 3
      common/src/main/java/com/diagbot/util/FastJsonUtils.java
  3. 0 7
      icss-service/pom.xml
  4. 12 0
      icss-service/src/main/java/com/diagbot/dto/GetTopPatientInfoDTO.java
  5. 4 1
      icss-service/src/main/java/com/diagbot/entity/QuestionDetail.java
  6. 15 0
      icss-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java
  7. 3 9
      icss-service/src/main/java/com/diagbot/facade/TreatmentFacade.java
  8. 1 0
      icss-service/src/main/resources/mapper/QuestionDetailMapper.xml
  9. 0 33
      icssman-service/src/main/java/com/diagbot/dto/AddTagRetrievalDTO.java
  10. 18 0
      icssman-service/src/main/java/com/diagbot/dto/FileDTO.java
  11. 5 0
      icssman-service/src/main/java/com/diagbot/entity/QuestionDetail.java
  12. 1 1
      icssman-service/src/main/java/com/diagbot/facade/IntroduceInfoFacade.java
  13. 30 7
      icssman-service/src/main/java/com/diagbot/facade/QuestionInfoFacade.java
  14. 87 38
      icssman-service/src/main/java/com/diagbot/facade/RetrievalFacade.java
  15. 8 0
      icssman-service/src/main/java/com/diagbot/mapper/QuestionInfoMapper.java
  16. 9 0
      icssman-service/src/main/java/com/diagbot/service/QuestionInfoService.java
  17. 2 1
      icssman-service/src/main/java/com/diagbot/service/UploadService.java
  18. 5 0
      icssman-service/src/main/java/com/diagbot/service/impl/QuestionInfoServiceImpl.java
  19. 13 26
      icssman-service/src/main/java/com/diagbot/service/impl/UploadServiceImpl.java
  20. 42 0
      icssman-service/src/main/java/com/diagbot/vo/AddTagRetrievalDetailVO.java
  21. 9 23
      icssman-service/src/main/java/com/diagbot/vo/AddTagRetrievalVO.java
  22. 0 30
      icssman-service/src/main/java/com/diagbot/vo/DelRetrievalsByMapsVO.java
  23. 28 0
      icssman-service/src/main/java/com/diagbot/vo/DelRetrievalsByQuesIdVO.java
  24. 6 2
      icssman-service/src/main/java/com/diagbot/dto/QuestionIndexDTO.java
  25. 20 0
      icssman-service/src/main/java/com/diagbot/vo/QuestionSpecVO.java
  26. 14 3
      icssman-service/src/main/java/com/diagbot/web/QuestionInfoController.java
  27. 8 10
      icssman-service/src/main/java/com/diagbot/web/RetrievalController.java
  28. 2 1
      icssman-service/src/main/java/com/diagbot/web/UploadController.java
  29. 1 0
      icssman-service/src/main/resources/mapper/QuestionDetailMapper.xml
  30. 33 17
      icssman-service/src/main/resources/mapper/QuestionInfoMapper.xml

+ 2 - 2
common/pom.xml

@@ -79,8 +79,8 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
-            <version>1.2.49</version>
-            <scope>provided</scope>
+            <version>1.2.54</version>
+            <scope>compile</scope>
         </dependency>
 
         <!--POI-->

+ 30 - 3
common/src/main/java/com/diagbot/util/FastJsonUtils.java

@@ -1,11 +1,14 @@
 package com.diagbot.util;
 
-import java.util.List;
-import java.util.Map;
-
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description: 基于fastjson封装的json转换工具类 (大量数据用)
  * @author: gaodm
@@ -57,4 +60,28 @@ public class FastJsonUtils {
         });
     }
 
+    /***
+     * 解析为列表
+     *
+     * @param jsonString
+     * @param key
+     * @param t
+     * @param <T>
+     * @return
+     */
+    public static <T> ArrayList<T> getJsonToListByKey(String jsonString, String key, Class<T> t) {
+        ArrayList<T> list = new ArrayList<T>();
+        if (StringUtil.isNotBlank(jsonString)) {
+            try {
+                JSONObject jsonObj = JSONObject.parseObject(jsonString);
+                JSONArray inforArray = jsonObj.getJSONArray(key);
+                for (int index = 0; index < inforArray.size(); index++) {
+                    list.add(JSONObject.toJavaObject(
+                            inforArray.getJSONObject(index), t));
+                }
+            } catch (Exception e) {
+            }
+        }
+        return list;
+    }
 }

+ 0 - 7
icss-service/pom.xml

@@ -137,13 +137,6 @@
             <artifactId>druid-spring-boot-starter</artifactId>
         </dependency>
 
-        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>1.2.46</version>
-        </dependency>
-
         <!-- springboot整合mybatis(核心就这一个) -->
         <!-- 注意顺序,这个一定要放在最下面 -->
         <dependency>

+ 12 - 0
icss-service/src/main/java/com/diagbot/dto/GetTopPatientInfoDTO.java

@@ -126,4 +126,16 @@ public class GetTopPatientInfoDTO {
 	@ApiModelProperty(value="门诊号")
 	private String recordId;
 	
+    /**
+     * 模式分类
+     */
+	@ApiModelProperty(value="模式分类")
+    private Integer modeClassify;
+
+    /**
+     * 模式值
+     */
+	@ApiModelProperty(value="模式值")
+    private Integer modeValue;
+	
 }

+ 4 - 1
icss-service/src/main/java/com/diagbot/entity/QuestionDetail.java

@@ -68,7 +68,10 @@ public class QuestionDetail implements Serializable {
      */
     private String remark;
 
-
+    /**
+     * 是否异常
+     */
+    private Integer abnormal;
 
 
 }

+ 15 - 0
icss-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java

@@ -3,11 +3,14 @@ package com.diagbot.facade;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.PatientInfoDTO;
+import com.diagbot.entity.DoctorPageMode;
 import com.diagbot.entity.PatientInfo;
 import com.diagbot.service.impl.PatientInfoServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.PatientInfoVO;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
 
@@ -18,6 +21,9 @@ import org.springframework.web.bind.annotation.RequestBody;
  */
 @Component
 public class PatientInfoFacade extends PatientInfoServiceImpl {
+	
+	@Autowired
+	private DoctorPageModeFacade doctorPageModeFacade;
 
     /**
      * 获取患者信息
@@ -40,6 +46,15 @@ public class PatientInfoFacade extends PatientInfoServiceImpl {
         GetTopPatientInfoDTO getTopPatientInfoDTO = baseMapper.getTopPatientInfo(getTopPatientInfoVO);
         getTopPatientInfoDTO.setSystemTime(DateUtil.now());
         getTopPatientInfoDTO.setRecordId(getTopPatientInfoVO.getRecordId());
+        
+        QueryWrapper<DoctorPageMode> doctorPageModeQe = new QueryWrapper<>();
+        doctorPageModeQe.eq("is_deleted", "N");
+        doctorPageModeQe.eq("doctor_id", getTopPatientInfoDTO.getDoctorId());
+        DoctorPageMode doctorPageMode = doctorPageModeFacade.getOne(doctorPageModeQe);
+        if(doctorPageMode!=null){
+        	getTopPatientInfoDTO.setModeClassify(doctorPageMode.getModeClassify());
+        	getTopPatientInfoDTO.setModeValue(doctorPageMode.getModeValue());
+        }
         return getTopPatientInfoDTO;
     }
 

+ 3 - 9
icss-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -1,7 +1,5 @@
 package com.diagbot.facade;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.TreatServiceClient;
 import com.diagbot.client.bean.GdbResponse;
@@ -19,6 +17,7 @@ import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.EntityUtil;
+import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.TreatmentVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -85,13 +84,8 @@ public class TreatmentFacade {
             treatmentDTO.setMap(retMap);
             return treatmentDTO;
         }
-        JSONObject jsonObject = JSONObject.parseObject(resultDes);
-        JSONArray treatJsonArray = jsonObject.getJSONArray("treatment");
-        if (treatJsonArray.size() == 0) {
-            treatmentDTO.setMap(retMap);
-            return treatmentDTO;
-        }
-        List<MedicitionClass> drugsList = JSONObject.parseArray(treatJsonArray.toJSONString(), MedicitionClass.class);
+
+        List<MedicitionClass> drugsList = FastJsonUtils.getJsonToListByKey(resultDes, "treatment", MedicitionClass.class);
 
         List<String> classNameList = drugsList.stream().map(drugs -> drugs.getDrugsName()).collect(Collectors.toList());
         List<QuestionInfo> drugClassList = getTopQuestionList(classNameList, QuestionTypeEnum.DrugClass.getKey());

+ 1 - 0
icss-service/src/main/resources/mapper/QuestionDetailMapper.xml

@@ -11,6 +11,7 @@
         <result column="question_id" property="questionId" />
         <result column="order_no" property="orderNo" />
         <result column="default_select" property="defaultSelect" />
+        <result column="abnormal" property="abnormal" />
         <result column="remark" property="remark" />
     </resultMap>
 

+ 0 - 33
icssman-service/src/main/java/com/diagbot/dto/AddTagRetrievalDTO.java

@@ -1,33 +0,0 @@
-/**
- * 
- */
-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月5日下午5:00:34
- */
-@ApiModel(value="标签添加同义词接口出参")
-@Getter
-@Setter
-public class AddTagRetrievalDTO {
-	
-	/**
-	 * 同义词id
-	 */
-	@ApiModelProperty(value="同义词id")
-	private Long retrievalId;
-	
-	/**
-	 * 同义词映射id
-	 */
-	@ApiModelProperty(value="同义词映射id")
-	private Long retrievalMappingId;
-	
-}

+ 18 - 0
icssman-service/src/main/java/com/diagbot/dto/FileDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2018/12/18 17:08
+ */
+@Getter
+@Setter
+public class FileDTO {
+    private String state;
+    private String original;
+    private String title;
+    private String url;
+}

+ 5 - 0
icssman-service/src/main/java/com/diagbot/entity/QuestionDetail.java

@@ -90,6 +90,11 @@ public class QuestionDetail implements Serializable {
      */
     private Integer code;
 
+    /**
+     * 是否异常
+     */
+    private Integer abnormal;
+
     /**
      * 备注
      */

+ 1 - 1
icssman-service/src/main/java/com/diagbot/facade/IntroduceInfoFacade.java

@@ -62,7 +62,7 @@ public class IntroduceInfoFacade extends IntroduceInfoServiceImpl {
      */
     public Boolean saveIntroduce(IntroduceVO introduceVO) {
         IntroduceInfo introduceInfo = new IntroduceInfo();
-        if (!(introduceVO.getId() == null)) {
+        if (!(introduceVO.getId() == null||introduceInfo.getId().equals(0))) {
             introduceInfo = this.getById(introduceVO.getId());
             introduceInfo.setModifier(UserUtils.getCurrentPrincipleID());
             introduceInfo.setGmtModified(DateUtil.now());

+ 30 - 7
icssman-service/src/main/java/com/diagbot/facade/QuestionInfoFacade.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.GetQuestionInfoDTO;
-import com.diagbot.dto.QuestionIndexDTO;
 import com.diagbot.dto.QuestionPageDTO;
 import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.DeptInfo;
@@ -28,8 +27,10 @@ import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.GetQuestionInfoVO;
 import com.diagbot.vo.GetQuestionUsualByDeptVO;
+import com.diagbot.vo.QuestionIndexVO;
 import com.diagbot.vo.QuestionPageVO;
 import com.diagbot.vo.QuestionSaveVO;
+import com.diagbot.vo.QuestionSpecVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
@@ -283,6 +284,7 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
         this.saveOrUpdate(questionInfo);
     }
 
+
     /**
      * 标签列表
      *
@@ -333,19 +335,38 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
     /**
      * 检索
      *
-     * @param questionIndexDTO
+     * @param questionIndexVO
      * @return
      */
-    public List<QuestionInfo> indexFac(QuestionIndexDTO questionIndexDTO) {
+    public List<QuestionInfo> indexFac(QuestionIndexVO questionIndexVO) {
         Map<String, Object> paramMap = new HashMap<>();
         paramMap.put("isDeleted", IsDeleteEnum.N.getKey());
-        paramMap.put("age", questionIndexDTO.getAge());
-        paramMap.put("sexType", questionIndexDTO.getSexType());
-        paramMap.put("tagName", questionIndexDTO.getTagName());
-        paramMap.put("type", questionIndexDTO.getType());
+        paramMap.put("age", questionIndexVO.getAge());
+        paramMap.put("sexType", questionIndexVO.getSexType());
+        paramMap.put("tagName", questionIndexVO.getTagName());
+        paramMap.put("type", questionIndexVO.getType());
+        paramMap.put("controlType", questionIndexVO.getControlType());
+        paramMap.put("notIds", questionIndexVO.getNotIds());
         return this.index(paramMap);
     }
 
+
+    /**
+     * 获取特殊标签(同伴|无)
+     *
+     * @param questionSpecVO
+     * @return
+     */
+    public List<QuestionInfo> getSpecialFac(QuestionSpecVO questionSpecVO) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("age", questionSpecVO.getAge());
+        paramMap.put("sexType", questionSpecVO.getSexType());
+        paramMap.put("type", questionSpecVO.getType());
+        paramMap.put("notIds", questionSpecVO.getNotIds());
+        return this.getSpecial(paramMap);
+    }
+
+
     /**
      * 根据标签名获取标签信息
      *
@@ -360,6 +381,7 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
         return this.getOne(queryWrapper);
     }
 
+
     /**
      * 根据标签名获取标签信息
      *
@@ -371,6 +393,7 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
         return getQuestionInfoDTOS;
     }
 
+
     /**
      * 根据科室id获取常用标签信息
      *

+ 87 - 38
icssman-service/src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -3,6 +3,8 @@
  */
 package com.diagbot.facade;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -13,7 +15,6 @@ 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.AddTagRetrievalDTO;
 import com.diagbot.dto.GetRetrievalsByTagDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalListDTO;
@@ -24,8 +25,9 @@ import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.RetrievalServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.UserUtils;
+import com.diagbot.vo.AddTagRetrievalDetailVO;
 import com.diagbot.vo.AddTagRetrievalVO;
-import com.diagbot.vo.DelRetrievalsByMapsVO;
+import com.diagbot.vo.DelRetrievalsByQuesIdVO;
 import com.diagbot.vo.GetRetrievalsByTagVO;
 import com.diagbot.vo.RetrievalListVO;
 
@@ -56,60 +58,107 @@ public class RetrievalFacade extends RetrievalServiceImpl {
     /**
      * 根据映射关系删除标签的同义词
      *
-     * @param delRetrievalsByMapsVO
+     * @param delRetrievalsByQuesIdVO
      * @return
      */
-    public Boolean delRetrievalsByMaps(DelRetrievalsByMapsVO delRetrievalsByMapsVO) {
+    public Boolean delRetrievalsByQuesId(DelRetrievalsByQuesIdVO delRetrievalsByQuesIdVO) {
     	QueryWrapper<RetrievalMapping> mappingQe = new QueryWrapper<>();
+    	mappingQe.eq("question_id", delRetrievalsByQuesIdVO.getQuestionId());
+    	
 		String userId = UserUtils.getCurrentPrincipleID();
 		RetrievalMapping retrievalMapping = new RetrievalMapping();
 		retrievalMapping.setGmtModified(DateUtil.now());
 		retrievalMapping.setModifier(userId);
 		retrievalMapping.setIsDeleted("Y");
-		mappingQe.in("id", delRetrievalsByMapsVO.getRetrievalMappingIds());
+		
 		retrievalMappingFacade.update(retrievalMapping, mappingQe);
 		return true;
     }
 
     /**
-     * 标签添加同义词
+     * 添加或者编辑标签同义词
      *
      * @param addTagRetrievalVO
      * @return
      */
-    public AddTagRetrievalDTO addTagRetrieval(AddTagRetrievalVO addTagRetrievalVO) {
-        AddTagRetrievalDTO addTagRetrievalDTO = new AddTagRetrievalDTO();
-        QueryWrapper<Retrieval> queryWrapper = new QueryWrapper<Retrieval>();
-        queryWrapper.eq("name", addTagRetrievalVO.getRetrievalName());
-        queryWrapper.eq("is_deleted", "N");
-        Retrieval retrieval = this.getOne(queryWrapper);
-        String userId = UserUtils.getCurrentPrincipleID();
-        if (retrieval == null) {
-            retrieval = new Retrieval();
-            retrieval.setName(addTagRetrievalVO.getRetrievalName());
-            retrieval.setCreator(userId);
-            retrieval.setGmtCreate(DateUtil.now());
-        } else {
-            QueryWrapper<RetrievalMapping> queryWrapper2 = new QueryWrapper<RetrievalMapping>();
-            queryWrapper2.eq("retrieval_id", retrieval.getId());
-            queryWrapper2.eq("question_id", addTagRetrievalVO.getQuestionId());
-            retrievalMappingFacade.remove(queryWrapper2);
-        }
-
-        retrieval.setSpell(addTagRetrievalVO.getRetrievalSpell());
-        this.saveOrUpdate(retrieval);
-
-        RetrievalMapping retrievalMapping = new RetrievalMapping();
-        retrievalMapping.setQuestionId(addTagRetrievalVO.getQuestionId());
-        retrievalMapping.setRetrievalId(retrieval.getId());
-        retrievalMapping.setShowType(addTagRetrievalVO.getRetrievalType());
-        retrievalMapping.setCreator(userId);
-        retrievalMapping.setGmtCreate(DateUtil.now());
-        retrievalMappingFacade.save(retrievalMapping);
+    public Boolean addTagRetrieval(AddTagRetrievalVO addTagRetrievalVO) {
+    	Date now = DateUtil.now();
+    	String userId = UserUtils.getCurrentPrincipleID();
+    	
+        Map<String,AddTagRetrievalDetailVO> detailMap = addTagRetrievalVO.getItemList().stream().collect(Collectors.toMap(AddTagRetrievalDetailVO::getRetrievalName,i->i));
+    	List<String> retrievalNames = addTagRetrievalVO.getItemList().stream().map(i->i.getRetrievalName()).collect(Collectors.toList());
+    	
+        QueryWrapper<Retrieval> retrievalQe = new QueryWrapper<Retrieval>();
+        retrievalQe.in("name", retrievalNames);
+        retrievalQe.eq("is_deleted", "N");
+        Map<String,Retrieval> retrievalMap = this.list(retrievalQe).stream().collect(Collectors.toMap(Retrieval::getName,i->i));
+        
+        List<Retrieval> saveOrUpdateRetrievals = new ArrayList<>();
+        List<Retrieval> retrievals = new ArrayList<>();
+        addTagRetrievalVO.getItemList().forEach(i->{
+        	Retrieval retrieval = retrievalMap.get(i.getRetrievalName());
+        	if(retrieval==null){
+        		retrieval = new Retrieval();
+        		retrieval.setName(i.getRetrievalName());
+        		retrieval.setSpell(i.getRetrievalSpell());
+        		retrieval.setCreator(userId);
+        		retrieval.setGmtCreate(now);
+        		retrieval.setModifier(userId);
+        		retrieval.setGmtModified(now);
+        		saveOrUpdateRetrievals.add(retrieval);
+        	}else if(!retrieval.getSpell().equals(i.getRetrievalSpell())){
+        		retrieval.setSpell(i.getRetrievalSpell());
+        		retrieval.setModifier(userId);
+        		retrieval.setGmtModified(now);
+        		saveOrUpdateRetrievals.add(retrieval);
+        	}else{
+        		retrievals.add(retrieval);
+        	}
+        });
+        this.saveOrUpdateBatch(saveOrUpdateRetrievals);
+        retrievals.addAll(saveOrUpdateRetrievals);
+        List<Long> retrievalIds = retrievals.stream().map(i->i.getId()).collect(Collectors.toList());
+        
+    	QueryWrapper<RetrievalMapping> retrievalMappingQe = new QueryWrapper<RetrievalMapping>();
+    	retrievalMappingQe.eq("question_id", addTagRetrievalVO.getQuestionId());
+        List<RetrievalMapping> retrievalMappings = retrievalMappingFacade.list(retrievalMappingQe);
+        Map<Long,RetrievalMapping> retrievalMappingMap = retrievalMappings.stream().collect(Collectors.toMap(RetrievalMapping::getRetrievalId, i->i));
+        
+        List<RetrievalMapping> addOrUpdateRetrievalMappings = new ArrayList<>();
+        retrievalMappings.stream().filter(i->retrievalIds.contains(i.getRetrievalId())).forEach(i->{
+        	i.setIsDeleted("Y");
+        	i.setGmtModified(now);
+        	i.setModifier(userId);
+        	addOrUpdateRetrievalMappings.add(i);
+        });
+        
+        retrievals.forEach(i->{
+        	RetrievalMapping retrievalMapping = retrievalMappingMap.get(i.getId());
+        	AddTagRetrievalDetailVO detail = detailMap.get(i.getName());
+        	if(retrievalMapping==null){
+        		retrievalMapping = new RetrievalMapping();
+        		retrievalMapping.setQuestionId(addTagRetrievalVO.getQuestionId());
+        		retrievalMapping.setRetrievalId(i.getId());
+        		retrievalMapping.setGmtCreate(now);
+        		retrievalMapping.setGmtModified(now);
+        		retrievalMapping.setCreator(userId);
+        		retrievalMapping.setModifier(userId);
+        		retrievalMapping.setShowType(detail.getRetrievalType());
+        		addOrUpdateRetrievalMappings.add(retrievalMapping);
+        	}else{
+        		if(detail.getRetrievalType()!=retrievalMapping.getShowType()||retrievalMapping.getIsDeleted().equals("Y")){
+        			retrievalMapping.setShowType(detailMap.get(i.getName()).getRetrievalType());
+        			retrievalMapping.setGmtModified(now);
+        			retrievalMapping.setModifier(userId);
+        			retrievalMapping.setIsDeleted("N");
+        			addOrUpdateRetrievalMappings.add(retrievalMapping);
+        		}
+        	}
+        });
+        
+        retrievalMappingFacade.saveOrUpdateBatch(addOrUpdateRetrievalMappings);     
 
-        addTagRetrievalDTO.setRetrievalId(retrieval.getId());
-        addTagRetrievalDTO.setRetrievalMappingId(retrievalMapping.getId());
-        return addTagRetrievalDTO;
+        return true;
     }
     
     /**

+ 8 - 0
icssman-service/src/main/java/com/diagbot/mapper/QuestionInfoMapper.java

@@ -43,6 +43,14 @@ public interface QuestionInfoMapper extends BaseMapper<QuestionInfo> {
     public List<GetQuestionInfoDTO> getQuestionUsualsByDept(GetQuestionUsualByDeptVO getQuestionUsualByDeptVO);
 
 
+    /**
+     * 获取特殊标签,同伴|无
+     * @param map
+     * @return
+     */
+    public List<QuestionInfo> getSpecial(Map map);
+
+
     /**
      * 获取标签列表
      *

+ 9 - 0
icssman-service/src/main/java/com/diagbot/service/QuestionInfoService.java

@@ -63,6 +63,15 @@ public interface QuestionInfoService extends IService<QuestionInfo> {
      * @return
      */
     public List<GetQuestionInfoDTO> getQuestionUsualsByDept(GetQuestionUsualByDeptVO getQuestionUsualByDeptVO);
+
+
+    /**
+     * 获取特殊标签
+     *
+     * @param map
+     * @return
+     */
+    public List<QuestionInfo> getSpecial(Map map);
 }
 
 

+ 2 - 1
icssman-service/src/main/java/com/diagbot/service/UploadService.java

@@ -1,5 +1,6 @@
 package com.diagbot.service;
 
+import com.diagbot.dto.FileDTO;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Map;
@@ -10,5 +11,5 @@ import java.util.Map;
  * @time: 2018/11/13 13:50
  */
 public interface UploadService {
-    Map<String, Object> singleFileUpload(MultipartFile file);
+    FileDTO singleFileUpload(MultipartFile file);
 }

+ 5 - 0
icssman-service/src/main/java/com/diagbot/service/impl/QuestionInfoServiceImpl.java

@@ -46,6 +46,11 @@ public class QuestionInfoServiceImpl extends ServiceImpl<QuestionInfoMapper, Que
         return baseMapper.getQuestionUsualsByDept(getQuestionUsualByDeptVO);
     }
 
+    @Override
+    public List<QuestionInfo> getSpecial(Map map) {
+        return baseMapper.getSpecial(map);
+    }
+
     @Override
     public IPage<QuestionPageDTO> getList(QuestionPageVO questionPageVO) {
         return baseMapper.getList(questionPageVO);

+ 13 - 26
icssman-service/src/main/java/com/diagbot/service/impl/UploadServiceImpl.java

@@ -2,6 +2,7 @@ package com.diagbot.service.impl;
 
 import com.diagbot.client.fastdfs.FastDFSClient;
 import com.diagbot.client.fastdfs.FastDFSFile;
+import com.diagbot.dto.FileDTO;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.ServiceErrorCode;
 import com.diagbot.service.UploadService;
@@ -11,8 +12,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
 
 /**
  * @Description: 文件上传服务接口实现
@@ -23,8 +22,9 @@ import java.util.Map;
 @Service
 public class UploadServiceImpl implements UploadService {
     @Override
-    public Map<String, Object> singleFileUpload(MultipartFile file) {
-        String path = "";
+    public FileDTO singleFileUpload(MultipartFile file) {
+        FileDTO fileDTO = new FileDTO();
+
         if (file.isEmpty()) {
             throw new CommonException(ServiceErrorCode.FILE_UPLOAD_ERROE, "文件不能为空");
         }
@@ -33,39 +33,22 @@ public class UploadServiceImpl implements UploadService {
             throw new CommonException(ServiceErrorCode.FILE_MAX_SIZE_LIMIT, "文件上传失败,超出大小限制1MB");
         }
         try {
-            // Get the file and save it somewhere
-            path = saveFile(file);
+            fileDTO = saveFile(file);
         } catch (Exception e) {
             log.error("文件上传失败", e);
             throw new CommonException(ServiceErrorCode.FILE_UPLOAD_ERROE, "文件上传失败,请重新上传");
         }
-        return resultMap("SUCCESS", path, file.getOriginalFilename(), file.getOriginalFilename());
+        return fileDTO;
     }
 
-    /**
-     * 上传文件返回格式
-     *
-     * @param state
-     * @param url
-     * @param title
-     * @param original
-     * @return
-     */
-    private Map<String, Object> resultMap(String state, String url, String title, String original) {
-        Map<String, Object> result = new HashMap<>();
-        result.put("state", state);
-        result.put("original", original);
-        result.put("title", title);
-        result.put("url", url);
-        return result;
-    }
 
     /**
      * @param multipartFile
      * @return
      * @throws IOException
      */
-    public String saveFile(MultipartFile multipartFile) throws IOException {
+    public FileDTO saveFile(MultipartFile multipartFile) throws IOException {
+        FileDTO fileDTO = new FileDTO();
         String[] fileAbsolutePath = {};
         String fileName = multipartFile.getOriginalFilename();
         String ext = fileName.substring(fileName.lastIndexOf(".") + 1);
@@ -89,7 +72,11 @@ public class UploadServiceImpl implements UploadService {
             throw new CommonException(ServiceErrorCode.FILE_UPLOAD_ERROE, "文件上传失败,请重新上传");
         }
         String path = "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
-        return path;
+        fileDTO.setState("SUCCESS");
+        fileDTO.setUrl(path);
+        fileDTO.setOriginal(multipartFile.getOriginalFilename());
+        fileDTO.setTitle(multipartFile.getOriginalFilename());
+        return fileDTO;
 
     }
 

+ 42 - 0
icssman-service/src/main/java/com/diagbot/vo/AddTagRetrievalDetailVO.java

@@ -0,0 +1,42 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+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 AddTagRetrievalDetailVO {
+	
+	/**
+	 * 同义词名称
+	 */
+	@ApiModelProperty(value="同义词名称",required=true)
+	@NotBlank(message="同义词名称必传")
+	private String retrievalName;
+	
+	/**
+	 * 同义词拼音
+	 */
+	@ApiModelProperty(value="同义词拼音",required=true)
+	@NotBlank(message="同义词拼音必传")
+	private String retrievalSpell;
+	
+	/**
+	 * 同义词种类
+	 */
+	@ApiModelProperty(value="同义词种类",required=true)
+	@NotNull(message="同义词种类必传")
+	private Integer retrievalType;
+	
+}

+ 9 - 23
icssman-service/src/main/java/com/diagbot/vo/AddTagRetrievalVO.java

@@ -1,6 +1,9 @@
 package com.diagbot.vo;
 
-import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
 import io.swagger.annotations.ApiModel;
@@ -13,7 +16,7 @@ import lombok.Setter;
  * @author rgb
  * @time 2018年12月5日下午5:00:52
  */
-@ApiModel(value="标签添加同义词接口传参")
+@ApiModel(value="添加或者编辑标签同义词接口传参")
 @Getter
 @Setter
 public class AddTagRetrievalVO {
@@ -25,26 +28,9 @@ public class AddTagRetrievalVO {
 	@NotNull(message="标签id必传")
     private Long questionId;
 	
-	
-	/**
-	 * 同义词名称
-	 */
-	@ApiModelProperty(value="同义词名称",required=true)
-	@NotBlank(message="同义词名称必传")
-	private String retrievalName;
-	
-	/**
-	 * 同义词拼音
-	 */
-	@ApiModelProperty(value="同义词拼音",required=true)
-	@NotBlank(message="同义词拼音必传")
-	private String retrievalSpell;
-	
-	/**
-	 * 同义词种类
-	 */
-	@ApiModelProperty(value="同义词种类",required=true)
-	@NotNull(message="同义词种类必传")
-	private Integer retrievalType;
+	@Valid
+	@ApiModelProperty(value="同义词集合",required=true)
+	@NotEmpty(message="同义词必传")
+	private List<AddTagRetrievalDetailVO> itemList;
 	
 }

+ 0 - 30
icssman-service/src/main/java/com/diagbot/vo/DelRetrievalsByMapsVO.java

@@ -1,30 +0,0 @@
-package com.diagbot.vo;
-
-import java.util.List;
-
-import javax.validation.constraints.NotEmpty;
-
-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 DelRetrievalsByMapsVO {
-	
-	/**
-	 * 标签同义词映射关系id集合
-	 */
-	@ApiModelProperty(value="标签同义词映射关系id集合",required=true)
-	@NotEmpty(message="标签同义词映射关系id必传")
-	private List<Long> retrievalMappingIds;
-
-
-}

+ 28 - 0
icssman-service/src/main/java/com/diagbot/vo/DelRetrievalsByQuesIdVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotNull;
+
+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="根据标签id删除标签的同义词接口传参")
+@Getter
+@Setter
+public class DelRetrievalsByQuesIdVO {
+	
+	/**
+     * 标签id
+     */
+	@ApiModelProperty(value="标签id",required=true)
+	@NotNull(message="标签id必传")
+    private Long questionId;
+	
+
+}

+ 6 - 2
icssman-service/src/main/java/com/diagbot/dto/QuestionIndexDTO.java

@@ -1,8 +1,10 @@
-package com.diagbot.dto;
+package com.diagbot.vo;
 
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @Description:
  * @Author:zhaops
@@ -10,9 +12,11 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class QuestionIndexDTO {
+public class QuestionIndexVO {
     private String tagName;
     private Integer sexType;
     private Integer age;
     private Integer type;
+    private Integer controlType;
+    private List<Long> notIds;
 }

+ 20 - 0
icssman-service/src/main/java/com/diagbot/vo/QuestionSpecVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description: 特殊标签
+ * @Author: ztg
+ * @Date: 2018/12/18 16:35
+ */
+@Getter
+@Setter
+public class QuestionSpecVO {
+    private Integer sexType;
+    private Integer age;
+    private Integer type;
+    private List<Long> notIds;
+}

+ 14 - 3
icssman-service/src/main/java/com/diagbot/web/QuestionInfoController.java

@@ -3,13 +3,14 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.QuestionIndexDTO;
 import com.diagbot.dto.QuestionPageDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.QuestionInfo;
 import com.diagbot.facade.QuestionInfoFacade;
+import com.diagbot.vo.QuestionIndexVO;
 import com.diagbot.vo.QuestionPageVO;
 import com.diagbot.vo.QuestionSaveVO;
+import com.diagbot.vo.QuestionSpecVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,8 +64,18 @@ public class QuestionInfoController {
             notes = "")
     @PostMapping("/index")
     @SysLogger("index")
-    public RespDTO<List<QuestionInfo>> index(@RequestBody QuestionIndexDTO questionIndexDTO) {
-        List<QuestionInfo> data = questionInfoFacade.indexFac(questionIndexDTO);
+    public RespDTO<List<QuestionInfo>> index(@RequestBody QuestionIndexVO questionIndexVO) {
+        List<QuestionInfo> data = questionInfoFacade.indexFac(questionIndexVO);
+        return RespDTO.onSuc(data);
+    }
+
+
+    @ApiOperation(value = "获取特殊标签(同伴|无)[by:zhoutg]",
+            notes = "")
+    @PostMapping("/getSpecial")
+    @SysLogger("getSpecial")
+    public RespDTO<List<QuestionInfo>> getSpecial(@RequestBody QuestionSpecVO questionSpecVO) {
+        List<QuestionInfo> data = questionInfoFacade.getSpecialFac(questionSpecVO);
         return RespDTO.onSuc(data);
     }
 

+ 8 - 10
icssman-service/src/main/java/com/diagbot/web/RetrievalController.java

@@ -13,13 +13,12 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.AddTagRetrievalDTO;
 import com.diagbot.dto.GetRetrievalsByTagDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalListDTO;
 import com.diagbot.facade.RetrievalFacade;
 import com.diagbot.vo.AddTagRetrievalVO;
-import com.diagbot.vo.DelRetrievalsByMapsVO;
+import com.diagbot.vo.DelRetrievalsByQuesIdVO;
 import com.diagbot.vo.GetRetrievalsByTagVO;
 import com.diagbot.vo.RetrievalListVO;
 
@@ -50,20 +49,19 @@ public class RetrievalController {
         return RespDTO.onSuc(retrievalFacade.getRetrievalsByTag(getRetrievalsByTagVO));
     }
 
-
-    @ApiOperation(value = "根据映射关系删除标签的同义词[by:rengb]")
-    @PostMapping("/delRetrievalsByMaps")
-    @SysLogger("delRetrievalsByMaps")
+    @ApiOperation(value = "根据标签id删除标签的同义词[by:rengb]")
+    @PostMapping("/delRetrievalsByQuesId")
+    @SysLogger("delRetrievalsByQuesId")
     @Transactional
-    public RespDTO<List<Boolean>> delRetrievalsByMaps(@Valid @RequestBody DelRetrievalsByMapsVO delRetrievalsByMapsVO) {
-        return RespDTO.onSuc(retrievalFacade.delRetrievalsByMaps(delRetrievalsByMapsVO));
+    public RespDTO<Boolean> delRetrievalsByQuesId(@Valid @RequestBody DelRetrievalsByQuesIdVO delRetrievalsByQuesIdVO) {
+        return RespDTO.onSuc(retrievalFacade.delRetrievalsByQuesId(delRetrievalsByQuesIdVO));
     }
 
-    @ApiOperation(value = "标签添加同义词[by:rengb]")
+    @ApiOperation(value = "添加或者编辑标签同义词[by:rengb]")
     @PostMapping("/addTagRetrieval")
     @SysLogger("addTagRetrieval")
     @Transactional
-    public RespDTO<AddTagRetrievalDTO> addTagRetrieval(@Valid @RequestBody AddTagRetrievalVO addTagRetrievalVO) {
+    public RespDTO<Boolean> addTagRetrieval(@Valid @RequestBody AddTagRetrievalVO addTagRetrievalVO) {
         return RespDTO.onSuc(retrievalFacade.addTagRetrieval(addTagRetrievalVO));
     }
 

+ 2 - 1
icssman-service/src/main/java/com/diagbot/web/UploadController.java

@@ -1,5 +1,6 @@
 package com.diagbot.web;
 
+import com.diagbot.dto.FileDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.UploadFacade;
 import io.swagger.annotations.Api;
@@ -22,7 +23,7 @@ public class UploadController {
     private UploadFacade uploadFacade;
 
     @PostMapping("/uploadImage")
-    public RespDTO<Map<String, Object>> singleFileUpload(@RequestParam("upfile") MultipartFile file) {
+    public RespDTO<FileDTO> singleFileUpload(@RequestParam("upfile") MultipartFile file) {
         return RespDTO.onSuc(uploadFacade.singleFileUpload(file));
     }
 

+ 1 - 0
icssman-service/src/main/resources/mapper/QuestionDetailMapper.xml

@@ -16,6 +16,7 @@
         <result column="label_suffix" property="labelSuffix" />
         <result column="order_no" property="orderNo" />
         <result column="default_select" property="defaultSelect" />
+        <result column="abnormal" property="abnormal" />
         <result column="code" property="code" />
         <result column="remark" property="remark" />
     </resultMap>

+ 33 - 17
icssman-service/src/main/resources/mapper/QuestionInfoMapper.xml

@@ -48,7 +48,7 @@
         select * from `icss_question_info`
         where is_deleted = 'N'
         <if test="tagName != null and tagName != ''">
-            and tag_name = #{tagName}
+            and tag_name like concat("%", #{tagName}, "%")
         </if>
         <if test="sexType != null and sexType != ''">
             and sex_type in (3, #{sexType})
@@ -60,24 +60,16 @@
         <if test="type != null and type != ''">
             and type = #{type}
         </if>
-
-        union
-
-        select * from `icss_question_info`
-        where is_deleted = 'N'
-        <if test="tagName != null and tagName != ''">
-            and tag_name like concat("%", #{tagName}, "%")
-        </if>
-        <if test="sexType != null and sexType != ''">
-            and sex_type in (3, #{sexType})
+        <if test="controlType != null and controlType != ''">
+            and control_type = #{controlType}
         </if>
-        <if test="age != null and age != ''">
-            <![CDATA[ and age_begin <= #{age} ]]>
-            <![CDATA[ and age_end >= #{age} ]]>
-        </if>
-        <if test="type != null and type != ''">
-            and type = #{type}
+        <if test="notIds != null and notIds.size() > 0 ">
+            and id not in
+            <foreach  collection="notIds" item="id" open="("  separator=","  close=")">
+                #{id}
+            </foreach>
         </if>
+        order by gmt_modified desc
     </select>
 
     <select id="getQuestiongInfoByName" resultType="com.diagbot.dto.GetQuestionInfoDTO">
@@ -127,4 +119,28 @@
         GROUP BY a.id
     </select>
 
+
+    <select id="getSpecial" parameterType="java.util.Map" resultMap="BaseResultMap">
+        SELECT DISTINCT t1.* FROM icss_question_info t1, `icss_question_detail` t2
+        where t1.is_deleted = 'N' and t2.is_deleted = 'N' and
+        t1.id = t2.question_id and t2.`code` in (1,2)
+        <if test="sexType != null and sexType != ''">
+            and t1.sex_type in (3, #{sexType})
+        </if>
+        <if test="age != null and age != ''">
+            <![CDATA[ and t1.age_begin <= #{age} ]]>
+            <![CDATA[ and t1.age_end >= #{age} ]]>
+        </if>
+        <if test="type != null and type != ''">
+            and t1.type = #{type}
+        </if>
+        <if test="notIds != null and notIds.size() > 0 ">
+            and t1.id not in
+            <foreach  collection="notIds" item="id" open="("  separator=","  close=")">
+                #{id}
+            </foreach>
+        </if>
+    </select>
+
+
 </mapper>