zouxuan 5 年之前
父节点
当前提交
9ff72a6fcd

+ 0 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -104,18 +104,4 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 * @return void
 	 */
 	void updateTeacherAttendance(TeacherAttendance teacherAttendance);
-
-	/**
-	 * 清空考勤
-	 * @param courseId
-	 */
-	void cleanCourseTeacherSignOut(Long courseId);
-
-	/**
-	 * 获取教师签到信息
-	 * @param courseId
-	 * @param teacherId
-	 * @return
-	 */
-	TeacherAttendance findByTeacherAttendanceInfo(Long courseId, Integer teacherId);
 }

+ 35 - 36
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -468,7 +468,6 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
 			studentAttendance.setUpdateTime(date);
 		}
-		Date signInTime = studentAttendance.getSignInTime();
 		//没有签到信息才会生成
 		if(signStatusEnum == SignStatusEnum.SIGN_IN && studentAttendance.getSignInTime() == null){
 			//判断是否在签到时间段内(课程开始前20~结束前)
@@ -501,7 +500,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			if(DateUtil.minutesBetween(classEndDateTime,date) >= 0){
 				String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
 				if(StringUtils.isEmpty(continueCourseTime)){
-					continueCourseTime = "5";
+					continueCourseTime = "10";
 				}
 				List<CourseSchedule> courseSchedules = new ArrayList<>();
 				CourseSchedule cs = courseSchedule;
@@ -525,41 +524,41 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 					totalMinutes -= firstMinutes;
 					if(totalMinutes > 0){
 						String courseClassDate;
-//						String courseStartDateTime;
+						String courseStartDateTime;
 						String courseEndDateTime;
-						for (int i = 0; i < courseSchedules.size(); i++) {
-							courseClassDate = DateUtil.format(courseSchedules.get(i).getClassDate(), DateUtil.DEFAULT_PATTERN);
-//							courseStartDateTime = DateUtil.format(courseSchedules.get(i).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-							courseEndDateTime = DateUtil.format(courseSchedules.get(i).getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-//							Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-							Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-							StudentAttendance byStatusAndCourseScheduleId = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseSchedules.get(i).getId().intValue());
-//							Date signOutTime = date;
-//							if(i < courseSchedules.size() - 1 && date.after(endDateTime)){
-							//不是最后一节连堂课,并且签退时间大于课程结束时间,签退时间等于课程结束时间
-//								signOutTime = endDateTime;
-//							}
-							if(byStatusAndCourseScheduleId != null){
-								byStatusAndCourseScheduleId.setSignOutTime(date);
-								byStatusAndCourseScheduleId.setStatus(statusEnum);
-								byStatusAndCourseScheduleId.setUpdateTime(date);
-								studentAttendanceDao.update(byStatusAndCourseScheduleId);
+						for (CourseSchedule e:courseSchedules) {
+							//获取当前课程的单节课时长
+							int signClassMinutes = courseScheduleDao.getSingleClassMinutes(e.getId());
+							totalMinutes -= signClassMinutes;
+							if(totalMinutes >= 0){
+								//补充签到签退时间
+								courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+								courseStartDateTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								StudentAttendance byStatusAndCourseScheduleId = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, e.getId().intValue());
+								if(byStatusAndCourseScheduleId != null){
+									byStatusAndCourseScheduleId.setSignOutTime(date);
+									byStatusAndCourseScheduleId.setStatus(statusEnum);
+									byStatusAndCourseScheduleId.setUpdateTime(date);
+									studentAttendanceDao.update(byStatusAndCourseScheduleId);
+								}else {
+									byStatusAndCourseScheduleId = new StudentAttendance();
+									byStatusAndCourseScheduleId.setSignOutTime(endDateTime);
+									byStatusAndCourseScheduleId.setStatus(statusEnum);
+									byStatusAndCourseScheduleId.setSignInTime(startDateTime);
+									byStatusAndCourseScheduleId.setUpdateTime(date);
+									byStatusAndCourseScheduleId.setUserId(userId);
+									byStatusAndCourseScheduleId.setTeacherId(courseSchedule.getActualTeacherId());
+									byStatusAndCourseScheduleId.setClassGroupId(e.getClassGroupId());
+									byStatusAndCourseScheduleId.setCourseScheduleId(e.getId());
+									byStatusAndCourseScheduleId.setMusicGroupId(e.getMusicGroupId());
+									byStatusAndCourseScheduleId.setGroupType(e.getGroupType());
+									byStatusAndCourseScheduleId.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
+									studentAttendanceDao.insert(byStatusAndCourseScheduleId);
+								}
 							}else {
-								byStatusAndCourseScheduleId = new StudentAttendance();
-								byStatusAndCourseScheduleId.setSignOutTime(date);
-								byStatusAndCourseScheduleId.setStatus(statusEnum);
-								byStatusAndCourseScheduleId.setSignInTime(signInTime);
-								byStatusAndCourseScheduleId.setUpdateTime(date);
-								byStatusAndCourseScheduleId.setUserId(userId);
-								byStatusAndCourseScheduleId.setTeacherId(courseSchedule.getActualTeacherId());
-								byStatusAndCourseScheduleId.setClassGroupId(courseSchedules.get(i).getClassGroupId());
-								byStatusAndCourseScheduleId.setCourseScheduleId(courseSchedules.get(i).getId());
-								byStatusAndCourseScheduleId.setMusicGroupId(courseSchedules.get(i).getMusicGroupId());
-								byStatusAndCourseScheduleId.setGroupType(courseSchedules.get(i).getGroupType());
-								byStatusAndCourseScheduleId.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
-								studentAttendanceDao.insert(byStatusAndCourseScheduleId);
-							}
-							if(!date.after(endDateTime)){
 								break;
 							}
 						}
@@ -597,7 +596,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 		//是否是连堂课
 		String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
 		if(StringUtils.isEmpty(continueCourseTime)){
-			continueCourseTime = "5";
+			continueCourseTime = "10";
 		}
 		Date date = new Date();
 		for (CourseSchedule courseSchedule : courseScheduleList) {

+ 16 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -38,6 +38,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Autowired
 	private CourseHomeworkService courseHomeworkService;
 	@Autowired
+	private StudentAttendanceDao studentAttendanceDao;
+	@Autowired
 	private StudentCourseHomeworkDao studentCourseHomeworkDao;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
@@ -272,7 +274,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		//签到
 		String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
 		if(StringUtils.isEmpty(continueCourseTime)){
-			continueCourseTime = "5";
+			continueCourseTime = "10";
 		}
 		if(teacherAttendance.getSignInTime() == null && SignStatusEnum.SIGN_IN.equals(signStatus)){
 			YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
@@ -289,6 +291,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				//正常签到范围(开始之前)
 				isSign = true;
 			}else {
+//			}else if(DateUtil.minutesBetween(add1Minutes,date) >= 0){
 				//异常签到范围(开始之后)
 				isSign = true;
 				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
@@ -310,7 +313,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		if(SignStatusEnum.SIGN_OUT.equals(signStatus)){
 			if(DateUtil.minutesBetween(classEndDateTime,date) >= 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-//				Date signInTime = teacherAttendance.getSignInTime();
 				List<CourseSchedule> courseSchedules = new ArrayList<>();
 				CourseSchedule cs = courseSchedule;
 				while (true){
@@ -336,34 +338,19 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 						String courseClassDate;
 						String courseStartDateTime;
 						String courseEndDateTime;
-						for (int i = 0; i < courseSchedules.size(); i++) {
-							courseClassDate = DateUtil.format(courseSchedules.get(i).getClassDate(), DateUtil.DEFAULT_PATTERN);
-							courseStartDateTime = DateUtil.format(courseSchedules.get(i).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-							courseEndDateTime = DateUtil.format(courseSchedules.get(i).getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-							Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-							Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-//							Date signOutTime = date;
-//							if(i < courseSchedules.size() - 1 && date.after(endDateTime)){
-							//不是最后一节连堂课,并且签退时间大于课程结束时间,签退时间等于课程结束时间
-//								signOutTime = endDateTime;
-//							}
-							//如果签退时间大于课程结束时间
-							//如果当前课程没有签退记录,那么正常更新
-							TeacherAttendance personalAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseSchedules.get(i).getId());
-							if(personalAttendance != null && personalAttendance.getSignOutStatus() == YesOrNoEnum.NO){
-								continue;
-							}
-							//如果当前课程有签到时间,那么只更新签退时间和状态
-							if(personalAttendance.getSignInTime() != null){
-								startDateTime = null;
-							}
-							if(date.after(endDateTime)){
-								teacherAttendanceDao.cuntinueCourseSign(courseSchedules.get(i).getId(),startDateTime,date,1);
-							}else if (date.equals(endDateTime)){
-								teacherAttendanceDao.cuntinueCourseSign(courseSchedules.get(i).getId(),startDateTime,date,1);
-								break;
+						for (CourseSchedule e:courseSchedules) {
+							//获取当前课程的单节课时长
+							int signClassMinutes = courseScheduleDao.getSingleClassMinutes(e.getId());
+							totalMinutes -= signClassMinutes;
+							if(totalMinutes >= 0){
+								//补充签到签退时间
+								courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+								courseStartDateTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								teacherAttendanceDao.cuntinueCourseSign(e.getId(),startDateTime,endDateTime,1);
 							}else {
-								teacherAttendanceDao.cuntinueCourseSign(courseSchedules.get(i).getId(),startDateTime,date,0);
 								break;
 							}
 						}
@@ -505,15 +492,4 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendanceDao.update(teacherAttendance);
 		}
 	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void cleanCourseTeacherSignOut(Long courseId) {
-		teacherAttendanceDao.cleanCourseTeacherSignOut(courseId);
-	}
-
-	@Override
-	public TeacherAttendance findByTeacherAttendanceInfo(Long courseId, Integer teacherId) {
-		return teacherAttendanceDao.findByTeacherAttendanceInfo(teacherId.longValue(),courseId);
-	}
 }

+ 9 - 35
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -17,7 +17,6 @@ import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
@@ -113,9 +112,9 @@ public class RoomServiceImpl implements RoomService {
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
 
-        String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
+        /*String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
         if(StringUtils.isEmpty(continueCourseTime)){
-            continueCourseTime = "5";
+            continueCourseTime = "3";
         }
         CourseSchedule schedule = courseSchedule;
         //如果当前课程是连堂课,那么获取第一节课的课程编号
@@ -128,7 +127,7 @@ public class RoomServiceImpl implements RoomService {
             }else {
                 break;
             }
-        }
+        }*/
         /*try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
                 teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
@@ -246,53 +245,28 @@ public class RoomServiceImpl implements RoomService {
         log.info("roomSignIn: roomId={}, userId={}", roomId, userId);
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(roomId);
-        Date date = new Date();
 
-        String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
+        /*String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
         if(StringUtils.isEmpty(continueCourseTime)){
-            continueCourseTime = "5";
+            continueCourseTime = "3";
         }
         CourseSchedule schedule = courseSchedule;
         //如果当前课程是连堂课,那么获取第一节课的课程编号
-        Long signInRoomId = null;
         while (true){
             String classDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
             String startClassTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
             schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(),classDate + " " + startClassTime,schedule.getActualTeacherId(),continueCourseTime);
             if(schedule != null){
-                signInRoomId = schedule.getId();
+                roomId = schedule.getId();
             }else {
                 break;
             }
-        }
-        if(signInRoomId == null){
-            signInRoomId = roomId;
-        }else {
-            if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
-                String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
-                String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-                //获取上一次课程
-                CourseSchedule lastCourse = courseScheduleDao.getLastCourse(courseSchedule.getClassGroupId(), classDate + " " + startClassTime, courseSchedule.getActualTeacherId(), continueCourseTime);
-                //获取当前课程的签退时间
-                TeacherAttendance teacherAttendance = teacherAttendanceService.findByTeacherAttendanceInfo(lastCourse.getId(),courseSchedule.getActualTeacherId());
-                //如果上次课签退时间和当前签到时间间隔小于等于5分钟,清除上一次课程的教师签退记录
-                Date signOutTime = teacherAttendance.getSignOutTime();
-                log.info("signOutTime: signOutTime={}, date={}", signOutTime, date);
-                if(signOutTime != null && DateUtil.minutesBetween(signOutTime,date) <= Integer.parseInt(continueCourseTime)){
-                    teacherAttendanceService.cleanCourseTeacherSignOut(lastCourse.getId());
-                }else {
-                    //如果大于5分钟,不换课堂,对当前课程进行签到
-                    teacherAttendanceService.addTeacherAttendanceRecord(roomId.intValue(),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
-                }
-            }
-        }
-        //如果存在连堂课,并且跨课超过5分钟
-        log.info("signInRoomId: signInRoomId={}, userId={}", signInRoomId, userId);
+        }*/
         try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
-                teacherAttendanceService.addTeacherAttendanceRecord(signInRoomId.intValue(),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
+                teacherAttendanceService.addTeacherAttendanceRecord(roomId.intValue(),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
             }else {
-                studentAttendanceService.addStudentAttendanceRecord(signInRoomId.intValue(),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
+                studentAttendanceService.addStudentAttendanceRecord(roomId.intValue(),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
             }
         }catch (Exception e){
             e.printStackTrace();