xiatian 10 bulan lalu
induk
melakukan
03d4a3c519

+ 32 - 15
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamSubjectServiceImpl.java

@@ -1,8 +1,9 @@
 package cn.com.qmth.stmms.biz.exam.service.impl;
 
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import javax.persistence.EntityManager;
@@ -13,10 +14,6 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
-import cn.com.qmth.stmms.biz.exam.model.*;
-import cn.com.qmth.stmms.biz.exam.service.*;
-import cn.com.qmth.stmms.biz.file.enums.FormatType;
-import cn.com.qmth.stmms.common.enums.CardSource;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -30,11 +27,24 @@ import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.bean.SubjectSplit;
 import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
 import cn.com.qmth.stmms.biz.exam.dao.ExamSubjectDao;
+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.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.service.AnswerCardService;
+import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
+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.exam.service.query.ExamSubjectSearchQuery;
 import cn.com.qmth.stmms.biz.exception.StatusException;
+import cn.com.qmth.stmms.biz.file.enums.FormatType;
 import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
 import cn.com.qmth.stmms.biz.utils.DoubleUtil;
+import cn.com.qmth.stmms.common.enums.CardSource;
 import cn.com.qmth.stmms.common.enums.ExamType;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
 
@@ -444,16 +454,23 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
 
 	private void disposeSplit(Integer schoolId, Integer examId, List<SubjectSplit> list) {
 		int index = 0;
-		Set<String> validSubjects = new HashSet<>();
+		Map<String,ExamSubject> validSubjects = new HashMap<>();
 		for (SubjectSplit vo : list) {
 			index++;
-			long groupCount = markGroupService.countByExamAndSubject(examId, vo.getStudent().getSubjectCode());
-			if (groupCount > 0) {
-				throw new StatusException(
-						" 第" + (index + 2) + "行 科目" + vo.getStudent().getSubjectCode() + "有分组,请先删除分组再执行");
+			if(validSubjects.get(vo.getStudent().getSubjectCode())==null) { 
+				long groupCount = markGroupService.countByExamAndSubject(examId, vo.getStudent().getSubjectCode());
+				if (groupCount > 0) {
+					throw new StatusException(
+							" 第" + (index + 2) + "行 科目" + vo.getStudent().getSubjectCode() + "有分组,请先删除分组再执行");
+				}
+				ExamSubject es = subjectDao.findByExamIdAndCode(examId, vo.getStudent().getSubjectCode());
+				if(es==null) {
+					throw new StatusException(
+							" 第" + (index + 2) + "行 考生科目" + vo.getStudent().getSubjectCode() + "不存在");
+				}
+				validSubjects.put(vo.getStudent().getSubjectCode(),es);
 			}
-			validSubjects.add(vo.getStudent().getSubjectCode());
-			if (!validSubjects.contains(vo.getSubjectCode())) {
+			if (validSubjects.get(vo.getSubjectCode())==null) {
 				ExamSubject es = subjectDao.findByExamIdAndCode(examId, vo.getSubjectCode());
 				if (es == null) {
 					es = new ExamSubject();
@@ -474,10 +491,10 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
 						throw new StatusException(" 第" + (index + 2) + "行 科目" + vo.getSubjectCode() + "有分组,请先删除分组再执行");
 					}
 				}
-				validSubjects.add(vo.getSubjectCode());
-				vo.getStudent().setSubjectCode(es.getCode());
-				vo.getStudent().setSubjectName(es.getName());
+				validSubjects.put(vo.getSubjectCode(),es);
 			}
+			vo.getStudent().setSubjectCode(validSubjects.get(vo.getSubjectCode()).getCode());
+			vo.getStudent().setSubjectName(validSubjects.get(vo.getSubjectCode()).getName());
 			examStudentDao.updateSubject(vo.getStudent().getId(),vo.getStudent().getSubjectCode(),vo.getStudent().getSubjectName());
 		}
 		subjectDao.updateUploadCountByExamId(examId);