Browse Source

Merge remote-tracking branch 'origin/saas' into saas

Eric 11 months ago
parent
commit
683001d8c5

+ 2 - 2
mec-application/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -2827,10 +2827,10 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员姓名", "学员编号", "专业", "老师姓名", "老师编号",
-                    "课程组编号","课程组名称", "课程编号", "课程名称", "课程组类型", "课程类型", "上课时间","签到时间", "签退时间", "考勤状态","来源"}, new String[]{
+                    "课程组编号","课程组名称", "课程编号", "课程名称", "课程组类型", "课程类型", "上课时间","签到时间", "签退时间", "考勤状态","是否达标","来源"}, new String[]{
                     "courseSchedule.organization.name", "username", "userId","subjectName", "courseSchedule.teacherName", "teacherId", "musicGroupId", "musicGroupName", "courseScheduleId",
                     "courseSchedule.name", "groupType.desc", "courseSchedule.type.msg", "classTimeStr", "signInTime",
-                    "signOutTime", "status.msg","joinCourseType.msg"}, rows);
+                    "signOutTime", "status.msg","qualifiedFlag == null || qualifiedFlag == 0? '未达标' : '已达标'","joinCourseType.msg"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=courseAttendance-" + DateUtil.getDate(new Date()) + ".xls");

+ 1 - 1
mec-application/src/main/java/com/ym/mec/web/controller/education/EduCloudStudyController.java

@@ -52,7 +52,7 @@ public class EduCloudStudyController extends BaseController {
     @GetMapping("countStudentTrain")
     public HttpResponseResult<PageInfo<CountStudentTrainDataDto>> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo){
         //获取分部下学员列表
-        List<Integer> userIds = studentDao.queryByOrganIds(organizationService.getEmployeeOrgan(null));
+        List<Integer> userIds = studentDao.queryByOrganIds(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         queryInfo.setStudentIdList(userIds);
         return succeed(sysMusicCompareRecordService.countStudentTrain(queryInfo));
     }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -166,7 +166,8 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
 
     List<Long> queryCourseIdByClassDate(@Param("firstDayOfMonth") Date firstDayOfMonth,
                                        @Param("lastDayOfMonth") Date lastDayOfMonth,
-                                       @Param("teacherId") Integer teacherId);
+                                       @Param("teacherId") Integer teacherId,
+                                        @Param("musicGroupIds") List<String> musicGroupIds);
 
     /**
      * 统计服务周期内可布置的作业和训练数量

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentAttendanceQueryInfo.java

@@ -61,4 +61,7 @@ public class StudentAttendanceQueryInfo extends QueryInfo {
     private Boolean visitFlag;
 
     private Boolean orderFlag;
+
+    @ApiModelProperty(value = "是否达标1是0否")
+    private Boolean qualifiedFlag;
 }

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

@@ -19,6 +19,8 @@ public class StudentQueryInfo extends QueryInfo {
 
     private Integer organId;
 
+    private String organIds;
+
     private List<String> organIdList;
 
     private String cloudStudyUseTime;
@@ -29,6 +31,14 @@ public class StudentQueryInfo extends QueryInfo {
     
     private Date cloudTeacherTrainEndDate;
 
+    public String getOrganIds() {
+        return organIds;
+    }
+
+    public void setOrganIds(String organIds) {
+        this.organIds = organIds;
+    }
+
     public String getGroupType() {
         return groupType;
     }

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

@@ -127,7 +127,10 @@ public interface StudentService extends BaseService<Integer, Student> {
      * @return com.ym.mec.biz.dal.dto.StatDto
      */
     StatDto organStudentData(StudentQueryInfo queryInfo);
-    StatDto exportOrganStudentData(StudentQueryInfo queryInfo);
+
+    int countOrganStudentData(Map<String, Object> params);
+
+    List<EduOrganStudentListExportDto> exportOrganStudentData(Map<String, Object> params);
 
     List<EduOrganStudentDataDto> organStudentOverView(List<Integer> organIds);
 

