|
@@ -17,6 +17,7 @@ import com.ym.mec.biz.dal.dao.SysConfigDao;
|
|
|
import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
import com.ym.mec.biz.dal.entity.CourseSchedule;
|
|
|
import com.ym.mec.biz.dal.entity.Teacher;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherAttendance;
|
|
|
import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
import com.ym.mec.biz.dal.enums.SignStatusEnum;
|
|
|
import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
|
|
@@ -111,10 +112,16 @@ public class RoomServiceImpl implements RoomService {
|
|
|
String userId = sysUser.getId().toString();
|
|
|
Teacher teacher = teacherDao.get(Integer.parseInt(userId));
|
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
|
|
|
+ String format = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ String format1 = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
+ Date endDateTime = DateUtil.stringToDate(format + " " + format1, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
+ if(new Date().before(endDateTime)){
|
|
|
+ throw new BizException("课程已结束");
|
|
|
+ }
|
|
|
|
|
|
- /*String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
|
|
|
+ String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
|
|
|
if(StringUtils.isEmpty(continueCourseTime)){
|
|
|
- continueCourseTime = "3";
|
|
|
+ continueCourseTime = "5";
|
|
|
}
|
|
|
CourseSchedule schedule = courseSchedule;
|
|
|
//如果当前课程是连堂课,那么获取第一节课的课程编号
|
|
@@ -127,7 +134,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}else {
|
|
|
break;
|
|
|
}
|
|
|
- }*/
|
|
|
+ }
|
|
|
/*try {
|
|
|
if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
|
|
|
teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
|
|
@@ -245,28 +252,60 @@ public class RoomServiceImpl implements RoomService {
|
|
|
log.info("roomSignIn: roomId={}, userId={}", roomId, userId);
|
|
|
Teacher teacher = teacherDao.get(Integer.parseInt(userId));
|
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(roomId);
|
|
|
-
|
|
|
- /*String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
|
|
|
+ Date date = new Date();
|
|
|
+ TeacherAttendance attendanceInfo = teacherAttendanceService.findByTeacherAttendanceInfo(roomId, courseSchedule.getActualTeacherId());
|
|
|
+ String format = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ String format1 = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
+ Date endDateTime = DateUtil.stringToDate(format + " " + format1, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
+ //如果
|
|
|
+ if(attendanceInfo != null && attendanceInfo.getSignOutTime() != null && date.before(endDateTime)){
|
|
|
+ teacherAttendanceService.cleanCourseTeacherSignOut(roomId);
|
|
|
+ }
|
|
|
+ String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
|
|
|
if(StringUtils.isEmpty(continueCourseTime)){
|
|
|
- continueCourseTime = "3";
|
|
|
+ continueCourseTime = "5";
|
|
|
}
|
|
|
CourseSchedule schedule = courseSchedule;
|
|
|
//如果当前课程是连堂课,那么获取第一节课的课程编号
|
|
|
+ Long signInRoomId = null;
|
|
|
while (true){
|
|
|
String classDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
String startClassTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(),classDate + " " + startClassTime,schedule.getActualTeacherId(),continueCourseTime);
|
|
|
if(schedule != null){
|
|
|
- roomId = schedule.getId();
|
|
|
+ signInRoomId = schedule.getId();
|
|
|
}else {
|
|
|
break;
|
|
|
}
|
|
|
- }*/
|
|
|
+ }
|
|
|
+ if(signInRoomId == null){
|
|
|
+ signInRoomId = roomId;
|
|
|
+ }else {
|
|
|
+ if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
|
|
|
+ String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
+ //获取上一次课程
|
|
|
+ CourseSchedule lastCourse = courseScheduleDao.getLastCourse(courseSchedule.getClassGroupId(), classDate + " " + startClassTime, courseSchedule.getActualTeacherId(), continueCourseTime);
|
|
|
+ //获取当前课程的签退时间
|
|
|
+ TeacherAttendance teacherAttendance = teacherAttendanceService.findByTeacherAttendanceInfo(lastCourse.getId(),courseSchedule.getActualTeacherId());
|
|
|
+ //如果上次课签退时间和当前签到时间间隔小于等于5分钟,清除上一次课程的教师签退记录
|
|
|
+ Date signOutTime = teacherAttendance.getSignOutTime();
|
|
|
+ log.info("signOutTime: signOutTime={}, date={}", signOutTime, date);
|
|
|
+ if(signOutTime != null && DateUtil.minutesBetween(signOutTime,date) <= Integer.parseInt(continueCourseTime)){
|
|
|
+ teacherAttendanceService.cleanCourseTeacherSignOut(lastCourse.getId());
|
|
|
+ }else {
|
|
|
+ //如果大于5分钟,不换课堂,对当前课程进行签到
|
|
|
+ teacherAttendanceService.addTeacherAttendanceRecord(roomId.intValue(),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //如果存在连堂课,并且跨课超过5分钟
|
|
|
+ log.info("signInRoomId: signInRoomId={}, userId={}", signInRoomId, userId);
|
|
|
try {
|
|
|
if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
|
|
|
- teacherAttendanceService.addTeacherAttendanceRecord(roomId.intValue(),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
|
|
|
+ teacherAttendanceService.addTeacherAttendanceRecord(signInRoomId.intValue(),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
|
|
|
}else {
|
|
|
- studentAttendanceService.addStudentAttendanceRecord(roomId.intValue(),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
|
|
|
+ studentAttendanceService.addStudentAttendanceRecord(signInRoomId.intValue(),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|