Przeglądaj źródła

云教练训练统计优化

zouxuan 3 lat temu
rodzic
commit
c2c8084287

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -469,4 +469,11 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 	 * @return java.util.List<java.lang.String>
 	 */
     List<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverView(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    /**
+     * 获取在读,进行中的乐团名称
+     * @param studentIds
+     * @return
+     */
+    List<Map<Integer, String>> queryNormalGroupName(@Param("studentIds") List<Integer> studentIds);
 }

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

@@ -66,13 +66,6 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
      * @param params
      * @return
      */
-    int countStudentTrain(Map<String, Object> params);
-
-    /**
-     * 老师端首页学员训练统计
-     * @param params
-     * @return
-     */
     List<CountStudentTrainDataDto> queryStudentTrain(Map<String, Object> params);
 
     /**

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

@@ -56,6 +56,9 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 	@Autowired
 	private SysConfigDao sysConfigDao;
 
+	@Autowired
+	private MusicGroupDao musicGroupDao;
+
 	@Override
 	public BaseDAO<Long, SysMusicCompareRecord> getDAO() {
 		return sysMusicCompareRecordDao;
@@ -363,9 +366,13 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		if(count > 0){
 			params.put("offset", pageInfo.getOffset());
 			dataList = sysMusicCompareRecordDao.queryStudentTrain(params);
+			List<Integer> studentIds = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+			//获取学员在读,进行中的乐团名称
+			Map<Integer,String> groupNameMap = MapUtil.convertMybatisMap(musicGroupDao.queryNormalGroupName(studentIds));
 			pageInfo.setTotal(count);
-			if(visitFlag == 1){
-				for (CountStudentTrainDataDto e : dataList) {
+			for (CountStudentTrainDataDto e : dataList) {
+				e.setMusicGroupName(groupNameMap.get(e.getUserId()));
+				if(visitFlag == 1){
 					e.setVisitFlag(visitFlag);
 				}
 			}

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

@@ -964,4 +964,14 @@
         GROUP BY sr.music_group_id_
         ORDER BY mg.create_time_ DESC, mg.id_
     </select>
+    <select id="queryNormalGroupName" resultType="java.util.Map">
+        SELECT sr.user_id_ 'key',GROUP_CONCAT(mg.name_) 'value' FROM student_registration sr
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ = 'PROGRESS' AND sr.music_group_status_ = 'NORMAL'
+        AND sr.user_id_ IN
+        <foreach collection="studentIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY sr.user_id_
+    </select>
 </mapper>

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

@@ -245,32 +245,6 @@
 		GROUP BY
 			user_id_
 	</select>
-    <select id="countStudentTrain" resultType="java.lang.Integer">
-		SELECT COUNT(DISTINCT s.user_id_)
-		FROM teacher t
-				 LEFT JOIN student s ON t.id_ = s.teacher_id_
-				 LEFT JOIN sys_user su ON su.id_ = s.user_id_
-				 LEFT JOIN sys_music_compare_record mcr ON mcr.user_id_ = s.user_id_
-		<if test="startTime != null and startTime != ''">
-			AND (DATE_FORMAT(mcr.create_time_, '%Y-%m-%d') >= #{startTime} OR mcr.id_ IS NULL)
-		</if>
-		<if test="endTime != null and endTime != ''">
-			AND (DATE_FORMAT(mcr.create_time_, '%Y-%m-%d') &lt;= #{endTime} OR mcr.id_ IS NULL)
-		</if>
-		WHERE s.teacher_id_ = #{teacherId}
-		<if test="search != null and search != ''">
-			AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
-		</if>
-		<if test="visitStudents != null and visitStudents.size > 0">
-			AND s.user_id_ NOT IN
-			<foreach collection="visitStudents" open="(" close=")" item="userId" separator=",">
-				#{userId}
-			</foreach>
-		</if>
-		<if test="having == 1">
-			GROUP BY s.user_id_ HAVING total_play_time_ &lt; 80 OR train_day_ &lt; 4
-		</if>
-	</select>
 	<resultMap id="CountStudentTrainDataDto" type="com.ym.mec.biz.dal.dto.CountStudentTrainDataDto">
 		<result property="trainNum" column="train_num_"/>
 		<result property="recordNum" column="record_num_"/>
@@ -280,17 +254,14 @@
 		<result property="phone" column="phone_"/>
 		<result property="totalPlayTime" column="total_play_time_"/>
 		<result property="trainDay" column="train_day_"/>
-		<result property="musicGroupName" column="music_group_name_"/>
 	</resultMap>
 	<select id="queryStudentTrain" resultMap="CountStudentTrainDataDto">
 		SELECT s.user_id_,su.avatar_,su.phone_,su.username_,ROUND(SUM(mcr.play_time_) / 60) total_play_time_,
 			   COUNT(DISTINCT DATE_FORMAT(mcr.create_time_,"%Y-%m-%d")) train_day_,
 			   COUNT(DISTINCT mcr.behavior_id_) train_num_,
-		COUNT(CASE WHEN mcr.feature_ = 'CLOUD_STUDY_EVALUATION' THEN mcr.behavior_id_ ELSE NULL END) record_num_,GROUP_CONCAT(DISTINCT mg.name_) music_group_name_
+		COUNT(CASE WHEN mcr.feature_ = 'CLOUD_STUDY_EVALUATION' THEN mcr.behavior_id_ ELSE NULL END) record_num_
 		FROM teacher t
 				 LEFT JOIN student s ON t.id_ = s.teacher_id_
-				 LEFT JOIN student_registration sr ON sr.user_id_ = s.user_id_ AND sr.music_group_status_ = 'NORMAL'
-				 LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_ AND mg.status_ = 'PROGRESS'
 				 LEFT JOIN sys_user su ON su.id_ = s.user_id_
 				 LEFT JOIN sys_music_compare_record mcr ON mcr.user_id_ = s.user_id_
 		<if test="startTime != null and startTime != ''">