+ 4 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -1241,19 +1241,12 @@ public class ExportServiceImpl implements ExportService {
     //分部云教练学员训练数据导出
     @Override
     public List cloudStudyStudentTrainData(Map<String, Object> info) {
-        StudentQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), StudentQueryInfo.class);
-        List<EduOrganStudentListExportDto> rows = ((PageInfo<EduOrganStudentListExportDto>) studentService.exportOrganStudentData(queryInfo).getDetail()).getRows();
-        if (CollectionUtils.isEmpty(rows)) {
+        info.put("tenantId", TenantContextHolder.getTenantId());
+        int count = studentService.countOrganStudentData(info);
+        if (count <= 0) {
             throw new BizException("没有可导出的记录");
         }
-        List<Integer> userIds = rows.stream().map(EduOrganStudentListExportDto::getStudentId).collect(Collectors.toList());
-        Map<Integer,String> teacherMapper = MapUtil.convertMybatisMap(studentTeacherMapperDao.queryTeacherMapper(userIds,"NORMAL"));
-        for (EduOrganStudentListExportDto row : rows) {
-            row.setCloudStudyUseTime(Math.round(row.getCloudStudyUseTime()));
-            row.setCloudStudyUseAvgTime(Math.round(row.getCloudStudyUseAvgTime()));
-            row.setSubjectTeacherName(teacherMapper.get(row.getStudentId()));
-        }
-        return rows;
+        return studentService.exportOrganStudentData(info);
     }
 
     //分部云教练学员数据详情导出

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

@@ -434,7 +434,7 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 			firstDayOfMonth = queryInfo.getStartTime();
 			lastDayOfMonth = queryInfo.getEndTime();
 		}
-		List<Long> courseIds = studentExtracurricularExercisesSituationDao.queryCourseIdByClassDate(firstDayOfMonth,lastDayOfMonth,queryInfo.getTeacherId());
+		List<Long> courseIds = studentExtracurricularExercisesSituationDao.queryCourseIdByClassDate(firstDayOfMonth,lastDayOfMonth,queryInfo.getTeacherId(),null);
 		if(courseIds == null || courseIds.size() == 0){
 			return pageInfo;
 		}
@@ -687,7 +687,7 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
             courseIds.add(queryInfo.getCourseScheduleId().longValue());
         } else {
             courseIds = studentExtracurricularExercisesSituationDao.queryCourseIdByClassDate(firstDayOfMonth,
-                                                    lastDayOfMonth, queryInfo.getTeacherId());
+                                                    lastDayOfMonth, queryInfo.getTeacherId(),queryInfo.getMusicGroupIds());
         }
         if(courseIds == null || courseIds.size() == 0){
             return pageInfo;

+ 111 - 117
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -31,7 +31,6 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -85,6 +84,8 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Autowired
     private EmployeeDao employeeDao;
     @Autowired
+    private StudentTeacherMapperDao studentTeacherMapperDao;
+    @Autowired
     private OrganizationService organizationService;
     @Autowired
     private SysUserCashAccountDao sysUserCashAccountDao;
@@ -605,135 +606,128 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     }
 
     @Override
