Joburgess vor 5 Jahren
Ursprung
Commit
d110fe43c0

+ 20 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java

@@ -173,6 +173,10 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 		teacherIds.add(examRoom.getMainTeacherUserId());
 		if(StringUtils.isNotBlank(examRoom.getAssistantTeacherUserIdList())){
 			teacherIds.addAll(Arrays.stream(examRoom.getAssistantTeacherUserIdList().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList()));
+			HashSet<Integer> noRepeatTeacherIds = new HashSet<>(teacherIds);
+			if(teacherIds.size()!=noRepeatTeacherIds.size()){
+				throw new BizException("主考老师与监考老师不可重复");
+			}
 		}
 
 		Map<Integer, String> teacherIdNameMap = this.getMap("sys_user", "id_", "real_name_", teacherIds, Integer.class, String.class);
@@ -239,6 +243,8 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 			throw new BizException("请指定教室");
 		}
 
+		ExamRoom existExamRoom = examRoomDao.get(examRoom.getId());
+
 		if(ExamModeEnum.ONLINE.equals(examRoom.getExamMode())){
 			examRoom.setExamLocationId(null);
 		}
@@ -247,6 +253,10 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 		teacherIds.add(examRoom.getMainTeacherUserId());
 		if(StringUtils.isNotBlank(examRoom.getAssistantTeacherUserIdList())){
 			teacherIds.addAll(Arrays.stream(examRoom.getAssistantTeacherUserIdList().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList()));
+			HashSet<Integer> noRepeatTeacherIds = new HashSet<>(teacherIds);
+			if(teacherIds.size()!=noRepeatTeacherIds.size()){
+				throw new BizException("主考老师与监考老师不可重复");
+			}
 		}
 
 		Map<Integer, String> teacherIdNameMap = this.getMap("sys_user", "id_", "real_name_", teacherIds, Integer.class, String.class);
@@ -265,7 +275,14 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 		Map<Integer, String> subjectIdNameMap = this.getMap("subject", "id_", "name_", subjectIds, Integer.class, String.class);
 		examRoom.setSubjectNameList(StringUtils.join(subjectIdNameMap.values(),","));
 
+		examRoom.setExamStartTime(existExamRoom.getExamStartTime());
+		examRoom.setExamEndTime(existExamRoom.getExamEndTime());
+
+		List<ExamRoom> examRooms=new ArrayList<>(Arrays.asList(examRoom));
+		checkRoomTeachers(examRooms);
+
 		examRoomDao.update(examRoom);
+		examTeacherSalaryService.teacherSalarySettlementWithExam(examRoom.getExaminationBasicId());
 		return examRoom;
 	}
 
@@ -398,6 +415,9 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 				}
 				ExamRoom preExamRoom=teacherRooms.get(i-1);
 				ExamRoom currentExamRoom = teacherRooms.get(i);
+				if(Objects.nonNull(preExamRoom.getId())&&preExamRoom.getId().equals(currentExamRoom.getId())){
+					continue;
+				}
 				if(preExamRoom.getExamEndTime().compareTo(currentExamRoom.getExamStartTime())>0){
 					SysUser sysUser = sysUserDao.get(teacherRoomEntry.getKey());
 					throw new BizException("{}教师时间存在冲突", sysUser.getRealName());

+ 4 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamTeacherSalaryServiceImpl.java

@@ -48,7 +48,7 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
 	public void teacherSalarySettlementWithExam(Long examId) {
 		List<ExamRoom> examRooms = examRoomDao.getWithExam(null, examId);
 		if(CollectionUtils.isEmpty(examRooms)){
-			return;
+			examRooms=Collections.EMPTY_LIST;
 		}
 
 		Map<Integer, List<ExamRoom>> teacherExamRoomMap=new HashMap<>();
@@ -85,7 +85,9 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
 			examTeacherSalary.setTotalInvigilationStudentNum((int) studentNum);
 			examTeacherSalary.setTotalSettlementCost(examTeacherSalary.getShareProfitAmount().multiply(new BigDecimal(studentNum)));
 		}
-		examTeacherSalaryDao.batchUpdate(examTeacherSalaries);
+		if(!CollectionUtils.isEmpty(examTeacherSalaries)){
+			examTeacherSalaryDao.batchUpdate(examTeacherSalaries);
+		}
 	}
 
 	@Override

+ 1 - 5
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomMapper.xml

@@ -93,9 +93,7 @@
 			<if test="examMode != null">
 				exam_mode_ = #{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 			</if>
-			<if test="examLocationId != null">
-				exam_location_id_ = #{examLocationId},
-			</if>
+			exam_location_id_ = #{examLocationId},
 			<if test="mainTeacherUserId != null">
 				main_teacher_user_id_ = #{mainTeacherUserId},
 			</if>
@@ -148,9 +146,7 @@
 			<if test="examMode != null">
 				exam_mode_ = #{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 			</if>
-			<if test="examLocationId != null">
 				exam_location_id_ = #{examLocationId},
-			</if>
 			<if test="mainTeacherUserId != null">
 				main_teacher_user_id_ = #{mainTeacherUserId},
 			</if>