Browse Source

fix:老师查看作业列表

liujunchi 3 years ago
parent
commit
aee7afb9ca

+ 12 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseHomeworkDao.java

@@ -107,6 +107,16 @@ public interface CourseHomeworkDao extends BaseMapper<CourseHomework> {
 	 * @param courseId 课程id
 	 * @return
 	 */
-	IPage<StudentHomeworkVo> selectStudentHomeworkByCourseId(@Param("page") IPage<StudentHomeworkVo> page,
-															 @Param("courseId") Long courseId);
+	IPage<StudentHomeworkVo> selectStudentHomeworkByCourseId(@Param("page") IPage<StudentHomeworkVo> page, @Param(
+			"courseId") Long courseId);
+
+	/**
+	 * 查询旷课信息
+	 *
+	 * @param practiceRecord
+	 * @param studentId
+	 * @return
+	 */
+	List<CourseHomeworkVo> selectAbsenteeism(@Param("practiceRecord") List<CourseHomeworkVo> practiceRecord,
+											 @Param("studentId") Long studentId);
 }

+ 72 - 18
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseHomeworkServiceImpl.java

@@ -34,10 +34,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -74,25 +72,81 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
         if (CollectionUtils.isEmpty(records)) {
             return courseHomeworkVoIPage;
         }
+        List<CourseHomeworkVo> practiceRecord = records.stream()
+                            .filter(courseHomeworkVo -> courseHomeworkVo.getType().getCode().equals(CourseScheduleEnum.PRACTICE.getCode()))
+                            .collect(Collectors.toList());
+
+        // 学生信息 陪练课展示
+        List<CourseHomeworkVo> studentInfoList = new ArrayList<>();
+        if (CollectionUtils.isEmpty(practiceRecord)) {
+            studentInfoList = new ArrayList<>();
+        } else{
+            baseMapper.selectStudentInfo(practiceRecord);
+        }
+        if (CollectionUtils.isEmpty(studentInfoList)) {
+            studentInfoList = new ArrayList<>();
+        }
+        Map<Long, List<CourseHomeworkVo>> studentCollect = studentInfoList.stream()
+                .collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
 
-        // 学生信息
-        List<CourseHomeworkVo> studentInfoList = baseMapper.selectStudentInfo(records);
-
-        // 旷课状态 和老师信息
+        // 老师信息
         List<CourseHomeworkVo> teacherInfoList = baseMapper.selectTeacherInfo(records);
+        if (CollectionUtils.isEmpty(teacherInfoList)) {
+            teacherInfoList = new ArrayList<>();
+        }
+        Map<Long, List<CourseHomeworkVo>> teacherCollect = teacherInfoList.stream()
+                      .collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
+
+        // 旷课状态  学生端展示
+        Map<Long, List<CourseHomeworkVo>> absenteeismCollect = new HashMap<>();
+        if (query.getStudentId() != null) {
+            List<CourseHomeworkVo> absenteeismList = baseMapper.selectAbsenteeism(records,query.getStudentId());
+            if (CollectionUtils.isEmpty(absenteeismList)) {
+                absenteeismList = new ArrayList<>();
+            }
+            absenteeismCollect = absenteeismList.stream().collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
+        }
+
 
         // 声部信息
         List<CourseHomeworkVo> subjectList = baseMapper.selectSubjectAndGroupInfoList(records);
-        for (int i = 0; i < records.size(); i++) {
-            records.get(i).setStudentId(studentInfoList.get(i).getStudentId());
-            records.get(i).setStudentAvatar(studentInfoList.get(i).getStudentAvatar());
-            records.get(i).setStudentName(studentInfoList.get(i).getStudentName());
-            records.get(i).setSubjectName(subjectList.get(i).getSubjectName());
-            records.get(i).setTeacherAvatar(teacherInfoList.get(i).getTeacherAvatar());
-            records.get(i).setTeacherId(teacherInfoList.get(i).getTeacherId());
-            records.get(i).setTeacherName(teacherInfoList.get(i).getTeacherName());
-            records.get(i).setAbsenteeism(teacherInfoList.get(i).getAbsenteeism());
-            records.get(i).setCourseGroupName(subjectList.get(i).getCourseGroupName());
+
+        if (CollectionUtils.isEmpty(subjectList)) {
+            subjectList = new ArrayList<>();
+        }
+        Map<Long, List<CourseHomeworkVo>>subjectCollect = subjectList.stream()
+                      .collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
+
+        for (CourseHomeworkVo record : records) {
+            List<CourseHomeworkVo> courseHomeworkVoList = studentCollect.get(record.getCourseId());
+            CourseHomeworkVo courseHomeworkVo;
+            if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
+                courseHomeworkVo = courseHomeworkVoList.get(0);
+                record.setStudentId(courseHomeworkVo.getStudentId());
+                record.setStudentAvatar(courseHomeworkVo.getStudentAvatar());
+                record.setStudentName(courseHomeworkVo.getStudentName());
+            }
+            courseHomeworkVoList = teacherCollect.get(record.getCourseId());
+            if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
+                courseHomeworkVo = courseHomeworkVoList.get(0);
+                record.setTeacherId(courseHomeworkVo.getTeacherId());
+                record.setTeacherName(courseHomeworkVo.getTeacherName());
+                record.setTeacherAvatar(courseHomeworkVo.getTeacherAvatar());
+            }
+            courseHomeworkVoList = absenteeismCollect.get(record.getCourseId());
+            if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
+                courseHomeworkVo = courseHomeworkVoList.get(0);
+                record.setAbsenteeism(courseHomeworkVo.getAbsenteeism());
+            } else {
+                record.setAbsenteeism(YesOrNoEnum.NO);
+            }
+            courseHomeworkVoList = subjectCollect.get(record.getCourseId());
+            if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
+                courseHomeworkVo = courseHomeworkVoList.get(0);
+                record.setCourseGroupName(courseHomeworkVo.getCourseGroupName());
+                record.setSubjectName(courseHomeworkVo.getSubjectName());
+                record.setClassNum(courseHomeworkVo.getClassNum());
+            }
         }
         return courseHomeworkVoIPage;
     }

