zouxuan 4 年之前
父节点
当前提交
3426f5d302

+ 0 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -271,14 +271,6 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
                       @Param("groupType")GroupType groupType);
 
     /**
-     * 连堂课签到,签退
-     * @param courseScheduleId
-     * @param startDateTime
-     * @param endDateTime
-     */
-    void cuntinueCourseSign(@Param("courseScheduleId")Long courseScheduleId,@Param("startDateTime")Date startDateTime,@Param("endDateTime")Date endDateTime);
-
-    /**
      * 清除学员签退信息
      * @param courseId
      * @param userId

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -246,4 +246,15 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	 * @return
 	 */
     Integer getAttendClassTime(Integer courseScheduleId);
+
+    /**
+     * @describe 获取连堂课里第一次签到的课程
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/26
+     * @time 16:58
+     * @param currentScheduleId:
+     * @return java.lang.Long
+     */
+	Long findFirstSign(Long currentScheduleId);
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java

@@ -30,6 +30,10 @@ public class StudentAttendance {
 	/** 课程计划 */
 	@ApiModelProperty(value = "课程计划",required = false)
 	private Long courseScheduleId;
+
+	/** 课程计划 */
+	@ApiModelProperty(value = "课程计划",required = false)
+	private Long currentScheduleId;
 	
 	/**  */
 	@ApiModelProperty(value = "学生编号",required = false)
@@ -72,6 +76,14 @@ public class StudentAttendance {
 	@ApiModelProperty(value = "当前课时")
 	private Integer currentClassTimes;
 
+	public Long getCurrentScheduleId() {
+		return currentScheduleId;
+	}
+
+	public void setCurrentScheduleId(Long currentScheduleId) {
+		this.currentScheduleId = currentScheduleId;
+	}
+
 	public Date getSignInTime() {
 		return signInTime;
 	}

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherAttendance.java

@@ -33,6 +33,10 @@ public class TeacherAttendance {
 	/**  */
 	@ApiModelProperty(value = "课程计划编号",required = false)
 	private Long courseScheduleId;
+
+	/**  */
+	@ApiModelProperty(value = "实际教室编号",required = false)
+	private Long currentScheduleId;
 	
 	/** 签到时间 */
 	@ApiModelProperty(value = "签到时间",required = false)
@@ -85,6 +89,14 @@ public class TeacherAttendance {
 	//处理结果
 	private Integer operator;
 
+	public Long getCurrentScheduleId() {
+		return currentScheduleId;
+	}
+
+	public void setCurrentScheduleId(Long currentScheduleId) {
+		this.currentScheduleId = currentScheduleId;
+	}
+
 	public Date getComplaintsTime() {
 		return complaintsTime;
 	}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/StudentAttendanceService.java

@@ -80,7 +80,7 @@ public interface StudentAttendanceService extends BaseService<Long, StudentAtten
 	 * @param userId
 	 * @param statusEnum
 	 */
-	void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum,SignStatusEnum signStatusEnum);
+	void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum,SignStatusEnum signStatusEnum,Long currentScheduleId);
 
 	/**
 	 * 某节课所有学员签到状态

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -33,12 +33,14 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 * @param userId: 用户编号
 	 * @param signStatus: 签到or签退
 	 * @param updateCourseScheduleStatus: 是否更新课程状态
+	 * @param currentScheduleId: 用户实际进入的教室编号
 	 * @return void
 	 */
 	void addTeacherAttendanceRecord(Integer courseScheduleId,
 									Integer userId,
 									SignStatusEnum signStatus,
-									boolean updateCourseScheduleStatus);
+									boolean updateCourseScheduleStatus,
+									Long currentScheduleId);
 
 	/**
 	 * 获取教师个人的签到记录

+ 21 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -470,7 +470,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum, SignStatusEnum signStatusEnum) {
+    public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum, SignStatusEnum signStatusEnum,Long currentScheduleId) {
         CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
         ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId, 0);
         StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseScheduleId);
@@ -483,6 +483,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
             studentAttendance.setGroupType(classGroup.getGroupType());
             studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
             studentAttendance.setUserId(userId);
+            studentAttendance.setCurrentScheduleId(currentScheduleId);
             studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
             if (signStatusEnum == SignStatusEnum.SIGN_IN) {
                 if (courseSchedule.getStudentNum() == null) {
@@ -492,6 +493,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
             }
             studentAttendanceDao.insert(studentAttendance);
         } else {
+            studentAttendance.setCurrentScheduleId(currentScheduleId);
             studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
             studentAttendance.setUpdateTime(date);
         }
@@ -547,27 +549,35 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
             String courseStartDateTime;
             String courseEndDateTime;
             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);
+                CourseSchedule schedule = courseSchedules.get(i);
+                courseClassDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+                courseStartDateTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
                 Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-                courseEndDateTime = DateUtil.format(courseSchedules.get(i).getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+                courseEndDateTime = DateUtil.format(schedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
                 Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
                 //不是最后一节课
                 if(i != courseSchedules.size() - 1){
-                    isBreak = upsetAttendance(userId,startDateTime,endDateTime,courseSchedules.get(i));
+                    isBreak = upsetAttendance(userId,startDateTime,endDateTime,schedule,currentScheduleId);
                 }else {
-                    isBreak = upsetAttendance(userId,startDateTime,date,courseSchedules.get(i));
+                    isBreak = upsetAttendance(userId,startDateTime,date,schedule,currentScheduleId);
                 }
             }
         }
     }
 
-    public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,CourseSchedule courseSchedule){
+    public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,CourseSchedule courseSchedule,Long currentScheduleId){
         StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseSchedule.getId().intValue());
+        Boolean flag = false;
+        Long courseId = teacherAttendanceDao.findFirstSign(currentScheduleId);
+        //如果当前课程是第一次签到的课程那么不更新签到时间,并且退出下次循环
+        if(courseId != null && courseId.equals(courseSchedule.getId())){
+            flag = true;
+        }
         if(studentAttendance == null){
             studentAttendance = new StudentAttendance();
             studentAttendance.setSignOutTime(signOutTime);
@@ -579,20 +589,18 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
             studentAttendance.setCourseScheduleId(courseSchedule.getId());
             studentAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
             studentAttendance.setGroupType(courseSchedule.getGroupType());
+            studentAttendance.setCurrentScheduleId(currentScheduleId);
             studentAttendanceDao.insert(studentAttendance);
         }else {
             studentAttendance.setSignOutTime(signOutTime);
+            studentAttendance.setCurrentScheduleId(currentScheduleId);
             studentAttendance.setStatus(StudentAttendanceStatusEnum.NORMAL);
-            Date signInTime1 = studentAttendance.getSignInTime();
-            if(signInTime1 == null){
+            if(!flag){
                 studentAttendance.setSignInTime(signInTime);
             }
             studentAttendanceDao.update(studentAttendance);
-            if(signInTime1 != null){
-                return true;
-            }
         }
-        return false;
+        return flag;
     }
 
     @Override

+ 21 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -246,7 +246,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void addTeacherAttendanceRecord(Integer courseScheduleId, Integer userId, SignStatusEnum signStatus, boolean updateCourseScheduleStatus) {
+	public void addTeacherAttendanceRecord(Integer courseScheduleId, Integer userId, SignStatusEnum signStatus, boolean updateCourseScheduleStatus,Long currentScheduleId) {
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseScheduleId.longValue());
 		ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId,0);
 		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
@@ -259,8 +259,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
 			teacherAttendance.setClassGroupId(classGroup.getId());
 			teacherAttendance.setTeacherId(userId);
+			teacherAttendance.setCurrentScheduleId(currentScheduleId);
 			teacherAttendanceDao.insert(teacherAttendance);
 		}else {
+			teacherAttendance.setCurrentScheduleId(currentScheduleId);
 			teacherAttendance.setGroupType(courseSchedule.getGroupType());
 			teacherAttendance.setTeacherId(userId);
 			teacherAttendance.setClassGroupId(classGroup.getId());
@@ -336,27 +338,34 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				if(isBreak){
 					break;
 				}
-				courseClassDate = DateUtil.format(courseSchedules.get(i).getClassDate(), DateUtil.DEFAULT_PATTERN);
-				courseStartDateTime = DateUtil.format(courseSchedules.get(i).getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				CourseSchedule schedule = courseSchedules.get(i);
+				courseClassDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+				courseStartDateTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 				Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-				courseEndDateTime = DateUtil.format(courseSchedules.get(i).getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				courseEndDateTime = DateUtil.format(schedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 				Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 				//不是最后一节课
 				if(i != courseSchedules.size() - 1){
-					isBreak = upsetAttendance(userId,startDateTime,endDateTime,YesOrNoEnum.YES,courseSchedules.get(i));
+					isBreak = upsetAttendance(userId,startDateTime,endDateTime,YesOrNoEnum.YES,schedule,currentScheduleId);
 				}else {
 					if(date.after(endDateTime)){
-						isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,courseSchedules.get(i));
+						isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,schedule,currentScheduleId);
 					}else {
-						isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,courseSchedules.get(i));
+						isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,schedule,currentScheduleId);
 					}
 				}
 			}
 		}
 	}
 
-	public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule){
+	public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule,Long currentScheduleId){
 		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseSchedule.getId());
+		Boolean flag = false;
+		Long courseId = teacherAttendanceDao.findFirstSign(currentScheduleId);
+		//如果当前课程是第一次签到的课程那么不更新签到时间,并且退出下次循环
+		if(courseId != null && courseId.equals(courseSchedule.getId())){
+			flag = true;
+		}
 		if(teacherAttendance == null){
 			teacherAttendance = new TeacherAttendance();
 			teacherAttendance.setGroupType(courseSchedule.getGroupType());
@@ -368,21 +377,19 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setSignOutStatus(status);
 			teacherAttendance.setSignOutTime(signOutTime);
 			teacherAttendance.setSignInTime(signInTime);
+			teacherAttendance.setCurrentScheduleId(currentScheduleId);
 			teacherAttendanceDao.insert(teacherAttendance);
 		}else {
 			teacherAttendance.setSignOutStatus(status);
 			teacherAttendance.setSignOutTime(signOutTime);
-			Date signInTime1 = teacherAttendance.getSignInTime();
-			if(signInTime1 == null){
+			teacherAttendance.setCurrentScheduleId(currentScheduleId);
+			if(!flag){
 				teacherAttendance.setSignInTime(signInTime);
 				teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
 			}
 			teacherAttendanceDao.update(teacherAttendance);
-			if(signInTime1 != null){
-				return true;
-			}
 		}
-		return false;
+		return flag;
 	}
 
 	@Override

+ 9 - 9
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -25,6 +25,8 @@
         <result column="update_time_" property="updateTime"/>
         <result column="remark_" property="remark"/>
         <result column="current_class_times_" property="currentClassTimes"/>
+        <result column="current_class_times_" property="currentClassTimes"/>
+        <result column="current_schedule_id_" property="currentScheduleId"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -42,15 +44,15 @@
             keyColumn="id" keyProperty="id">
         INSERT INTO student_attendance
         (group_type_,music_group_id_,class_group_id_,course_schedule_id_,user_id_,teacher_id_,status_,create_time_,
-        update_time_,remark_,current_class_times_,sign_in_time_,sign_out_time_)
+        update_time_,remark_,current_class_times_,sign_in_time_,sign_out_time_,current_schedule_id_)
         VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
         #{courseScheduleId},#{userId},#{teacherId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now(),
-        #{remark},#{currentClassTimes},#{signInTime},#{signOutTime})
+        #{remark},#{currentClassTimes},#{signInTime},#{signOutTime},#{currentScheduleId})
     </insert>
 
     <insert id="addStudentAttendances" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
       INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_,
-      user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,sign_out_time_)
+      user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,sign_out_time_,current_schedule_id_)
       VALUES
 	  <foreach collection="list" item="studentAttendance" separator=",">
           (#{studentAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
@@ -58,14 +60,9 @@
           #{studentAttendance.userId},#{studentAttendance.teacherId},
           #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.updateTime},
           #{studentAttendance.remark},#{studentAttendance.currentClassTimes},
-          #{studentAttendance.signInTime},#{studentAttendance.signOutTime})
+          #{studentAttendance.signInTime},#{studentAttendance.signOutTime},#{studentAttendance.currentScheduleId})
       </foreach>
     </insert>
-    <insert id="cuntinueCourseSign">
-        INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_,
-        user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,sign_out_time_)
-        VALUES()
-    </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentAttendance">
@@ -74,6 +71,9 @@
             <if test="status != null">
                 status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="currentScheduleId != null">
+                current_schedule_id_ = #{currentScheduleId},
+            </if>
             <if test="signOutTime != null">
                 sign_out_time_ = #{signOutTime},
             </if>

+ 14 - 6
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -29,6 +29,7 @@
         <result column="dispose_content_" property="disposeContent"/>
         <result column="operator_" property="operator"/>
         <result column="complaints_time_" property="complaintsTime"/>
+        <result column="current_schedule_id_" property="currentScheduleId"/>
     </resultMap>
     
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
@@ -51,19 +52,19 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO teacher_attendance
-        (id_,group_type_,teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,sign_in_status_,remark_,create_time_,sign_out_time_,
-        sign_out_status_,current_class_times_,sign_in_longitude_latitude_,sign_out_longitude_latitude_)
-        VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{teacherId},
+        (group_type_,teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,sign_in_status_,remark_,create_time_,sign_out_time_,
+        sign_out_status_,current_class_times_,sign_in_longitude_latitude_,sign_out_longitude_latitude_,current_schedule_id_)
+        VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{teacherId},
         #{musicGroupId},#{classGroupId},#{courseScheduleId},#{signInTime},#{signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{remark},
         now(),#{signOutTime},#{signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{currentClassTimes},#{signInLongitudeLatitude},#{signOutLongitudeLatitude})
+        #{currentClassTimes},#{signInLongitudeLatitude},#{signOutLongitudeLatitude},#{currentScheduleId})
     </insert>
 
     <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO teacher_attendance
         (group_type_,teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,sign_in_status_,
-        remark_,create_time_,sign_out_time_,sign_out_status_,sign_in_longitude_latitude_,sign_out_longitude_latitude_)
+        remark_,create_time_,sign_out_time_,sign_out_status_,sign_in_longitude_latitude_,sign_out_longitude_latitude_,current_schedule_id_)
         VALUE
         <foreach collection="teacherAttendances" item="teacherAttendance" separator=",">
             (#{teacherAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
@@ -72,7 +73,7 @@
             #{teacherAttendance.signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{teacherAttendance.remark},now(),#{teacherAttendance.signOutTime},
             #{teacherAttendance.signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-            #{teacherAttendance.signInLongitudeLatitude},#{teacherAttendance.signOutLongitudeLatitude})
+            #{teacherAttendance.signInLongitudeLatitude},#{teacherAttendance.signOutLongitudeLatitude},#{teacherAttendance.currentScheduleId})
         </foreach>
     </insert>
 
@@ -83,6 +84,9 @@
             <if test="signInStatus != null">
                 sign_in_status_ = #{signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="currentScheduleId != null">
+                current_schedule_id_ = #{currentScheduleId},
+            </if>
             <if test="remark != null">
                 remark_ = #{remark},
             </if>
@@ -529,6 +533,10 @@
         LEFT JOIN student_attendance sa ON ta.course_schedule_id_ = sa.course_schedule_id_
         WHERE ta.course_schedule_id_ = #{courseScheduleId}
     </select>
+    <select id="findFirstSign" resultType="java.lang.Long">
+        SELECT ta.course_schedule_id_ FROM teacher_attendance ta
+        WHERE ta.current_schedule_id_ = #{currentScheduleId} AND ta.sign_in_time_ IS NOT NULL ORDER BY ta.sign_in_time_ ASC LIMIT 1
+    </select>
 
     <update id="updateViPSignOutStatus" parameterType="string">
     	UPDATE teacher_attendance SET sign_out_status_ = 1,sign_out_time_= now()

+ 13 - 6
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -42,6 +42,7 @@ import com.ym.whiteboard.WhiteBoardHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
@@ -90,6 +91,8 @@ public class RoomServiceImpl implements RoomService {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private SysConfigDao sysConfigDao;
+    @Autowired
+    private RedisTemplate<String,String> redisTemplate;
 
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.SERIALIZABLE)
     @Override
@@ -123,6 +126,8 @@ public class RoomServiceImpl implements RoomService {
             }
         }
         Long courseId = Long.parseLong(roomId);
+        //记录用户实际选择的房间
+        redisTemplate.opsForValue().set(courseId.toString(),courseSchedule.getId().toString());
         log.info("joinRoom current: roomId={}, userId={}", roomId, userId);
         if(courseSchedule.getGroupType() == GroupType.COMM){
             roomId = "I" + roomId;
@@ -277,7 +282,9 @@ public class RoomServiceImpl implements RoomService {
         log.info("signInSuccess: roomId={}, userId={}", roomId, userId);
         Integer userIdInt = Integer.parseInt(userId);
         Long courseId = Long.parseLong(roomId.substring(1));
-        CourseSchedule schedule = courseScheduleDao.get(courseId);
+
+        Long currentRoomId = Long.parseLong(redisTemplate.opsForValue().get(roomId));
+        /*CourseSchedule schedule = courseScheduleDao.get(courseId);
         Date date = new Date();
         String classDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
         String endClassTime = DateUtil.format(schedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
@@ -302,12 +309,12 @@ public class RoomServiceImpl implements RoomService {
                     break;
                 }
             }
-        }
+        }*/
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
         if(roleEnum == RoleTeacher){
-            teacherAttendanceService.addTeacherAttendanceRecord(courseId.intValue(),userIdInt, SignStatusEnum.SIGN_IN,true);
+            teacherAttendanceService.addTeacherAttendanceRecord(courseId.intValue(),userIdInt, SignStatusEnum.SIGN_IN,true,currentRoomId);
         }else {
-            studentAttendanceService.addStudentAttendanceRecord(courseId.intValue(),userIdInt, StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
+            studentAttendanceService.addStudentAttendanceRecord(courseId.intValue(),userIdInt, StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN,currentRoomId);
         }
     }
 
@@ -346,9 +353,9 @@ public class RoomServiceImpl implements RoomService {
         Long scheduleId = Long.parseLong(roomId.substring(1));
         if(roleEnum == RoleTeacher){
             courseScheduleStudentPaymentDao.adjustPlayMidi(scheduleId.intValue(),null,null);
-            teacherAttendanceService.addTeacherAttendanceRecord(scheduleId.intValue(),Integer.parseInt(userId), SignStatusEnum.SIGN_OUT,true);
+            teacherAttendanceService.addTeacherAttendanceRecord(scheduleId.intValue(),Integer.parseInt(userId), SignStatusEnum.SIGN_OUT,true,scheduleId);
         }else {
-            studentAttendanceService.addStudentAttendanceRecord(scheduleId.intValue(),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
+            studentAttendanceService.addStudentAttendanceRecord(scheduleId.intValue(),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT,scheduleId);
         }
         Room room = roomDao.findByRid(roomId);
         if (room == null) {