Jelajahi Sumber

学员新增签到签退

zouxuan 5 tahun lalu
induk
melakukan
4bb45a8ab0

+ 20 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java

@@ -54,7 +54,10 @@ public class StudentAttendance {
 	/** 状态(正常、旷课、请假) */
 	@ApiModelProperty(value = "状态(正常、旷课、请假、休学)",required = false)
 	private StudentAttendanceStatusEnum status;
-	
+
+	private Date signInTime;
+
+	private Date signOutTime;
 	/**  */
 	private java.util.Date createTime;
 	/**  */
@@ -67,6 +70,22 @@ public class StudentAttendance {
 	@ApiModelProperty(value = "当前课时")
 	private Integer currentClassTimes;
 
+	public Date getSignInTime() {
+		return signInTime;
+	}
+
+	public void setSignInTime(Date signInTime) {
+		this.signInTime = signInTime;
+	}
+
+	public Date getSignOutTime() {
+		return signOutTime;
+	}
+
+	public void setSignOutTime(Date signOutTime) {
+		this.signOutTime = signOutTime;
+	}
+
 	public String getSubjectName() {
 		return subjectName;
 	}

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

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.CourseScheduleResponse;
 import com.ym.mec.biz.dal.dto.StudentAttendanceDto;
 import com.ym.mec.biz.dal.dto.StudentPersonalAttendanceDto;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
+import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -79,7 +80,7 @@ public interface StudentAttendanceService extends BaseService<Long, StudentAtten
 	 * @param userId
 	 * @param statusEnum
 	 */
-	void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum);
+	void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum,SignStatusEnum signStatusEnum);
 
 	/**
 	 * 某节课所有学员签到状态

+ 42 - 32
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -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

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

@@ -17,6 +17,8 @@
         <result column="subject_name_" property="subjectName"/>
         <result column="phone_" property="phone"/>
         <result column="teacher_id_" property="teacherId"/>
+        <result column="sign_in_time_" property="signInTime"/>
+        <result column="sign_out_time_" property="signOutTime"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
@@ -38,20 +40,23 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentAttendance" useGeneratedKeys="true"
             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_,remark_,current_class_times_)
-        VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},#{courseScheduleId},#{userId},#{teacherId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{remark},#{currentClassTimes})
+        (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(#{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})
     </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_)
+      user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,sign_out_time_)
       VALUES
 	  <foreach collection="list" item="studentAttendance" separator=",">
           (#{studentAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
           #{studentAttendance.musicGroupId},#{studentAttendance.classGroupId},#{studentAttendance.courseScheduleId},
           #{studentAttendance.userId},#{studentAttendance.teacherId},
           #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.updateTime},
-          #{studentAttendance.remark},#{studentAttendance.currentClassTimes})
+          #{studentAttendance.remark},#{studentAttendance.currentClassTimes}),
+          #{studentAttendance.signInTime},#{studentAttendance.signOutTime})
       </foreach>
     </insert>
 
@@ -62,6 +67,12 @@
             <if test="status != null">
                 status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="signOutTime != null">
+                sign_out_time_ = #{signOutTime},
+            </if>
+            <if test="signInTime != null">
+                sign_in_time_ = #{signInTime},
+            </if>
             <if test="userId != null">
                 user_id_ = #{userId},
             </if>
@@ -98,6 +109,12 @@
 	            <if test="item.status != null">
 	                status_ = #{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 	            </if>
+                <if test="item.signOutTime != null">
+                    sign_out_time_ = #{item.signOutTime},
+                </if>
+                <if test="item.signInTime != null">
+                    sign_in_time_ = #{item.signInTime},
+                </if>
 	            <if test="item.userId != null">
 	                user_id_ = #{item.userId},
 	            </if>

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

@@ -21,7 +21,6 @@ import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.security.SecurityUtils;
 import com.ym.mec.im.IMHelper;
 import com.ym.mec.im.message.*;
 import com.ym.pojo.*;
@@ -103,7 +102,7 @@ public class RoomServiceImpl implements RoomService {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
                 teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
             }else {
-                studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL);
+                studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
             }
         }catch (Exception e){
             e.printStackTrace();
@@ -253,6 +252,8 @@ public class RoomServiceImpl implements RoomService {
         try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
                 teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(4)),user.getId(), SignStatusEnum.SIGN_OUT,true);
+            }else {
+                studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(4)),user.getId(), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
             }
         }catch (Exception e){
             e.printStackTrace();
@@ -1139,6 +1140,8 @@ public class RoomServiceImpl implements RoomService {
             try {
                 if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
                     teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(4)),Integer.parseInt(userId), SignStatusEnum.SIGN_OUT,true);
+                }else {
+                    studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(4)),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
                 }
             }catch (Exception e){
                 e.printStackTrace();