Sfoglia il codice sorgente

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 4 anni fa
parent
commit
2d77e229a1

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

+ 11 - 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,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 if(Objects.nonNull(group)){
                     dataList.get(i).setGroupName(group.getGroupName());
                 }
+				dataList.get(i).setLeaveStudentNum(0);
+				dataList.get(i).setStudentNum(0);
+                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());
+					dataList.get(i).setStudentNum((int) courseStudentAttendances.stream().filter(s->StudentAttendanceStatusEnum.NORMAL.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">

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -273,14 +273,16 @@
 	</select>
     <select id="countCourseStudentNum" resultType="java.util.Map">
 		SELECT
-			course_schedule_id_ AS 'key',
-			COUNT( DISTINCT user_id_ ) AS 'value'
+			sa.course_schedule_id_ AS 'key',
+			COUNT( DISTINCT sa.user_id_ ) AS 'value'
 		FROM
-			course_schedule_student_payment
+			course_schedule_student_payment 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 course_schedule_id_ IN
 			<foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
 				#{courseId}
 			</foreach>
+			AND cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL')
 		GROUP BY
 			course_schedule_id_
 	</select>

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

@@ -479,14 +479,16 @@
         LEFT JOIN student_registration sr ON sr.user_id_ = cssp.user_id_ AND cssp.music_group_id_ = sr.music_group_id_
         LEFT JOIN `subject` s ON s.id_ = cg.subject_id_list_
         LEFT JOIN `subject` s1 ON s1.id_ = sr.actual_subject_id_
-        WHERE cssp.course_schedule_id_ = #{search}
+        LEFT JOIN class_group_student_mapper cgsm ON cssp.class_group_id_=cgsm.class_group_id_ AND cssp.user_id_=cgsm.user_id_
+        WHERE cssp.course_schedule_id_ = #{search} AND cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL')
         ORDER BY sa.id_ DESC
         <include refid="global.limit"/>
     </select>
     <select id="countStudentAttendance" resultType="java.lang.Integer">
-        SELECT COUNT(id_)
-        FROM course_schedule_student_payment
-        WHERE course_schedule_id_ = #{search}
+        SELECT COUNT(cssp.id_)
+        FROM course_schedule_student_payment cssp
+        LEFT JOIN class_group_student_mapper cgsm ON cssp.class_group_id_=cgsm.class_group_id_ AND cssp.user_id_=cgsm.user_id_
+        WHERE course_schedule_id_ = #{search} AND cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL')
     </select>
     <select id="findByCourseId" resultMap="StudentAttendance">
         SELECT * FROM student_attendance WHERE course_schedule_id_=#{courseId}
@@ -497,4 +499,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>