zouxuan před 3 roky
rodič
revize
dce472c380

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

@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareRecord> {
 
@@ -72,5 +73,4 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
     int getOrganNewCloudStudyNum(@Param("organId") Integer organId);
     int getOrgansTotalNewCloudStudyNum(@Param("organIds") List<Integer> organIds);
     List<Map<Integer, Integer>> getOrgansNewCloudStudyNum(@Param("organIds") List<Integer> organIds);
-
 }

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

@@ -52,6 +52,17 @@ public class StudentManageQueryInfo extends QueryInfo {
     //是否有指导老师
     private Integer hasTeacher;
 
+    //是否使用过云教练
+    private Integer isRecord;
+
+    public Integer getIsRecord() {
+        return isRecord;
+    }
+
+    public void setIsRecord(Integer isRecord) {
+        this.isRecord = isRecord;
+    }
+
     public Integer getHasTeacher() {
         return hasTeacher;
     }

+ 29 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
@@ -25,7 +24,6 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.web.WebFeignService;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -116,6 +114,11 @@ public class StudentManageServiceImpl implements StudentManageService {
 
         List<StudentManageListDto> dataList = null;
         int count = studentManageDao.countStudentByOrganId(params);
+        if (queryInfo.getIsExport()) {
+            if (count > 50000) {
+                throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+            }
+        }
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
@@ -144,7 +147,31 @@ public class StudentManageServiceImpl implements StudentManageService {
         Map<Long,String> cloudMap = MapUtil.convertMybatisMap(cloudTeacherOrderService.queryNoStartByUserIds(userIds,null));
         //List<Subject> studentSubject = studentManageDao.getStudentSubject(userIds);
         StudentListCourseDto studentListCourseDto = null;
+        //获取所在乐团
+        Map<Integer, String> musicGroupNames = null;
+        //获取所在vip
+        Map<Integer, String> vipGroupNames = null;
+        //获取所在乐团状态
+        Map<Integer, String> musicGroupStatus = null;
+        //获取所在vip状态
+        Map<Integer, String> vipGroupStatus = null;
+        if (queryInfo.getIsExport()) {
+            //获取所在乐团
+            musicGroupNames = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicNames(userIds));
+            //获取所在vip
+            vipGroupNames = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipNames(userIds));
+            //获取所在乐团状态
+            musicGroupStatus = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicStatus(userIds));
+            //获取所在vip状态
+            vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
+        }
         for (StudentManageListDto dto : dataList) {
+            if (queryInfo.getIsExport()) {
+                dto.setMusicGroupName(musicGroupNames.get(dto.getUserId()));
+                dto.setVipGroupName(vipGroupNames.get(dto.getUserId()));
+                dto.setMusicGroupStatus(musicGroupStatus.get(dto.getUserId()));
+                dto.setVipGroupStatus(vipGroupStatus.get(dto.getUserId()));
+            }
             studentListCourseDto = StudentListCourseDtoMap.get(dto.getUserId());
             if (studentListCourseDto != null) {
                 if (studentListCourseDto.getRemainCourseNum() > 0) {
@@ -186,27 +213,6 @@ public class StudentManageServiceImpl implements StudentManageService {
             //年级
             dto.setCurrentGrade(studentService.getStudentGrade(dto.getGradeType(),dto.getCurrentGradeNum()));
         }
-
-        if (queryInfo.getIsExport()) {
-            if (count > 50000) {
-                throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
-            }
-            //获取所在乐团
-            Map<Integer, String> musicGroupNames = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicNames(userIds));
-            //获取所在vip
-            Map<Integer, String> vipGroupNames = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipNames(userIds));
-            //获取所在乐团状态
-            Map<Integer, String> musicGroupStatus = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicStatus(userIds));
-            //获取所在vip状态
-            Map<Integer, String> vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
-
-            dataList.forEach(e -> {
-                e.setMusicGroupName(musicGroupNames.get(e.getUserId()));
-                e.setVipGroupName(vipGroupNames.get(e.getUserId()));
-                e.setMusicGroupStatus(musicGroupStatus.get(e.getUserId()));
-                e.setVipGroupStatus(vipGroupStatus.get(e.getUserId()));
-            });
-        }
         pageInfo.setRows(dataList);
         return pageInfo;
     }

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

@@ -77,6 +77,7 @@
         <result column="membership_day_" property="membershipDay"/>
         <result column="experience_membership_day_" property="experienceMembershipDay"/>
         <result column="experience_membership_end_time_" property="experienceMembershipEndTime"/>
