|  | @@ -8,10 +8,7 @@ import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.StudentAttendanceService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.SysConfigService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.SysMessageService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.TeacherAttendanceService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.dal.BaseDAO;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.exception.BizException;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.page.PageInfo;
 | 
	
	
		
			
				|  | @@ -58,6 +55,14 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 | 
	
		
			
				|  |  |  	private SysConfigDao sysConfigDao;
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
		
			
				|  |  |  	private TeacherAttendanceService teacherAttendanceService;
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private SchoolDao schoolDao;
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private SysConfigService sysConfigService;
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private CourseScheduleService courseScheduleService;
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private TeacherAttendanceDao teacherAttendanceDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public BaseDAO<Long, StudentAttendance> getDAO() {
 | 
	
	
		
			
				|  | @@ -66,7 +71,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public Map addStudentAttendances(StudentAttendanceDto studentAttendanceInfos) {
 | 
	
		
			
				|  |  | +	public void addStudentAttendances(StudentAttendanceDto studentAttendanceInfos) {
 | 
	
		
			
				|  |  |  		List<StudentAttendance> studentAttendances=studentAttendanceInfos.getStudentAttendances();
 | 
	
		
			
				|  |  |  		SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |  		if(Objects.isNull(sysUser)){
 | 
	
	
		
			
				|  | @@ -135,13 +140,58 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 | 
	
		
			
				|  |  |  		courseSchedule.setLeaveStudentNum(leaveStudentNum);
 | 
	
		
			
				|  |  |  		courseScheduleDao.update(courseSchedule);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		TeacherSignOutDto teacherSignOutDto=new TeacherSignOutDto();
 | 
	
		
			
				|  |  | -		TeacherAttendance teacherAttendance = new TeacherAttendance(courseSchedule.getId(), 0);
 | 
	
		
			
				|  |  | -		teacherAttendance.setSignInLongitudeLatitude(studentAttendanceInfos.getSignInLongitudeLatitude());
 | 
	
		
			
				|  |  | -		teacherAttendance.setUpdate(studentAttendanceInfos.getUpdate());
 | 
	
		
			
				|  |  | -		teacherSignOutDto.setTeacherAttendanceInfo(teacherAttendance);
 | 
	
		
			
				|  |  | -		teacherSignOutDto.setNotRturnErrorInfo(true);
 | 
	
		
			
				|  |  | -		return teacherAttendanceService.addTeacherAttendanceRecord(teacherSignOutDto);
 | 
	
		
			
				|  |  | +		if(StringUtils.isBlank(studentAttendanceInfos.getSignInLongitudeLatitude())){
 | 
	
		
			
				|  |  | +			throw new BizException("未获取到您的位置");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		School school = schoolDao.get(courseSchedule.getSchoolId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		//是否在范围内
 | 
	
		
			
				|  |  | +		boolean isInScore = true;
 | 
	
		
			
				|  |  | +		if(StringUtils.isBlank(school.getLongitudeLatitude())){
 | 
	
		
			
				|  |  | +			if(studentAttendanceInfos.getUpdate().equals(YesOrNoEnum.YES.getCode())){
 | 
	
		
			
				|  |  | +				school.setLongitudeLatitude(studentAttendanceInfos.getSignInLongitudeLatitude());
 | 
	
		
			
				|  |  | +				schoolDao.update(school);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}else{
 | 
	
		
			
				|  |  | +			SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
 | 
	
		
			
				|  |  | +			double attendanceRange = Double.valueOf(sysConfig.getParanValue());
 | 
	
		
			
				|  |  | +			double distance = MapUtil.distance(studentAttendanceInfos.getSignInLongitudeLatitude(),
 | 
	
		
			
				|  |  | +					school.getLongitudeLatitude());
 | 
	
		
			
				|  |  | +			if(distance>attendanceRange){
 | 
	
		
			
				|  |  | +				isInScore=false;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(sysUser.getId().longValue(),courseSchedule.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		Date date = new Date();
 | 
	
		
			
				|  |  | +		if(Objects.isNull(teacherAttendance)){
 | 
	
		
			
				|  |  | +			teacherAttendance= new TeacherAttendance();
 | 
	
		
			
				|  |  | +			teacherAttendance.setTeacherId(sysUser.getId());
 | 
	
		
			
				|  |  | +			teacherAttendance.setCreateTime(date);
 | 
	
		
			
				|  |  | +		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
 | 
	
		
			
				|  |  | +			return;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
 | 
	
		
			
				|  |  | +				sysUser.getId().longValue(),
 | 
	
		
			
				|  |  | +				true,
 | 
	
		
			
				|  |  | +				courseSchedule.getSchoolId().intValue());
 | 
	
		
			
				|  |  | +		teacherAttendance.setSignInTime(date);
 | 
	
		
			
				|  |  | +		teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | +		teacherAttendance.setSignOutTime(date);
 | 
	
		
			
				|  |  | +		teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | +		if(yesOrNoEnum != YesOrNoEnum.YES&&courseSchedule.getStartClassTime().before(date)){
 | 
	
		
			
				|  |  | +			teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
 | 
	
		
			
				|  |  | +			teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(Objects.nonNull(teacherAttendance.getId())){
 | 
	
		
			
				|  |  | +			teacherAttendanceDao.update(teacherAttendance);
 | 
	
		
			
				|  |  | +		}else{
 | 
	
		
			
				|  |  | +			teacherAttendanceDao.insert(teacherAttendance);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 |