Просмотр исходного кода

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

zouxuan 5 лет назад
Родитель
Сommit
62fc73f0a9
23 измененных файлов с 942 добавлено и 247 удалено
  1. 64 31
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java
  3. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java
  4. 104 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseGroupExportDto.java
  5. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java
  6. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExtraExerciseStudentsDto.java
  7. 14 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageCourseListDto.java
  8. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesReply.java
  9. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java
  10. 25 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java
  11. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageAttendanceQueryInfo.java
  12. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesReplyService.java
  13. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  14. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  15. 223 149
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  16. 4 4
      mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml
  17. 75 6
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  18. 45 10
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  19. 4 0
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  20. 7 5
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  21. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  22. 212 25
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  23. 33 6
      mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesReplyController.java

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

@@ -188,14 +188,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("teacherId") Long teacherId, @Param("type") String type);
 
     /**
-     * @describe 获取指定日期的课程
-     * @author Joburgess
-     * @date 2020/3/10
      * @param teacherId: 教师编号
      * @param classDate: 上课日期
      * @param groupId:
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+     * @describe 获取指定日期的课程
+     * @author Joburgess
+     * @date 2020/3/10
      */
     List<CourseScheduleDto> findCourseSchedulesWithDate(@Param("teacherId") Integer teacherId,
                                                         @Param("classDate") Date classDate,
@@ -244,35 +244,35 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                       @Param("groupType") GroupType groupType);
 
     /**
-     * @describe 获取团体下未开始的课程
-     * @author Joburgess
-     * @date 2020/3/4
      * @param groupId:
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     * @describe 获取团体下未开始的课程
+     * @author Joburgess
+     * @date 2020/3/4
      */
     List<CourseSchedule> findGroupNotStartCourses(@Param("groupId") String groupId,
                                                   @Param("groupType") GroupType groupType);
 
 
     /**
-     * @describe 获取团体下未结束的课程
-     * @author Joburgess
-     * @date 2020/3/4
      * @param groupId:
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     * @describe 获取团体下未结束的课程
+     * @author Joburgess
+     * @date 2020/3/4
      */
     List<CourseSchedule> findGroupNotFinishCourses(@Param("groupId") String groupId,
-                                                  @Param("groupType") GroupType groupType);
+                                                   @Param("groupType") GroupType groupType);
 
     /**
-     * @describe 更新课程组下课程的名字
-     * @author Joburgess
-     * @date 2020/3/5
      * @param groupId:
      * @param groupType:
      * @return int
+     * @describe 更新课程组下课程的名字
+     * @author Joburgess
+     * @date 2020/3/5
      */
     int updateCourseNameByGroup(@Param("groupId") String groupId,
                                 @Param("groupType") GroupType groupType,
@@ -326,14 +326,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId, @Param("month") Date month, @Param("type") String type);
 
     /**
-     * @describe 获取在指定月份有课的日期
-     * @author Joburgess
-     * @date 2020/3/10
      * @param teacherId: 教师编号
-     * @param month: 月份
-     * @param groupId: 课程组编号
+     * @param month:     月份
+     * @param groupId:   课程组编号
      * @param groupType: 课程组类型
      * @return java.util.List<java.util.Date>
+     * @describe 获取在指定月份有课的日期
+     * @author Joburgess
+     * @date 2020/3/10
      */
     List<Date> findHaveClassesDatesWithMonth(@Param("teacherId") Integer teacherId,
                                              @Param("month") Date month,
@@ -504,7 +504,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<CourseSchedule> queryFinishedWithNoUpdateStatus();
-    
+
     /**
      * 查询进行中未更新状态的课程列表
      *
@@ -532,13 +532,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<TeacherClassCourseSchudeleDto> queryTeacherClassCourseSchedule(Map<String, Object> params);
 
     /**
+     * @param params
+     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
      * @describe 获取教师指定乐团下的课程
      * @author Joburgess
      * @date 2020/3/8
-     * @param params
-     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
      */
     List<TeacherClassCourseSchudeleDto> findTeacherGroupCourses(Map<String, Object> params);
+
     int countTeacherGroupCourses(Map<String, Object> params);
 
     /**
@@ -911,7 +912,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                   @Param("schoolId") Integer schoolId);
 
 
-    int countVipGroupCourses(@Param("vipGroupId") Integer vipGroupId,@Param("groupType") String groupType);
+    int countVipGroupCourses(@Param("vipGroupId") Integer vipGroupId, @Param("groupType") String groupType);
 
     /**
      * @param groupType:
@@ -1184,8 +1185,8 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                                          @Param("endTime") Date endTime);
 
     List<CourseSchedule> findTeacherCoursesWithDateRangeWithoutMusicGroup(@Param("userId") Integer userId,
-                                                         @Param("startTime") Date startTime,
-                                                         @Param("endTime") Date endTime);
+                                                                          @Param("startTime") Date startTime,
+                                                                          @Param("endTime") Date endTime);
 
     /**
      * @param userId: 用户编号
@@ -1231,6 +1232,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     CourseSchedule queryContinueCourse(@Param("courseSchedule") CourseSchedule courseSchedule,
                                        @Param("continueCourseTime") String continueCourseTime, @Param("endDateTime") String endDateTime);
+
     /**
      * 获取当前课程,下一次连堂课
      *
@@ -1239,7 +1241,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     CourseSchedule queryRepairContinueCourse(@Param("courseSchedule") CourseSchedule courseSchedule,
-                                       @Param("continueCourseTime") String continueCourseTime, @Param("endDateTime") String endDateTime);
+                                             @Param("continueCourseTime") String continueCourseTime, @Param("endDateTime") String endDateTime);
 
     /**
      * 获取单节课时长
@@ -1340,29 +1342,30 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseSchedule> findClassGroupLastTeacher(@Param("classGroupIds") List<Integer> classGroupIds);
 
     /**
-     * @describe 获取团体课次信息
-     * @author Joburgess
-     * @date 2020/3/8
      * @param groupIds:
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.dto.GroupCourseTimesDto>
+     * @describe 获取团体课次信息
+     * @author Joburgess
+     * @date 2020/3/8
      */
     List<GroupCourseTimesDto> findGroupsCourseTimesInfo(@Param("groupIds") List<String> groupIds,
                                                         @Param("groupType") GroupType groupType);
 
     /**
-     * @describe 获取课程组有效期
-     * @author Joburgess
-     * @date 2020/3/18
      * @param groupIds:
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.dto.GroupValidDateDto>
+     * @describe 获取课程组有效期
+     * @author Joburgess
+     * @date 2020/3/18
      */
     List<GroupValidDateDto> findGroupsValidate(@Param("groupIds") List<String> groupIds,
                                                @Param("groupType") GroupType groupType);
 
     /**
      * 获取当前课程声部
+     *
      * @param courseScheduleId
      * @return
      */
@@ -1370,6 +1373,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * 教师端中间页网络教室课程进度列表
+     *
      * @param groupId
      * @param groupType
      * @return
@@ -1378,6 +1382,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * 获取最后一次已结束的课程
+     *
      * @param groupId
      * @param groupType
      * @return
@@ -1386,6 +1391,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * 根据课程组获取课表信息
+     *
      * @param groupType
      * @param groupId
      * @return
@@ -1394,8 +1400,35 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * 获取老师正常签退的课程
+     *
      * @param month
      * @return
      */
     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
+     */
+    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);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java

@@ -59,5 +59,8 @@ public interface ExtracurricularExercisesReplyDao extends BaseDAO<Long, Extracur
      * @return int
      */
     int countIsSubmitStudents(@Param("extraExerciseId") Long extraExerciseId);
