|
@@ -1,5 +1,6 @@
|
|
|
package cn.com.qmth.stmms.biz.exam.service.impl;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
@@ -10,6 +11,7 @@ import java.util.Set;
|
|
|
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
|
+import javax.persistence.criteria.Expression;
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
import javax.persistence.criteria.Root;
|
|
|
|
|
@@ -364,9 +366,34 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
@Override
|
|
|
public Predicate toPredicate(Root<ExamStudent> root, CriteriaQuery<?> cQuery, CriteriaBuilder cb) {
|
|
|
List<Predicate> predicates = new LinkedList<Predicate>();
|
|
|
+ Expression<Double> evaluationItemSum = cb.sum(root.get("objectiveScore").as(Double.class),root.get("subjectiveScore").as(Double.class));
|
|
|
+ if (query.getStartScroe()!=null ) {
|
|
|
+ Predicate predicate1 = cb.ge(evaluationItemSum,query.getStartScroe());
|
|
|
+ Predicate predicate2 = cb.le(evaluationItemSum,query.getEndScroe());
|
|
|
+ if(query.getStartScroe() == 0){
|
|
|
+ Predicate predicate = cb.or(cb.equal(root.get("absent"),true),cb.equal(root.get("breach"),true));
|
|
|
+ Predicate predicate3 = cb.and(predicate1,predicate2);
|
|
|
+ predicates.add(cb.or(predicate,predicate3));
|
|
|
+ }else {
|
|
|
+ predicates.add(cb.equal(root.get("absent"), false));
|
|
|
+ predicates.add(cb.equal(root.get("breach"), false));
|
|
|
+ predicates.add(cb.and(predicate1,predicate2));
|
|
|
+ }
|
|
|
+ }
|
|
|
+// if (query.getStartScroe()!=null && query.getEndScroe()!=null ) {
|
|
|
+// predicates.add(cb.between(evaluationItemSum, query.getStartScroe(), query.getEndScroe()));
|
|
|
+// }
|
|
|
if (query.getExamId() > 0) {
|
|
|
predicates.add(cb.equal(root.get("examId"), query.getExamId()));
|
|
|
}
|
|
|
+ if (StringUtils.isNotBlank(query.getIds())) {
|
|
|
+ String[] ids = query.getIds().split(",");
|
|
|
+ List<String> list = new ArrayList<String>();
|
|
|
+ for(String str : ids){
|
|
|
+ list.add(str);
|
|
|
+ }
|
|
|
+ predicates.add(root.get("id").in(list));
|
|
|
+ }
|
|
|
if (StringUtils.isNotBlank(query.getExamNumber())) {
|
|
|
predicates.add(cb.equal(root.get("examNumber"), query.getExamNumber()));
|
|
|
} else if (StringUtils.isNotBlank(query.getExamNumberIn())) {
|
|
@@ -425,7 +452,15 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
predicates.add(cb.equal(root.get("upload"), query.getUpload()));
|
|
|
}
|
|
|
if (query.getAbsent() != null) {
|
|
|
- predicates.add(cb.equal(root.get("absent"), query.getAbsent()));
|
|
|
+ if(query.getAbsent()){//缺考=缺考+ 未上传
|
|
|
+ predicates.add(cb.or(cb.equal(root.get("absent"),true),cb.equal(root.get("upload"),false)));
|
|
|
+ }else {
|
|
|
+ predicates.add(cb.equal(root.get("absent"), query.getAbsent()));
|
|
|
+ predicates.add(cb.equal(root.get("upload"), true));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (query.getBreach() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("breach"), query.getBreach()));
|
|
|
}
|
|
|
if (query.getException() != null) {
|
|
|
predicates.add(cb.equal(root.get("exception"), query.getException()));
|
|
@@ -540,8 +575,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<Integer> findAbsentLibraryStudent(int examId, String subjectCode) {
|
|
|
- return studentDao.findAbsentLibraryStudent(examId, subjectCode);
|
|
|
+ public List<Integer> findAbsentOrBreachLibraryStudent(int examId, String subjectCode) {
|
|
|
+ return studentDao.findAbsentOrBreachLibraryStudent(examId, subjectCode);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -570,5 +605,50 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
query.setAbsent(absent);
|
|
|
return countByQuery(query);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ExamStudent> findByExamId(int examId,int pageNumber, int pageSize) {
|
|
|
+ ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
+ query.setPageNumber(pageNumber);
|
|
|
+ query.setPageSize(pageSize);
|
|
|
+ return studentDao.findByExamId(examId, query);
|
|
|
+ }
|
|
|
+ public long countByNoAbsentAndBreach(int examId, String subjectCode, boolean upload, boolean absent,boolean breach) {
|
|
|
+ ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
+ query.setExamId(examId);
|
|
|
+ query.setSubjectCode(subjectCode);
|
|
|
+ query.setUpload(upload);
|
|
|
+ query.setAbsent(absent);
|
|
|
+ query.setBreach(breach);
|
|
|
+ return countByQuery(query);
|
|
|
+ }
|
|
|
+ public long countByAbsentAndBreach(int examId, String subjectCode, Boolean absent, Boolean breach) {
|
|
|
+ ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
+ query.setExamId(examId);
|
|
|
+ query.setSubjectCode(subjectCode);
|
|
|
+ if(breach != null){
|
|
|
+ query.setBreach(breach);
|
|
|
+ }
|
|
|
+ if(absent != null){
|
|
|
+ query.setAbsent(absent);
|
|
|
+ }
|
|
|
+ return countByQuery(query);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public String findIdsByMarkLogin(String markLogin) {
|
|
|
+ List<String[]> o = studentDao.findIdsByMarkLogin(markLogin);
|
|
|
+ return StringUtils.join(o, ",");
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public String findIdsByMarkName(String MarkName) {
|
|
|
+ List<String[]> o = studentDao.findIdsByMarkName(MarkName);
|
|
|
+ return StringUtils.join(o, ",");
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ /**
|
|
|
+ * 根据缺考和违纪字段联合查询
|
|
|
+ */
|
|
|
+ public List<Object[]> statisticsByAbsentAndBreach(Integer examId, String code, Boolean upload,boolean absent,boolean breach){
|
|
|
+ return studentDao.statisticsByAbsentAndBreach(examId,code,upload,absent,breach);
|
|
|
+ }
|
|
|
}
|