|
@@ -178,59 +178,73 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseScheduleId.longValue());
|
|
|
ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
|
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
|
|
|
- boolean isAttendance=false;
|
|
|
- Date now=new Date();
|
|
|
-
|
|
|
- SysConfig byParamName = sysConfigService.findByParamName(SysConfigService.ADVANCE_SIGN_IN_MINUTES);
|
|
|
- Integer advanceSignInMinutes=Integer.parseInt(byParamName.getParanValue());
|
|
|
|
|
|
if(Objects.isNull(teacherAttendance)){
|
|
|
teacherAttendance=new TeacherAttendance();
|
|
|
teacherAttendance.setCourseScheduleId(courseScheduleId.longValue());
|
|
|
- }else{
|
|
|
- isAttendance=true;
|
|
|
+ teacherAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes());
|
|
|
+ teacherAttendance.setTeacherId(userId);
|
|
|
+ teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ teacherAttendance.setClassGroupId(classGroup.getId());
|
|
|
+ teacherAttendance.setClassGroupId(courseScheduleId);
|
|
|
+ teacherAttendance.setTeacherId(userId);
|
|
|
+ teacherAttendanceDao.insert(teacherAttendance);
|
|
|
+ }else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
|
|
|
+ return;
|
|
|
}
|
|
|
teacherAttendance.setTeacherId(userId);
|
|
|
teacherAttendance.setClassGroupId(classGroup.getId());
|
|
|
teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
-
|
|
|
- int timeGap = DateUtil.minutesBetween(now, courseSchedule.getStartClassTime());
|
|
|
-
|
|
|
- YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
|
|
|
- userId.longValue(),
|
|
|
- false,
|
|
|
- null);
|
|
|
-
|
|
|
-
|
|
|
- switch (signStatus){
|
|
|
- case SIGN_IN:
|
|
|
- if (courseSchedule.getEndClassTime().after(now)){
|
|
|
- teacherAttendance.setSignInTime(now);
|
|
|
- if(yesOrNoEnum.equals(YesOrNoEnum.YES)||advanceSignInMinutes<=timeGap&&timeGap<=60){
|
|
|
- teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
|
|
|
- }else{
|
|
|
- teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
|
|
|
+ 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, advanceSignMinutes * -1);
|
|
|
+ //签到
|
|
|
+ if(teacherAttendance.getSignInTime() == null && SignStatusEnum.SIGN_IN.equals(signStatus)){
|
|
|
+ //是否连堂课
|
|
|
+ YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
|
|
|
+ userId.longValue(),
|
|
|
+ false,
|
|
|
+ null);
|
|
|
+ teacherAttendance.setSignInTime(date);
|
|
|
+ teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
|
|
|
+ boolean isSign = false;
|
|
|
+ if(yesOrNoEnum == YesOrNoEnum.YES){
|
|
|
+ isSign = true;
|
|
|
+ }else if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classStartDateTime) > 0){
|
|
|
+ //正常签到范围(开始前20分钟 ~ 开始之前)
|
|
|
+ isSign = true;
|
|
|
+ }else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
|
|
|
+ //异常签到范围(开始之后 ~ 结束之前)
|
|
|
+ isSign = true;
|
|
|
+ teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
|
|
|
+ }
|
|
|
+ if(isSign){
|
|
|
+ teacherAttendanceDao.update(teacherAttendance);
|
|
|
+ if(courseSchedule.getTeachMode() == TeachModeEnum.ONLINE){
|
|
|
+ //获取所有当前课程的学生列表
|
|
|
+ Map<Integer,String> userMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(courseScheduleDao.findStudentMap(courseScheduleId))),HashMap.class);
|
|
|
+ if(userMap != null && userMap.size() > 0){
|
|
|
+ String name = subjectDao.findNames(classGroup.getSubjectIdList());
|
|
|
+ sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.STUDENT_PUSH_ONLINE_COURSE_ACTION,userMap,
|
|
|
+ null,0,"6?sealClassId=" + courseScheduleId + "&subjectName=" + name ,courseSchedule.getName());
|
|
|
}
|
|
|
}
|
|
|
- int currentClassTimes = teacherAttendanceDao.countClassTime(classGroup.getId().longValue());
|
|
|
- classGroup.setCurrentClassTimes(currentClassTimes);
|
|
|
- if(updateCourseScheduleStatus&&courseSchedule.getStatus().equals(CourseStatusEnum.NOT_START)){
|
|
|
- courseScheduleDao.updateCourscheduleStatus(courseScheduleId,CourseStatusEnum.UNDERWAY.getCode());
|
|
|
- }
|
|
|
- break;
|
|
|
- case SIGN_OUT:
|
|
|
- teacherAttendance.setSignOutTime(now);
|
|
|
- teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
|
|
|
- break;
|
|
|
- default:
|
|
|
-
|
|
|
- break;
|
|
|
+ }
|
|
|
}
|
|
|
- if(isAttendance){
|
|
|
- if(SignStatusEnum.SIGN_OUT.equals(signStatus)){
|
|
|
+ //签退
|
|
|
+ if(teacherAttendance.getSignOutTime() == null && SignStatusEnum.SIGN_OUT.equals(signStatus)){
|
|
|
+ //正常签退范围(课程结束后)
|
|
|
+ if(DateUtil.minutesBetween(classEndDateTime,date) > 0){
|
|
|
+ teacherAttendance.setSignOutTime(date);
|
|
|
+ teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
|
|
|
teacherAttendanceDao.update(teacherAttendance);
|
|
|
//教师签退后,给未签到学员添加旷课记录
|
|
|
- //封装未签到学员签到列表
|
|
|
List<StudentAttendance> studentAttendances = studentAttendanceDao.queryNoSignStudentRecord(courseScheduleId);
|
|
|
if(studentAttendances != null && studentAttendances.size() > 0){
|
|
|
studentAttendances.forEach(e->{
|
|
@@ -241,18 +255,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
studentAttendanceDao.addStudentAttendances(studentAttendances);
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
- teacherAttendanceDao.insert(teacherAttendance);
|
|
|
- //教师到课推送
|
|
|
- if(courseSchedule.getTeachMode() == TeachModeEnum.ONLINE){
|
|
|
- //获取所有当前课程的学生列表
|
|
|
- Map<Integer,String> userMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(courseScheduleDao.findStudentMap(courseScheduleId))),HashMap.class);
|
|
|
- if(userMap != null && userMap.size() > 0){
|
|
|
- String name = subjectDao.findNames(classGroup.getSubjectIdList());
|
|
|
- sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.STUDENT_PUSH_ONLINE_COURSE_ACTION,userMap,
|
|
|
- null,0,"6?sealClassId=" + courseScheduleId + "&subjectName=" + name ,courseSchedule.getName());
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
|