|
@@ -69,22 +69,20 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
throw new BizException("请选择课程!");
|
|
|
}
|
|
|
|
|
|
- SysConfig byParamName = sysConfigService.findByParamName(SysConfigService.ADVANCE_SIGN_IN_MINUTES);
|
|
|
- Integer advanceSignInMinutes=Integer.parseInt(byParamName.getParanValue());
|
|
|
+// SysConfig byParamName = sysConfigService.findByParamName(SysConfigService.ADVANCE_SIGN_IN_MINUTES);
|
|
|
+// Integer advanceSignInMinutes=Integer.parseInt(byParamName.getParanValue());
|
|
|
|
|
|
Map<String,Object> result=new HashMap<>();
|
|
|
|
|
|
TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
|
|
|
|
|
|
- boolean isAttendance=false;
|
|
|
-
|
|
|
+ Date date = new Date();
|
|
|
if(Objects.isNull(teacherAttendance)){
|
|
|
teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
|
|
|
teacherAttendance.setTeacherId(user.getId());
|
|
|
+ teacherAttendance.setCreateTime(date);
|
|
|
}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
|
|
|
throw new BizException("当前课程已签到");
|
|
|
- }else{
|
|
|
- isAttendance=true;
|
|
|
}
|
|
|
|
|
|
TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId(),user.getId());
|
|
@@ -96,10 +94,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
|
|
|
teacherAttendance.setRemark(teacherSignOutDto.getTeacherAttendanceInfo().getRemark());
|
|
|
int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
|
|
|
- Date date = new Date();
|
|
|
+
|
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(teacherAttendance.getCourseScheduleId());
|
|
|
if(courseSchedule == null){
|
|
|
-
|
|
|
+ throw new BizException("课程信息不存在");
|
|
|
}
|
|
|
String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
@@ -107,8 +105,10 @@ 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);
|
|
|
- if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
|
|
|
+ Date classEndDateAdd60Minutes = DateUtil.addMinutes(classEndDateTime, 60);
|
|
|
+ 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 (currentCourseDetail.getEndClassTime().before(date)){
|
|
|
throw new BizException("该课程已结束,不能进行签到!");
|
|
@@ -118,55 +118,48 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
user.getId().longValue(),
|
|
|
true,
|
|
|
currentCourseDetail.getSchoolId().intValue());
|
|
|
-
|
|
|
- if(yesOrNoEnum==YesOrNoEnum.YES){
|
|
|
- teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
|
|
|
- result.put("signInStatus",0);
|
|
|
- }else{
|
|
|
- //是否在签到时间段内
|
|
|
-
|
|
|
- Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
|
|
|
- if(timeGap<= advanceSignInMinutes){
|
|
|
- teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
|
|
|
- result.put("signInStatus",0);
|
|
|
- }else{
|
|
|
- if(StringUtils.isEmpty(teacherAttendance.getRemark())){
|
|
|
- //当前为异常签到,请填写原因!
|
|
|
- result.put("status",2);
|
|
|
- return result;
|
|
|
- }
|
|
|
- teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
|
|
|
- result.put("signInStatus",1);
|
|
|
+ teacherAttendance.setSignInTime(date);
|
|
|
+ teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
|
|
|
+ result.put("signInStatus",0);
|
|
|
+ if(yesOrNoEnum == YesOrNoEnum.YES){
|
|
|
+ //连堂课
|
|
|
+ }else if(DateUtil.minutesBetween(add60Minutes,date) > 0 && DateUtil.minutesBetween(date,add20Minutes) > 0){
|
|
|
+ //正常签到范围(开始前20分钟 ~ 开始之前)
|
|
|
+ }else if(DateUtil.minutesBetween(add20Minutes,date) > 0){
|
|
|
+ if(StringUtils.isEmpty(teacherAttendance.getRemark())){
|
|
|
+ //当前为异常签到,请填写原因!
|
|
|
+ result.put("status",2);
|
|
|
+ return result;
|
|
|
}
|
|
|
+ //异常签到范围(开始之后 ~ 结束之前)
|
|
|
+ teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
|
|
|
+ result.put("signInStatus",1);
|
|
|
+ }else {
|
|
|
+ throw new BizException("签到时间异常");
|
|
|
}
|
|
|
- teacherAttendance.setSignInTime(date);
|
|
|
if(Objects.nonNull(teacherAttendance.getId())){
|
|
|
teacherAttendanceDao.update(teacherAttendance);
|
|
|
}else{
|
|
|
teacherAttendanceDao.insert(teacherAttendance);
|
|
|
}
|
|
|
- }else{
|
|
|
- if (currentCourseDetail.getEndClassTime().after(date)){
|
|
|
- throw new BizException("该课程还未结束,不能进行签退!");
|
|
|
- }
|
|
|
- if(!Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
|
- throw new BizException("该课程已签退!");
|
|
|
- }
|
|
|
- int i = DateUtil.hoursBetween(currentCourseDetail.getEndClassTime(), date);
|
|
|
- if(i<=1){
|
|
|
+ return result;
|
|
|
+ }else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
|
|
|
+ //正常签退范围(结束后1小时内)
|
|
|
+ teacherAttendance.setSignOutTime(date);
|
|
|
+ if(DateUtil.minutesBetween(classEndDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
|
|
|
teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
|
|
|
- }else{
|
|
|
+ result.put("signInStatus",0);
|
|
|
+ }else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
|
|
|
teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
|
|
|
+ result.put("signInStatus",1);
|
|
|
+ }else {
|
|
|
+ throw new BizException("签退时间异常");
|
|
|
}
|
|
|
- teacherAttendance.setSignOutTime(date);
|
|
|
- teacherAttendance.setCreateTime(date);
|
|
|
- if(isAttendance){
|
|
|
+ if(Objects.nonNull(teacherAttendance.getId())){
|
|
|
teacherAttendanceDao.update(teacherAttendance);
|
|
|
}else{
|
|
|
teacherAttendanceDao.insert(teacherAttendance);
|
|
|
}
|
|
|
- }
|
|
|
- if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
|
|
|
//新增课堂作业
|
|
|
CourseHomework courseHomework=teacherSignOutDto.getCourseHomeworkInfo();
|
|
|
courseHomework.setCourseScheduleId(teacherAttendance.getCourseScheduleId());
|
|
@@ -176,11 +169,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
|
|
|
courseHomeworkService.insert(courseHomework);
|
|
|
List<StudentCourseHomework> studentCourseHomeworks = studentCourseHomeworkDao
|
|
|
.constructInitialStudentHomeworkRecordsWithPayment(teacherAttendance.getCourseScheduleId(),
|
|
|
- courseHomework.getId());
|
|
|
+ courseHomework.getId());
|
|
|
if(CollectionUtils.isEmpty(studentCourseHomeworks)){
|
|
|
throw new BizException("此课程没有学生");
|
|
|
}
|
|
|
studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
result.put("status",0);
|