-    public StatDto exportOrganStudentData(StudentQueryInfo queryInfo) {
-        PageInfo<EduOrganStudentListExportDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<String, Object>();
-        MapUtil.populateMap(params, queryInfo);
+    public int countOrganStudentData(Map<String, Object> params) {
+        return studentDao.countCloudStudyStudentData(params);
+    }
+    @Override
+    public List<EduOrganStudentListExportDto> exportOrganStudentData(Map<String, Object> params) {
+        List<EduOrganStudentListDto> dataList1 = studentDao.queryCloudStudyStudentData(params);
+        List<Integer> studentIds = dataList1.stream().map(EduOrganStudentListDto::getStudentId).collect(Collectors.toList());
+        Set<Integer> organIds = dataList1.stream().map(EduOrganStudentListDto::getOrganId).collect(Collectors.toSet());
+        Map<Integer,String> organMap = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
 
-        List<EduOrganStudentListDto> dataList1 = new ArrayList<>();
-        List<EduOrganStudentListExportDto> dataList = new ArrayList<>();
-        int count = studentDao.countCloudStudyStudentData(params);
-        if (count > 0) {
-            pageInfo.setTotal(count);
-            params.put("offset", pageInfo.getOffset());
-            dataList1 = studentDao.queryCloudStudyStudentData(params);
-            List<Integer> studentIds = dataList1.stream().map(EduOrganStudentListDto::getStudentId).collect(Collectors.toList());
-            Set<Integer> organIds = dataList1.stream().map(EduOrganStudentListDto::getOrganId).collect(Collectors.toSet());
-            Map<Integer,String> organMap = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+        List<Map<Integer, String>> studentGroupNamesMapList = studentRegistrationDao.queryStudentMusicGroupNamesMap(studentIds);
+        Map<Integer, String> studentGroupNamesMap = MapUtil.convertIntegerMap(studentGroupNamesMapList);
 
-            List<Map<Integer, String>> studentGroupNamesMapList = studentRegistrationDao.queryStudentMusicGroupNamesMap(studentIds);
-            Map<Integer, String> studentGroupNamesMap = MapUtil.convertIntegerMap(studentGroupNamesMapList);
+        List<Map<Integer, String>> studentGroupEduMapList = studentRegistrationDao.queryStudentMusicGroupEduMap(studentIds);
+        Map<Integer, String> studentGroupEduMap = MapUtil.convertIntegerMap(studentGroupEduMapList);
 
-            List<Map<Integer, String>> studentGroupEduMapList = studentRegistrationDao.queryStudentMusicGroupEduMap(studentIds);
-            Map<Integer, String> studentGroupEduMap = MapUtil.convertIntegerMap(studentGroupEduMapList);
+        List<Map<Long, BigDecimal>> activeAmountMapList = cloudTeacherOrderDao.queryActiveAmountMap(studentIds);
+        Map<Long, BigDecimal> activeAmountMap = MapUtil.convertIntegerMap(activeAmountMapList);
 
-            List<Map<Long, BigDecimal>> activeAmountMapList = cloudTeacherOrderDao.queryActiveAmountMap(studentIds);
-            Map<Long, BigDecimal> activeAmountMap = MapUtil.convertIntegerMap(activeAmountMapList);
+        Set<Integer> hasVipCourseStudentIds = courseScheduleStudentPaymentDao.getHasVipCourseStudentIds(studentIds);
 
-            Set<Integer> hasVipCourseStudentIds = courseScheduleStudentPaymentDao.getHasVipCourseStudentIds(studentIds);
+        List<Map<Integer, String>> studentSchoolNamesMapList = studentDao.getStudentCooperationNameMap(studentIds);
+        Map<Integer, String> studentSchoolNamesMap = MapUtil.convertIntegerMap(studentSchoolNamesMapList);
 
-            List<Map<Integer, String>> studentSchoolNamesMapList = studentDao.getStudentCooperationNameMap(studentIds);
-            Map<Integer, String> studentSchoolNamesMap = MapUtil.convertIntegerMap(studentSchoolNamesMapList);
-
-            List<SysUser> users = employeeDao.getUsers(studentIds);
-            Map<Integer, SysUser> idUserMap = new HashMap<>();
-            if(!CollectionUtils.isEmpty(users)){
-                idUserMap = users.stream().collect(Collectors.toMap(SysUser::getId, u -> u, (u1, u2) -> u1));
-            }
-
-            List<Student> students = studentDao.findByStudentIds(studentIds);
-            Map<Integer, Student> idStudentMap = new HashMap<>();
-            if(!CollectionUtils.isEmpty(students)){
-                idStudentMap = students.stream().collect(Collectors.toMap(Student::getUserId, s->s, (s1, s2)->s1));
-            }
-
-            List<Map<Integer, Integer>> studentNotStartCourseNumMapList = courseScheduleStudentPaymentDao.countStudentsNotStartCourseNumWithCourseType(studentIds, null);
-            Map<Integer, Long> studentNotStartCourseNumMap = new HashMap<>();
-            if(!CollectionUtils.isEmpty(studentNotStartCourseNumMapList)){
-                studentNotStartCourseNumMap = MapUtil.convertIntegerMap(studentNotStartCourseNumMapList);
-            }
-            List<Map<Integer, Integer>> studentNotStartVipCourseNumMapList = courseScheduleStudentPaymentDao.countStudentsNotStartCourseNumWithCourseType(studentIds, CourseSchedule.CourseScheduleType.VIP);
-            Map<Integer, Long> studentNotStartVipCourseNumMap = new HashMap<>();
-            if(!CollectionUtils.isEmpty(studentNotStartVipCourseNumMapList)){
-                studentNotStartVipCourseNumMap = MapUtil.convertIntegerMap(studentNotStartVipCourseNumMapList);
-            }
-            List<Map<Integer, Integer>> studentNotStartPracticeCourseNumMapList = courseScheduleStudentPaymentDao.countStudentsNotStartCourseNumWithCourseType(studentIds, CourseSchedule.CourseScheduleType.PRACTICE);
-            Map<Integer, Long> studentNotStartPracticeCourseNumMap = new HashMap<>();
-            if(!CollectionUtils.isEmpty(studentNotStartPracticeCourseNumMapList)){
-                studentNotStartPracticeCourseNumMap = MapUtil.convertIntegerMap(studentNotStartPracticeCourseNumMapList);
-            }
-            Map<Integer, String> subjectMap = subjectService.getMap("subject", "id_", "name_", false, 1, Integer.class, String.class);
-            //获取分部年级列表
-            Map<Integer, String> gradeList = organizationService.getGradeList(1);
-            for (EduOrganStudentListDto eduOrganStudentListDto : dataList1) {
-                EduOrganStudentListExportDto data = JSON.parseObject(JSON.toJSONString(eduOrganStudentListDto),EduOrganStudentListExportDto.class);
-                data.setOrganName(organMap.get(data.getOrganId()));
-                data.setSubjectName(subjectMap.get(data.getSubjectId()));
-                if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentGradeNum())) {
-                    data.setCurrentGradeNum(eduOrganStudentListDto.getCurrentGradeNum());
-                    String grade = gradeList.get(Integer.parseInt(eduOrganStudentListDto.getCurrentGradeNum()));
-                    if (StringUtils.isNotEmpty(grade)) {
-                        data.setCurrentGradeNum(grade);
-                    }
-                }
-                if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentClass())) {
-                    data.setCurrentClass(eduOrganStudentListDto.getCurrentClass());
-                }
-                if(activeAmountMap.containsKey(data.getStudentId().longValue())){
-                    data.setActiveAmount(activeAmountMap.get(data.getStudentId().longValue()));
-                }
-                if(studentGroupEduMap.containsKey(data.getStudentId())){
-                    data.setEducationName(studentGroupEduMap.get(data.getStudentId()));
-                }
-                if(studentGroupNamesMap.containsKey(data.getStudentId())){
-                    data.setMusicGroupNames(studentGroupNamesMap.get(data.getStudentId()));
-                }
-                if(studentSchoolNamesMap.containsKey(data.getStudentId())){
-                    data.setSchoolNames(studentSchoolNamesMap.get(data.getStudentId()));
-                }
-                if(hasVipCourseStudentIds.contains(data.getStudentId())){
-                    data.setHasVipGroup(1);
-                }
-                if(data.getCloudStudyUseNum()>0 && data.getCloudStudyUseTime()>0){
-                    data.setCloudStudyUseAvgTime(data.getCloudStudyUseTime()/data.getCloudStudyUseNum());
-                }
-                data.setCloudStudyUseTime(data.getCloudStudyUseTime()/60);
-                data.setCloudStudyUseAvgTime(data.getCloudStudyUseAvgTime()/60);
+        List<SysUser> users = employeeDao.getUsers(studentIds);
+        Map<Integer, SysUser> idUserMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(users)){
+            idUserMap = users.stream().collect(Collectors.toMap(SysUser::getId, u -> u, (u1, u2) -> u1));
+        }
 
