|
@@ -4,6 +4,7 @@ import cn.com.qmth.stmms.ms.commons.utils.specification.PagingAndSortingSpecific
|
|
import cn.com.qmth.stmms.ms.core.domain.Student;
|
|
import cn.com.qmth.stmms.ms.core.domain.Student;
|
|
import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
|
|
import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.persistence.criteria.Predicate;
|
|
import javax.persistence.criteria.Predicate;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
@@ -134,25 +135,41 @@ public class StudentSpecification extends PagingAndSortingSpecification {
|
|
public Specification<Student> getSpecification() {
|
|
public Specification<Student> getSpecification() {
|
|
return (root, query, cb) -> {
|
|
return (root, query, cb) -> {
|
|
List<Predicate> predicates = new ArrayList<Predicate>();
|
|
List<Predicate> predicates = new ArrayList<Predicate>();
|
|
|
|
+ List<Predicate> listPermission1 = 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 (getStudentName() != null) {
|
|
predicates.add(cb.like(root.get("name"), "%" + getStudentName() + "%"));
|
|
predicates.add(cb.like(root.get("name"), "%" + getStudentName() + "%"));
|
|
}
|
|
}
|
|
-// if(getExamNumber() != null){
|
|
|
|
-// predicates.add(cb.like(root.get("examNumber"),"%"+getExamNumber()+"%"));
|
|
|
|
-// }
|
|
|
|
if (getWorkId() != null) {
|
|
if (getWorkId() != null) {
|
|
predicates.add(cb.equal(root.get("workId"), getWorkId()));
|
|
predicates.add(cb.equal(root.get("workId"), getWorkId()));
|
|
}
|
|
}
|
|
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) {
|
|
|
|
- predicates.add(cb.equal(root.get("isAbsent"), getIsAbsent()));
|
|
|
|
|
|
+ if ("ONE".equals(getSubject())) {
|
|
|
|
+ listPermission1.add(cb.equal(root.get("uploadStatus"), "SX:1,SC:1,SM:0"));
|
|
|
|
+ listPermission1.add(cb.equal(root.get("uploadStatus"), "SX:1,SC:0,SM:1"));
|
|
|
|
+ listPermission1.add(cb.equal(root.get("uploadStatus"), "SX:0,SC:1,SM:1"));
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ if (getIsAbsent() != null) {
|
|
|
|
+ predicates.add(cb.equal(root.get("isAbsent"), getIsAbsent()));
|
|
|
|
+ }
|
|
|
|
+ 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) {
|
|
@@ -160,25 +177,20 @@ 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()));
|
|
}
|
|
}
|
|
if (getExamRoom() != null && getExamRoom() != "") {
|
|
if (getExamRoom() != null && getExamRoom() != "") {
|
|
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()]));
|
|
|
|
+ if ("ONE".equals(getSubject())) {
|
|
|
|
+ if (!CollectionUtils.isEmpty(listPermission1)) {
|
|
|
|
+ Predicate Pre_Or1 = cb.or(listPermission1.toArray(new Predicate[listPermission1.size()]));
|
|
|
|
+ return query.where(Pre_And, Pre_Or1).getRestriction();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
};
|
|
};
|
|
}
|
|
}
|