浏览代码

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

yonge 5 年之前
父节点
当前提交
b848b320cd

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleEvaluateDao.java

@@ -12,4 +12,6 @@ import java.util.List;
 public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleEvaluate> {
 
     CourseScheduleEvaluate findByClassGroupId(@Param("classGroupId") Integer classGroupId);
+
+    List<CourseScheduleEvaluate> findByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds);
 }

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

@@ -36,6 +36,15 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     List<StudentAttendance> findByCourseId(@Param("courseId") Long courseId);
 
     /**
+     * @describe 获取课程的学生签到记录
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param courseIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentAttendance>
+     */
+    List<StudentAttendance> findByCourseIds(@Param("courseIds") List<Long> courseIds);
+
+    /**
      * @describe 根据课程删除对应的点名记录
      * @author Joburgess
      * @date 2019/10/21
@@ -137,7 +146,7 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      * @param courseScheduleIds:
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
-    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List courseScheduleIds);
 
     /**
      * @describe 根据课程获取最后的点名时间

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupCourseScheduleDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -75,6 +76,16 @@ public class MusicGroupCourseScheduleDto {
     @ApiModelProperty(value = "签到备注")
     private String remark;
 
+    private YesOrNoEnum isCallNames;
+
+    public YesOrNoEnum getIsCallNames() {
+        return isCallNames;
+    }
+
+    public void setIsCallNames(YesOrNoEnum isCallNames) {
+        this.isCallNames = isCallNames;
+    }
+
     public Date getSignInTime() {
         return signInTime;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java

@@ -83,6 +83,9 @@ public class TeacherClassGroupDto {
     @ApiModelProperty(value = "陪练报告URL")
     private String studyReportUrl;
 
+    @ApiModelProperty(value = "是否已有报告")
+    private Boolean hasReport;
+
     public Date getCourseStartDate() {
         return courseStartDate;
     }
@@ -274,4 +277,12 @@ public class TeacherClassGroupDto {
     public void setStudyReportUrl(String studyReportUrl) {
         this.studyReportUrl = studyReportUrl;
     }
+
+    public Boolean getHasReport() {
+        return hasReport;
+    }
+
+    public void setHasReport(Boolean hasReport) {
+        this.hasReport = hasReport;
+    }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -32,10 +32,20 @@ public class StudentManageQueryInfo extends QueryInfo {
 
     private Boolean isMake;
 
+    private Boolean isExport;
+
     private Boolean hasCourse;
 
     private Boolean hasPracticeCourse;
 
+    public Boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(Boolean export) {
+        isExport = export;
+    }
+
     public Boolean getHasPracticeCourse() {
         return hasPracticeCourse;
     }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -158,7 +158,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String TEACHER_STUDY_REPORT_URL = "teacher_study_report_url";
 
     /**
-     * 陪练课学生地址
+     * 陪练课报告地址
      */
     String STUDENT_STUDY_REPORT_URL = "student_study_report_url";
 

+ 25 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -80,6 +80,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
+    @Autowired
     private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
     @Autowired
     private StudentRegistrationService studentRegistrationService;
@@ -106,6 +108,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private SubjectDao subjectDao;
     @Autowired
     private GroupDao groupDao;
+    @Autowired
+    private CourseScheduleEvaluateDao courseScheduleEvaluateDao;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -975,7 +979,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             //剩余课程为显示陪练报告入口rul
             if(teacherClassGroupDto.getType() == ClassGroupTypeEnum.PRACTICE){
-               if(classGroupNoStartClassTimes.intValue()==0 && classGroupTeacherMap.get(teacherClassGroupDto.getClassGroupId().intValue()).equals(user.getId())){
+                List<CourseScheduleEvaluate> courseScheduleEvaluates = courseScheduleEvaluateDao.findByClassGroupIds(classGroupIds);
+                Map<Integer, Long> reportMap = courseScheduleEvaluates.stream().collect(Collectors.toMap(CourseScheduleEvaluate::getClassGroupId, CourseScheduleEvaluate::getId));
+                if(reportMap.containsKey(teacherClassGroupDto.getClassGroupId().intValue())){
+                    teacherClassGroupDto.setHasReport(true);
+                    String studyReportUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_STUDY_REPORT_URL);
+                    teacherClassGroupDto.setStudyReportUrl(studyReportUrl+teacherClassGroupDto.getClassGroupId());
+                }else if(classGroupNoStartClassTimes.intValue()==0 && classGroupTeacherMap.get(teacherClassGroupDto.getClassGroupId().intValue()).equals(user.getId())){
                    String studyReportUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_STUDY_REPORT_URL);
                    teacherClassGroupDto.setStudyReportUrl(studyReportUrl+teacherClassGroupDto.getClassGroupId());
                }
