Przeglądaj źródła

连堂课逻辑修改

zouxuan 4 lat temu
rodzic
commit
932bdce8a1

+ 19 - 32
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -314,7 +314,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					continueCourseTime = "5";
 				}
 				while (true){
-					//签到为空那么看下一条数据,
 					//获取当前课程的所有连堂课列表
 					String courseClassDate = DateUtil.format(cs.getClassDate(), DateUtil.DEFAULT_PATTERN);
 					String courseEndDateTime = DateUtil.format(cs.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
@@ -335,11 +334,18 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					String format3 = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 					Date date1 = DateUtil.stringToDate(format2 + " " + format3, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 					teacherAttendance.setSignOutTime(date1);
-					for (int i = 0; i < courseSchedules.size(); i++) {
+					Boolean isBreak = false;
+					for (int i = courseSchedules.size() - 1; i >= 0; i--) {
+						if(isBreak){
+							break;
+						}
 						courseClassDate = DateUtil.format(courseSchedules.get(i).getClassDate(), DateUtil.DEFAULT_PATTERN);
 						courseStartDateTime = DateUtil.format(courseSchedules.get(i).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 						Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-
+						//如果签退时间小于课程开始时间
+						if(date.before(startDateTime)){
+							continue;
+						}
 						//如果是接下来的第一节连堂课,并且签退时间不大于课程开始时间,那么跳出循环
 						if(i == 0 && !date.after(startDateTime)){
 							teacherAttendance.setSignOutTime(date);
@@ -348,34 +354,13 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 						courseEndDateTime = DateUtil.format(courseSchedules.get(i).getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 						Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 						//不是最后一节课
-						if(i < courseSchedules.size() - 1){
-							//大于课程结束时间
+						if(i != courseSchedules.size() - 1){
+							isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
+						}else {
 							if(date.after(endDateTime)){
-								String format = DateUtil.format(courseSchedules.get(i + 1).getClassDate(), DateUtil.DEFAULT_PATTERN);
-								String format1 = DateUtil.format(courseSchedules.get(i + 1).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-								Date stringToDate = DateUtil.stringToDate(format + " " + format1, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-								//大于下一节课开始时间
-								if(date.after(stringToDate)){
-									//当前课程签退时间为课程结束时间
-									upsetAttendance(userId,startDateTime,endDateTime,YesOrNoEnum.YES,courseSchedules.get(i));
-								}else {
-									//当前课程签退时间为退出时间
-									upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
-								}
+								isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
 							}else {
-								if(date.after(startDateTime)){
-									//小于课程结束时间,异常签退
-									upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,courseSchedules.get(i));
-								}
-								break;
-							}
-						}else {
-							if(date.after(startDateTime)){
-								if(date.after(endDateTime)){
-									upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
-								}else {
-									upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,courseSchedules.get(i));
-								}
+								isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,courseSchedules.get(i));
 							}
 						}
 					}
@@ -388,7 +373,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}
 	}
 
-	public void upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule){
+	public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule){
 		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseSchedule.getId());
 		if(teacherAttendance == null){
 			teacherAttendance = new TeacherAttendance();
@@ -403,12 +388,14 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setSignInTime(signInTime);
 			teacherAttendanceDao.insert(teacherAttendance);
 		}else {
-			teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
 			teacherAttendance.setSignOutStatus(status);
 			teacherAttendance.setSignOutTime(signOutTime);
-			teacherAttendance.setSignInTime(signInTime);
 			teacherAttendanceDao.update(teacherAttendance);
+			if(teacherAttendance.getSignInTime() != null){
+				return true;
+			}
 		}
+		return false;
 	}
 
 	@Override

+ 1 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2622,11 +2622,10 @@
     <select id="queryContinueCourse" resultMap="CourseSchedule">
         SELECT cs.*
         FROM course_schedule cs
-                 LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
         WHERE TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) >= 0
           AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
-          AND cs.class_group_id_ = #{courseSchedule.classGroupId}
+          AND cs.class_group_id_ = #{courseSchedule.classGroupId} AND NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_)
         LIMIT 1
     </select>
     <select id="queryRepairContinueCourse" resultMap="CourseSchedule">
@@ -3109,8 +3108,6 @@
 
     <select id="getLastCourse" resultMap="CourseSchedule">
         SELECT cs.* FROM course_schedule cs
-        LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = cs.actual_teacher_id_
-        LEFT JOIN student_attendance sa ON cs.id_ = sa.course_schedule_id_
         WHERE cs.class_group_id_ = #{classGroupId}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) &lt;= #{continueCourseTime}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) >= 0

+ 2 - 5
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -294,13 +294,10 @@ public class RoomServiceImpl implements RoomService {
                 //获取当前课程的所有连堂课列表
                 String courseClassDate = DateUtil.format(cs.getClassDate(), DateUtil.DEFAULT_PATTERN);
                 String courseEndDateTime = DateUtil.format(cs.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-                Date stringToDate = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+                //上课时间
                 cs = courseScheduleDao.queryContinueCourse(cs,continueCourseTime,courseClassDate + " " + courseEndDateTime);
                 if(cs != null){
-                    if(stringToDate.after(date)){
-                        courseId = cs.getId();
-                        break;
-                    }
+                    courseId = cs.getId();
                 }else {
                     break;
                 }