xiatian 2 năm trước cách đây
mục cha
commit
e508d50c1a

+ 4 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/RandomPaperQuestionService.java

@@ -1,8 +1,12 @@
 package cn.com.qmth.examcloud.core.questions.service;
 package cn.com.qmth.examcloud.core.questions.service;
 
 
+import java.util.List;
+
 public interface RandomPaperQuestionService {
 public interface RandomPaperQuestionService {
 
 
 	boolean existQuestion(String questionId);
 	boolean existQuestion(String questionId);
 
 
+	boolean existQuestion(List<String> questionIds);
+
 
 
 }
 }

+ 11 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/bean/randompaper/RandomPaperQuery.java

@@ -14,6 +14,9 @@ public class RandomPaperQuery extends PagerQuery {
 
 
 	@ApiModelProperty("状态")
 	@ApiModelProperty("状态")
 	private Boolean enable;
 	private Boolean enable;
+	
+	@ApiModelProperty("ID")
+	private String id;
 
 
 	@ApiModelProperty(hidden = true)
 	@ApiModelProperty(hidden = true)
 	private Long rootOrgId;
 	private Long rootOrgId;
@@ -61,4 +64,12 @@ public class RandomPaperQuery extends PagerQuery {
 		this.ud = ud;
 		this.ud = ud;
 	}
 	}
 
 
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
 }
 }

+ 5 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperServiceImpl.java

@@ -131,6 +131,7 @@ import cn.com.qmth.examcloud.web.support.SpringContextHolder;
 public class PaperServiceImpl implements PaperService {
 public class PaperServiceImpl implements PaperService {
 
 
 	private static final Logger LOG = LoggerFactory.getLogger(PaperServiceImpl.class);
 	private static final Logger LOG = LoggerFactory.getLogger(PaperServiceImpl.class);
+	
 	@Autowired
 	@Autowired
 	private PropertyRepo propertyRepo;
 	private PropertyRepo propertyRepo;
 	@Autowired
 	@Autowired
@@ -590,6 +591,10 @@ public class PaperServiceImpl implements PaperService {
 			List<Question> quesList = new ArrayList<>();
 			List<Question> quesList = new ArrayList<>();
 			for (Paper paper : papers) {
 			for (Paper paper : papers) {
 				List<PaperDetailUnit> paperUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
 				List<PaperDetailUnit> paperUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
+				List<String> questionIds=paperUnits.stream().map(e->e.getQuestion().getId()).collect(Collectors.toList());
+				if(randomPaperQuestionService.existQuestion(questionIds)) {
+					throw new StatusException("试卷[" + paper.getName() + "]中有试题被抽题模板使用,不能删除");
+				}
 				for (PaperDetailUnit pdu : paperUnits) {
 				for (PaperDetailUnit pdu : paperUnits) {
 					if (pdu.getQuestion() != null) {
 					if (pdu.getQuestion() != null) {
 						quesList.add(pdu.getQuestion());
 						quesList.add(pdu.getQuestion());

+ 10 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/RandomPaperQuestionServiceImpl.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.examcloud.core.questions.service.impl;
 package cn.com.qmth.examcloud.core.questions.service.impl;
 
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Criteria;
@@ -13,6 +15,7 @@ import cn.com.qmth.examcloud.core.questions.service.RandomPaperQuestionService;
 public class RandomPaperQuestionServiceImpl implements RandomPaperQuestionService {
 public class RandomPaperQuestionServiceImpl implements RandomPaperQuestionService {
 	@Autowired
 	@Autowired
 	private MongoTemplate mongoTemplate;
 	private MongoTemplate mongoTemplate;
+	
 	@Override
 	@Override
 	public boolean existQuestion(String questionId) {
 	public boolean existQuestion(String questionId) {
 		Query query = new Query();
 		Query query = new Query();
@@ -21,5 +24,12 @@ public class RandomPaperQuestionServiceImpl implements RandomPaperQuestionServic
 		return rp!=null;
 		return rp!=null;
 	}
 	}
 	
 	
+	@Override
+	public boolean existQuestion(List<String> questionIds) {
+		Query query = new Query();
+		query.addCriteria(Criteria.where("questionId").in(questionIds));
+		long count=mongoTemplate.count(query,RandomPaperQuestion.class);
+		return count>0;
+	}
 
 
 }
 }

+ 17 - 9
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/RandomPaperServiceImpl.java

@@ -95,25 +95,33 @@ public class RandomPaperServiceImpl implements RandomPaperService {
 		if (req.getUd().assertEmptyQueryResult()) {
 		if (req.getUd().assertEmptyQueryResult()) {
 			return Page.empty();
 			return Page.empty();
 		}
 		}
-		Query query = new Query();
-
-		query.addCriteria(Criteria.where("rootOrgId").is(req.getRootOrgId()));
+		Query query;
+		List<Criteria> cs=new ArrayList<>();
+		cs.add(Criteria.where("rootOrgId").is(req.getRootOrgId()));
 
 
 		if (req.getUd().assertNeedQueryRefIds()) {
 		if (req.getUd().assertNeedQueryRefIds()) {
-			query.addCriteria(Criteria.where("courseId").in(req.getUd().getRefIds()));
+			cs.add(Criteria.where("courseId").in(req.getUd().getRefIds()));
 		}
 		}
 
 
 		if (req.getEnable() != null) {
 		if (req.getEnable() != null) {
-			query.addCriteria(Criteria.where("enable").is(req.getEnable()));
+			cs.add(Criteria.where("enable").is(req.getEnable()));
 		}
 		}
 
 
 		if (req.getCourseId() != null) {
 		if (req.getCourseId() != null) {
-			query.addCriteria(Criteria.where("courseId").is(req.getCourseId()));
+			cs.add(Criteria.where("courseId").is(req.getCourseId()));
 		}
 		}
-
-		if (StringUtils.isNoneBlank(req.getName())) {
+		if (StringUtils.isNotBlank(req.getName())) {
 			String paperName = CommonUtils.escapeExprSpecialWord(req.getName());
 			String paperName = CommonUtils.escapeExprSpecialWord(req.getName());
-			query.addCriteria(Criteria.where("name").regex(".*?\\.*" + paperName + ".*"));
+			cs.add(Criteria.where("name").regex(".*?\\.*" + paperName + ".*"));
+		}
+		Criteria and=new Criteria();
+		Criteria[] cas=new Criteria[cs.size()];
+		if (StringUtils.isNotBlank(req.getId())) {
+			and.andOperator(cs.toArray(cas));
+			query=Query.query(new Criteria().orOperator(and,Criteria.where("id").is(req.getId())));
+		}else {
+			and.andOperator(cs.toArray(cas));
+			query=Query.query(and);
 		}
 		}
 
 
 		long total = this.mongoTemplate.count(query, RandomPaper.class);
 		long total = this.mongoTemplate.count(query, RandomPaper.class);