@@ -2026,25 +2036,28 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 //            Set<Integer> mixClassGroupIds = dataList.stream().map(e -> e.getMixClassGroupId()).collect(Collectors.toSet());
 //            String mixClassGroupIdsStr = StringUtils.join(mixClassGroupIds, ",");
             //所有课程编号的列表
-            List<Integer> couseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
+            List<Integer> courseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
             //获取合奏班名称
 //            Map<Integer, String> classGroupNames = MapUtil.convertMybatisMap(classGroupDao.findNameById(mixClassGroupIdsStr));
 
             //主教老师
             Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleBishopTeacherMaps=new HashMap<>();
 
+            //是否点名
+            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             //助教老师
             Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeachingTeacherMaps=new HashMap<>();
-            if(!CollectionUtils.isEmpty(couseScheduleIds)){
-                List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "BISHOP");
+            if(!CollectionUtils.isEmpty(courseScheduleIds)){
+                List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(courseScheduleIds, "BISHOP");
                 courseScheduleBishopTeacherMaps = bishopTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
 
                 //助教老师
-                List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "TEACHING");
+                List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(courseScheduleIds, "TEACHING");
                 courseScheduleTeachingTeacherMaps = teachingTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
             }
-
+            MusicGroupCourseScheduleDto scheduleDto = null;
             for(int i=0;i<dataList.size();i++){
+                scheduleDto = dataList.get(i);
 //                e.setMixClassGroupName(classGroupNames.get(e.getMixClassGroupId()));
                 List<CourseScheduleTeacherSalary> currentBishopTeacher = courseScheduleBishopTeacherMaps.get(dataList.get(i).getCourseScheduleId().longValue());
                 List<CourseScheduleTeacherSalary> TeachingTeachers = new ArrayList<>();
@@ -2062,6 +2075,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 TeachingTeachers.addAll(currentCourseTeachingTeachers);
                 dataList.get(i).setTeachingTeachers(TeachingTeachers);
                 dataList.get(i).setTeacherNum(TeachingTeachers.size());
+                Long studentNum = studentNumCourseMap.get(scheduleDto.getCourseScheduleId());
+                if (Objects.nonNull(studentNum)) {
+                    scheduleDto.setIsCallNames(studentNum > 0 ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+                } else {
+                    scheduleDto.setIsCallNames(YesOrNoEnum.NO);
+                }
                 /*if (CollectionUtils.isEmpty(currentCourseTeachingTeachers) && !CollectionUtils.isEmpty(currentBishopTeacher)) {
                     currentCourseTeachingTeachers = new ArrayList<>();
                     if (currentBishopTeacher != null) {

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

@@ -2885,8 +2885,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             List<Long> courseScheduleIds = results.stream().map(CourseScheduleEndDto::getId).collect(Collectors.toList());
             List<TeacherAttendance> teacherAttendances = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
             Map<Long, List<TeacherAttendance>> courseTeacherAttendanceMap = teacherAttendances.stream().collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
-            List<Map<Integer, Integer>> studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds);
-            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentNumCourseMaps);
+            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             List<Group> groups=new ArrayList<>();
             groups.add(null);
             List<Integer> teacherIds=new ArrayList<>();

+ 19 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -64,6 +64,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
     @Autowired
     private VipGroupCategoryDao vipGroupCategoryDao;
+    @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -181,7 +183,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void teacherSalarySettlement() {
-
         int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
 
         BigDecimal percent = new BigDecimal(10);
@@ -195,6 +196,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         Date now = new Date();
         //获取未结算课程编号列表
         List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
+
+        //所有课程的学生考勤记录
+        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(courseScheduleIds);
+        Map<Long, List<StudentAttendance>> courseStudentAttendancesMap = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
+
         //获取未结算课程投诉记录
         List<CourseScheduleComplaints> courseScheduleComplaints = courseScheduleComplaintsDao.findByCourseScheduleIds(courseScheduleIds);
         //获取未结算课程学生缴费信息
@@ -215,6 +221,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         //处理课酬信息
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
+
             //获取当前课程学生缴费记录
             List<CourseScheduleStudentPayment> studentPaymentsWithCourse = studentPaymentGroupByCourse.get(courseScheduleTeacherSalary.getCourseScheduleId());
 
@@ -222,6 +229,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 return;
             }
 
+            List<StudentAttendance> courseStudentAttendances = courseStudentAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
+            int normalStudentNum=0;
+            for (StudentAttendance courseStudentAttendance : courseStudentAttendances) {
+                if(courseStudentAttendance.getStatus().equals(StudentAttendanceStatusEnum.NORMAL)){
+                    normalStudentNum+=1;
+                }
+            }
+            if(normalStudentNum==0){
+                return;
+            }
+
             //当前课程缴费学生数量
             BigDecimal courseStudentNum = new BigDecimal(studentPaymentsWithCourse.size());
 

+ 9 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -4,12 +4,8 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 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.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
@@ -99,18 +95,21 @@ public class StudentManageServiceImpl implements StudentManageService {
         }else {
             count = studentManageDao.countStudentByOrganId(params);
         }
+        if(queryInfo.getIsExport() && count > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         List<StudentManageListDto> dataList = null;
         if (count > 0) {
             pageInfo.setTotal(count);
             dataList = studentManageDao.findStudentsByOrganId(params);
             Set<Integer> userIds = dataList.stream().map(StudentManageListDto::getUserId).collect(Collectors.toSet());
-//            Set<Integer> organIds = dataList.stream().map(StudentManageListDto::getOrganId).collect(Collectors.toSet());
+            Set<Integer> organIds = dataList.stream().map(StudentManageListDto::getOrganId).collect(Collectors.toSet());
             List<SysUserCashAccount> byUserIds = sysUserCashAccountDao.findByUserIds(userIds);
             Map<Integer, SysUserCashAccount> collect = byUserIds.stream()
                     .collect(Collectors.toMap(SysUserCashAccount::getUserId, sysUserCashAccount -> sysUserCashAccount));
             Map<Integer,Integer> hasPracticeCourseMap = MapUtil.convertIntegerMap(studentManageDao.getHasPracticeCourse(userIds));
             //获取用户分部
-            /*Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+            Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
             //获取所在乐团
             Map<Integer,String> musicGroupNames = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicNames(userIds));
             //获取所在vip
@@ -120,26 +119,14 @@ public class StudentManageServiceImpl implements StudentManageService {
             //获取所在vip状态
             Map<Integer,String> vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
             //获取所在声部
-            Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(studentManageDao.querySubjectNames(userIds));*/
+            Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(studentManageDao.querySubjectNames(userIds));
             dataList.forEach(e -> {
-                /*e.setOrganName(organNames.get(e.getOrganId()));
+                e.setOrganName(organNames.get(e.getOrganId()));
                 e.setMusicGroupName(musicGroupNames.get(e.getUserId()));
                 e.setVipGroupName(vipGroupNames.get(e.getUserId()));
                 e.setSubjectName(subjectNames.get(e.getUserId()));
-                String musicStatus = musicGroupStatus.get(e.getUserId());
-                if(StringUtils.isNotEmpty(musicStatus)){
-                    String[] split = musicStatus.split(",");
-                    for (int i = 0;i < split.length;i++){
-                        e.setMusicGroupStatus(ClassGroupStudentStatusEnum.valueOf(split[i]).getMsg()+" ");
-                    }
-                }
-                String vipStatus = vipGroupStatus.get(e.getUserId());
-                if(StringUtils.isNotEmpty(vipStatus)){
-                    String[] split = vipStatus.split(",");
-                    for (int i = 0;i < split.length;i++){
-                        e.setVipGroupStatus(ClassGroupStudentStatusEnum.valueOf(split[i]).getMsg()+" ");
-                    }
-                }*/
+                e.setMusicGroupStatus(musicGroupStatus.get(e.getUserId()));
+                e.setVipGroupStatus(vipGroupStatus.get(e.getUserId()));
                 if(hasCourse == null){
                     Integer course = studentManageDao.getHasCourse(e.getUserId());
                     e.setHasCourse(course==null?YesOrNoEnum.NO:course==0?YesOrNoEnum.NO:YesOrNoEnum.YES);

+ 25 - 17
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -2,31 +2,39 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao">
     <resultMap id="CourseScheduleEvaluate" type="com.ym.mec.biz.dal.entity.CourseScheduleEvaluate">
-        <id column="id_" jdbcType="BIGINT" property="id" />
-        <result column="music_group_id_" jdbcType="VARCHAR" property="musicGroupId" />
-        <result column="class_group_id_" jdbcType="INTEGER" property="classGroupId" />
-        <result column="course_schedule_id_" jdbcType="BIGINT" property="courseScheduleId" />
-        <result column="teacher_id_" jdbcType="INTEGER" property="teacherId" />
-        <result column="item_" jdbcType="VARCHAR" property="item" />
-        <result column="comment_" jdbcType="LONGVARCHAR" property="comment" />
-        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
-        <result column="student_id_" jdbcType="INTEGER" property="studentId"  />
-        <result column="subject_name_" jdbcType="VARCHAR" property="subjectName"  />
+        <id column="id_" jdbcType="BIGINT" property="id"/>
+        <result column="music_group_id_" jdbcType="VARCHAR" property="musicGroupId"/>
+        <result column="class_group_id_" jdbcType="INTEGER" property="classGroupId"/>
+        <result column="course_schedule_id_" jdbcType="BIGINT" property="courseScheduleId"/>
+        <result column="teacher_id_" jdbcType="INTEGER" property="teacherId"/>
+        <result column="item_" jdbcType="VARCHAR" property="item"/>
+        <result column="comment_" jdbcType="LONGVARCHAR" property="comment"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="student_id_" jdbcType="INTEGER" property="studentId"/>
+        <result column="subject_name_" jdbcType="VARCHAR" property="subjectName"/>
     </resultMap>
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleEvaluate" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         insert into course_schedule_evaluate (music_group_id_, class_group_id_, course_schedule_id_,
-        teacher_id_, item_, comment_,
-        create_time_)
+                                              teacher_id_, item_, comment_,
+                                              create_time_)
         values (#{musicGroupId,jdbcType=VARCHAR}, #{classGroupId,jdbcType=INTEGER}, #{courseScheduleId,jdbcType=BIGINT},
-        #{teacherId,jdbcType=INTEGER}, #{item,jdbcType=VARCHAR}, #{comment,jdbcType=LONGVARCHAR},
-        #{createTime,jdbcType=TIMESTAMP})
+                #{teacherId,jdbcType=INTEGER}, #{item,jdbcType=VARCHAR}, #{comment,jdbcType=LONGVARCHAR},
+                #{createTime,jdbcType=TIMESTAMP})
     </insert>
 
     <select id="findByClassGroupId" resultMap="CourseScheduleEvaluate">
-        SELECT cse.*,s.name_ subject_name_,pg.student_id_ FROM course_schedule_evaluate cse
-        LEFT JOIN practice_group pg ON pg.id_ = cse.music_group_id_
-        LEFT JOIN subject s on s.id_ = pg.subject_id_
+        SELECT cse.*, s.name_ subject_name_, pg.student_id_
+        FROM course_schedule_evaluate cse
+                 LEFT JOIN practice_group pg ON pg.id_ = cse.music_group_id_
+                 LEFT JOIN subject s on s.id_ = pg.subject_id_
         WHERE cse.class_group_id_ = #{classGroupId}
     </select>
+
+    <select id="findByClassGroupIds" resultMap="CourseScheduleEvaluate">
+        SELECT * FROM course_schedule_evaluate WHERE class_group_id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
+            #{classGroupId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -401,7 +401,10 @@
 		GROUP BY sr.user_id_
 	</select>
 	<select id="queryUserMusicStatus" resultType="java.util.Map">
-		SELECT sr.user_id_ 'key',GROUP_CONCAT(sr.music_group_status_) 'value'
+		SELECT sr.user_id_ 'key',GROUP_CONCAT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN '在读'
+		WHEN sr.music_group_status_ = 'LEAVE' THEN '请假'
+		WHEN sr.music_group_status_ = 'QUIT' THEN '退班'
+		WHEN sr.music_group_status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN

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

@@ -469,4 +469,10 @@
     <select id="findByCourseId" resultMap="StudentAttendance">
         SELECT * FROM student_attendance WHERE course_schedule_id_=#{courseId}
     </select>
+    <select id="findByCourseIds" resultMap="StudentAttendance">
+        SELECT * FROM student_attendance WHERE course_schedule_id_ IN
+        <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+            #{courseId}
+        </foreach>
+    </select>
 </mapper>

+ 3 - 2
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -706,8 +706,9 @@
         <result property="vipGroupName" column="vip_group_name_"/>
         <result property="vipGroupStatus" column="vip_group_status_"/>
         <result property="organName" column="organ_name_"/>
+        <result property="organId" column="organ_id_"/>
         <result property="subjectName" column="music_group_subject_"/>
-        <result property="courseBalance" column="balance_"/>
+        <result property="courseBalance" column="course_balance_"/>
     </resultMap>
     <select id="queryHasCourseStudent" resultMap="studentManageListDto">
         SELECT su.id_ user_id_,su.username_,su.gender_,GROUP_CONCAT(DISTINCT sr.parents_name_)parents_name_,
@@ -728,7 +729,7 @@
         CASE WHEN GROUP_CONCAT(DISTINCT pla.id_) IS NULL THEN 0 ELSE 1 END isMake_,
         CASE WHEN su.password_ IS NULL THEN 0 ELSE 1 END isActive_,
         CASE WHEN GROUP_CONCAT(DISTINCT cssp1.id_) IS NULL THEN 0 ELSE 1 END hasPracticeCourse_,
-        suca.balance_
+        suca.course_balance_
         FROM sys_user su
         LEFT JOIN course_schedule_student_payment cssp ON su.id_ = cssp.user_id_
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_ AND cs.status_ != 'OVER'

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

@@ -900,7 +900,11 @@
         GROUP BY cgsm.user_id_
     </select>
     <select id="queryUserVipStatus" resultType="java.util.Map">
-        SELECT cgsm.user_id_ 'key',GROUP_CONCAT(cgsm.status_)'value' FROM class_group_student_mapper cgsm
+        SELECT cgsm.user_id_ 'key',GROUP_CONCAT(CASE WHEN cgsm.status_ = 'NORMAL' THEN '在读'
+        WHEN cgsm.status_ = 'LEAVE' THEN '请假'
+        WHEN cgsm.status_ = 'QUIT' THEN '退班'
+        WHEN cgsm.status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
+        FROM class_group_student_mapper cgsm
         LEFT JOIN vip_group vg ON cgsm.music_group_id_ = vg.id_
         WHERE vg.group_status_ IN (2,4) AND cgsm.user_id_ IN
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">

+ 26 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudyReportController.java

@@ -0,0 +1,26 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.service.CourseScheduleEvaluateService;
+import com.ym.mec.common.controller.BaseController;
+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;
+
+@RequestMapping("studyReport")
+@Api(tags = "陪练报告")
+@RestController
+public class StudyReportController extends BaseController {
+
+	@Autowired
+	private CourseScheduleEvaluateService courseScheduleEvaluateService;
+
+
+	@ApiOperation("获取学生陪练报告信息")
+	@GetMapping(value = "info")
+	public Object info(Integer classGroupId) {
+		return succeed(courseScheduleEvaluateService.getStudyReport(classGroupId));
+	}
+}

+ 5 - 4
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -52,6 +52,7 @@ public class StudentManageController extends BaseController {
     @PostMapping("export/studentHasCourse")
     @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")
     public void studentHasCourse(HttpServletResponse response, StudentManageQueryInfo queryInfo) {
+        queryInfo.setRows(99999);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -69,10 +70,9 @@ public class StudentManageController extends BaseController {
                 }
             }
         }
-        List<StudentManageListDto> rows = studentManageService.queryHasCourseStudent(queryInfo);
-        if(rows.size() > 50000){
-            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
-        }
+        queryInfo.setIsExport(true);
+//        List<StudentManageListDto> rows = studentManageService.queryHasCourseStudent(queryInfo);
+        List<StudentManageListDto> rows = studentManageService.findStudentsByOrganId(queryInfo).getRows();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
                     "家长联系电话", "是否激活", "是否有课", "是否预约陪练课","是否有陪练课", "课程余额(元)",
@@ -111,6 +111,7 @@ public class StudentManageController extends BaseController {
                 }
             }
         }
+        queryInfo.setIsExport(false);
         return succeed(studentManageService.findStudentsByOrganId(queryInfo));
     }