|
@@ -6,6 +6,7 @@ import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.persistence.criteria.Predicate;
|
|
import javax.persistence.criteria.Predicate;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
@@ -137,8 +138,11 @@ public class StudentSpecification extends PagingAndSortingSpecification {
|
|
return (root, query, cb) -> {
|
|
return (root, query, cb) -> {
|
|
List<Predicate> predicates = new ArrayList<Predicate>();
|
|
List<Predicate> predicates = new ArrayList<Predicate>();
|
|
List<Predicate> listPermission = new ArrayList<>();
|
|
List<Predicate> listPermission = new ArrayList<>();
|
|
|
|
+ List<Predicate> listPermission1 = new ArrayList<>();
|
|
|
|
+ List<Predicate> listPermission2 = new ArrayList<>();
|
|
|
|
+ List<Predicate> listPermission3 = new ArrayList<>();
|
|
predicates.add(cb.equal(root.get("test"), String.valueOf(TrialEnum.DEFAULT.getId())));
|
|
predicates.add(cb.equal(root.get("test"), String.valueOf(TrialEnum.DEFAULT.getId())));
|
|
- if (getStudentName() != null) {
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(getStudentName())) {
|
|
predicates.add(cb.like(root.get("name"), "%" + getStudentName() + "%"));
|
|
predicates.add(cb.like(root.get("name"), "%" + getStudentName() + "%"));
|
|
}
|
|
}
|
|
// if(getExamNumber() != null){
|
|
// if(getExamNumber() != null){
|
|
@@ -150,23 +154,48 @@ public class StudentSpecification extends PagingAndSortingSpecification {
|
|
if (getAreaCode() != null && getAreaCode() != "") {
|
|
if (getAreaCode() != null && getAreaCode() != "") {
|
|
predicates.add(cb.equal(root.get("areaCode"), getAreaCode()));
|
|
predicates.add(cb.equal(root.get("areaCode"), getAreaCode()));
|
|
}
|
|
}
|
|
- if (getIsAbsent() != null) {
|
|
|
|
|
|
+
|
|
|
|
+ if ("ONE".equals(getSubject())) {
|
|
|
|
+ listPermission1.add(cb.equal(root.get("scMissing"), true));
|
|
|
|
+ listPermission1.add(cb.equal(root.get("sxMissing"), false));
|
|
|
|
+ listPermission1.add(cb.equal(root.get("smMissing"), false));
|
|
|
|
+
|
|
|
|
+ listPermission2.add(cb.equal(root.get("scMissing"), false));
|
|
|
|
+ listPermission2.add(cb.equal(root.get("sxMissing"), true));
|
|
|
|
+ listPermission2.add(cb.equal(root.get("smMissing"), false));
|
|
|
|
+
|
|
|
|
+ listPermission3.add(cb.equal(root.get("scMissing"), false));
|
|
|
|
+ listPermission3.add(cb.equal(root.get("sxMissing"), false));
|
|
|
|
+ listPermission3.add(cb.equal(root.get("smMissing"), true));
|
|
|
|
+ } else {
|
|
|
|
+ if (getIsAbsent() != null) {
|
|
// predicates.add(cb.equal(root.get("isAbsent"), getIsAbsent()));
|
|
// predicates.add(cb.equal(root.get("isAbsent"), getIsAbsent()));
|
|
- if (getSubject().equals(Subject.SC.name())) {
|
|
|
|
- predicates.add(cb.equal(root.get("scMissing"), true));
|
|
|
|
- } else if (getSubject().equals(Subject.SX.name())) {
|
|
|
|
- predicates.add(cb.equal(root.get("sxMissing"), true));
|
|
|
|
- } else if (getSubject().equals(Subject.SM.name())) {
|
|
|
|
- predicates.add(cb.equal(root.get("smMissing"), true));
|
|
|
|
- } else {
|
|
|
|
- listPermission.add(cb.equal(root.get("scMissing"), true));
|
|
|
|
- listPermission.add(cb.equal(root.get("sxMissing"), true));
|
|
|
|
- listPermission.add(cb.equal(root.get("smMissing"), true));
|
|
|
|
|
|
+ if (Subject.SC.name().equals(getSubject())) {
|
|
|
|
+ predicates.add(cb.equal(root.get("scMissing"), true));
|
|
|
|
+ } else if (Subject.SX.name().equals(getSubject())) {
|
|
|
|
+ predicates.add(cb.equal(root.get("sxMissing"), true));
|
|
|
|
+ } else if (Subject.SM.name().equals(getSubject())) {
|
|
|
|
+ predicates.add(cb.equal(root.get("smMissing"), true));
|
|
|
|
+ } else {
|
|
|
|
+ listPermission.add(cb.equal(root.get("scMissing"), true));
|
|
|
|
+ listPermission.add(cb.equal(root.get("sxMissing"), true));
|
|
|
|
+ listPermission.add(cb.equal(root.get("smMissing"), true));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (getUpload() != null && !getUpload()) {
|
|
|
|
+ if (Objects.nonNull(getSubject()) && !getSubject().isEmpty()) {
|
|
|
|
+ predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":0" + "%"));
|
|
|
|
+ } else {
|
|
|
|
+ predicates.add(cb.equal(root.get("uploadStatus"), "SX:0,SC:0,SM:0"));
|
|
|
|
+ }
|
|
|
|
+ } else if (getUpload() != null && getUpload()) {
|
|
|
|
+ if (Objects.nonNull(getSubject()) && !getSubject().isEmpty()) {
|
|
|
|
+ predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":1" + "%"));
|
|
|
|
+ } else {
|
|
|
|
+ predicates.add(cb.equal(root.get("uploadStatus"), "SX:1,SC:1,SM:1"));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-// if (getUploadStatus() != null) {
|
|
|
|
-// predicates.add(cb.like(root.get("uploadStatus"), "%" + getUploadStatus() + "%"));
|
|
|
|
-// }
|
|
|
|
if (startNumber != null && endNumber != null) {
|
|
if (startNumber != null && endNumber != null) {
|
|
predicates.add(cb.between(root.get("examNumber"), startNumber, endNumber));
|
|
predicates.add(cb.between(root.get("examNumber"), startNumber, endNumber));
|
|
} else if (startNumber != null) {
|
|
} else if (startNumber != null) {
|
|
@@ -174,19 +203,6 @@ public class StudentSpecification extends PagingAndSortingSpecification {
|
|
} else if (endNumber != null) {
|
|
} else if (endNumber != null) {
|
|
predicates.add(cb.equal(root.get("examNumber"), endNumber));
|
|
predicates.add(cb.equal(root.get("examNumber"), endNumber));
|
|
}
|
|
}
|
|
- if (getUpload() != null && !getUpload()) {
|
|
|
|
- if (Objects.nonNull(getSubject()) && !getSubject().isEmpty()) {
|
|
|
|
- predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":0" + "%"));
|
|
|
|
- } else {
|
|
|
|
- predicates.add(cb.equal(root.get("uploadStatus"), "SX:0,SC:0,SM:0"));
|
|
|
|
- }
|
|
|
|
- } else if (getUpload() != null && getUpload()) {
|
|
|
|
- if (Objects.nonNull(getSubject()) && !getSubject().isEmpty()) {
|
|
|
|
- predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":1" + "%"));
|
|
|
|
- } else {
|
|
|
|
- predicates.add(cb.equal(root.get("uploadStatus"), "SX:1,SC:1,SM:1"));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
if (getSchool() != null && getSchool() != "") {
|
|
if (getSchool() != null && getSchool() != "") {
|
|
predicates.add(cb.equal(root.get("school"), getSchool()));
|
|
predicates.add(cb.equal(root.get("school"), getSchool()));
|
|
}
|
|
}
|
|
@@ -194,13 +210,22 @@ public class StudentSpecification extends PagingAndSortingSpecification {
|
|
predicates.add(cb.equal(root.get("examRoom"), getExamRoom()));
|
|
predicates.add(cb.equal(root.get("examRoom"), getExamRoom()));
|
|
}
|
|
}
|
|
Predicate Pre_And = cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
Predicate Pre_And = cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
- if (!CollectionUtils.isEmpty(listPermission)) {
|
|
|
|
- Predicate[] predicatesPermissionArr = new Predicate[listPermission.size()];
|
|
|
|
- Predicate Pre_Or = cb.or(listPermission.toArray(predicatesPermissionArr));
|
|
|
|
- return query.where(Pre_And, Pre_Or).getRestriction();
|
|
|
|
|
|
+ if ("ONE".equals(getSubject())) {
|
|
|
|
+ if (!CollectionUtils.isEmpty(listPermission1) && !CollectionUtils.isEmpty(listPermission2) && !CollectionUtils.isEmpty(listPermission3)) {
|
|
|
|
+ Predicate Pre_Or1 = cb.and(listPermission1.toArray(new Predicate[listPermission1.size()]));
|
|
|
|
+ Predicate Pre_Or2 = cb.and(listPermission2.toArray(new Predicate[listPermission2.size()]));
|
|
|
|
+ Predicate Pre_Or3 = cb.and(listPermission3.toArray(new Predicate[listPermission3.size()]));
|
|
|
|
+ Predicate preOrAll = cb.or(Pre_Or1, Pre_Or2, Pre_Or3);
|
|
|
|
+ return query.where(Pre_And, preOrAll).getRestriction();
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(listPermission)) {
|
|
|
|
+ Predicate Pre_Or = cb.or(listPermission.toArray(new Predicate[listPermission.size()]));
|
|
|
|
+ return query.where(Pre_And, Pre_Or).getRestriction();
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
+ return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
};
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|