-                if(idUserMap.containsKey(eduOrganStudentListDto.getStudentId())){
-                    SysUser sysUser = idUserMap.get(data.getStudentId());
-                    data.setPhone(sysUser.getPhone());
-                    data.setEnable(StringUtils.isNotBlank(sysUser.getPassword()));
+        List<Student> students = studentDao.findByStudentIds(studentIds);
+        Map<Integer, Student> idStudentMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(students)){
+            idStudentMap = students.stream().collect(Collectors.toMap(Student::getUserId, s->s, (s1, s2)->s1));
+        }
+
+        List<Map<Integer, Integer>> studentNotStartCourseNumMapList = courseScheduleStudentPaymentDao.countStudentsNotStartCourseNumWithCourseType(studentIds, null);
+        Map<Integer, Long> studentNotStartCourseNumMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(studentNotStartCourseNumMapList)){
+            studentNotStartCourseNumMap = MapUtil.convertIntegerMap(studentNotStartCourseNumMapList);
+        }
+        List<Map<Integer, Integer>> studentNotStartVipCourseNumMapList = courseScheduleStudentPaymentDao.countStudentsNotStartCourseNumWithCourseType(studentIds, CourseSchedule.CourseScheduleType.VIP);
+        Map<Integer, Long> studentNotStartVipCourseNumMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(studentNotStartVipCourseNumMapList)){
+            studentNotStartVipCourseNumMap = MapUtil.convertIntegerMap(studentNotStartVipCourseNumMapList);
+        }
+        List<Map<Integer, Integer>> studentNotStartPracticeCourseNumMapList = courseScheduleStudentPaymentDao.countStudentsNotStartCourseNumWithCourseType(studentIds, CourseSchedule.CourseScheduleType.PRACTICE);
+        Map<Integer, Long> studentNotStartPracticeCourseNumMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(studentNotStartPracticeCourseNumMapList)){
+            studentNotStartPracticeCourseNumMap = MapUtil.convertIntegerMap(studentNotStartPracticeCourseNumMapList);
+        }
+        Map<Integer, String> subjectMap = subjectService.getMap("subject", "id_", "name_", false, 1, Integer.class, String.class);
+        //获取分部年级列表
+        Map<Integer, String> gradeList = organizationService.getGradeList(1);
+        //获取学员指导老师
+        Map<Integer,String> teacherMapper = MapUtil.convertMybatisMap(studentTeacherMapperDao.queryTeacherMapper(studentIds,"NORMAL"));
+        List<EduOrganStudentListExportDto> dataList = new ArrayList<>();
+        for (EduOrganStudentListDto eduOrganStudentListDto : dataList1) {
+            EduOrganStudentListExportDto data = JSON.parseObject(JSON.toJSONString(eduOrganStudentListDto),EduOrganStudentListExportDto.class);
+            data.setOrganName(organMap.get(data.getOrganId()));
+            data.setSubjectName(subjectMap.get(data.getSubjectId()));
+            if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentGradeNum())) {
+                data.setCurrentGradeNum(eduOrganStudentListDto.getCurrentGradeNum());
+                String grade = gradeList.get(Integer.parseInt(eduOrganStudentListDto.getCurrentGradeNum()));
+                if (StringUtils.isNotEmpty(grade)) {
+                    data.setCurrentGradeNum(grade);
                 }
+            }
+            if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentClass())) {
+                data.setCurrentClass(eduOrganStudentListDto.getCurrentClass());
+            }
+            if(activeAmountMap.containsKey(data.getStudentId().longValue())){
+                data.setActiveAmount(activeAmountMap.get(data.getStudentId().longValue()));
+            }
+            if(studentGroupEduMap.containsKey(data.getStudentId())){
+                data.setEducationName(studentGroupEduMap.get(data.getStudentId()));
+            }
+            if(studentGroupNamesMap.containsKey(data.getStudentId())){
+                data.setMusicGroupNames(studentGroupNamesMap.get(data.getStudentId()));
+            }
+            if(studentSchoolNamesMap.containsKey(data.getStudentId())){
+                data.setSchoolNames(studentSchoolNamesMap.get(data.getStudentId()));
+            }
+            if(hasVipCourseStudentIds.contains(data.getStudentId())){
+                data.setHasVipGroup(1);
+            }
+            if(data.getCloudStudyUseNum()>0 && data.getCloudStudyUseTime()>0){
+                data.setCloudStudyUseAvgTime(data.getCloudStudyUseTime()/data.getCloudStudyUseNum());
+            }
+            data.setCloudStudyUseTime(data.getCloudStudyUseTime()/60);
+            data.setCloudStudyUseAvgTime(data.getCloudStudyUseAvgTime()/60);
 
