浏览代码

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

zouxuan 5 年之前
父节点
当前提交
6478641c0d

+ 10 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1406,29 +1406,29 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<CourseSchedule> queryScheduleByAttendance(Integer month);
 
-
-    /**
-     * 获取学生的课程
-     *
-     * @param studentIds
-     * @return
-     */
-    List<CourseScheduleDto> getStudentCourseSchedules(@Param("studentIds") Set<Integer> studentIds, @Param("groupType") GroupType groupType);
-
     /**
      * 获取学生课程数量
      *
      * @param studentIds
      * @param groupType
      * @param status
-     * @return
+     * @retur
      */
     List<CourseGroupExportDto> getStudentCourseScheduleNum(@Param("studentIds") Set<Integer> studentIds, @Param("groupType") GroupType groupType, @Param("status") CourseStatusEnum status);
 
     /**
      * 获取导出VIP课信息
+     *
      * @param organIds
      * @return
      */
     List<CourseGroupExportDto> getVipGroupExport(@Param("organIds") String organIds);
+
+    /**
+     * 获取用户课程信息
+     * @param studentIds
+     * @param groupType
+     * @return
+     */
+    List<CourseGroupExportDto> getStudentCourseInfo(@Param("studentIds") Set<Integer> studentIds, @Param("groupType") GroupType groupType);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseGroupExportDto.java

@@ -14,6 +14,7 @@ public class CourseGroupExportDto {
     private Integer studentId;
     private String studentName;
     private Integer teacherId;
+    private String teacherIds;
     private String teacherName;
     private Date expireDate;
     private Date classStartDate;
@@ -101,4 +102,11 @@ public class CourseGroupExportDto {
         this.noStartClassTimes = noStartClassTimes;
     }
 
+    public String getTeacherIds() {
+        return teacherIds;
+    }
+
+    public void setTeacherIds(String teacherIds) {
+        this.teacherIds = teacherIds;
+    }
 }

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

@@ -2909,30 +2909,15 @@
           AND music_group_id_ = #{groupId};
     </update>
 
-    <select id="getStudentCourseSchedules" resultMap="courseScheduleDto">
-        SELECT cs.id_,concat(cs.`class_date_`,' ',cs.`start_class_time_` ) start_class_time_,cs.actual_teacher_id_, su.real_name_
-        teacher_name_,cssp.user_id_ student_id_
-        FROM course_schedule cs
-        LEFT JOIN sys_user su on cs.actual_teacher_id_ = su.id_
-        LEFT JOIN course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
-        WHERE cssp.user_id_ IN
-        <foreach collection="studentIds" separator="," open="(" close=")" item="studentId">
-            #{studentId}
-        </foreach>
-        AND cs.group_type_ = #{groupType}
-        AND (cs.del_flag_ IS NULL OR cs.del_flag_ =0)
-        ORDER BY cs.class_date_ DESC ,cs.start_class_time_ DESC
-    </select>
-
     <select id="getStudentCourseScheduleNum" resultMap="com.ym.mec.biz.dal.dao.PracticeGroupDao.courseGroupExport">
         SELECT COUNT(*) total_class_times_,cssp.user_id_ student_id_
-        FROM course_schedule cs
-        LEFT JOIN course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
+        FROM course_schedule_student_payment cssp
+        LEFT JOIN course_schedule cs on cs.id_ = cssp.course_schedule_id_
         WHERE cssp.user_id_ IN
         <foreach collection="studentIds" separator="," open="(" close=")" item="studentId">
             #{studentId}
         </foreach>
-        AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        AND cssp.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         <if test="status != null">
             AND cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
@@ -2945,9 +2930,9 @@
         su.username_ student_name_,
         o.name_ organ_name_
         FROM `course_schedule_student_payment` cssp
