|
@@ -131,6 +131,9 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
|
|
|
studentAttendanceInfo.getMusicGroupId(),
|
|
|
YesOrNoEnum.NO.getCode());
|
|
|
}
|
|
|
+ if(studentAttendanceInfo.getStatus() == StudentAttendanceStatusEnum.NORMAL){
|
|
|
+ studentAttendanceInfo.setSignInTime(date);
|
|
|
+ }
|
|
|
studentAttendanceDao.insert(studentAttendanceInfo);
|
|
|
}else{
|
|
|
studentFeeDao.updateStudentAbsenteeismTimes(studentAttendanceInfo.getUserId(),
|
|
@@ -439,43 +442,50 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum) {
|
|
|
+ public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum,SignStatusEnum signStatusEnum) {
|
|
|
+ CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
|
|
|
+ ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
|
|
|
StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId,courseScheduleId);
|
|
|
+ Date date = new Date();
|
|
|
if(studentAttendance == null){
|
|
|
+ studentAttendance = new StudentAttendance();
|
|
|
+ studentAttendance.setClassGroupId(classGroup.getId());
|
|
|
+ studentAttendance.setCourseScheduleId(courseScheduleId.longValue());
|
|
|
+ studentAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
|
|
|
+ studentAttendance.setGroupType(classGroup.getGroupType());
|
|
|
+ studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ studentAttendance.setUserId(userId);
|
|
|
+ studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
|
|
|
+ studentAttendanceDao.insert(studentAttendance);
|
|
|
+ }else {
|
|
|
+ studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
|
|
|
+ studentAttendance.setUpdateTime(date);
|
|
|
+ }
|
|
|
+ //没有签到信息才会生成
|
|
|
+ if(signStatusEnum == SignStatusEnum.SIGN_IN && studentAttendance.getSignInTime() == null){
|
|
|
//判断是否在签到时间段内(课程开始前20~结束前)
|
|
|
- CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
|
|
|
- ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
|
|
|
- if(classGroup != null && courseSchedule != null){
|
|
|
-// int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
|
|
|
- Date date = new Date();
|
|
|
- String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
- String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
- String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
- //上课时间
|
|
|
- Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
- Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
- Date addMinutes = DateUtil.addMinutes(classStartDateTime, -60);
|
|
|
- //课程结束前进入,算正常
|
|
|
- if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
|
|
|
- studentAttendance = new StudentAttendance();
|
|
|
- studentAttendance.setClassGroupId(classGroup.getId());
|
|
|
- studentAttendance.setCourseScheduleId(courseScheduleId.longValue());
|
|
|
- studentAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
|
|
|
- studentAttendance.setGroupType(classGroup.getGroupType());
|
|
|
- studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
- studentAttendance.setStatus(statusEnum);
|
|
|
- studentAttendance.setUserId(userId);
|
|
|
- studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
|
|
|
-
|
|
|
- courseSchedule.setUpdateTime(date);
|
|
|
- courseSchedule.setStudentNum((courseSchedule.getStudentNum() == null?0:courseSchedule.getStudentNum()) + 1);
|
|
|
- courseScheduleDao.update(courseSchedule);
|
|
|
- studentAttendanceDao.insert(studentAttendance);
|
|
|
- }
|
|
|
- }else {
|
|
|
- throw new BizException("学员班级或课程信息异常");
|
|
|
+// int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
|
|
|
+ String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
+ String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
+ //上课时间
|
|
|
+ Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
+ Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
+ Date addMinutes = DateUtil.addMinutes(classStartDateTime, -60);
|
|
|
+ //课程结束前进入,算正常
|
|
|
+ if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
|
|
|
+ studentAttendance.setStatus(statusEnum);
|
|
|
+ studentAttendance.setSignInTime(date);
|
|
|
+
|
|
|
+ courseSchedule.setUpdateTime(date);
|
|
|
+ courseSchedule.setStudentNum((courseSchedule.getStudentNum() == null?0:courseSchedule.getStudentNum()) + 1);
|
|
|
+ courseScheduleDao.update(courseSchedule);
|
|
|
}
|
|
|
+ }else if(signStatusEnum == SignStatusEnum.SIGN_OUT){
|
|
|
+ studentAttendance.setStatus(statusEnum);
|
|
|
+ studentAttendance.setSignOutTime(date);
|
|
|
}
|
|
|
+ studentAttendanceDao.update(studentAttendance);
|
|
|
}
|
|
|
|
|
|
@Override
|