浏览代码

查询在上级标签明细中的引用;添加删除校验

zhoutg 5 年之前
父节点
当前提交
495e5306eb

+ 40 - 0
precman-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -38,6 +38,7 @@ import com.diagbot.vo.QuestionIndexVO;
 import com.diagbot.vo.QuestionPageVO;
 import com.diagbot.vo.QuestionSaveVO;
 import com.diagbot.vo.QuestionVO;
+import com.diagbot.vo.SubQuestionVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
@@ -329,6 +330,21 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
                 throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
                         finalMsg.toString());
             }
+
+            // 判断是否在明细中有关联
+            SubQuestionVO subQuestionVO = new SubQuestionVO();
+            subQuestionVO.setId(Long.parseLong(id));
+            List<QuestionInfo> list = getBySubQuestionId(subQuestionVO);
+            if (ListUtil.isNotEmpty(list)) {
+                StringBuffer errMsg = new StringBuffer();
+                errMsg.append("请先删除在上级明细中的关联:");
+                for (QuestionInfo questionInfo : list) {
+                    errMsg.append("【" + questionInfo.getTagName() + "】");
+                }
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                        errMsg.toString());
+            }
+
             //删除自身
             this.deleteByIds(paramMap);
             //删除明细
@@ -490,6 +506,30 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
         return data;
     }
 
+
+    /**
+     * 根据id返回被引用的父标签
+     *
+     * @param subQuestionVO 获取父标签内容参数
+     * @return 标签内容
+     */
+    public List<QuestionInfo> getBySubQuestionId(SubQuestionVO subQuestionVO) {
+        List<QuestionDetail> list = questionDetailFacade.list(new QueryWrapper<QuestionDetail>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .apply("find_in_set({0}, sub_question)", subQuestionVO.getId())
+        );
+        if (ListUtil.isNotEmpty(list)) {
+            List<Long> ids = list.stream().map(r -> r.getQuestionId()).distinct().collect(Collectors.toList());
+            return this.list(new QueryWrapper<QuestionInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("id", ids)
+            );
+        }
+        return null;
+    }
+
+
+
     /**
      * 获取所有需要删除的缓存id列表
      *

+ 15 - 0
precman-service/src/main/java/com/diagbot/vo/SubQuestionVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2018/8/6 10:16
+ */
+@Getter
+@Setter
+public class SubQuestionVO {
+    private Long id;
+}

+ 9 - 0
precman-service/src/main/java/com/diagbot/web/QuestionInfoController.java

@@ -14,6 +14,7 @@ import com.diagbot.vo.QuestionIndexVO;
 import com.diagbot.vo.QuestionPageVO;
 import com.diagbot.vo.QuestionSaveVO;
 import com.diagbot.vo.QuestionVO;
+import com.diagbot.vo.SubQuestionVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -115,4 +116,12 @@ public class QuestionInfoController {
         return RespDTO.onSuc(data);
     }
 
+
+    @ApiOperation(value = "根据id返回被引用的父标签[by:zhoutg]",
+            notes = "id: 标签id<br>")
+    @PostMapping("/getBySubQuestionId")
+    public RespDTO<List<QuestionInfo>> getBySubQuestionId(@RequestBody SubQuestionVO subQuestionVO) {
+        List<QuestionInfo> data = questionFacade.getBySubQuestionId(subQuestionVO);
+        return RespDTO.onSuc(data);
+    }
 }