+ 23 - 23
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -223,8 +223,8 @@
     </select>
 
 	<select id="selectStudentInfo" resultType="com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo">
-        select distinct
-        cs.id_,
+        select
+        cs.id_ as courseId,
         cssp.user_id_ as studentId
         ,su.username_ as studentName
         ,su.avatar_ as studentAvatar
@@ -239,19 +239,15 @@
                 </foreach>
             </if>
         </where>
-        <if test="records != null and records.size() != 0">
-            order by field(cs.id_,
-            <foreach collection="records" separator="," close=")" open="" item="item" >
-                #{item.courseId}
-            </foreach>
-        </if>
     </select>
 
 	<select id="selectSubjectAndGroupInfoList" resultType="com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo">
         select
+        cs.id_ as courseId,
         s.name_ as subjectName
         ,cg.name_ as courseGroupName
         ,cg.background_pic_ as backgroundPic
+        ,cs.class_num_ as classNum
         from course_schedule cs
         left join course_group cg on cs.course_group_id_ = cg.id_
         left join subject s on s.id_ = cg.subject_id_
@@ -263,23 +259,16 @@
                 </foreach>
             </if>
         </where>
-        <if test="records != null and records.size() != 0">
-            order by field(cs.id_,
-            <foreach collection="records" separator="," close=")" open="" item="item" >
-                #{item.courseId}
-            </foreach>
-        </if>
     </select>
 
 	<select id="selectTeacherInfo" resultType="com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo">
         select
+        cs.id_ as courseId,
         cs.teacher_id_ as teacherId
         ,su.username_ as teacherName
         ,su.avatar_ as teacherAvatar
-        ,if(sa.id_ is null,1,0) as absenteeism
         from course_schedule cs
         left join sys_user su on cs.teacher_id_ = su.id_
-        left join student_attendance sa on sa.course_schedule_id_ = cs.id_
         <where>
             <if test="records != null and records.size() != 0">
                 and cs.id_ in
@@ -288,12 +277,6 @@
                 </foreach>
             </if>
         </where>
-        <if test="records != null and records.size() != 0">
-            order by field(cs.id_,
-            <foreach collection="records" separator="," close=")" open="" item="item" >
-                #{item.courseId}
-            </foreach>
-        </if>
     </select>
 
 	<select id="selectCourseHomeworkByCourseId" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleHomeworkVo">
@@ -330,11 +313,28 @@
 
         from course_schedule_student_payment cssp
         left join sys_user s on cssp.user_id_ = s.id_
-        left join student_course_homework sch on cssp.user_id_ = sch.student_id_
+        left join student_course_homework sch on cssp.user_id_ = sch.student_id_ and sch.course_schedule_id_ = cssp.course_id_
         <where>
             <if test="courseId != null">
                 and cssp.course_id_ = #{courseId}
             </if>
         </where>
     </select>
+
+	<select id="selectAbsenteeism" resultType="com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo">
+        select
+        cs.id_ as courseId
+        ,if(sa.id_ is null,1,0) as absenteeism
+        from course_schedule cs
+        left join student_attendance sa on sa.course_schedule_id_ = cs.id_
+        <where>
+            sa.student_id_ = #{studentId}
+            <if test="practiceRecord != null and practiceRecord.size() != 0">
+                and cs.id_ in
+                <foreach collection="practiceRecord" separator="," close=")" open="(" item="item" >
+                    #{item.courseId}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>