-                if(idStudentMap.containsKey(data.getStudentId())){
-                    Student student = idStudentMap.get(data.getStudentId());
-                    data.setNewUser(student.getIsNewUser());
-                    data.setServiceTag(Objects.isNull(student.getServiceTag())?0:student.getServiceTag());
-                    data.setOperatingTag(Objects.isNull(student.getOperatingTag())?0:student.getOperatingTag());
-                    data.setCarePackage(Objects.nonNull(student.getCarePackage())?student.getCarePackage():0);
-                    data.setComeOnPackage(Objects.isNull(student.getComeOnPackage())?0:student.getComeOnPackage());
-                }
+            if(idUserMap.containsKey(eduOrganStudentListDto.getStudentId())){
+                SysUser sysUser = idUserMap.get(data.getStudentId());
+                data.setPhone(sysUser.getPhone());
+                data.setEnable(StringUtils.isNotBlank(sysUser.getPassword()));
+            }
 
-                if(studentNotStartCourseNumMap.containsKey(data.getStudentId())){
-                    data.setNotStartCourseNum(studentNotStartCourseNumMap.get(data.getStudentId()).intValue());
-                }
-                if(studentNotStartVipCourseNumMap.containsKey(data.getStudentId())){
-                    data.setNotStartVipCourseNum(studentNotStartVipCourseNumMap.get(data.getStudentId()).intValue());
-                }
-                if(studentNotStartPracticeCourseNumMap.containsKey(data.getStudentId())){
-                    data.setNotStartPracticeCourseNum(studentNotStartPracticeCourseNumMap.get(data.getStudentId()).intValue());
-                }
+            if(idStudentMap.containsKey(data.getStudentId())){
+                Student student = idStudentMap.get(data.getStudentId());
+                data.setNewUser(student.getIsNewUser());
+                data.setServiceTag(Objects.isNull(student.getServiceTag())?0:student.getServiceTag());
+                data.setOperatingTag(Objects.isNull(student.getOperatingTag())?0:student.getOperatingTag());
+                data.setCarePackage(Objects.nonNull(student.getCarePackage())?student.getCarePackage():0);
+                data.setComeOnPackage(Objects.isNull(student.getComeOnPackage())?0:student.getComeOnPackage());
+            }
 
