|  | @@ -131,6 +131,9 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 | 
	
		
			
				|  |  |  							studentAttendanceInfo.getMusicGroupId(),
 | 
	
		
			
				|  |  |  							YesOrNoEnum.NO.getCode());
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  | +				if(studentAttendanceInfo.getStatus() == StudentAttendanceStatusEnum.NORMAL){
 | 
	
		
			
				|  |  | +					studentAttendanceInfo.setSignInTime(date);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  |  				studentAttendanceDao.insert(studentAttendanceInfo);
 | 
	
		
			
				|  |  |  			}else{
 | 
	
		
			
				|  |  |  				studentFeeDao.updateStudentAbsenteeismTimes(studentAttendanceInfo.getUserId(),
 | 
	
	
		
			
				|  | @@ -439,43 +442,50 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  | -	public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum) {
 | 
	
		
			
				|  |  | +	public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum,SignStatusEnum signStatusEnum) {
 | 
	
		
			
				|  |  | +		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
 | 
	
		
			
				|  |  | +		ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
 | 
	
		
			
				|  |  |  		StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId,courseScheduleId);
 | 
	
		
			
				|  |  | +		Date date = new Date();
 | 
	
		
			
				|  |  |  		if(studentAttendance == null){
 | 
	
		
			
				|  |  | +			studentAttendance = new StudentAttendance();
 | 
	
		
			
				|  |  | +			studentAttendance.setClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  | +			studentAttendance.setCourseScheduleId(courseScheduleId.longValue());
 | 
	
		
			
				|  |  | +			studentAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
 | 
	
		
			
				|  |  | +			studentAttendance.setGroupType(classGroup.getGroupType());
 | 
	
		
			
				|  |  | +			studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | +			studentAttendance.setUserId(userId);
 | 
	
		
			
				|  |  | +			studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  | +			studentAttendanceDao.insert(studentAttendance);
 | 
	
		
			
				|  |  | +		}else {
 | 
	
		
			
				|  |  | +			studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  | +			studentAttendance.setUpdateTime(date);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		//没有签到信息才会生成
 | 
	
		
			
				|  |  | +		if(signStatusEnum == SignStatusEnum.SIGN_IN && studentAttendance.getSignInTime() == null){
 | 
	
		
			
				|  |  |  			//判断是否在签到时间段内(课程开始前20~结束前)
 | 
	
		
			
				|  |  | -			CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
 | 
	
		
			
				|  |  | -			ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
 | 
	
		
			
				|  |  | -			if(classGroup != null && courseSchedule != null){
 | 
	
		
			
				|  |  | -//				int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
 | 
	
		
			
				|  |  | -				Date date = new Date();
 | 
	
		
			
				|  |  | -				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, -60);
 | 
	
		
			
				|  |  | -				//课程结束前进入,算正常
 | 
	
		
			
				|  |  | -				if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
 | 
	
		
			
				|  |  | -					studentAttendance = new StudentAttendance();
 | 
	
		
			
				|  |  | -					studentAttendance.setClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  | -					studentAttendance.setCourseScheduleId(courseScheduleId.longValue());
 | 
	
		
			
				|  |  | -					studentAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
 | 
	
		
			
				|  |  | -					studentAttendance.setGroupType(classGroup.getGroupType());
 | 
	
		
			
				|  |  | -					studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | -					studentAttendance.setStatus(statusEnum);
 | 
	
		
			
				|  |  | -					studentAttendance.setUserId(userId);
 | 
	
		
			
				|  |  | -					studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					courseSchedule.setUpdateTime(date);
 | 
	
		
			
				|  |  | -					courseSchedule.setStudentNum((courseSchedule.getStudentNum() == null?0:courseSchedule.getStudentNum()) + 1);
 | 
	
		
			
				|  |  | -					courseScheduleDao.update(courseSchedule);
 | 
	
		
			
				|  |  | -					studentAttendanceDao.insert(studentAttendance);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}else {
 | 
	
		
			
				|  |  | -				throw new BizException("学员班级或课程信息异常");
 | 
	
		
			
				|  |  | +//			int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
 | 
	
		
			
				|  |  | +			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, -60);
 | 
	
		
			
				|  |  | +			//课程结束前进入,算正常
 | 
	
		
			
				|  |  | +			if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
 | 
	
		
			
				|  |  | +				studentAttendance.setStatus(statusEnum);
 | 
	
		
			
				|  |  | +				studentAttendance.setSignInTime(date);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				courseSchedule.setUpdateTime(date);
 | 
	
		
			
				|  |  | +				courseSchedule.setStudentNum((courseSchedule.getStudentNum() == null?0:courseSchedule.getStudentNum()) + 1);
 | 
	
		
			
				|  |  | +				courseScheduleDao.update(courseSchedule);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | +		}else if(signStatusEnum == SignStatusEnum.SIGN_OUT){
 | 
	
		
			
				|  |  | +			studentAttendance.setStatus(statusEnum);
 | 
	
		
			
				|  |  | +			studentAttendance.setSignOutTime(date);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		studentAttendanceDao.update(studentAttendance);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 |