瀏覽代碼

Merge branch 'dev/mix20191225_security' into dev/icss20200109_template

gaodm 5 年之前
父節點
當前提交
a62ef56879

+ 32 - 8
icssman-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -189,6 +189,19 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
         QuestionInfo questionInfo = param.getQuestionInfo();
         Date now = param.getNow();
         String person = param.getPerson();
+
+        // 如果是既往史类型,考虑到整一列内容清空,原tagType=10下的映射关系就会遗留下来,
+        // 变成脏数据,导致删除标签时报错
+        // 将tagType=10下的所有映射关系删除
+        if (InsertOrUpdateEnum.Update.getKey() == param.getInsertOrUpdate()
+                && TagTypeEnum.T6.getKey() == questionWrapper.getTagType()) {
+            Map<String, Object> map = new HashMap();
+            map.put("id", questionInfo.getId());
+            map.put("date", param.getNow());
+            map.put("person", param.getPerson());
+            deleteTagType10Mapping(map);
+        }
+
         //先删除原明细,再插入新明细
         deleteMapping(questionInfo.getId(), param);//删除原映射关系
         List<QuestionMappingWrapper> questionMappings = questionWrapper.getQuestionMappings();
@@ -511,27 +524,28 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
             paramMap.put("modifier", person);
 
             // 映射关系删除校验,如果有父项关联,不能删除
+            List<Long> tagType10Ids = new ArrayList<>();
             List<QuestionInfo> questionInfoList = getParentQuestion(Long.parseLong(id));
-            for (QuestionInfo questionInfo : questionInfoList) {
-                if (questionInfo.getTagType().equals(TagTypeEnum.T10.getKey())) {
-
-                }
-            }
             if (ListUtil.isNotEmpty(questionInfoList)) {
+                boolean flag = false;
                 StringBuffer sb = new StringBuffer();
-                sb.append("请先删除上级关联:");
                 for (QuestionInfo ques : questionInfoList) {
                     if (ques.getTagType().equals(TagTypeEnum.T10.getKey())) {  // 既往史下特殊类型
+                        tagType10Ids.add(ques.getId());
                         List<QuestionInfo> question2 = getParentQuestion(ques.getId());
                         if (ListUtil.isNotEmpty(question2)) {
                             sb.append("【" + question2.get(0).getTagName() + "】"); // 有且只有一个
+                            flag = true;
                         }
                     } else {
                         sb.append("【" + ques.getTagName() + "】");
+                        flag = true;
                     }
                 }
-                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
-                        sb.toString());
+                if (flag) {
+                    throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                            sb.toString());
+                }
             }
             //模板关联
             GetQuestiongAndModuleRelationsVO getQuestiongAndModuleRelationsVO = new GetQuestiongAndModuleRelationsVO();
@@ -569,6 +583,16 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
             }
             //删除自身
             this.deleteByIds(paramMap);
+            //删除tagType=10的无用标签
+            if (ListUtil.isNotEmpty(tagType10Ids)) {
+                this.update(new UpdateWrapper<QuestionInfo>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("id", tagType10Ids)
+                        .set("is_deleted", IsDeleteEnum.Y.getKey())
+                        .set("gmt_modified", now)
+                        .set("modifier", person)
+                );
+            }
             //删除明细
             questionDetailFacade.deleteByQuestionIdFac(paramMap);
             //删除映射关系

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

@@ -107,4 +107,12 @@ public interface QuestionInfoMapper extends BaseMapper<QuestionInfo> {
      */
     public List<GetQuestionInfoDTO> getQuestionByModuleId(Long moduleId);
 
+
+    /**
+     * 删除tagType=10下映射关系
+     *
+     * @param map
+     */
+    public void deleteTagType10Mapping(Map map);
+
 }

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

@@ -124,6 +124,14 @@ public interface QuestionInfoService extends IService<QuestionInfo> {
      * @return
      */
     public List<GetQuestionInfoDTO> getQuestionByModuleId(Long moduleId);
+
+
+    /**
+     * 删除tagType=10下映射关系
+     *
+     * @param map
+     */
+    public void deleteTagType10Mapping(Map map);
 }
 
 

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