-                 LEFT JOIN `vip_group` vg ON vg.`id_` = cssp.`music_group_id_` AND cssp.`group_type_` = 'VIP'
-                 LEFT JOIN `organization` o ON o.`id_` = vg.`organ_id_`
-                 LEFT JOIN `sys_user` su ON su.`id_` = cssp.`user_id_`
+        LEFT JOIN `vip_group` vg ON vg.`id_` = cssp.`music_group_id_` AND cssp.`group_type_` = 'VIP'
+        LEFT JOIN `organization` o ON o.`id_` = vg.`organ_id_`
+        LEFT JOIN `sys_user` su ON su.`id_` = cssp.`user_id_`
         WHERE cssp.`group_type_` = 'VIP'
         <if test="organIds != null and organIds != ''">
             AND FIND_IN_SET(vg.organ_id_, #{organIds})
@@ -2955,4 +2940,20 @@
         GROUP BY cssp.`user_id_`,o.id_
     </select>
 
+    <select id="getStudentCourseInfo" resultMap="com.ym.mec.biz.dal.dao.PracticeGroupDao.courseGroupExport">
+        SELECT MIN(concat(cs.`class_date_`,' ',cs.`start_class_time_` )) class_start_date_,
+        MAX(concat(cs.`class_date_`,' ',cs.`start_class_time_` )) class_end_date_,cssp.user_id_ student_id_,
+        GROUP_CONCAT(DISTINCT su.`real_name_`) teacher_name_,GROUP_CONCAT(DISTINCT cs.`actual_teacher_id_`) teacher_ids_
+        FROM course_schedule_student_payment cssp
+        LEFT JOIN course_schedule cs on cs.id_ = cssp.course_schedule_id_
+        LEFT JOIN sys_user su on cs.actual_teacher_id_ = su.id_
+        WHERE cssp.user_id_ IN
+        <foreach collection="studentIds" separator="," open="(" close=")" item="studentId">
+            #{studentId}
+        </foreach>
+        AND cssp.group_type_ = #{groupType}
+        AND (cs.del_flag_ IS NULL OR cs.del_flag_ =0)
+        GROUP BY cssp.user_id_;
+    </select>
+
 </mapper>

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

@@ -468,6 +468,7 @@
         <result column="student_id_" property="studentId"/>
         <result column="student_name_" property="studentName"/>
         <result column="teacher_id_" property="teacherId"/>
+        <result column="teacher_ids_" property="teacherIds"/>
         <result column="teacher_name_" property="teacherName"/>
         <result column="expire_date_" property="expireDate"/>
         <result column="class_start_date_" property="classStartDate"/>

+ 26 - 27
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -777,15 +777,20 @@ public class ExportController extends BaseController {
             return;
         }
         Set<Integer> studentIds = practiceGroupExports.stream().map(CourseGroupExportDto::getStudentId).collect(Collectors.toSet());
-        List<CourseScheduleDto> studentCourseSchedules = courseScheduleDao.getStudentCourseSchedules(studentIds, GroupType.PRACTICE);
-        Map<Integer, List<CourseScheduleDto>> studentCourseSchedulesMap = studentCourseSchedules.stream().collect(Collectors.groupingBy(CourseScheduleDto::getStudentId));
+        List<CourseGroupExportDto> studentCourseInfos = courseScheduleDao.getStudentCourseInfo(studentIds, GroupType.PRACTICE);
+
         List<CourseGroupExportDto> totalClassTimes = courseScheduleDao.getStudentCourseScheduleNum(studentIds, GroupType.PRACTICE, null);
         List<CourseGroupExportDto> noStartClassTimes = courseScheduleDao.getStudentCourseScheduleNum(studentIds, GroupType.PRACTICE, CourseStatusEnum.NOT_START);
         for (CourseGroupExportDto practiceGroupExport : practiceGroupExports) {
-            CourseScheduleDto courseScheduleDto = studentCourseSchedulesMap.get(practiceGroupExport.getStudentId()).get(0);
-            practiceGroupExport.setTeacherId(courseScheduleDto.getActualTeacherId());
-            practiceGroupExport.setTeacherName(courseScheduleDto.getTeacherName());
-            practiceGroupExport.setClassEndDate(courseScheduleDto.getStartClassTime());
+            for (CourseGroupExportDto studentCourseInfo : studentCourseInfos) {
+                if (studentCourseInfo.getStudentId().equals(practiceGroupExport.getStudentId())) {
+                    practiceGroupExport.setTeacherIds(studentCourseInfo.getTeacherIds());
+                    practiceGroupExport.setTeacherName(studentCourseInfo.getTeacherName());
+                    practiceGroupExport.setClassEndDate(studentCourseInfo.getClassEndDate());
+                    break;
+                }
+            }
+
             for (CourseGroupExportDto studentTotalClassTimes : totalClassTimes) {
                 if (studentTotalClassTimes.getStudentId().equals(practiceGroupExport.getStudentId())) {
                     practiceGroupExport.setTotalClassTimes(studentTotalClassTimes.getTotalClassTimes());
@@ -802,7 +807,7 @@ public class ExportController extends BaseController {
 
         try {
             String[] header = {"分部", "学生编号", "学生姓名", "网管课老师id", "网管课老师", "有效期截止时间", "课程截止时间", "总课时", "剩余课时"};
-            String[] body = {"organName", "studentId", "studentName", "teacherId", "teacherName", "expireDate", "classEndDate", "totalClassTimes", "noStartClassTimes"};
+            String[] body = {"organName", "studentId", "studentName", "teacherIds", "teacherName", "expireDate", "classEndDate", "totalClassTimes", "noStartClassTimes"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupExports);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -834,25 +839,19 @@ public class ExportController extends BaseController {
             return;
         }
         Set<Integer> studentIds = vipGroupExports.stream().map(CourseGroupExportDto::getStudentId).collect(Collectors.toSet());
-        List<CourseScheduleDto> studentCourseSchedules = courseScheduleDao.getStudentCourseSchedules(studentIds, GroupType.VIP);
-        Map<Integer, List<CourseScheduleDto>> studentCourseSchedulesMap = studentCourseSchedules.stream().collect(Collectors.groupingBy(CourseScheduleDto::getStudentId));
+        List<CourseGroupExportDto> studentCourseInfos = courseScheduleDao.getStudentCourseInfo(studentIds, GroupType.VIP);
         List<CourseGroupExportDto> totalClassTimes = courseScheduleDao.getStudentCourseScheduleNum(studentIds, GroupType.VIP, null);
         List<CourseGroupExportDto> noStartClassTimes = courseScheduleDao.getStudentCourseScheduleNum(studentIds, GroupType.VIP, CourseStatusEnum.NOT_START);
         for (CourseGroupExportDto vipGroupExport : vipGroupExports) {
-            List<CourseScheduleDto> courseSchedules4Student = studentCourseSchedulesMap.get(vipGroupExport.getStudentId());
-            CourseScheduleDto endCourseScheduleDto = null;
-            CourseScheduleDto firstCourseSchedule = null;
-            if(courseSchedules4Student != null) {
-                endCourseScheduleDto = courseSchedules4Student.get(0);
-                firstCourseSchedule = courseSchedules4Student.get(courseSchedules4Student.size() - 1);
-            }
-            if (firstCourseSchedule != null) {
-                vipGroupExport.setClassStartDate(firstCourseSchedule.getStartClassTime());
-            }
-            if (endCourseScheduleDto != null) {
-                vipGroupExport.setTeacherId(endCourseScheduleDto.getActualTeacherId());
-                vipGroupExport.setTeacherName(endCourseScheduleDto.getTeacherName());
-                vipGroupExport.setClassEndDate(endCourseScheduleDto.getStartClassTime());
+
+            for (CourseGroupExportDto studentCourseInfo : studentCourseInfos) {
+                if (studentCourseInfo.getStudentId().equals(vipGroupExport.getStudentId())) {
+                    vipGroupExport.setTeacherIds(studentCourseInfo.getTeacherIds());
+                    vipGroupExport.setTeacherName(studentCourseInfo.getTeacherName());
+                    vipGroupExport.setClassStartDate(studentCourseInfo.getClassStartDate());
+                    vipGroupExport.setClassEndDate(studentCourseInfo.getClassEndDate());
+                    break;
+                }
             }
             for (CourseGroupExportDto studentTotalClassTimes : totalClassTimes) {
                 if (studentTotalClassTimes.getStudentId().equals(vipGroupExport.getStudentId())) {
@@ -870,7 +869,7 @@ public class ExportController extends BaseController {
 
         try {
             String[] header = {"分部", "学生编号", "学生姓名", "指导老师id", "指导老师", "课程开始时间", "课程截止时间", "总课时", "剩余课时"};
-            String[] body = {"organName", "studentId", "studentName", "teacherId", "teacherName", "classStartDate", "classEndDate", "totalClassTimes", "noStartClassTimes"};
+            String[] body = {"organName", "studentId", "studentName", "teacherIds", "teacherName", "classStartDate", "classEndDate", "totalClassTimes", "noStartClassTimes"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, vipGroupExports);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -913,9 +912,9 @@ public class ExportController extends BaseController {
             return;
         }
         for (ExtraExerciseStudentsDto row : rows) {
-            row.setStatusStr(Objects.isNull(row.getStatus())||row.getStatus()==0?"否":"是");
-            row.setIsViewStr(Objects.isNull(row.getIsView())||row.getIsView()==0?"否":"是");
-            row.setIsRepliedStr(Objects.isNull(row.getIsReplied())||row.getIsReplied()==0?"否":"是");
+            row.setStatusStr(Objects.isNull(row.getStatus()) || row.getStatus() == 0 ? "否" : "是");
+            row.setIsViewStr(Objects.isNull(row.getIsView()) || row.getIsView() == 0 ? "否" : "是");
+            row.setIsRepliedStr(Objects.isNull(row.getIsReplied()) || row.getIsReplied() == 0 ? "否" : "是");
         }
         OutputStream ouputStream = null;
         try {