Joburgess преди 4 години
родител
ревизия
48f4a5c34a

+ 13 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -103,7 +103,13 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         Date date = new Date();
         SysConfig attendanceTimeRange;
         if (courseSchedule.getGroupType().equals(GroupType.MUSIC)) {
-            attendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+            TeacherAttendance teacherAttendanceInfo = teacherAttendanceDao.findByTeacherAttendanceInfo(sysUser.getId().longValue(), courseSchedule.getId());
+            if(Objects.isNull(teacherAttendanceInfo)||Objects.isNull(teacherAttendanceInfo.getSignInStatus())){
+                throw new BizException("您还未签到");
+            }
+            if (!DateUtil.isSameDay(courseSchedule.getEndClassTime(), date)) {
+                throw new BizException("乐团课禁止跨天点名");
+            }
         } else {
             SysConfig beforeAttendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP);
             int courseStartTime = DateUtil.minutesBetween(date, courseSchedule.getStartClassTime());
@@ -111,13 +117,13 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
                 throw new BizException("VIP课开课前{}分钟禁止点名", beforeAttendanceTimeRange.getParanValue(Integer.class));
             }
             attendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
+
+            int courseEndTime = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), date);
+            if (date.after(courseSchedule.getEndClassTime()) && courseEndTime > attendanceTimeRange.getParanValue(Integer.class)) {
+                throw new BizException("VIP课结束{}分钟后禁止点名",attendanceTimeRange.getParanValue(Integer.class));
+            }
         }
-        int courseEndTime = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), date);
-        if (date.after(courseSchedule.getEndClassTime()) && courseEndTime > attendanceTimeRange.getParanValue(Integer.class)) {
-            throw new BizException("{}课结束{}分钟后禁止点名",
-                    courseSchedule.getGroupType().equals(GroupType.MUSIC) ? "乐团" : "VIP",
-                    attendanceTimeRange.getParanValue(Integer.class));
-        }
+
         studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
         int classTimes = courseScheduleDao.countClassTimes(courseSchedule.getClassGroupId().longValue(), courseSchedule.getStartClassTime());
         studentAttendances.forEach(studentAttendance -> {

+ 7 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -207,6 +207,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}
 			return result;
 		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
+			int i = studentAttendanceDao.countByCourseSchedule(courseSchedule.getId());
+			if(i<=0){
+				throw new BizException("请先点名");
+			}
+
 			//是否在范围内
 			boolean isInScore = false;
 			if(StringUtils.isBlank(school.getLongitudeLatitude())){
@@ -233,10 +238,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			if(!isInScore){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
 				result.put("signOutStatus",1);
-			}else if(date.compareTo(classEndDateTime) >= 0 && date.compareTo(classEndDateAdd60Minutes) <= 0){
+			}else if(date.compareTo(classEndDateTime) >= 0 && date.compareTo(classEndDateAdd60Minutes) <= 0 && DateUtil.isSameDay(date, classEndDateTime)){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 				result.put("signOutStatus",0);
-			}else if(date.compareTo(classEndDateAdd60Minutes) > 0){
+			}else if(date.compareTo(classEndDateAdd60Minutes) > 0 && DateUtil.isSameDay(date, classEndDateTime)){
 				if(StringUtils.isEmpty(teacherAttendance.getSignOutRemark())&&!teacherSignOutDto.isNotRturnErrorInfo()){
 					//当前为异常签退,请填写原因!
 					result.put("status",2);