|  | @@ -69,8 +69,8 @@ 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<>();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -99,13 +99,16 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 | 
	
		
			
				|  |  |  		if(courseSchedule == null){
 | 
	
		
			
				|  |  |  			throw new BizException("课程信息不存在");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		teacherAttendance.setCurrentClassTimes(currentCourseDetail.getCurrentClassTimes() + 1);
 | 
	
		
			
				|  |  |  		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);
 | 
	
		
			
				|  |  |  		//上课时间
 | 
	
		
			
				|  |  |  		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);
 | 
	
		
			
				|  |  | +		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)){
 | 
	
	
		
			
				|  | @@ -121,9 +124,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 | 
	
		
			
				|  |  |  			result.put("signInStatus",0);
 | 
	
		
			
				|  |  |  			if(yesOrNoEnum == YesOrNoEnum.YES){
 | 
	
		
			
				|  |  |  				//连堂课
 | 
	
		
			
				|  |  | -			}else if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classStartDateTime) > 0){
 | 
	
		
			
				|  |  | +			}else if(DateUtil.minutesBetween(add60Minutes,date) > 0 && DateUtil.minutesBetween(date,add20Minutes) > 0){
 | 
	
		
			
				|  |  |  				//正常签到范围(开始前20分钟  ~  开始之前)
 | 
	
		
			
				|  |  | -			}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
 | 
	
		
			
				|  |  | +			}else if(DateUtil.minutesBetween(add20Minutes,date) > 0){
 | 
	
		
			
				|  |  |  				if(StringUtils.isEmpty(teacherAttendance.getRemark())){
 | 
	
		
			
				|  |  |  					//当前为异常签到,请填写原因!
 | 
	
		
			
				|  |  |  					result.put("status",2);
 | 
	
	
		
			
				|  | @@ -142,15 +145,28 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			return result;
 | 
	
		
			
				|  |  |  		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
 | 
	
		
			
				|  |  | +			//正常签退范围(结束后1小时内)
 | 
	
		
			
				|  |  |  			teacherAttendance.setSignOutTime(date);
 | 
	
		
			
				|  |  | -			teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | -			teacherAttendanceDao.update(teacherAttendance);
 | 
	
		
			
				|  |  | +			if(DateUtil.minutesBetween(classEndDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
 | 
	
		
			
				|  |  | +				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | +				result.put("signInStatus",0);
 | 
	
		
			
				|  |  | +			}else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
 | 
	
		
			
				|  |  | +				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
 | 
	
		
			
				|  |  | +				result.put("signInStatus",1);
 | 
	
		
			
				|  |  | +			}else {
 | 
	
		
			
				|  |  | +				throw new BizException("签退时间异常");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			if(Objects.nonNull(teacherAttendance.getId())){
 | 
	
		
			
				|  |  |  				teacherAttendanceDao.update(teacherAttendance);
 | 
	
		
			
				|  |  |  			}else{
 | 
	
		
			
				|  |  |  				teacherAttendanceDao.insert(teacherAttendance);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			result.put("signInStatus",0);
 | 
	
		
			
				|  |  | +			//修改当前课时
 | 
	
		
			
				|  |  | +			ClassGroup classGroup = new ClassGroup();
 | 
	
		
			
				|  |  | +			classGroup.setId(teacherAttendance.getClassGroupId());
 | 
	
		
			
				|  |  | +			classGroup.setCurrentClassTimes(teacherAttendance.getCurrentClassTimes() + 1);
 | 
	
		
			
				|  |  | +			classGroup.setUpdateTime(date);
 | 
	
		
			
				|  |  | +			classGroupDao.update(classGroup);
 | 
	
		
			
				|  |  |  			//新增课堂作业
 | 
	
		
			
				|  |  |  			CourseHomework courseHomework=teacherSignOutDto.getCourseHomeworkInfo();
 | 
	
		
			
				|  |  |  			courseHomework.setCourseScheduleId(teacherAttendance.getCourseScheduleId());
 |