Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
4f09377737

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -311,4 +311,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     StudentRegistration findStudentByMusicGroupIdAndUserId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
+
+    /**
+     * 获取学员所在乐团
+     * @param studentId
+     * @return
+     */
+    List<String> queryStudentMusicGroup(Integer studentId);
 }

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

@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
@@ -300,4 +301,11 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     SysUser getUser(int userId);
+
+    /**
+     * 获取教师基本信息
+     * @param teacherId
+     * @return
+     */
+    List<BasicUserDto> queryTeacherBaseInfo(@Param("teacherId")Set<Integer> teacherId);
 }

+ 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);
 
 	/**
 	 * 某节课所有学员签到状态

+ 17 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1083,7 +1083,23 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     public List<BasicUserDto> findTeachersByStuId(Integer studentId) {
-        return musicGroupDao.findTeachersByStuId(studentId);
+        List<BasicUserDto> teachersByStuId = musicGroupDao.findTeachersByStuId(studentId);
+        //获取学员所在乐团列表
+        List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(studentId);
+        if(musicGroupIds != null && musicGroupIds.size() > 0){
+            Set<Integer> teacherId = new HashSet<>();
+            List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
+            musicGroups.forEach(e->{
+                teacherId.add(e.getDirectorUserId());
+                teacherId.add(e.getOperatorUserId());
+                teacherId.add(e.getEducationalTeacherId());
+                teacherId.add(e.getTeamTeacherId());
+            });
+            Set<Integer> collect = teachersByStuId.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+            teacherId.addAll(collect);
+            return teacherDao.queryTeacherBaseInfo(teacherId);
+        }
+        return teachersByStuId;
     }
 
     @Override

+ 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

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

@@ -300,7 +300,7 @@
 		LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
 		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
 		WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId}
-		 OR director_user_id_ = #{userId})
+		 OR director_user_id_ = #{userId}) AND mg.status_ IN ('APPLY','PAY','PREPARE','PROGRESS')
 		<if test="search != null and search != ''">
 			AND mg.name_ LIKE CONCAT('%',#{search},'%')
 		</if>

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

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -599,4 +599,8 @@
         LEFT JOIN cooperation_organ co ON mg.cooperation_organ_id_ = co.id_
         WHERE sr.music_group_id_ = #{musicGroupId} AND sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT' LIMIT 1
     </select>
+    <select id="queryStudentMusicGroup" resultType="java.lang.String">
+        SELECT DISTINCT sr.music_group_id_ FROM student_registration sr
+        WHERE sr.user_id_ = #{studentId} AND sr.music_group_status_ != 'QUIT'
+    </select>
 </mapper>

+ 16 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -779,4 +779,20 @@
         FROM sys_user su
         WHERE su.id_ = #{id} LIMIT 1
     </select>
+    <select id="queryTeacherBaseInfo"  resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
+        SELECT
+        su.real_name_ username_,
+        su.id_ user_id_,
+        su.avatar_ head_url_,
+        gender_,
+        GROUP_CONCAT(s.name_) subject_name_
+        FROM sys_user su
+        LEFT JOIN teacher t ON su.id_ = t.id_
+        LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
+        WHERE su.id_ IN
+        <foreach collection="teacherId" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY su.id_
+    </select>
 </mapper>

+ 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();