Browse Source

fix: 教务端学生签到记录查询排除退课学员

Joburgess 4 years ago
parent
commit
6cda6e2c68

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

@@ -284,4 +284,13 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      * @param userId
      */
     void cleanCourseStudentSignOut(@Param("courseId") Long courseId, @Param("userId") Integer userId);
+
+    /**
+     * @describe 获取课程的学员签到记录(排除退学学员)
+     * @author Joburgess
+     * @date 2020.09.15
+     * @param courseIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentAttendance>
+     */
+    List<StudentAttendance> getWithCoursesAndExcludeQuitStudent(@Param("courseIds") List<Long> courseIds);
 }

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -907,7 +907,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             List<Map<Integer, Integer>> courseStudentNumMaps = courseScheduleStudentPaymentDao.countCourseStudentNum(allCourseScheduleIds);
             Map<Long, Long> courseStudentNumMap = MapUtil.convertIntegerMap(courseStudentNumMaps);
 
-            List<Integer> teacherIds=new ArrayList<>();
+			List<StudentAttendance> studentAttendances = studentAttendanceDao.getWithCoursesAndExcludeQuitStudent(allCourseScheduleIds);
+			Map<Long, List<StudentAttendance>> courseStudentAttendanceMap = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
+
+			List<Integer> teacherIds=new ArrayList<>();
             for (CourseScheduleDto courseScheduleEndDto : dataList) {
                 teacherIds.add(courseScheduleEndDto.getActualTeacherId());
             }
@@ -923,6 +926,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 if(Objects.nonNull(group)){
                     dataList.get(i).setGroupName(group.getGroupName());
                 }
+                if(courseStudentAttendanceMap.containsKey(dataList.get(i).getId())){
+					List<StudentAttendance> courseStudentAttendances = courseStudentAttendanceMap.get(dataList.get(i).getId());
+					dataList.get(i).setLeaveStudentNum((int) courseStudentAttendances.stream().filter(s->StudentAttendanceStatusEnum.LEAVE.equals(s.getStatus())).count());
+				}
             }
         }
         if (count == 0) {

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

@@ -516,31 +516,31 @@
 
     <select id="getCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT
-        cs.id_ seal_class_id_,
-        cg.name_,
-        cs.type_,
-        cs.id_,
-        cs.class_date_,
-        CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
-        CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
-        cs.actual_teacher_id_,
-        cs.status_,
-        cs.student_num_,
-        cs.leave_student_num_,
-        cs.teach_mode_,
-        cs.music_group_id_,
-        cs.group_type_,
-        cs.class_group_id_,
-        cg.student_num_ total_student_num_,
-        su.real_name_ teacher_name_,
-        IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
-        s.name_ school_name_
+            cs.id_ seal_class_id_,
+            cg.name_,
+            cs.type_,
+            cs.id_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.actual_teacher_id_,
+            cs.status_,
+            cs.student_num_,
+            cs.leave_student_num_,
+            cs.teach_mode_,
+            cs.music_group_id_,
+            cs.group_type_,
+            cs.class_group_id_,
+            cg.student_num_ total_student_num_,
+            su.real_name_ teacher_name_,
+            IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
+            s.name_ school_name_
         FROM
-        course_schedule cs
-        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-        LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
-        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=cs.actual_teacher_id_
-        LEFT JOIN school s ON cs.schoole_id_=s.id_
+            course_schedule cs
+            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=cs.actual_teacher_id_
+            LEFT JOIN school s ON cs.schoole_id_=s.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         <if test="classGroupIds != null and organIdList!=null">

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

@@ -497,4 +497,13 @@
             #{courseId}
         </foreach>
     </select>
+
+    <select id="getWithCoursesAndExcludeQuitStudent" resultMap="StudentAttendance">
+        SELECT sa.* FROM student_attendance sa
+        LEFT JOIN class_group_student_mapper cgsm ON sa.class_group_id_=cgsm.class_group_id_ AND sa.user_id_=cgsm.user_id_
+        WHERE cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL') AND course_schedule_id_ IN
+        <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+            #{courseId}
+        </foreach>
+    </select>
 </mapper>