@@ -48,6 +48,11 @@ public class QuestionInfoServiceImpl extends ServiceImpl<QuestionInfoMapper, Que
         return baseMapper.getQuestionByModuleId(moduleId);
     }
 
+    @Override
+    public void deleteTagType10Mapping(Map map) {
+        baseMapper.deleteTagType10Mapping(map);
+    }
+
     @Override
     public List<GetQuestionInfoDTO> moduleGetQuestiongInfoByName(ModuleGetQuestionInfoVO moduleGetQuestionInfoVO) {
         return baseMapper.moduleGetQuestiongInfoByName(moduleGetQuestionInfoVO);

+ 12 - 0
icssman-service/src/main/resources/mapper/QuestionInfoMapper.xml

@@ -324,4 +324,16 @@
         LEFT JOIN icss_module_detail b ON a.id = b.question_id
         WHERE a.is_deleted = 'N' AND b.is_deleted = 'N' AND b.module_id = #{moduleId}
     </select>
+
+    <select id="deleteTagType10Mapping">
+        update icss_question_mapping
+        set is_deleted = 'Y', gmt_modified = #{date}, modifier = #{person}
+        where is_deleted = 'N' and parent_question in
+        (
+            select id from (
+            (SELECT c.id id FROM `icss_question_info` a, icss_question_mapping b, icss_question_info c
+            where a.is_deleted = 'N' and b.is_deleted = 'N' and c.is_deleted = 'N' and
+            a.id = b.parent_question and b.son_question = c.id and a.id = #{id} and c.tag_type = 10)) t
+        )
+    </select>
 </mapper>

+ 14 - 7
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java

@@ -4,12 +4,12 @@ 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.client.UserServiceClient;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptIndexDTO;
 import com.diagbot.dto.GetConceptDetailListDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptDetail;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconTypeEnum;
@@ -17,8 +17,8 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.ConceptDetailService;
 import com.diagbot.service.impl.ConceptDetailServiceImpl;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.DateUtil;
-import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.AddConceptDetailVO;
@@ -26,15 +26,12 @@ import com.diagbot.vo.ConceptIndexVO;
 import com.diagbot.vo.GetConceptDetailListVO;
 import com.diagbot.vo.GetConceptDetailVO;
 import com.diagbot.vo.RemoveConceptDetailVO;
-import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
-import javax.swing.text.html.parser.Entity;
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -54,6 +51,8 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
     private ConceptDetailService conceptDetailService;
     @Autowired
     private ConceptFacade conceptFacade;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 获取医学术语命名列表
@@ -73,7 +72,11 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
             ipage.getRecords().forEach(i -> {
                 i.setModifier(respDTO.data.get(i.getModifier()));
                 i.setType(LexiconTypeEnum.getName(i.getTypeId().intValue()));
-                i.setNameType(i.getLibName() + "(" + LexiconTypeEnum.getName(i.getTypeId().intValue()) + ")");
+                String name = i.getLibName();
+                if (cryptConfiguer.cryptFlag) {
+                    name = CryptUtil.decrypt_char(i.getLibName());
+                }
+                i.setNameType(name + "(" + LexiconTypeEnum.getName(i.getTypeId().intValue()) + ")");
             });
         }
         return ipage;
@@ -168,7 +171,11 @@ public class ConceptDetailFacade extends ConceptDetailServiceImpl {
         List<ConceptIndexDTO> retList = this.index(conceptIndexVO);
         retList.forEach(i -> {
             i.setType(LexiconTypeEnum.getName(i.getTypeId().intValue()));
-            i.setNameType(i.getName() + "(" + LexiconTypeEnum.getName(i.getTypeId().intValue()) + ")");
+            String name = i.getName();
+            if (cryptConfiguer.cryptFlag) {
+                name = CryptUtil.decrypt_char(i.getName());
+            }
+            i.setNameType(name + "(" + LexiconTypeEnum.getName(i.getTypeId().intValue()) + ")");
         });
         return retList;
     }