|
@@ -314,7 +314,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
continueCourseTime = "5";
|
|
|
}
|
|
|
while (true){
|
|
|
- //签到为空那么看下一条数据,
|
|
|
//获取当前课程的所有连堂课列表
|
|
|
String courseClassDate = DateUtil.format(cs.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
String courseEndDateTime = DateUtil.format(cs.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
@@ -335,11 +334,18 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
String format3 = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
Date date1 = DateUtil.stringToDate(format2 + " " + format3, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
teacherAttendance.setSignOutTime(date1);
|
|
|
- for (int i = 0; i < courseSchedules.size(); i++) {
|
|
|
+ Boolean isBreak = false;
|
|
|
+ for (int i = courseSchedules.size() - 1; i >= 0; i--) {
|
|
|
+ if(isBreak){
|
|
|
+ break;
|
|
|
+ }
|
|
|
courseClassDate = DateUtil.format(courseSchedules.get(i).getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
courseStartDateTime = DateUtil.format(courseSchedules.get(i).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
-
|
|
|
+ //如果签退时间小于课程开始时间
|
|
|
+ if(date.before(startDateTime)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
//如果是接下来的第一节连堂课,并且签退时间不大于课程开始时间,那么跳出循环
|
|
|
if(i == 0 && !date.after(startDateTime)){
|
|
|
teacherAttendance.setSignOutTime(date);
|
|
@@ -348,34 +354,13 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
courseEndDateTime = DateUtil.format(courseSchedules.get(i).getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
//不是最后一节课
|
|
|
- if(i < courseSchedules.size() - 1){
|
|
|
- //大于课程结束时间
|
|
|
+ if(i != courseSchedules.size() - 1){
|
|
|
+ isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
|
|
|
+ }else {
|
|
|
if(date.after(endDateTime)){
|
|
|
- String format = DateUtil.format(courseSchedules.get(i + 1).getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
- String format1 = DateUtil.format(courseSchedules.get(i + 1).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
- Date stringToDate = DateUtil.stringToDate(format + " " + format1, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
- //大于下一节课开始时间
|
|
|
- if(date.after(stringToDate)){
|
|
|
- //当前课程签退时间为课程结束时间
|
|
|
- upsetAttendance(userId,startDateTime,endDateTime,YesOrNoEnum.YES,courseSchedules.get(i));
|
|
|
- }else {
|
|
|
- //当前课程签退时间为退出时间
|
|
|
- upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
|
|
|
- }
|
|
|
+ isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
|
|
|
}else {
|
|
|
- if(date.after(startDateTime)){
|
|
|
- //小于课程结束时间,异常签退
|
|
|
- upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,courseSchedules.get(i));
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }else {
|
|
|
- if(date.after(startDateTime)){
|
|
|
- if(date.after(endDateTime)){
|
|
|
- upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
|
|
|
- }else {
|
|
|
- upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,courseSchedules.get(i));
|
|
|
- }
|
|
|
+ isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,courseSchedules.get(i));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -388,7 +373,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule){
|
|
|
+ public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule){
|
|
|
TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseSchedule.getId());
|
|
|
if(teacherAttendance == null){
|
|
|
teacherAttendance = new TeacherAttendance();
|
|
@@ -403,12 +388,14 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
teacherAttendance.setSignInTime(signInTime);
|
|
|
teacherAttendanceDao.insert(teacherAttendance);
|
|
|
}else {
|
|
|
- teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
|
|
|
teacherAttendance.setSignOutStatus(status);
|
|
|
teacherAttendance.setSignOutTime(signOutTime);
|
|
|
- teacherAttendance.setSignInTime(signInTime);
|
|
|
teacherAttendanceDao.update(teacherAttendance);
|
|
|
+ if(teacherAttendance.getSignInTime() != null){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
@Override
|