+
+    List<ExtraExerciseStudentsDto> findExtraExercises(Map<String, Object> params);
+    int countExtraExercises(Map<String, Object> params);
 	
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.CourseGroupExportDto;
 import com.ym.mec.biz.dal.dto.PracticeCourseDto;
 import com.ym.mec.biz.dal.dto.PracticeGroupDto;
 import com.ym.mec.biz.dal.dto.StudentBuyPracticeDto;
@@ -206,6 +207,7 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
 
     /**
      * 根据课程组id查询课程组详情
+     *
      * @param id
      * @return
      */
@@ -213,6 +215,7 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
 
     /**
      * COUNT网管课购买列表
+     *
      * @param params
      * @return
      */
@@ -220,8 +223,17 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
 
     /**
      * query网管课购买列表
+     *
      * @param params
      * @return
      */
     List<StudentBuyPracticeDto> queryStudentBuys(Map<String, Object> params);
+
+
+    /**
+     * 获取导出网管课信息
+     * @param organIds
+     * @return
+     */
+    List<CourseGroupExportDto> getPracticeGroupExport(@Param("organIds") String organIds);
 }

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

@@ -0,0 +1,104 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
+
+
+public class CourseGroupExportDto {
+    private String organName;
+    private Integer studentId;
+    private String studentName;
+    private Integer teacherId;
+    private String teacherName;
+    private Date expireDate;
+    private Date classStartDate;
+    private Date classEndDate;
+    private Integer totalClassTimes = 0;
+    private Integer noStartClassTimes = 0;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Date getExpireDate() {
+        return expireDate;
+    }
+
+    public void setExpireDate(Date expireDate) {
+        this.expireDate = expireDate;
+    }
+
+    public Date getClassStartDate() {
+        return classStartDate;
+    }
+
+    public void setClassStartDate(Date classStartDate) {
+        this.classStartDate = classStartDate;
+    }
+
+    public Date getClassEndDate() {
+        return classEndDate;
+    }
+
+    public void setClassEndDate(Date classEndDate) {
+        this.classEndDate = classEndDate;
+    }
+
+    public Integer getTotalClassTimes() {
+        return totalClassTimes;
+    }
+
+    public void setTotalClassTimes(Integer totalClassTimes) {
+        this.totalClassTimes = totalClassTimes;
+    }
+
+    public Integer getNoStartClassTimes() {
+        return noStartClassTimes;
+    }
+
+    public void setNoStartClassTimes(Integer noStartClassTimes) {
+        this.noStartClassTimes = noStartClassTimes;
+    }
+
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java

@@ -67,6 +67,8 @@ public class CourseScheduleDto extends CourseSchedule {
     @ApiModelProperty(value = "学生评论id")
     private Long StudentReviewId;
 
+    private Integer studentId;
+
     private int isNew;
 
     public int getIsNew() {
@@ -238,4 +240,12 @@ public class CourseScheduleDto extends CourseSchedule {
     public void setStudentReviewId(Long studentReviewId) {
         StudentReviewId = studentReviewId;
     }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
 }

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExtraExerciseStudentsDto.java

@@ -22,6 +22,34 @@ public class ExtraExerciseStudentsDto extends ExtracurricularExercisesReply {
 
     private java.util.Date expireDate;
 
+    private String statusStr;
+    private String isRepliedStr;
+    private String isViewStr;
+
+    public String getStatusStr() {
+        return statusStr;
+    }
+
+    public void setStatusStr(String statusStr) {
+        this.statusStr = statusStr;
+    }
+
+    public String getIsRepliedStr() {
+        return isRepliedStr;
+    }
+
+    public void setIsRepliedStr(String isRepliedStr) {
+        this.isRepliedStr = isRepliedStr;
+    }
+
+    public String getIsViewStr() {
+        return isViewStr;
+    }
+
+    public void setIsViewStr(String isViewStr) {
+        this.isViewStr = isViewStr;
+    }
+
     public Date getExpireDate() {
         return expireDate;
     }

+ 14 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageCourseListDto.java

@@ -1,12 +1,12 @@
 package com.ym.mec.biz.dal.dto;
 
-import io.swagger.annotations.ApiModelProperty;
-
-import java.util.Date;
-
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
 
 /**
  * @Author Joburgess
@@ -23,6 +23,8 @@ public class StudentManageCourseListDto {
     @ApiModelProperty(value = "班级类型(普通班级、合奏班级、提高课班级、VIP班级)",required = true)
     private ClassGroupTypeEnum classGroupType;
 
+    private CourseSchedule.CourseScheduleType courseScheduleType;
+
     @ApiModelProperty(value = "上课日期",required = false)
     private Date courseDate;
 
@@ -41,6 +43,14 @@ public class StudentManageCourseListDto {
     @ApiModelProperty(value = "总课时",required = false)
     private Integer totalClassTimes;
 
+    public CourseSchedule.CourseScheduleType getCourseScheduleType() {
+        return courseScheduleType;
+    }
+
+    public void setCourseScheduleType(CourseSchedule.CourseScheduleType courseScheduleType) {
+        this.courseScheduleType = courseScheduleType;
+    }
+
     public Integer getTotalClassTimes() {
         return totalClassTimes;
     }

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesReply.java

@@ -4,6 +4,8 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.ym.mec.auth.api.entity.SysUser;
 
+import java.util.Date;
+
 /**
  * 对应数据库表(extracurricular_exercises_reply):
  */
@@ -44,7 +46,17 @@ public class ExtracurricularExercisesReply {
 	private Integer isView;
 	
 	private String organName;
-	
+
+	private Date submitTime;
+
+	public Date getSubmitTime() {
+		return submitTime;
+	}
+
+	public void setSubmitTime(Date submitTime) {
+		this.submitTime = submitTime;
+	}
+
 	public ExtracurricularExercises getExtracurricularExercises() {
 		return extracurricularExercises;
 	}

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java

@@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.Date;
+
 /**
  * 对应数据库表(student_course_homework):
  */
@@ -47,6 +49,16 @@ public class StudentCourseHomework {
 
 	private boolean extra;
 
+	private Date submitTime;
+
+	public Date getSubmitTime() {
+		return submitTime;
+	}
+
+	public void setSubmitTime(Date submitTime) {
+		this.submitTime = submitTime;
+	}
+
 	public boolean isExtra() {
 		return extra;
 	}

+ 25 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java

@@ -27,12 +27,32 @@ public class ExtraExercilseReplyQueryInfo extends QueryInfo {
 	/** 是否已查看 */
 	private Integer isView;
 	
-	private Integer organId;
+	private String organIdList;
 	
 	private Date submitStartTime;// 提交作业的开始时间
 
 	private Date submitEndTime;// 提交作业的结束时间
 
+	private Date expireStartDate;
+
+	private Date expireEndDate;
+
+	public Date getExpireStartDate() {
+		return expireStartDate;
+	}
+
+	public void setExpireStartDate(Date expireStartDate) {
+		this.expireStartDate = expireStartDate;
+	}
+
+	public Date getExpireEndDate() {
+		return expireEndDate;
+	}
+
+	public void setExpireEndDate(Date expireEndDate) {
+		this.expireEndDate = expireEndDate;
+	}
+
 	public Long getExtracurricularExercisesId() {
 		return extracurricularExercisesId;
 	}
@@ -57,12 +77,12 @@ public class ExtraExercilseReplyQueryInfo extends QueryInfo {
 		this.studentId = studentId;
 	}
 
-	public Integer getOrganId() {
-		return organId;
+	public String getOrganIdList() {
+		return organIdList;
 	}
 
-	public void setOrganId(Integer organId) {
-		this.organId = organId;
+	public void setOrganIdList(String organIdList) {
+		this.organIdList = organIdList;
 	}
 
 	public Date getSubmitStartTime() {

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageAttendanceQueryInfo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import io.swagger.annotations.ApiModelProperty;
 
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
@@ -18,6 +19,8 @@ public class StudentManageAttendanceQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "班级类型(普通班级、合奏班级、提高课班级、VIP班级)",required = true)
     private ClassGroupTypeEnum classGroupType;
 
+    private CourseSchedule.CourseScheduleType courseScheduleType;
+
     @ApiModelProperty(value = "班级名称",required = false)
     private String classGroupName;
 
@@ -38,6 +41,14 @@ public class StudentManageAttendanceQueryInfo extends QueryInfo {
         this.courseStatus = courseStatus;
     }
 
+    public CourseSchedule.CourseScheduleType getCourseScheduleType() {
+        return courseScheduleType;
+    }
+
+    public void setCourseScheduleType(CourseSchedule.CourseScheduleType courseScheduleType) {
+        this.courseScheduleType = courseScheduleType;
+    }
+
     public Integer getStudentId() {
         return studentId;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesReplyService.java

@@ -1,9 +1,11 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
+import com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.biz.dal.page.ExtraExercilseReplyQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
@@ -47,4 +49,13 @@ public interface ExtracurricularExercisesReplyService extends BaseService<Long,
      */
     void submitExtraExercise(ExtracurricularExercisesReply extracurricularExercisesReply);
 
+    /**
+     * @describe 获取学生课外训练
+     * @author Joburgess
+     * @date 2020/4/7
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo
+     */
+    PageInfo<ExtraExerciseStudentsDto> findExtraExercises(ExtraExercilseReplyQueryInfo queryInfo);
+
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
@@ -13,6 +14,7 @@ import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.biz.dal.page.ExtraExercilseReplyQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -27,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Long, ExtracurricularExercisesReply> implements ExtracurricularExercisesReplyService {
@@ -127,6 +130,7 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		}
 		existExtra.setAttachments(extracurricularExercisesReply.getAttachments());
 		existExtra.setStatus(1);
+		existExtra.setSubmitTime(new Date());
 		extracurricularExercisesReplyDao.update(existExtra);
 
 		int submitStudentNum=extracurricularExercisesReplyDao.countIsSubmitStudents(existExtra.getExtracurricularExercisesId());
@@ -146,4 +150,30 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 					extracurricularExercises.getTitle(), user.getUsername());
 		}
 	}
+
+	@Override
+	public PageInfo<ExtraExerciseStudentsDto> findExtraExercises(ExtraExercilseReplyQueryInfo queryInfo) {
+		PageInfo<ExtraExerciseStudentsDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<ExtraExerciseStudentsDto> dataList = null;
+		int count = extracurricularExercisesReplyDao.countExtraExercises(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = extracurricularExercisesReplyDao.findExtraExercises(params);
+			List<Integer> teacherIds = dataList.stream().map(ExtraExerciseStudentsDto::getTeacherId).collect(Collectors.toList());
+			List<SimpleUserDto> teachers = teacherDao.findSimpleTeachers(teacherIds);
+			Map<Integer, String> idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getUserName));
+			for (ExtraExerciseStudentsDto extraExerciseStudentsDto : dataList) {
+				extraExerciseStudentsDto.setTeacherName(idNameMap.get(extraExerciseStudentsDto.getTeacherId()));
+			}
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -88,6 +88,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             throw new BizException("作业不存在");
         }
         boolean push = Objects.isNull(existHomework.getAttachments());
+        bean.setSubmitTime(new Date());
         super.update(bean);
         bean = studentCourseHomeworkDao.get(bean.getId());
         CourseSchedule courseSchedule = courseScheduleDao.get(bean.getCourseScheduleId());

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

@@ -60,6 +60,7 @@
         <result column="attendance_status_" property="attendanceStatus"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="complaint_status_" property="complaintStatus"/>
+        <result column="student_id_" property="studentId"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
@@ -626,30 +627,30 @@
 
     <select id="findCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT
-            cs.id_ seal_class_id_,
-            cg.name_,
-            su.real_name_ teacher_name_,
-            cs.type_,
-            cs.id_,
-            cs.class_group_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.status_,
-            cs.teacher_id_,
-            cs.actual_teacher_id_,
-            cg.expect_student_num_,
-            cs.schoole_id_,
-            s.name_ school_name_,
-            if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
-            if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
-            cs.teach_mode_
+        cs.id_ seal_class_id_,
+        cg.name_,
+        su.real_name_ teacher_name_,
+        cs.type_,
+        cs.id_,
+        cs.class_group_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.status_,
+        cs.teacher_id_,
+        cs.actual_teacher_id_,
+        cg.expect_student_num_,
+        cs.schoole_id_,
+        s.name_ school_name_,
+        if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
+        if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
+        cs.teach_mode_
         FROM
-            course_schedule cs
-            LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
-            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-            LEFT JOIN school s ON cs.schoole_id_ = s.id_
-            LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
+        course_schedule cs
+        LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
+        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+        LEFT JOIN school s ON cs.schoole_id_ = s.id_
+        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
@@ -840,13 +841,13 @@
 
     <select id="getTeacherCourseScheduleDate" resultType="java.util.Date">
         SELECT
-          cs.class_date_
+        cs.class_date_
         FROM
-          course_schedule_teacher_salary csts
+        course_schedule_teacher_salary csts
         LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE
-          (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND csts.user_id_ = #{teacherId}
         <if test="month==null">
@@ -863,30 +864,30 @@
 
     <select id="findHaveClassesDatesWithMonth" resultType="java.util.Date">
         SELECT
-          cs.class_date_
+        cs.class_date_
         FROM
-          course_schedule cs
+        course_schedule cs
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-            AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-            AND cg.del_flag_ = 0
-            <if test="teacherId!=null">
-                AND cs.actual_teacher_id_=#{teacherId}
-            </if>
-            <if test="month==null">
-                AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
-            </if>
-            <if test="month!=null">
-                AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
-            </if>
-            <if test="groupId!=null">
-                AND cs.music_group_id_=#{groupId}
-            </if>
-            <if test="type!=null and type!=''">
-                AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-            </if>
-            GROUP BY cs.class_date_
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
+        AND cg.del_flag_ = 0
+        <if test="teacherId!=null">
+            AND cs.actual_teacher_id_=#{teacherId}
+        </if>
+        <if test="month==null">
+            AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+        </if>
+        <if test="month!=null">
+            AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+        </if>
+        <if test="groupId!=null">
+            AND cs.music_group_id_=#{groupId}
+        </if>
+        <if test="type!=null and type!=''">
+            AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        GROUP BY cs.class_date_
     </select>
 
     <select id="getTeacherHistoryCourseScheduleDate" resultType="java.util.Date">
@@ -1320,18 +1321,18 @@
 
     <select id="findTeacherGroupCourses" resultMap="teacherClassCourseSchedule">
         SELECT
-            cs.class_group_id_,
-            cs.id_ course_schedule_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.name_ course_schedule_name_,
-            cs.student_num_,
-            cs.leave_student_num_,
-            cs.type_,
-            cs.status_,
-            cs.actual_teacher_id_,
-            cs.teach_mode_
+        cs.class_group_id_,
+        cs.id_ course_schedule_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.name_ course_schedule_name_,
+        cs.student_num_,
+        cs.leave_student_num_,
+        cs.type_,
+        cs.status_,
+        cs.actual_teacher_id_,
+        cs.teach_mode_
         FROM course_schedule cs
         <include refid="teacherGroupCourseQueryCondition"/>
         ORDER BY CONCAT( cs.class_date_, ' ', cs.start_class_time_ )
@@ -1340,7 +1341,7 @@
 
     <select id="countTeacherGroupCourses" resultType="int">
         SELECT
-            COUNT(cs.id_)
+        COUNT(cs.id_)
         FROM course_schedule cs
         <include refid="teacherGroupCourseQueryCondition"/>
     </select>
@@ -2444,7 +2445,7 @@
         FROM course_schedule_teacher_salary csts
                  LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-          AND cs.group_type_!='MUSIC'
+          AND cs.group_type_ != 'MUSIC'
           AND cs.class_date_ BETWEEN DATE_FORMAT(#{startTime}, "%Y-%m-%d") AND DATE_FORMAT(#{endTime}, "%Y-%m-%d")
           AND csts.user_id_ = #{userId}
     </select>
@@ -2462,7 +2463,7 @@
                cs.teach_mode_,
                cs.music_group_id_,
                cs.group_type_,
-               su.real_name_ teacher_name_,
+               su.real_name_                                     teacher_name_,
                pg.create_time_
         FROM course_schedule_student_payment cssp
                  LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
@@ -2536,8 +2537,8 @@
         SELECT cs.*
         FROM course_schedule cs
                  LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
-        WHERE TIMESTAMPDIFF(MINUTE,#{endDateTime},CONCAT(cs.class_date_,' ',cs.start_class_time_)) >= 0
-          AND TIMESTAMPDIFF(MINUTE,#{endDateTime},CONCAT(cs.class_date_,' ',cs.start_class_time_)) &lt;= #{continueCourseTime}
+        WHERE TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) >= 0
+          AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
           AND ta.sign_in_time_ IS NULL
@@ -2548,8 +2549,8 @@
         SELECT cs.*
         FROM course_schedule cs
                  LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
-        WHERE TIMESTAMPDIFF(MINUTE,#{endDateTime},CONCAT(cs.class_date_,' ',cs.start_class_time_)) >= 0
-          AND TIMESTAMPDIFF(MINUTE,#{endDateTime},CONCAT(cs.class_date_,' ',cs.start_class_time_)) &lt;= #{continueCourseTime}
+        WHERE TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) >= 0
+          AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
         LIMIT 1
@@ -2739,56 +2740,61 @@
         )
     </select>
     <select id="findGroupNotStartCourses" resultMap="CourseSchedule">
-        SELECT
-            id_,
-            group_type_,
-            music_group_id_,
-            class_group_id_,
-            status_,
-            subsidy_,
-            class_date_,
-            CONCAT(class_date_, ' ', start_class_time_) start_class_time_,
-            CONCAT(class_date_, ' ', end_class_time_)   end_class_time_,
-            teacher_id_,
-            actual_teacher_id_,
-            create_time_,
-            update_time_,
-            teach_mode_,
-            type_,
-            name_,
-            student_num_,
-            leave_student_num_,
-            schoole_id_
-        FROM course_schedule WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND music_group_id_ = #{groupId} AND CONCAT(class_date_, ' ', start_class_time_)&gt;NOW()
+        SELECT id_,
+               group_type_,
+               music_group_id_,
+               class_group_id_,
+               status_,
+               subsidy_,
+               class_date_,
+               CONCAT(class_date_, ' ', start_class_time_) start_class_time_,
+               CONCAT(class_date_, ' ', end_class_time_)   end_class_time_,
+               teacher_id_,
+               actual_teacher_id_,
+               create_time_,
+               update_time_,
+               teach_mode_,
+               type_,
+               name_,
+               student_num_,
+               leave_student_num_,
+               schoole_id_
+        FROM course_schedule
+        WHERE group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          AND music_group_id_ = #{groupId}
+          AND CONCAT(class_date_, ' ', start_class_time_) &gt; NOW()
     </select>
 
     <select id="findGroupNotFinishCourses" resultMap="CourseSchedule">
-        SELECT
-            id_,
-            group_type_,
-            music_group_id_,
-            class_group_id_,
-            status_,
-            subsidy_,
-            class_date_,
-            CONCAT(class_date_, ' ', start_class_time_) start_class_time_,
-            CONCAT(class_date_, ' ', end_class_time_)   end_class_time_,
-            teacher_id_,
-            actual_teacher_id_,
-            create_time_,
-            update_time_,
-            teach_mode_,
-            type_,
-            name_,
-            student_num_,
-            leave_student_num_,
-            schoole_id_
-        FROM course_schedule WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND music_group_id_ = #{groupId} AND CONCAT(class_date_, ' ', end_class_time_)&gt;NOW()
+        SELECT id_,
+               group_type_,
+               music_group_id_,
+               class_group_id_,
+               status_,
+               subsidy_,
+               class_date_,
+               CONCAT(class_date_, ' ', start_class_time_) start_class_time_,
+               CONCAT(class_date_, ' ', end_class_time_)   end_class_time_,
+               teacher_id_,
+               actual_teacher_id_,
+               create_time_,
+               update_time_,
+               teach_mode_,
+               type_,
+               name_,
+               student_num_,
+               leave_student_num_,
+               schoole_id_
+        FROM course_schedule
+        WHERE group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          AND music_group_id_ = #{groupId}
+          AND CONCAT(class_date_, ' ', end_class_time_) &gt; NOW()
     </select>
     <select id="getSubjectNameById" resultType="java.lang.String">
-        SELECT GROUP_CONCAT(DISTINCT s.name_) FROM course_schedule cs
-        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-        LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,cg.subject_id_list_)
+        SELECT GROUP_CONCAT(DISTINCT s.name_)
+        FROM course_schedule cs
+                 LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+                 LEFT JOIN `subject` s ON FIND_IN_SET(s.id_, cg.subject_id_list_)
         WHERE cs.id_ = #{courseScheduleId}
         GROUP BY cg.id_
     </select>
@@ -2802,18 +2808,28 @@
         <result property="courseScheduleId" column="id_"/>
     </resultMap>
     <select id="findCourseRate" resultMap="CourseScheduleRateDtoMap">
-        SELECT cs.class_date_,cs.start_class_time_,cs.end_class_time_,cs.id_,
-        cs.teaching_content_,GROUP_CONCAT(cse.comment_ SEPARATOR ";") comment_,cs.status_
+        SELECT cs.class_date_,
+               cs.start_class_time_,
+               cs.end_class_time_,
+               cs.id_,
+               cs.teaching_content_,
+               GROUP_CONCAT(cse.comment_ SEPARATOR ";") comment_,
+               cs.status_
         FROM course_schedule cs
-        LEFT JOIN course_schedule_evaluate cse ON cs.id_ = cse.course_schedule_id_
-        WHERE cs.music_group_id_ = #{groupId} AND cs.group_type_ = #{groupType}
+                 LEFT JOIN course_schedule_evaluate cse ON cs.id_ = cse.course_schedule_id_
+        WHERE cs.music_group_id_ = #{groupId}
+          AND cs.group_type_ = #{groupType}
         GROUP BY cs.id_
-        ORDER BY cs.class_date_,cs.start_class_time_ ASC
+        ORDER BY cs.class_date_, cs.start_class_time_ ASC
     </select>
     <select id="getLastEndCourse" resultMap="CourseSchedule">
-        SELECT cs.id_ FROM course_schedule cs
-        WHERE cs.music_group_id_ = #{groupId} AND cs.group_type_ = #{groupType} AND NOW() > CONCAT(cs.class_date_,' ',cs.end_class_time_)
-        ORDER BY cs.class_date_,cs.end_class_time_ ASC LIMIT 1
+        SELECT cs.id_
+        FROM course_schedule cs
+        WHERE cs.music_group_id_ = #{groupId}
+          AND cs.group_type_ = #{groupType}
+          AND NOW() > CONCAT(cs.class_date_, ' ', cs.end_class_time_)
+        ORDER BY cs.class_date_, cs.end_class_time_ ASC
+        LIMIT 1
     </select>
 
     <resultMap id="GroupCourseTimesDto" type="com.ym.mec.biz.dal.dto.GroupCourseTimesDto">
@@ -2827,37 +2843,38 @@
     </resultMap>
 
     <select id="findGroupsCourseTimesInfo" resultMap="GroupCourseTimesDto">
-       SELECT
-            cg.music_group_id_ group_id_,
-            cg.group_type_,
-            cg.id_ class_group_id_,
-            cg.total_class_times_ total_course_times_,
-            COUNT( cs.id_ ) surplus_class_times_,
-            MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) start_date_,
-            MAX( CONCAT( class_date_, ' ', end_class_time_ ) ) end_date_
+        SELECT
+        cg.music_group_id_ group_id_,
+        cg.group_type_,
+        cg.id_ class_group_id_,
+        cg.total_class_times_ total_course_times_,
+        COUNT( cs.id_ ) surplus_class_times_,
+        MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) start_date_,
+        MAX( CONCAT( class_date_, ' ', end_class_time_ ) ) end_date_
         FROM
-            class_group cg
-            LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_ AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) > NOW( )
+        class_group cg
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_ AND CONCAT( cs.class_date_, ' ',
+        cs.start_class_time_ ) > NOW( )
         WHERE
-            cg.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-            AND cg.music_group_id_ IN
-            <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
-                #{groupId}
-            </foreach>
+        cg.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        AND cg.music_group_id_ IN
+        <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
+            #{groupId}
+        </foreach>
         GROUP BY
-            cg.id_
+        cg.id_
     </select>
 
     <select id="findGroupsValidate" resultType="com.ym.mec.biz.dal.dto.GroupValidDateDto">
         SELECT
-            cs.music_group_id_ groupId,
-            MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) startDate,
-            MAX( CONCAT( class_date_, ' ', end_class_time_ ) ) endDate
+        cs.music_group_id_ groupId,
+        MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) startDate,
+        MAX( CONCAT( class_date_, ' ', end_class_time_ ) ) endDate
         FROM
-            course_schedule cs
+        course_schedule cs
         WHERE
-          cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-          AND cs.music_group_id_ IN
+        cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        AND cs.music_group_id_ IN
         <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
             #{groupId}
         </foreach>
@@ -2865,20 +2882,77 @@
         cs.music_group_id_
     </select>
     <select id="findCourseByGroupId" resultMap="CourseSchedule">
-        SELECT * FROM course_schedule cs
-        WHERE cs.music_group_id_ = #{groupId} AND cs.group_type_ = #{groupType} AND cs.del_flag_ = 0
+        SELECT *
+        FROM course_schedule cs
+        WHERE cs.music_group_id_ = #{groupId}
+          AND cs.group_type_ = #{groupType}
+          AND cs.del_flag_ = 0
     </select>
     <select id="queryScheduleByAttendance" resultMap="CourseSchedule">
-        SELECT cs.* FROM teacher_attendance ta
-        LEFT JOIN course_schedule cs ON ta.course_schedule_id_ = cs.id_
-        LEFT JOIN student_attendance sa ON ta.course_schedule_id_ = sa.course_schedule_id_
-        WHERE ta.sign_out_status_ = 1 AND ta.sign_in_time_ IS NOT NULL
-        AND MONTH(ta.sign_in_time_) = #{month} AND cs.teach_mode_ = 'ONLINE' AND ta.teacher_id_ = cs.actual_teacher_id_
+        SELECT cs.*
+        FROM teacher_attendance ta
+                 LEFT JOIN course_schedule cs ON ta.course_schedule_id_ = cs.id_
+                 LEFT JOIN student_attendance sa ON ta.course_schedule_id_ = sa.course_schedule_id_
+        WHERE ta.sign_out_status_ = 1
+          AND ta.sign_in_time_ IS NOT NULL
+          AND MONTH(ta.sign_in_time_) = #{month}
+          AND cs.teach_mode_ = 'ONLINE'
+          AND ta.teacher_id_ = cs.actual_teacher_id_
         GROUP BY ta.course_schedule_id_
         HAVING COUNT(sa.id_) > 0
     </select>
 
     <update id="updateCourseNameByGroup">
-        UPDATE course_schedule SET name_=#{name} WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND music_group_id_ = #{groupId};
+        UPDATE course_schedule
+        SET name_=#{name}
+        WHERE group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          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_
+        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}
+        <if test="status != null">
+            AND cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        AND (cs.del_flag_ IS NULL OR cs.del_flag_ =0)
+        GROUP BY cssp.user_id_
+    </select>
+
+    <select id="getVipGroupExport" resultMap="com.ym.mec.biz.dal.dao.PracticeGroupDao.courseGroupExport">
+        SELECT cssp.user_id_ student_id_,
+        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_`
+        WHERE cssp.`group_type_` = 'VIP'
+        <if test="organIds != null and organIds != ''">
+            AND FIND_IN_SET(vg.organ_id_, #{organIds})
+        </if>
+        GROUP BY cssp.`user_id_`,o.id_
+    </select>
+
 </mapper>

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

@@ -241,7 +241,7 @@
         csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,sa.id_
         attendance_id_,sch.is_replied_ home_work_replied_
         FROM course_schedule cs
-        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_
+        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
         LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
         LEFT JOIN sys_user edsu ON pg.educational_teacher_id_ = edsu.id_
         LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
@@ -255,7 +255,7 @@
 
     <select id="countPracticeGroupReviews" resultType="java.lang.Integer">
         SELECT count(*) FROM course_schedule cs
-        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_
+        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
         LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
         LEFT JOIN course_schedule_complaints csc on csc.course_schedule_id_ = cs.id_
         LEFT JOIN student_attendance sa on sa.course_schedule_id_ = cs.id_
@@ -299,7 +299,7 @@
         SELECT csr.id_,cs.class_date_, pg.name_ course_name_,su.real_name_ teacher_name_,csr.hand_homework_
         FROM course_schedule_review csr
         LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
-        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_
+        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
         LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
         <include refid="practiceGroupReviews4EduQueryCondition"/>
         <include refid="global.limit"/>
@@ -309,7 +309,7 @@
     <select id="countPracticeGroupReviews4Edu" resultType="java.lang.Integer">
         SELECT count(*) FROM course_schedule_review csr
         LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
-        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_
+        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
         <include refid="practiceGroupReviews4EduQueryCondition"/>
     </select>
 

+ 75 - 6
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml

@@ -20,6 +20,7 @@
 		<result column="is_replied_" property="isReplied" />
 		<result column="is_view_" property="isView" />
 		<result column="organ_name_" property="organName" />
+		<result column="submit_time_" property="submitTime" />
 	</resultMap>
 
 	<resultMap id="ExtraExerciseStudentsDto" type="com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto" extends="ExtracurricularExercisesReply">
@@ -39,8 +40,8 @@
 			<if test="teacherId != null">
 				AND teacher_id_ = #{teacherId}
 			</if>
-			<if test="organId != null">
-				AND o.id_ = #{organId}
+			<if test="organIdList != null">
+				AND FIND_IN_SET(o.id_, #{organIdList})
 			</if>
 			<if test="studentId != null">
 				AND user_id_ = #{studentId}
@@ -58,7 +59,7 @@
 				AND is_view_ = #{isView}
 			</if>
 			<if test="search != null">
-				AND title_ like concat('%',#{search},'%') or u.username_ like concat('%',#{search},'%')
+				AND (title_ like concat('%',#{search},'%') or u.username_ like concat('%',#{search},'%'))
 			</if>
 			<if test="submitStartTime != null">
 				AND date(eer.create_time_) &gt;= #{submitStartTime}
@@ -127,6 +128,9 @@
 			<if test="attachments != null">
 			attachments_ = #{attachments},
 			</if>
+			<if test="submitTime != null">
+				submit_time_ = #{submitTime},
+			</if>
 			update_time_ = NOW()
 		</set> WHERE id_ = #{id}
 	</update>
@@ -137,8 +141,10 @@
 	</delete>
 	
 	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="ExtracurricularExercisesReply" parameterType="map">
-		SELECT eer.*,u.username_,ee.title_,o.name_ organ_name_ FROM extracurricular_exercises_reply eer left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
+	<select id="queryPage" resultMap="ExtraExerciseStudentsDto" parameterType="map">
+		SELECT eer.*,u.username_,ee.title_,o.name_ organ_name_,ee.teacher_id_,ee.expire_date_
+		FROM extracurricular_exercises_reply eer
+		left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
 		left join sys_user u on eer.user_id_ = u.id_
 		left join teacher t on t.id_ = ee.teacher_id_
 		left join organization o on o.id_ = t.organ_id_
@@ -148,7 +154,8 @@
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(eer.id_) FROM extracurricular_exercises_reply eer left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
+		SELECT COUNT(eer.id_) FROM extracurricular_exercises_reply eer
+		left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
 		left join sys_user u on eer.user_id_ = u.id_
 		left join teacher t on t.id_ = ee.teacher_id_
 		left join organization o on o.id_ = t.organ_id_
@@ -225,4 +232,66 @@
 	<select id="countIsSubmitStudents" resultType="int">
 		SELECT COUNT(id_) FROM extracurricular_exercises_reply WHERE extracurricular_exercises_id_=#{extraExerciseId} AND attachments_ IS NOT NULL
 	</select>
+
+
+
+	<sql id="queryExtraExercisesCondition">
+		<where>
+			<if test="extracurricularExercisesId != null">
+				AND extracurricular_exercises_id_ = #{extracurricularExercisesId}
+			</if>
+			<if test="teacherId != null">
+				AND teacher_id_ = #{teacherId}
+			</if>
+			<if test="organIdList != null">
+				AND FIND_IN_SET(o.id_, #{organIdList})
+			</if>
+			<if test="studentId != null">
+				AND user_id_ = #{studentId}
+			</if>
+			<if test="title != null">
+				AND title_ like '%' #{title} '%'
+			</if>
+			<if test="status != null">
+				AND eer.status_ = #{status}
+			</if>
+			<if test="isReplied != null">
+				AND is_replied_ = #{isReplied}
+			</if>
+			<if test="isView != null">
+				AND is_view_ = #{isView}
+			</if>
+			<if test="search != null">
+				AND (title_ like concat('%',#{search},'%') or u.username_ like concat('%',#{search},'%'))
+			</if>
+			<if test="submitStartTime != null">
+				AND date(eer.create_time_) &gt;= #{submitStartTime}
+			</if>
+			<if test="submitEndTime != null">
+				AND date(eer.create_time_) &lt;= #{submitEndTime}
+			</if>
+			<if test="expireStartDate != null and expireEndDate != null">
+				AND DATE_FORMAT(ee.expire_date_,"%Y%m%d") BETWEEN DATE_FORMAT(#{expireStartDate},"%Y%m%d") AND DATE_FORMAT(#{expireEndDate},"%Y%m%d")
+			</if>
+		</where>
+	</sql>
+
+	<select id="findExtraExercises" resultMap="ExtraExerciseStudentsDto">
+		SELECT eer.*,u.username_,ee.title_,o.name_ organ_name_,ee.teacher_id_,ee.expire_date_
+		FROM extracurricular_exercises_reply eer
+		left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
+		left join sys_user u on eer.user_id_ = u.id_
+		left join teacher t on t.id_ = ee.teacher_id_
+		left join organization o on o.id_ = t.organ_id_
+		<include refid="queryExtraExercisesCondition"/>
+		ORDER BY eer.id_ <include refid="global.limit"/>
+	</select>
+	<select id="countExtraExercises" resultType="int">
+		SELECT COUNT(eer.id_) FROM extracurricular_exercises_reply eer
+		left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
+		left join sys_user u on eer.user_id_ = u.id_
+		left join teacher t on t.id_ = ee.teacher_id_
+		left join organization o on o.id_ = t.organ_id_
+		<include refid="queryExtraExercisesCondition"/>
+	</select>
 </mapper>

+ 45 - 10
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -382,22 +382,25 @@
     </select>
 
     <select id="findByGroupId" resultMap="PracticeCourseDto">
-        SELECT pg.*, s.name_ subject_name_,su.real_name_ edu_teacher_name_
+        SELECT pg.*, s.name_ subject_name_, su.real_name_ edu_teacher_name_
         FROM practice_group pg
                  LEFT JOIN subject s on pg.subject_id_ = s.id_
-        LEFT JOIN sys_user su on pg.educational_teacher_id_ = su.id_
+                 LEFT JOIN sys_user su on pg.educational_teacher_id_ = su.id_
         WHERE pg.id_ = #{id}
     </select>
 
     <select id="countStudentBuys" resultType="java.lang.Integer">
         SELECT COUNT(a.student_id_) FROM
-        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_`   FROM `practice_group` pg WHERE pg.`group_status_` in ('NORMAL','FINISH')) a
-        LEFT JOIN (SELECT pg.`student_id_`  ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate   FROM `practice_group` pg
+        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_` FROM `practice_group` pg WHERE pg.`group_status_` in
+        ('NORMAL','FINISH')) a
+        LEFT JOIN (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate FROM
+        `practice_group` pg
         LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_` and cs.`group_type_` = 'PRACTICE'
         WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
         GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
-        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP BY pg.`student_id_` ) c
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP
+        BY pg.`student_id_` ) c
         on a.student_id_ = c.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
         left join `organization` o on o.`id_` = a.organ_id_
