|
@@ -273,8 +273,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
// Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
|
|
|
// Date add60Minutes = DateUtil.addMinutes(classStartDateTime, -60);
|
|
|
//签到
|
|
|
+ String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
|
|
|
+ if(StringUtils.isEmpty(continueCourseTime)){
|
|
|
+ continueCourseTime = "10";
|
|
|
+ }
|
|
|
if(teacherAttendance.getSignInTime() == null && SignStatusEnum.SIGN_IN.equals(signStatus)){
|
|
|
- //是否连堂课
|
|
|
YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
|
|
|
userId.longValue(),
|
|
|
false,
|
|
@@ -308,9 +311,46 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
}
|
|
|
//签退
|
|
|
if(SignStatusEnum.SIGN_OUT.equals(signStatus)){
|
|
|
- //正常签退范围(课程结束前10分钟,1小时内)
|
|
|
if(DateUtil.minutesBetween(classEndDateCut10Minutes,date) >= 0){
|
|
|
teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
|
|
|
+ List<CourseSchedule> courseSchedules = new ArrayList<>();
|
|
|
+ CourseSchedule cs = courseSchedule;
|
|
|
+ while (true){
|
|
|
+ //获取当前课程的所有连堂课列表
|
|
|
+ cs = courseScheduleDao.queryContinueCourse(courseSchedule,continueCourseTime);
|
|
|
+ //存在连堂课
|
|
|
+ if(cs != null){
|
|
|
+ courseSchedules.add(cs);
|
|
|
+ }else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(courseSchedules.size() > 0){
|
|
|
+ //获取总上课时长(当前时间减去第一节课上课时间)
|
|
|
+ int totalMinutes = DateUtil.minutesBetween(classStartDateTime, date);
|
|
|
+ //减去第一节课时长
|
|
|
+ int firstMinutes = courseScheduleDao.getSingleClassMinutes(courseScheduleId.longValue());
|
|
|
+ totalMinutes -= firstMinutes;
|
|
|
+ String courseClassDate;
|
|
|
+ String courseStartDateTime;
|
|
|
+ String courseEndDateTime;
|
|
|
+ for (CourseSchedule e:courseSchedules) {
|
|
|
+ //获取当前课程的单节课时长
|
|
|
+ int signClassMinutes = courseScheduleDao.getSingleClassMinutes(e.getId());
|
|
|
+ totalMinutes -= signClassMinutes;
|
|
|
+ if(totalMinutes >= 0){
|
|
|
+ //补充签到签退时间
|
|
|
+ courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ courseStartDateTime = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ courseEndDateTime = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
+ Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
+ teacherAttendanceDao.cuntinueCourseSign(e.getId(),startDateTime,endDateTime);
|
|
|
+ }else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
//异常签退时间段,并且没有签退状态
|
|
|
}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateCut10Minutes) > 0){
|
|
|
teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
|