+        <result column="record_user_id_" property="recordUserId"/>
     </resultMap>
 
     <sql id="queryCondition">
@@ -171,7 +172,8 @@
         CASE WHEN su.password_ IS NULL THEN FALSE ELSE TRUE END isActive_,s.is_new_user_,
         s.membership_end_time_,CASE WHEN sut.user_id_ IS NULL THEN 0 ELSE 1 END is_signed_contract_,
         s.cooperation_organ_id_,co.name_ cooperation_organ_name_,s.activity_course_detail_,s.experience_membership_end_time_,
-        DATEDIFF(s.experience_membership_end_time_,NOW()) experience_membership_day_,DATEDIFF(s.membership_end_time_,NOW()) membership_day_
+        DATEDIFF(s.experience_membership_end_time_,NOW()) experience_membership_day_,DATEDIFF(s.membership_end_time_,NOW()) membership_day_,
+        smcr.user_id_ record_user_id_
 		FROM `student` s LEFT JOIN `sys_user` su ON s.`user_id_` = su.`id_`
 		LEFT JOIN `organization` o ON o.`id_` = su.`organ_id_`
 		LEFT JOIN `sys_user` tu ON tu.`id_` = s.`teacher_id_`
@@ -179,6 +181,7 @@
 		LEFT JOIN `subject` sub ON sub.id_ = s.`subject_id_list_`
 		LEFT JOIN sys_user_tsign sut ON sut.user_id_ = s.user_id_
         LEFT JOIN cooperation_organ co ON s.cooperation_organ_id_=co.id_
+        LEFT JOIN (SELECT DISTINCT user_id_ FROM sys_music_compare_record) smcr ON smcr.user_id_ = s.user_id_
         <if test="hasMember != null">
             <if test="hasMember == 2">
                 LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_
@@ -197,6 +200,14 @@
                     #{organId}
                 </foreach>
             </if>
+            <if test="isRecord != null">
+                <if test="isRecord == 0">
+                    AND smcr.user_id_ IS NULL
+                </if>
+                <if test="isRecord == 1">
+                    AND smcr.user_id_ IS NOT NULL
+                </if>
+            </if>
             <if test="search != null and search != ''">
                 AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_ LIKE CONCAT('%',#{search},'%'))
             </if>
@@ -265,6 +276,9 @@
                 LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_
             </if>
         </if>
+        <if test="isRecord != null">
+            LEFT JOIN (SELECT DISTINCT user_id_ FROM sys_music_compare_record) smcr ON smcr.user_id_ = s.user_id_
+        </if>
        <include refid="findStudentsByOrganIdSql"/>
     </select>
     <select id="findStudentBaseInfoByUserID" resultMap="studentManageListDto">

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

@@ -244,7 +244,7 @@
 				 LEFT JOIN sys_music_compare_record mcr ON mcr.user_id_ = s.user_id_
 		WHERE s.teacher_id_ = #{teacherId}
 		<if test="startTime != null and startTime != ''">
-			AND (mcr.create_time_ BETWEEN #{startTime} AND #{endTime} OR mcr.id_ IS NULL)
+			AND (DATE_FORMAT(mcr.create_time_, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime} OR mcr.id_ IS NULL)
 		</if>
 		<if test="search != null and search != ''">
 			AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
@@ -274,7 +274,7 @@
 				 LEFT JOIN sys_music_compare_record mcr ON mcr.user_id_ = s.user_id_
 		WHERE s.teacher_id_ = #{teacherId}
 		<if test="startTime != null and startTime != ''">
-			AND (mcr.create_time_ BETWEEN #{startTime} AND #{endTime} OR mcr.id_ IS NULL)
+			AND (DATE_FORMAT(mcr.create_time_, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime} OR mcr.id_ IS NULL)
 		</if>
 		<if test="search != null and search != ''">
 			AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))

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

@@ -970,10 +970,10 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
                     "家长联系电话", "是否激活", "是否有课", "是否有网管课","网管课剩余课时","VIP课剩余课时", "课程余额(元)", "账户余额(元)",
-                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"}, new String[]{
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用云教练", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
                     "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg","noStartPracticeCourseNum","noStartVipCourseNum", "courseBalance", "balance", "musicGroupName",
-                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'",
+                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'",
                     "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? \"未生效\" : \"未购买\" : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? \"未生效\" : \"会员已过期\"",
                     "experienceMembershipEndTime","membershipEndTime == null ? \"未试用\" : membershipDay >= 0 ? membershipDay : \"已失效\""}, rows);
             response.setContentType("application/octet-stream");