|
@@ -470,7 +470,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
- public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum, SignStatusEnum signStatusEnum) {
|
|
|
|
|
|
+ public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum, SignStatusEnum signStatusEnum,Long currentScheduleId) {
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
|
|
ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId, 0);
|
|
ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId, 0);
|
|
StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseScheduleId);
|
|
StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseScheduleId);
|
|
@@ -483,6 +483,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
|
|
studentAttendance.setGroupType(classGroup.getGroupType());
|
|
studentAttendance.setGroupType(classGroup.getGroupType());
|
|
studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
|
|
studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
|
|
studentAttendance.setUserId(userId);
|
|
studentAttendance.setUserId(userId);
|
|
|
|
+ studentAttendance.setCurrentScheduleId(currentScheduleId);
|
|
studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
|
|
studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
|
|
if (signStatusEnum == SignStatusEnum.SIGN_IN) {
|
|
if (signStatusEnum == SignStatusEnum.SIGN_IN) {
|
|
if (courseSchedule.getStudentNum() == null) {
|
|
if (courseSchedule.getStudentNum() == null) {
|
|
@@ -492,6 +493,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
|
|
}
|
|
}
|
|
studentAttendanceDao.insert(studentAttendance);
|
|
studentAttendanceDao.insert(studentAttendance);
|
|
} else {
|
|
} else {
|
|
|
|
+ studentAttendance.setCurrentScheduleId(currentScheduleId);
|
|
studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
|
|
studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
|
|
studentAttendance.setUpdateTime(date);
|
|
studentAttendance.setUpdateTime(date);
|
|
}
|
|
}
|
|
@@ -547,27 +549,35 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
|
|
String courseStartDateTime;
|
|
String courseStartDateTime;
|
|
String courseEndDateTime;
|
|
String courseEndDateTime;
|
|
Boolean isBreak = false;
|
|
Boolean isBreak = false;
|
|
|
|
+ //签退之前看是不是第一次进入这个连堂课
|
|
for (int i = courseSchedules.size() - 1; i >= 0; i--) {
|
|
for (int i = courseSchedules.size() - 1; i >= 0; i--) {
|
|
if(isBreak){
|
|
if(isBreak){
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- courseClassDate = DateUtil.format(courseSchedules.get(i).getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
|
- courseStartDateTime = DateUtil.format(courseSchedules.get(i).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
|
|
|
+ CourseSchedule schedule = courseSchedules.get(i);
|
|
|
|
+ courseClassDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
|
+ courseStartDateTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
- courseEndDateTime = DateUtil.format(courseSchedules.get(i).getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
|
|
|
+ courseEndDateTime = DateUtil.format(schedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
//不是最后一节课
|
|
//不是最后一节课
|
|
if(i != courseSchedules.size() - 1){
|
|
if(i != courseSchedules.size() - 1){
|
|
- isBreak = upsetAttendance(userId,startDateTime,endDateTime,courseSchedules.get(i));
|
|
|
|
|
|
+ isBreak = upsetAttendance(userId,startDateTime,endDateTime,schedule,currentScheduleId);
|
|
}else {
|
|
}else {
|
|
- isBreak = upsetAttendance(userId,startDateTime,date,courseSchedules.get(i));
|
|
|
|
|
|
+ isBreak = upsetAttendance(userId,startDateTime,date,schedule,currentScheduleId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,CourseSchedule courseSchedule){
|
|
|
|
|
|
+ public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,CourseSchedule courseSchedule,Long currentScheduleId){
|
|
StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseSchedule.getId().intValue());
|
|
StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseSchedule.getId().intValue());
|
|
|
|
+ Boolean flag = false;
|
|
|
|
+ Long courseId = teacherAttendanceDao.findFirstSign(currentScheduleId);
|
|
|
|
+ //如果当前课程是第一次签到的课程那么不更新签到时间,并且退出下次循环
|
|
|
|
+ if(courseId != null && courseId.equals(courseSchedule.getId())){
|
|
|
|
+ flag = true;
|
|
|
|
+ }
|
|
if(studentAttendance == null){
|
|
if(studentAttendance == null){
|
|
studentAttendance = new StudentAttendance();
|
|
studentAttendance = new StudentAttendance();
|
|
studentAttendance.setSignOutTime(signOutTime);
|
|
studentAttendance.setSignOutTime(signOutTime);
|
|
@@ -579,20 +589,18 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
|
|
studentAttendance.setCourseScheduleId(courseSchedule.getId());
|
|
studentAttendance.setCourseScheduleId(courseSchedule.getId());
|
|
studentAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
studentAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
studentAttendance.setGroupType(courseSchedule.getGroupType());
|
|
studentAttendance.setGroupType(courseSchedule.getGroupType());
|
|
|
|
+ studentAttendance.setCurrentScheduleId(currentScheduleId);
|
|
studentAttendanceDao.insert(studentAttendance);
|
|
studentAttendanceDao.insert(studentAttendance);
|
|
}else {
|
|
}else {
|
|
studentAttendance.setSignOutTime(signOutTime);
|
|
studentAttendance.setSignOutTime(signOutTime);
|
|
|
|
+ studentAttendance.setCurrentScheduleId(currentScheduleId);
|
|
studentAttendance.setStatus(StudentAttendanceStatusEnum.NORMAL);
|
|
studentAttendance.setStatus(StudentAttendanceStatusEnum.NORMAL);
|
|
- Date signInTime1 = studentAttendance.getSignInTime();
|
|
|
|
- if(signInTime1 == null){
|
|
|
|
|
|
+ if(!flag){
|
|
studentAttendance.setSignInTime(signInTime);
|
|
studentAttendance.setSignInTime(signInTime);
|
|
}
|
|
}
|
|
studentAttendanceDao.update(studentAttendance);
|
|
studentAttendanceDao.update(studentAttendance);
|
|
- if(signInTime1 != null){
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
- return false;
|
|
|
|
|
|
+ return flag;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|