Forráskód Böngészése

feat:线下课考勤调整

Joburgess 4 éve
szülő
commit
46ebbf07d5

+ 24 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -125,6 +125,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("明天的课程不能进行签到");
 		}
 
+		School school = schoolDao.get(courseSchedule.getSchoolId());
+
 		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);
@@ -140,8 +142,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				throw new BizException("未获取到您的位置");
 			}
 
-			School school = schoolDao.get(courseSchedule.getSchoolId());
-
 			//是否在范围内
 			boolean isInScore = true;
 			if(StringUtils.isBlank(school.getLongitudeLatitude())){
@@ -204,15 +204,35 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}
 			return result;
 		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
+			//是否在范围内
+			boolean isInScore = false;
+			if(StringUtils.isBlank(school.getLongitudeLatitude())){
+				if(teacherSignOutDto.getTeacherAttendanceInfo().getUpdate().equals(YesOrNoEnum.YES.getCode())){
+					school.setLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude());
+					schoolDao.update(school);
+				}
+			}else if(StringUtils.isNotBlank(teacherSignOutDto.getTeacherAttendanceInfo().getSignOutLongitudeLatitude())){
+				SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
+				double attendanceRange = Double.valueOf(sysConfig.getParanValue());
+				double distance = MapUtil.distance(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude(),
+						school.getLongitudeLatitude());
+				if(distance<=attendanceRange){
+					isInScore=true;
+				}
+			}
+
 			//正常签退范围(结束后1小时内)
 			teacherAttendance.setSignOutTime(date);
 			teacherAttendance.setSignOutAttachments(teacherSignOutDto.getCourseHomeworkInfo().getAttachments());
 			ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
 			teacherAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
-			if(DateUtil.minutesBetween(classEndDateTime,date) >= 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) >= 0){
+			if(!isInScore){
+				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
+				result.put("signInStatus",1);
+			}else if(date.compareTo(classEndDateTime) >= 0 && date.compareTo(classEndDateAdd60Minutes) <= 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 				result.put("signInStatus",0);
-			}else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
+			}else if(date.compareTo(classEndDateAdd60Minutes) > 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
 				result.put("signInStatus",1);
 			}else {