|
@@ -228,7 +228,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
//上课时间
|
|
|
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);
|
|
|
+ Date classEndDateAdd60Minutes = DateUtil.addMinutes(classEndDateTime, 60);
|
|
|
+ Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
|
|
|
+ Date add60Minutes = DateUtil.addMinutes(classStartDateTime, -60);
|
|
|
//签到
|
|
|
if(teacherAttendance.getSignInTime() == null && SignStatusEnum.SIGN_IN.equals(signStatus)){
|
|
|
//是否连堂课
|
|
@@ -241,11 +243,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
boolean isSign = false;
|
|
|
if(yesOrNoEnum == YesOrNoEnum.YES){
|
|
|
isSign = true;
|
|
|
- }else if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classStartDateTime) > 0){
|
|
|
- //正常签到范围(开始前20分钟 ~ 开始之前)
|
|
|
+ }else if(DateUtil.minutesBetween(add60Minutes,date) > 0 && DateUtil.minutesBetween(date,add20Minutes) > 0){
|
|
|
+ //正常签到范围(开始前60分钟 ~ 开始之前20分钟)
|
|
|
isSign = true;
|
|
|
- }else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
|
|
|
- //异常签到范围(开始之后 ~ 结束之前)
|
|
|
+ }else if(DateUtil.minutesBetween(add20Minutes,date) > 0){
|
|
|
+ //异常签到范围(开始之前20分钟)
|
|
|
isSign = true;
|
|
|
teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
|
|
|
}
|
|
@@ -264,29 +266,29 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
}
|
|
|
//签退
|
|
|
if(teacherAttendance.getSignOutTime() == null && SignStatusEnum.SIGN_OUT.equals(signStatus)){
|
|
|
- //正常签退范围(课程结束后)
|
|
|
- if(DateUtil.minutesBetween(classEndDateTime,date) > 0){
|
|
|
- teacherAttendance.setSignOutTime(date);
|
|
|
+ //正常签退范围(课程结束后,1小时内)
|
|
|
+ if(DateUtil.minutesBetween(classEndDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
|
|
|
teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
|
|
|
- teacherAttendanceDao.update(teacherAttendance);
|
|
|
- //教师签退后,给未签到学员添加旷课记录
|
|
|
- List<StudentAttendance> studentAttendances = studentAttendanceDao.queryNoSignStudentRecord(courseScheduleId);
|
|
|
- if(studentAttendances != null && studentAttendances.size() > 0){
|
|
|
- studentAttendances.forEach(e->{
|
|
|
- e.setTeacherId(userId);
|
|
|
- e.setStatus(StudentAttendanceStatusEnum.TRUANT);
|
|
|
- e.setRemark("学员未到,自动补旷课");
|
|
|
- });
|
|
|
- studentAttendanceDao.addStudentAttendances(studentAttendances);
|
|
|
- }
|
|
|
+ }else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
|
|
|
+ teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
|
|
|
+ }else {
|
|
|
+ throw new BizException("签退时间异常");
|
|
|
+ }
|
|
|
+ teacherAttendance.setSignOutTime(date);
|
|
|
+ teacherAttendanceDao.update(teacherAttendance);
|
|
|
+ //教师签退后,给未签到学员添加旷课记录
|
|
|
+ List<StudentAttendance> studentAttendances = studentAttendanceDao.queryNoSignStudentRecord(courseScheduleId);
|
|
|
+ if(studentAttendances != null && studentAttendances.size() > 0){
|
|
|
+ studentAttendances.forEach(e->{
|
|
|
+ e.setTeacherId(userId);
|
|
|
+ e.setStatus(StudentAttendanceStatusEnum.TRUANT);
|
|
|
+ e.setRemark("学员未到,自动补旷课");
|
|
|
+ });
|
|
|
+ studentAttendanceDao.addStudentAttendances(studentAttendances);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void studentAutoTruant(){
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public PageInfo getTeacherPersonalAttendances(TeacherCloseQueryInfo queryInfo) {
|
|
|
PageInfo<TeacherPersonalAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|