-                dataList.add(data);
+            if(studentNotStartCourseNumMap.containsKey(data.getStudentId())){
+                data.setNotStartCourseNum(studentNotStartCourseNumMap.get(data.getStudentId()).intValue());
+            }
+            if(studentNotStartVipCourseNumMap.containsKey(data.getStudentId())){
+                data.setNotStartVipCourseNum(studentNotStartVipCourseNumMap.get(data.getStudentId()).intValue());
+            }
+            if(studentNotStartPracticeCourseNumMap.containsKey(data.getStudentId())){
+                data.setNotStartPracticeCourseNum(studentNotStartPracticeCourseNumMap.get(data.getStudentId()).intValue());
             }
+            data.setCloudStudyUseTime(Math.round(data.getCloudStudyUseTime()));
+            data.setCloudStudyUseAvgTime(Math.round(data.getCloudStudyUseAvgTime()));
+            data.setSubjectTeacherName(teacherMapper.get(data.getStudentId()));
+            dataList.add(data);
         }
-        pageInfo.setRows(dataList);
-
-        StatDto result = new StatDto();
-        result.setDetail(pageInfo);
-
-        return result;
+        return dataList;
     }
 
     @Override

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

@@ -949,7 +949,7 @@
         SELECT mg.id_ musicGroupId,o.name_ organName,mg.name_ musicGroupName,mg.status_ musicGroupStatus,mg.course_view_type_ courseViewType FROM
         music_group mg
         LEFT JOIN organization o ON mg.organ_id_ = o.id_
