|
@@ -53,6 +53,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
private ClassGroupDao classGroupDao;
|
|
private ClassGroupDao classGroupDao;
|
|
@Autowired
|
|
@Autowired
|
|
private SubjectDao subjectDao;
|
|
private SubjectDao subjectDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private SchoolDao schoolDao;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private RedisCache<String,Object> redisCache;
|
|
private RedisCache<String,Object> redisCache;
|
|
@@ -78,6 +80,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
|
|
|
TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
|
|
TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
|
|
|
|
|
|
|
|
+ if(StringUtils.isBlank(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude())){
|
|
|
|
+ throw new BizException("未获取到您的位置");
|
|
|
|
+ }
|
|
|
|
+
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
if(Objects.isNull(teacherAttendance)){
|
|
if(Objects.isNull(teacherAttendance)){
|
|
teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
|
|
teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
|
|
@@ -102,6 +108,30 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
if(courseSchedule == null){
|
|
if(courseSchedule == null){
|
|
throw new BizException("课程信息不存在");
|
|
throw new BizException("课程信息不存在");
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ Date tomorrow = DateUtil.addDays1(date, 1);
|
|
|
|
+
|
|
|
|
+ if(tomorrow.before(courseSchedule.getStartClassTime())){
|
|
|
|
+ throw new BizException("明天的课程不能进行签到");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ School school = schoolDao.get(courseSchedule.getSchoolId());
|
|
|
|
+
|
|
|
|
+ //是否在范围内
|
|
|
|
+ boolean isInScore = true;
|
|
|
|
+ if(StringUtils.isBlank(school.getLongitudeLatitude())){
|
|
|
|
+ school.setLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude());
|
|
|
|
+ schoolDao.update(school);
|
|
|
|
+ }else{
|
|
|
|
+ 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=false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
@@ -110,10 +140,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
Date classEndDateAdd60Minutes = DateUtil.addMinutes(classEndDateTime, 60);
|
|
Date classEndDateAdd60Minutes = DateUtil.addMinutes(classEndDateTime, 60);
|
|
Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
|
|
Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
|
|
- Date add60Minutes = DateUtil.addMinutes(classStartDateTime, -60);
|
|
|
|
if(teacherAttendance.getSignInTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
|
|
if(teacherAttendance.getSignInTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
|
|
teacherAttendance.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(teacherAttendance.getClassGroupId(),courseSchedule.getStartClassTime()) + 1);
|
|
teacherAttendance.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(teacherAttendance.getClassGroupId(),courseSchedule.getStartClassTime()) + 1);
|
|
-
|
|
|
|
|
|
+ teacherAttendance.setSignInLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude());
|
|
if (currentCourseDetail.getEndClassTime().before(date)){
|
|
if (currentCourseDetail.getEndClassTime().before(date)){
|
|
throw new BizException("该课程已结束,不能进行签到!");
|
|
throw new BizException("该课程已结束,不能进行签到!");
|
|
}
|
|
}
|
|
@@ -127,8 +156,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
result.put("signInStatus",0);
|
|
result.put("signInStatus",0);
|
|
if(yesOrNoEnum == YesOrNoEnum.YES){
|
|
if(yesOrNoEnum == YesOrNoEnum.YES){
|
|
//连堂课
|
|
//连堂课
|
|
- }else if(DateUtil.minutesBetween(add60Minutes,date) >= 0 && DateUtil.minutesBetween(date,add20Minutes) >= 0){
|
|
|
|
|
|
+ }else if(DateUtil.minutesBetween(date,add20Minutes) >= 0){
|
|
//正常签到范围(开始前60分钟 ~ 开始之前20分钟)
|
|
//正常签到范围(开始前60分钟 ~ 开始之前20分钟)
|
|
|
|
+ if(!isInScore){
|
|
|
|
+ teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
|
|
|
|
+ }
|
|
}else if(DateUtil.minutesBetween(add20Minutes,date) > 0){
|
|
}else if(DateUtil.minutesBetween(add20Minutes,date) > 0){
|
|
if(StringUtils.isEmpty(teacherAttendance.getRemark())){
|
|
if(StringUtils.isEmpty(teacherAttendance.getRemark())){
|
|
//当前为异常签到,请填写原因!
|
|
//当前为异常签到,请填写原因!
|