|
@@ -1192,15 +1192,23 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
Date now = new Date();
|
|
|
String monday = DateUtil.dateToString(DateUtil.getWeekDayWithDate(now, Calendar.MONDAY), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
String sunday = DateUtil.dateToString(DateUtil.getWeekDayWithDate(now, Calendar.SUNDAY), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
+ //获取本周考勤列表
|
|
|
TeacherAttendanceQueryInfo info = new TeacherAttendanceQueryInfo();
|
|
|
info.setStartTerm(monday);
|
|
|
info.setEndTerm(sunday);
|
|
|
info.setMusicGroupIds(queryInfo.getMusicGroupIds());
|
|
|
List<TeacherAttendanceWrapper.CourseTeacherAttendance> courseTeacherAttendances = teacherAttendanceDao.queryTeacherAttendanceForWeek(info);
|
|
|
+ //获取本学期考勤
|
|
|
+ info.setStartTerm(startTerm);
|
|
|
+ info.setEndTerm(endTerm);
|
|
|
+ info.setMusicGroupIds(queryInfo.getMusicGroupIds());
|
|
|
+ List<TeacherAttendanceWrapper.CourseTeacherAttendance> termCourseTeacherAttendances = teacherAttendanceDao.queryTeacherAttendanceForWeek(info);
|
|
|
Map<Integer, List<TeacherAttendanceWrapper.CourseTeacherAttendance>> attendanceMap = new HashMap<>(dtoList.size());
|
|
|
+ Map<Integer, List<TeacherAttendanceWrapper.CourseTeacherAttendance>> termAttendanceMap = new HashMap<>(dtoList.size());
|
|
|
Map<Integer, School> idSchoolMap = new HashMap<>();
|
|
|
if(CollectionUtils.isNotEmpty(courseTeacherAttendances)){
|
|
|
attendanceMap = courseTeacherAttendances.stream().collect(Collectors.groupingBy(e -> e.getActualTeacherId()));
|
|
|
+ termAttendanceMap = termCourseTeacherAttendances.stream().collect(Collectors.groupingBy(e -> e.getActualTeacherId()));
|
|
|
Set<Integer> schoolIds = courseTeacherAttendances.stream().map(TeacherAttendanceWrapper.CourseTeacherAttendance::getSchoolId).collect(Collectors.toSet());
|
|
|
if(schoolIds != null && schoolIds.size() > 0){
|
|
|
List<School> schools = schoolDao.getSchools(new ArrayList<>(schoolIds));
|
|
@@ -1216,13 +1224,39 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
List<TeacherAttendanceWrapper.CourseTeacherAttendance> attendances = attendanceMap.get(dto.getTeacherId());
|
|
|
if(CollectionUtils.isNotEmpty(attendances)){
|
|
|
dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NORMAL);
|
|
|
- int errCourseNum = 0;
|
|
|
att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendances) {
|
|
|
- if(attendance.getCourseStatus() == CourseStatusEnum.NOT_START){
|
|
|
- continue att;
|
|
|
- }
|
|
|
if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
|
|
|
dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
|
|
|
+ break att;
|
|
|
+ }
|
|
|
+ if(attendance.getTeachMode() == TeachModeEnum.OFFLINE){
|
|
|
+ if(StringUtils.isEmpty(attendance.getSignInLongitudeLatitude()) || StringUtils.isEmpty(attendance.getSignOutLongitudeLatitude())){
|
|
|
+ dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
|
|
|
+ break att;
|
|
|
+ }else {
|
|
|
+ //计算考勤范围
|
|
|
+ School school = idSchoolMap.get(attendance.getSchoolId());
|
|
|
+ if(school != null){
|
|
|
+ Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
|
|
|
+ if(!signRange){
|
|
|
+ dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
|
|
|
+ break att;
|
|
|
+ }
|
|
|
+ signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
|
|
|
+ if(!signRange){
|
|
|
+ dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
|
|
|
+ break att;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<TeacherAttendanceWrapper.CourseTeacherAttendance> termAttendances = termAttendanceMap.get(dto.getTeacherId());
|
|
|
+ if(CollectionUtils.isNotEmpty(termAttendances)){
|
|
|
+ int errCourseNum = 0;
|
|
|
+ att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendances) {
|
|
|
+ if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
|
|
|
errCourseNum++;
|
|
|
continue att;
|
|
|
}
|
|
@@ -1235,13 +1269,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
if(school != null){
|
|
|
Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
|
|
|
if(!signRange){
|
|
|
- dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
|
|
|
errCourseNum++;
|
|
|
continue att;
|
|
|
}
|
|
|
signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
|
|
|
if(!signRange){
|
|
|
- dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
|
|
|
errCourseNum++;
|
|
|
}
|
|
|
}
|