Browse Source

修复考生修改逻辑

ting.yin 6 years ago
parent
commit
678c5ececd

+ 26 - 17
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StudentController.java

@@ -129,20 +129,26 @@ public class StudentController extends BaseExamController {
             if (student.getId() != null) {
                 ExamStudent previous = studentService.findById(student.getId());
                 if (previous != null) {
-                    // String previousSubjectCode = previous.getSubjectCode();
-                    if (!previous.isUpload()) {
+                	// String previousSubjectCode = previous.getSubjectCode();
+                	if (!previous.isUpload()) {
+                		ExamStudent old = checkExamNumber(student, new HashMap<String, ExamStudent>(), new HashMap<String, ExamStudent>());
+                		if(old !=null && !old.getExamNumber().equals(previous.getExamNumber())){
+                			addMessage(redirectAttributes, "准考证号" + student.getExamNumber() + "已经存在");
+                			return "redirect:/admin/exam/student";
+                		}
                         // 还未扫描上传的考生,才能修改准考证号、学习中心、科目
                         previous.setCampusName(student.getCampusName());
                         previous.setSubjectCode(subject.getCode());
                         previous.setSubjectName(subject.getName());
                         previous.setExamNumber(student.getExamNumber());
-                    }
+                	}
                     previous.setStudentCode(student.getStudentCode());
                     previous.setName(student.getName());
                     previous.setPackageCode(student.getPackageCode());
-                    previous = checkExamNumber(previous, new HashMap<String, ExamStudent>(),
-                            new HashMap<String, ExamStudent>());
-                        previous = studentService.save(previous);
+                    previous.setCollege(student.getCollege());
+            		previous.setClassName(student.getClassName());
+            		previous.setTeacher(student.getTeacher());
+                    previous = studentService.save(previous);
                         // if
                         // (!previousSubjectCode.equals(previous.getSubjectCode()))
                         // {
@@ -175,9 +181,12 @@ public class StudentController extends BaseExamController {
                 student.setSheetCount(0);
                 student.setObjectiveScore(0d);
                 student.setSubjectiveScore(0d);
-                
-                student = checkExamNumber(student, new HashMap<String, ExamStudent>(), new HashMap<String, ExamStudent>());
-                studentService.save(student);
+                ExamStudent old = checkExamNumber(student, new HashMap<String, ExamStudent>(), new HashMap<String, ExamStudent>());
+                if(old!=null){
+                	addMessage(redirectAttributes, "准考证号" + student.getExamNumber() + "已经存在");
+                } else{
+                	studentService.save(student);
+                }
                 addMessage(redirectAttributes, "考生" + student.getName() + "保存成功");
             }
         }
@@ -257,8 +266,10 @@ public class StudentController extends BaseExamController {
                 student.setSheetCount(0);
                 student.setObjectiveScore(0d);
                 student.setSubjectiveScore(0d);
-
-                student = checkExamNumber(student, current, saveMap);
+                ExamStudent previous = checkExamNumber(student, current, saveMap);
+                if(previous!=null){
+                	student = updatePrevious(student, previous);
+                }
                 saveList.add(student);
                 saveMap.put(student.getExamNumber(), student);
             }
@@ -321,19 +332,17 @@ public class StudentController extends BaseExamController {
         ExamStudent previous = saveMap.get(student.getExamNumber());
 
         if (previous != null) {
-        	return updatePrevious(student, previous);
+        	return previous;
         }
         if (current != null && !current.isEmpty()) {
             previous = current.get(student.getExamNumber());
         } else {
             previous = studentService.findByExamIdAndExamNumber(student.getExamId(), student.getExamNumber());
         }
-
-        if (previous == null) {
-            return student;
-        }else{
-            return updatePrevious(student, previous);
+        if (previous != null) {
+        	return previous;
         }
+        return null;
     }
 
 	private ExamStudent updatePrevious(ExamStudent student, ExamStudent previous) {