|
@@ -1,14 +1,69 @@
|
|
package cn.com.qmth.stmms.biz.exam.service.impl;
|
|
package cn.com.qmth.stmms.biz.exam.service.impl;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.text.DecimalFormat;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.HashSet;
|
|
|
|
+import java.util.LinkedList;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Map.Entry;
|
|
|
|
+import java.util.Set;
|
|
|
|
+import java.util.UUID;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+import javax.persistence.EntityManager;
|
|
|
|
+import javax.persistence.PersistenceContext;
|
|
|
|
+import javax.persistence.Query;
|
|
|
|
+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;
|
|
|
|
+
|
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
|
+import org.apache.commons.lang.math.RandomUtils;
|
|
|
|
+import org.hibernate.SQLQuery;
|
|
|
|
+import org.hibernate.transform.Transformers;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
|
+import org.springframework.data.domain.Sort.Direction;
|
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
+
|
|
import cn.com.qmth.stmms.biz.common.BaseQueryService;
|
|
import cn.com.qmth.stmms.biz.common.BaseQueryService;
|
|
import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
|
|
import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
|
|
-import cn.com.qmth.stmms.biz.exam.model.*;
|
|
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.AnswerCard;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.Exam;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
|
|
import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
|
|
import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
|
|
-import cn.com.qmth.stmms.biz.exam.service.*;
|
|
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.AnswerCardService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
|
|
import cn.com.qmth.stmms.biz.exception.StatusException;
|
|
import cn.com.qmth.stmms.biz.exception.StatusException;
|
|
import cn.com.qmth.stmms.biz.mark.dao.HeaderTagDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.HeaderTagDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.HeaderTrackDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.HeaderTrackDao;
|
|
-import cn.com.qmth.stmms.biz.mark.model.*;
|
|
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.HeaderTag;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.HeaderTrack;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.MarkConfigItem;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.MarkSpecialTag;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.MarkTrack;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkSpecialTagService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkSpecialTagService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkTrackService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkTrackService;
|
|
@@ -18,27 +73,6 @@ import cn.com.qmth.stmms.biz.utils.PictureTag;
|
|
import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
import cn.com.qmth.stmms.common.enums.Role;
|
|
import cn.com.qmth.stmms.common.enums.Role;
|
|
import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
|
|
import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
|
-import org.apache.commons.lang.math.RandomUtils;
|
|
|
|
-import org.hibernate.SQLQuery;
|
|
|
|
-import org.hibernate.transform.Transformers;
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
-import org.springframework.data.domain.Page;
|
|
|
|
-import org.springframework.data.domain.Sort;
|
|
|
|
-import org.springframework.data.domain.Sort.Direction;
|
|
|
|
-import org.springframework.data.jpa.domain.Specification;
|
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
|
-
|
|
|
|
-import javax.persistence.EntityManager;
|
|
|
|
-import javax.persistence.PersistenceContext;
|
|
|
|
-import javax.persistence.Query;
|
|
|
|
-import javax.persistence.criteria.*;
|
|
|
|
-import java.math.BigDecimal;
|
|
|
|
-import java.text.DecimalFormat;
|
|
|
|
-import java.util.*;
|
|
|
|
-import java.util.Map.Entry;
|
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implements ExamStudentService {
|
|
public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implements ExamStudentService {
|
|
@@ -588,15 +622,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
}
|
|
}
|
|
if (StringUtils.isNotBlank(query.getExamNumber())) {
|
|
if (StringUtils.isNotBlank(query.getExamNumber())) {
|
|
predicates.add(cb.equal(root.get("examNumber"), query.getExamNumber()));
|
|
predicates.add(cb.equal(root.get("examNumber"), query.getExamNumber()));
|
|
- } else if (StringUtils.isNotBlank(query.getExamNumberIn())) {
|
|
|
|
- String[] list = query.getExamNumberIn().split(",");
|
|
|
|
- if (list.length > 0) {
|
|
|
|
- Predicate[] sub = new Predicate[list.length];
|
|
|
|
- for (int i = 0; i < list.length; i++) {
|
|
|
|
- sub[i] = cb.equal(root.get("examNumber"), list[i]);
|
|
|
|
- }
|
|
|
|
- predicates.add(cb.or(sub));
|
|
|
|
- }
|
|
|
|
|
|
+ } else if (query.getExamNumbers() != null && query.getExamNumbers().size() > 0) {
|
|
|
|
+ predicates.add(root.get("examNumber").in(query.getExamNumbers()));
|
|
}
|
|
}
|
|
if (StringUtils.isNotEmpty(query.getSecretNumber())) {
|
|
if (StringUtils.isNotEmpty(query.getSecretNumber())) {
|
|
predicates.add(cb.equal(root.get("secretNumber"), query.getSecretNumber()));
|
|
predicates.add(cb.equal(root.get("secretNumber"), query.getSecretNumber()));
|
|
@@ -685,15 +712,13 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
if (query.getMaxUploadTime() != null) {
|
|
if (query.getMaxUploadTime() != null) {
|
|
predicates.add(cb.lessThan(root.get("uploadTime").as(Date.class), query.getMaxUploadTime()));
|
|
predicates.add(cb.lessThan(root.get("uploadTime").as(Date.class), query.getMaxUploadTime()));
|
|
}
|
|
}
|
|
- if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
|
|
|
|
- String[] list = query.getSubjectCodeIn().split(",");
|
|
|
|
- if (list.length > 0) {
|
|
|
|
- Predicate[] sub = new Predicate[list.length];
|
|
|
|
- for (int i = 0; i < list.length; i++) {
|
|
|
|
- sub[i] = cb.equal(root.get("subjectCode"), list[i]);
|
|
|
|
- }
|
|
|
|
- predicates.add(cb.or(sub));
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ if (query.getSubjectCodes() != null && query.getSubjectCodes().size() > 0) {
|
|
|
|
+ predicates.add(root.get("subjectCode").in(query.getSubjectCodes()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (query.getExamSites() != null && query.getExamSites().size() > 0) {
|
|
|
|
+ predicates.add(root.get("examSite").in(query.getExamSites()));
|
|
}
|
|
}
|
|
if (StringUtils.isNotBlank(query.getCampusNameIn())) {
|
|
if (StringUtils.isNotBlank(query.getCampusNameIn())) {
|
|
String[] list = query.getCampusNameIn().split(",");
|
|
String[] list = query.getCampusNameIn().split(",");
|
|
@@ -705,16 +730,6 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
predicates.add(cb.or(sub));
|
|
predicates.add(cb.or(sub));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (StringUtils.isNotBlank(query.getExamSiteIn())) {
|
|
|
|
- String[] list = query.getExamSiteIn().split(",");
|
|
|
|
- if (list.length > 0) {
|
|
|
|
- Predicate[] sub = new Predicate[list.length];
|
|
|
|
- for (int i = 0; i < list.length; i++) {
|
|
|
|
- sub[i] = cb.equal(root.get("examSite"), list[i]);
|
|
|
|
- }
|
|
|
|
- predicates.add(cb.or(sub));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
if (StringUtils.isNotBlank(query.getSubjectCodeNotIn())) {
|
|
if (StringUtils.isNotBlank(query.getSubjectCodeNotIn())) {
|
|
String[] list = query.getSubjectCodeNotIn().split(",");
|
|
String[] list = query.getSubjectCodeNotIn().split(",");
|
|
if (list.length > 0) {
|
|
if (list.length > 0) {
|
|
@@ -1619,15 +1634,14 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
if (query.getUploadTimeNotNull() != null) {
|
|
if (query.getUploadTimeNotNull() != null) {
|
|
sql.append(" and s.upload_time is not null");
|
|
sql.append(" and s.upload_time is not null");
|
|
}
|
|
}
|
|
- if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
|
|
|
|
- sql.append(
|
|
|
|
- " and s.subject_code in('" + StringUtils.join(query.getSubjectCodeIn().split(","), "','") + "')");
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(query.getSubjectCodes())) {
|
|
|
|
+ sql.append(" and s.subject_code in('" + StringUtils.join(query.getSubjectCodes(), "','") + "')");
|
|
}
|
|
}
|
|
if (StringUtils.isNotBlank(query.getCampusNameIn())) {
|
|
if (StringUtils.isNotBlank(query.getCampusNameIn())) {
|
|
sql.append(" and s.campus_name in('" + StringUtils.join(query.getCampusNameIn().split(","), "','") + "')");
|
|
sql.append(" and s.campus_name in('" + StringUtils.join(query.getCampusNameIn().split(","), "','") + "')");
|
|
}
|
|
}
|
|
- if (StringUtils.isNotBlank(query.getExamSiteIn())) {
|
|
|
|
- sql.append(" and s.exam_site in('" + StringUtils.join(query.getExamSiteIn().split(","), "','") + "')");
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(query.getExamSites())) {
|
|
|
|
+ sql.append(" and s.exam_site in('" + StringUtils.join(query.getExamSites(), "','") + "')");
|
|
}
|
|
}
|
|
if (StringUtils.isNotBlank(query.getSubjectCodeNotIn())) {
|
|
if (StringUtils.isNotBlank(query.getSubjectCodeNotIn())) {
|
|
sql.append(" and s.subject_code not in('" + StringUtils.join(query.getSubjectCodeNotIn().split(","), "','")
|
|
sql.append(" and s.subject_code not in('" + StringUtils.join(query.getSubjectCodeNotIn().split(","), "','")
|