|
@@ -30,6 +30,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
|
+import javax.persistence.criteria.Join;
|
|
|
+import javax.persistence.criteria.JoinType;
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
@@ -98,6 +100,8 @@ public class MarkTaskApi {
|
|
|
MarkUser markUser = markUserRepo.findOne(markerId);
|
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
|
+ List<Predicate> onPredicates = new ArrayList<>();
|
|
|
+ Join<MarkTask, Paper> join = root.join("paper", JoinType.INNER);
|
|
|
if (Objects.nonNull(questionId)) {
|
|
|
predicates.add(builder.equal(root.get("questionId"), questionId));
|
|
|
}
|
|
@@ -106,8 +110,10 @@ public class MarkTaskApi {
|
|
|
if (level == null) {
|
|
|
predicates.add(builder.isNull(root.get("result")));
|
|
|
if (stage == MarkStage.SCORE) {
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isShift"), false));
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isShiftScore"), false));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("isShift"), false));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("isShiftScore"), false));
|
|
|
+ onPredicates.add(builder.equal(join.get("isShift"), false));
|
|
|
+ onPredicates.add(builder.equal(join.get("isShiftScore"), false));
|
|
|
}
|
|
|
} else if (stage == MarkStage.LEVEL) {
|
|
|
//查询
|
|
@@ -116,34 +122,46 @@ public class MarkTaskApi {
|
|
|
// Long batchNo = paperRepo.findByQuestionId(questionId);
|
|
|
Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
|
|
|
if (!Objects.isNull(batchNo)) {
|
|
|
- predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
|
|
|
+ onPredicates.add(builder.equal(join.get("batchNo"), batchNo));
|
|
|
}
|
|
|
}
|
|
|
} else if (stage == MarkStage.SCORE) {
|
|
|
// Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
|
|
|
Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
|
|
|
- predicates.add(builder.equal(root.get("paper").get("level"), level));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("level"), level));
|
|
|
+ onPredicates.add(builder.equal(join.get("level"), level));
|
|
|
predicates.add(builder.isNotNull(root.get("result")));
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isShift"), false));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("isShift"), false));
|
|
|
// predicates.add(builder.equal(root.get("paper").get("isShiftScore"), false));
|
|
|
+ onPredicates.add(builder.equal(join.get("isShift"), false));
|
|
|
+// onPredicates.add(builder.equal(join.get("isShiftScore"), false));
|
|
|
if(ParamCache.paramMap.get(workId).getScoreShowAllPaper() == 1){
|
|
|
- predicates.add(builder.isNotNull(root.get("paper").get("scoreBatchNo")));
|
|
|
+// predicates.add(builder.isNotNull(root.get("paper").get("scoreBatchNo")));
|
|
|
+ onPredicates.add(builder.isNotNull(join.get("scoreBatchNo")));
|
|
|
} else {
|
|
|
- predicates.add(builder.equal(root.get("paper").get("scoreBatchNo"), batchNo));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("scoreBatchNo"), batchNo));
|
|
|
+ onPredicates.add(builder.equal(join.get("scoreBatchNo"), batchNo));
|
|
|
}
|
|
|
}
|
|
|
if (isSample != null) {
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isSample"), isSample));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("isSample"), isSample));
|
|
|
+ onPredicates.add(builder.equal(join.get("isSample"), isSample));
|
|
|
}
|
|
|
if (reject != null) {
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isRejected"), reject));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("isRejected"), reject));
|
|
|
+ onPredicates.add(builder.equal(join.get("isRejected"), reject));
|
|
|
}
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isMissing"), false));
|
|
|
- predicates.add(builder.equal(root.get("paper").get("active"), true));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("isMissing"), false));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("active"), true));
|
|
|
+ onPredicates.add(builder.equal(join.get("isMissing"), false));
|
|
|
+ onPredicates.add(builder.equal(join.get("active"), true));
|
|
|
//过滤考区
|
|
|
if (Objects.nonNull(areaCode)) {
|
|
|
- predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
|
+// predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
|
+ onPredicates.add(builder.equal(join.get("areaCode"), areaCode));
|
|
|
}
|
|
|
+ join.on(onPredicates.toArray(new Predicate[onPredicates.size()]));
|
|
|
// predicates.add(builder.equal(root.get("isActive"), false));
|
|
|
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
};
|