|
@@ -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;
|
|
|
}
|
|
|
|
|
|
/**
|