@@ -411,21 +414,26 @@
         <result property="firstBuyTime" column="first_buy_time_"/>
         <result property="intervalDay" column="interval_day_"/>
         <result property="lastClassDate" column="last_class_date_"/>
-        <result property="buyPractice" column="buy_practice_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result property="buyPractice" column="buy_practice_"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
     <select id="queryStudentBuys" resultMap="queryStudentBuysMap">
         SELECT o.`name_` organ_name_,a.student_id_,u.`username_` student_name_,u.phone_,
         b.lastClassDate last_class_date_,c.firstBuyTime first_buy_time_,
-        CASE WHEN DATEDIFF(c.firstBuyTime,b.lastClassDate) &lt; 0 THEN 0 ELSE DATEDIFF(c.firstBuyTime,b.lastClassDate) END interval_day_,
+        CASE WHEN DATEDIFF(c.firstBuyTime,b.lastClassDate) &lt; 0 THEN 0 ELSE DATEDIFF(c.firstBuyTime,b.lastClassDate)
+        END interval_day_,
         CASE WHEN c.firstBuyTime IS NULL THEN 0 ELSE 1 END buy_practice_
         FROM
-        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_`   FROM `practice_group` pg WHERE pg.`group_status_` in ('NORMAL','FINISH')) a
-        LEFT JOIN (SELECT pg.`student_id_`  ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate   FROM `practice_group` pg
+        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_` FROM `practice_group` pg WHERE pg.`group_status_` in
+        ('NORMAL','FINISH')) a
+        LEFT JOIN (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate FROM
+        `practice_group` pg
         LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_` and cs.`group_type_` = 'PRACTICE'
         WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
         GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
-        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP BY pg.`student_id_` ) c
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP
+        BY pg.`student_id_` ) c
         on a.student_id_ = c.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
         left join `organization` o on o.`id_` = a.organ_id_
@@ -448,4 +456,31 @@
             </if>
         </where>
     </sql>
+
+    <resultMap id="courseGroupExport" type="com.ym.mec.biz.dal.dto.CourseGroupExportDto">
+        <result column="organ_name_" property="organName"/>
+        <result column="student_id_" property="studentId"/>
+        <result column="student_name_" property="studentName"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="teacher_name_" property="teacherName"/>
+        <result column="expire_date_" property="expireDate"/>
+        <result column="class_start_date_" property="classStartDate"/>
+        <result column="class_end_date_" property="classEndDate"/>
+        <result column="total_class_times_" property="totalClassTimes"/>
+        <result column="no_start_class_times_" property="noStartClassTimes"/>
+    </resultMap>
+    <select id="getPracticeGroupExport" resultMap="courseGroupExport">
+        SELECT pg.student_id_,
+        su.username_ student_name_,
+        o.name_ organ_name_,
+        MAX(pg.courses_expire_date_) expire_date_
+        FROM practice_group pg
+        LEFT JOIN organization o on o.id_ = pg.organ_id_
+        LEFT JOIN sys_user su ON su.id_ = pg.student_id_
+        WHERE pg.group_status_ IN ('NORMAL','FINISH')
+        <if test="organIds != null and organIds != ''">
+            AND FIND_IN_SET(pg.organ_id_, #{organIds})
+        </if>
+        GROUP BY pg.student_id_,o.id_
+    </select>
 </mapper>

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

@@ -22,6 +22,7 @@
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="is_replied_" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="is_view_" property="isView" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="submit_time_" property="submitTime"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto" id="CourseHomeworkStudentDetailDto">
@@ -114,6 +115,9 @@
             <if test="isView != null">
                 is_view_ = #{isView,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="submitTime!=null">
+                submit_time_ = #{submitTime}
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>

+ 7 - 5
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -7,6 +7,7 @@
         <result property="classGroupId" column="class_group_id_" />
         <result property="classGroupName" column="class_group_name_" />
         <result property="classGroupType" column="class_group_type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result property="courseScheduleType" column="course_schedule_type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="courseDate" column="course_date_" />
         <result property="courseStatus" column="course_status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="teacherName" column="teacher_name_" />
@@ -256,13 +257,13 @@
             <if test="courseStatus != null and courseStatus != ''">
                 AND cs.status_ = #{courseStatus}
             </if>
-            <if test="classGroupType!=null">
-                AND cg.type_ = #{classGroupType}
+            <if test="courseScheduleType!=null">
+                AND cs.type_ = #{courseScheduleType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
-            <if test="attendanceStatus != null and attendanceStatus != 'TRUANT'">
+            <if test="attendanceStatus != null and attendanceStatus != @com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum@TRUANT">
                 AND sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
-            <if test="attendanceStatus != null and attendanceStatus == 'TRUANT'">
+            <if test="attendanceStatus != null and attendanceStatus == @com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum@TRUANT">
                 AND (sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} OR sa.status_ IS NULL)
             </if>
             <if test="classGroupName!=null">
@@ -279,6 +280,7 @@
             cg.id_ class_group_id_,
             cg.name_ class_group_name_,
             cg.type_ class_group_type_,
+            cs.type_ course_schedule_type_,
             CONCAT(cs.class_date_," ",cs.start_class_time_) course_date_,
             su.real_name_ teacher_name_,
             IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_,
@@ -302,7 +304,7 @@
         LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
         LEFT JOIN class_group cg ON cssp.class_group_id_ = cg.id_
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
-        LEFT JOIN sys_user su ON sa.teacher_id_ = su.id_
+        LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
         <include refid="studentManageAttendanceQueryCondition"/>
     </select>
 

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

@@ -245,7 +245,7 @@
         WHERE su.del_flag_ = 0
         <include refid="queryPageMap"/>
         GROUP BY t.id_
-        ORDER BY t.update_time_ DESC
+        ORDER BY t.id_ DESC
         <include refid="global.limit"/>
     </select>
     <!-- 查询当前表的总记录数 -->

+ 212 - 25
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -5,6 +5,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
@@ -16,21 +17,19 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
-
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
@@ -76,6 +75,10 @@ public class ExportController extends BaseController {
     private CourseReviewService courseReviewService;
     @Autowired
     private TenantPaymentOrderService tenantPaymentOrderService;
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
+    @Autowired
+    private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
 
     @ApiOperation(value = "网管课购买列表")
     @PostMapping("export/studentBuyPractice")
@@ -126,14 +129,14 @@ public class ExportController extends BaseController {
         }
         List<TenantPaymentOrder> paymentOrders = tenantPaymentOrderService.queryPage(queryInfo).getRows();
         try {
-			HSSFWorkbook workbook = POIUtil.exportExcel(new String[] { "交易流水号", "订单号", "订单日期", "交易类型", "应付金额", "实付金额", "用户姓名", "手机号码", "交易方式", "收款账户", "交易状态",
-					"备注", "交易方式" }, new String[] { "transNo", "orderNo", "createTime", "type.desc", "expectAmount", "actualAmount", "user.username",
-					"user.phone", "paymentChannel", "merNos", "status.msg", "memo", "paymentChannel.desc" }, paymentOrders);
-			response.setContentType("application/octet-stream");
-			response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-			response.flushBuffer();
-			workbook.write(response.getOutputStream());
-			workbook.close();
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"交易流水号", "订单号", "订单日期", "交易类型", "应付金额", "实付金额", "用户姓名", "手机号码", "交易方式", "收款账户", "交易状态",
+                    "备注", "交易方式"}, new String[]{"transNo", "orderNo", "createTime", "type.desc", "expectAmount", "actualAmount", "user.username",
+                    "user.phone", "paymentChannel", "merNos", "status.msg", "memo", "paymentChannel.desc"}, paymentOrders);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            workbook.write(response.getOutputStream());
+            workbook.close();
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -333,23 +336,23 @@ public class ExportController extends BaseController {
                     "教学点", "课程状态", "是否点名", "指导老师", "学员编号", "签到时间", "签退时间", "签到状态", "签退状态", "签到备注"}, new String[]{
                     "organName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
                     "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "isCallNames.msg", "teacherName", "studentId", "signInTime",
-                    "signOutTime","signInStatusEnum.msg","signOutStatusEnum.msg", "remark"}, rows);
+                    "signOutTime", "signInStatusEnum.msg", "signOutStatusEnum.msg", "remark"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
-			workbook.write(ouputStream);
-			ouputStream.flush();
+            workbook.write(ouputStream);
+            ouputStream.flush();
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
-			if (ouputStream != null) {
-				try {
-					ouputStream.close();
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-			}
-		}
+            if (ouputStream != null) {
+                try {
+                    ouputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
     }
 
 
@@ -396,7 +399,7 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('order/musicalListExport')")
     public void musicalListExport(HttpServletResponse response, String musicGroupId) {
         List<Goods> musicalList = studentPaymentOrderDetailService.getMusicalList(musicGroupId);
-        if(musicalList == null){
+        if (musicalList == null) {
             throw new BizException("数据集为空");
         }
         if (musicalList.size() > 50000) {
@@ -740,8 +743,8 @@ public class ExportController extends BaseController {
                 }
             }
 
-            String[] header = {"分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置作业)", "完成app双向沟通","学员评分", "是否提交作业", "是否回复作业", "教务老师", "教务评价"};
-            String[] body = {"organName", "classDateStr", "studentId", "id", "attendanceStr", "courseName", "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "hasLiaison","studentReview", "handHomeworkStr", "homeWorkReplied", "eduTeacherName", "courseReview"};
+            String[] header = {"分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置作业)", "完成app双向沟通", "学员评分", "是否提交作业", "是否回复作业", "教务老师", "教务评价"};
+            String[] body = {"organName", "classDateStr", "studentId", "id", "attendanceStr", "courseName", "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "hasLiaison", "studentReview", "handHomeworkStr", "homeWorkReplied", "eduTeacherName", "courseReview"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupReviews.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -752,4 +755,188 @@ public class ExportController extends BaseController {
             e.printStackTrace();
         }
     }
+
+
+    @ApiOperation(value = "网管课管理导出")
+    @RequestMapping("export/practiceGroup")
+    @PreAuthorize("@pcs.hasPermissions('export/practiceGroup')")
+    public void practiceGroup(HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        String organIds = null;
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            organIds = employee.getOrganIdList();
+        }
+
+        List<CourseGroupExportDto> practiceGroupExports = practiceGroupDao.getPracticeGroupExport(organIds);
+        if (practiceGroupExports == null || practiceGroupExports.size() == 0) {
+            response.setStatus(500);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            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> 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 studentTotalClassTimes : totalClassTimes) {
+                if (studentTotalClassTimes.getStudentId().equals(practiceGroupExport.getStudentId())) {
+                    practiceGroupExport.setTotalClassTimes(studentTotalClassTimes.getTotalClassTimes());
+                    break;
+                }
+            }
+            for (CourseGroupExportDto noStartStudentClassTimes : noStartClassTimes) {
+                if (noStartStudentClassTimes.getStudentId().equals(practiceGroupExport.getStudentId())) {
+                    practiceGroupExport.setNoStartClassTimes(noStartStudentClassTimes.getTotalClassTimes());
+                    break;
+                }
+            }
+        }
+
+        try {
+            String[] header = {"分部", "学生编号", "学生姓名", "网管课老师id", "网管课老师", "有效期截止时间", "课程截止时间", "总课时", "剩余课时"};
+            String[] body = {"organName", "studentId", "studentName", "teacherId", "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");
+            response.flushBuffer();
+            workbook.write(response.getOutputStream());
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation(value = "vip管理导出")
+    @RequestMapping("export/vipGroup")
+    @PreAuthorize("@pcs.hasPermissions('export/vipGroup')")
+    public void vipGroup(HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        String organIds = null;
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            organIds = employee.getOrganIdList();
+        }
+
+        List<CourseGroupExportDto> vipGroupExports = courseScheduleDao.getVipGroupExport(organIds);
+        if (vipGroupExports == null || vipGroupExports.size() == 0) {
+            response.setStatus(500);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            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> 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 studentTotalClassTimes : totalClassTimes) {
+                if (studentTotalClassTimes.getStudentId().equals(vipGroupExport.getStudentId())) {
+                    vipGroupExport.setTotalClassTimes(studentTotalClassTimes.getTotalClassTimes());
+                    break;
+                }
+            }
+            for (CourseGroupExportDto noStartStudentClassTimes : noStartClassTimes) {
+                if (noStartStudentClassTimes.getStudentId().equals(vipGroupExport.getStudentId())) {
+                    vipGroupExport.setNoStartClassTimes(noStartStudentClassTimes.getTotalClassTimes());
+                    break;
+                }
+            }
+        }
+
+        try {
+            String[] header = {"分部", "学生编号", "学生姓名", "指导老师id", "指导老师", "课程开始时间", "课程截止时间", "总课时", "剩余课时"};
+            String[] body = {"organName", "studentId", "studentName", "teacherId", "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");
+            response.flushBuffer();
+            workbook.write(response.getOutputStream());
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation(value = "学生课外训练记录导出")
+    @GetMapping("export/extraExercisesReplys")
+    @PreAuthorize("@pcs.hasPermissions('export/extraExercisesReplys')")
+    public void extraExercisesReplys(ExtraExercilseReplyQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        queryInfo.setRows(999999999);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (org.apache.commons.lang3.StringUtils.isEmpty(queryInfo.getOrganIdList())) {
+                queryInfo.setOrganIdList(employee.getOrganIdList());
+            } else if (org.apache.commons.lang3.StringUtils.isEmpty(employee.getOrganIdList())) {
+                throw new BizException("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganIdList().split(",")))) {
+                    throw new BizException("非法请求");
+                }
+            }
+        }
+        List<ExtraExerciseStudentsDto> rows = extracurricularExercisesReplyService.findExtraExercises(queryInfo).getRows();
+        if (CollectionUtils.isEmpty(rows)) {
+            response.setStatus(500);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            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?"否":"是");
+        }
+        OutputStream ouputStream = null;
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(
+                    new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "提交作业", "是否回复", "是否查看"},
+                    new String[]{"createTime", "expireDate", "title", "teacherName", "organName", "user.username", "statusStr", "isRepliedStr", "isViewStr"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            ouputStream = response.getOutputStream();
+            workbook.write(ouputStream);
+            ouputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (ouputStream != null) {
+                try {
+                    ouputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }

+ 33 - 6
mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesReplyController.java

@@ -1,17 +1,23 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.page.ExtraExercilseReplyQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.ym.mec.biz.dal.page.ExtraExercilseReplyQueryInfo;
-import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
+import java.util.Arrays;
+import java.util.List;
 
 @Api(tags = "课外训练学生作业服务")
 @RequestMapping("extracurricularExercisesReply")
@@ -20,10 +26,31 @@ public class ExtracurricularExercisesReplyController extends BaseController {
 
     @Autowired
     private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
 
     @ApiOperation(value = "获取课外训练作业列表")
     @GetMapping("/queryPageList")
     private HttpResponseResult findExtraExercilses(ExtraExercilseReplyQueryInfo queryInfo){
-        return succeed(extracurricularExercisesReplyService.queryPage(queryInfo));
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (org.apache.commons.lang3.StringUtils.isEmpty(queryInfo.getOrganIdList())) {
+                queryInfo.setOrganIdList(employee.getOrganIdList());
+            } else if (org.apache.commons.lang3.StringUtils.isEmpty(employee.getOrganIdList())) {
+                throw new BizException("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganIdList().split(",")))) {
+                    throw new BizException("非法请求");
+                }
+            }
+        }
+        return succeed(extracurricularExercisesReplyService.findExtraExercises(queryInfo));
     }
 }