-        WHERE status_ IN ('PRE_APPLY','PRE_BUILD_FEE','FEE_AUDIT','APPLY','PAY') and mg.tenant_id_ = #{tenantId}
+        WHERE status_ IN ('PRE_APPLY','PRE_BUILD_FEE','FEE_AUDIT','APPLY','PAY') and mg.tenant_id_ = #{tenantId} AND mg.del_flag_ = 0
         <if test="organId != null">
             AND FIND_IN_SET(mg.organ_id_,#{organId})
         </if>

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

@@ -477,7 +477,7 @@
     </select>
     
     <select id="findStudentAttendance" resultMap="StudentAttendance">
-        SELECT cssp.id_,cssp.course_schedule_id_,cssp.user_id_,cssp.group_type_,cssp.music_group_id_,sa.sign_in_time_,sa.sign_out_time_,
+        SELECT cssp.id_,cssp.course_schedule_id_,cssp.user_id_,cssp.group_type_,cssp.music_group_id_,sa.sign_in_time_,sa.sign_out_time_,sa.qualified_flag_,
                CASE WHEN sa.status_ IS NULL and cs.status_ = 'OVER' THEN 'TRUANT' ELSE sa.status_ END status_,
         cs.teach_mode_,cs.type_ course_type_,o.name_ organ_name_,
         cs.name_ course_schedule_name_,cs.status_ course_status_,
@@ -510,6 +510,14 @@
                     AND (sa.visit_flag_ = 0 OR sa.visit_flag_ IS NULL)
                 </if>
             </if>
+            <if test="qualifiedFlag != null">
+                <if test="qualifiedFlag == 1">
+                    AND sa.qualified_flag_ = 1
+                </if>
+                <if test="qualifiedFlag == 0">
+                    AND (sa.qualified_flag_ = 0 OR sa.qualified_flag_ IS NULL)
+                </if>
+            </if>
             <if test="courseScheduleId != null">
                 AND cssp.course_schedule_id_ = #{courseScheduleId}
             </if>

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

@@ -836,6 +836,12 @@
         left join lesson_examination le on le.course_schedule_id_ = csts.course_schedule_id_
         WHERE FIND_IN_SET(cs.id_, se.course_ids_) and le.id_ is null
         AND se.serve_type_ = 'HOMEWORK'
+        <if test="musicGroupIds != null and musicGroupIds.size > 0">
+            AND cs.music_group_id_ IN
+            <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+                #{musicGroupId}
+            </foreach>
+        </if>
         <if test="teacherId != null">
             AND csts.user_id_ = #{teacherId}
         </if>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -795,6 +795,9 @@
             <if test="organId!=null">
                 AND su.organ_id_=#{organId}
             </if>
+            <if test="organIds != null and organIds != ''">
+                AND FIND_IN_SET(su.organ_id_,#{organIds})
+            </if>
             <if test="search!=null and search!=''">
                 AND (t.user_id_=#{search} OR su.username_ LIKE CONCAT('%', #{search}, '%'))
             </if>

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

@@ -33,7 +33,8 @@
 		select distinct cgsm.user_id_ student_id_,cgtm.user_id_ teacher_id_,cg.type_ teacher_type_ from class_group cg
 		left join class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
 		left join class_group_student_mapper cgsm ON cgsm.class_group_id_ = cg.id_
-		where cg.del_flag_ = 0 AND cg.type_ IN ('MIX','NORMAL') AND cgsm.status_ != 'QUIT';
+		left join music_group mg ON mg.id_ = cg.music_group_id_
+		where cg.del_flag_ = 0 AND cg.type_ IN ('MIX','NORMAL') AND mg.status_ = 'PROGRESS' AND cgsm.status_ != 'QUIT';
 	</insert>
 	<insert id="batchInsert">
 		insert into student_teacher_mapper (student_id_, teacher_id_, teacher_type_) VALUE