刘俊驰 1 年之前
父节点
当前提交
b65adad83f

+ 12 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantGroupAlbumServiceImpl.java

@@ -153,16 +153,18 @@ public class TenantGroupAlbumServiceImpl extends ServiceImpl<TenantGroupAlbumMap
         // 过滤出课件
         List<Long> coursewareIds = list.stream().filter(x -> x.getSubjectType() == SubjectTypeEnum.COURSEWARE).map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
 
-        CbsLessonCoursewareWrapper.LambdaQuery lambdaQuery = CbsLessonCoursewareWrapper.LambdaQuery.builder().ids(coursewareIds)
-            .delFlag(false).enableFlag(true).build();
-        List<CbsLessonCoursewareWrapper.Entity> entities = coursewareFeignService.lessonCoursewareLambdaQuery(lambdaQuery).feignData();
-        if (CollectionUtils.isNotEmpty(entities)) {
-            // id 集合
-            List<Long> courseIds = entities.stream().map(CbsLessonCoursewareWrapper.Entity::getId).collect(Collectors.toList());
-            // list 去除类型为COURSEWARE,id 不在courseIds
-            list = list.stream().filter(x -> x.getSubjectType() != SubjectTypeEnum.COURSEWARE || courseIds.contains(x.getMusicSheetId())).collect(Collectors.toList());
-        } else {
-            list = list.stream().filter(x -> x.getSubjectType() != SubjectTypeEnum.COURSEWARE ).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(coursewareIds)) {
+            CbsLessonCoursewareWrapper.LambdaQuery lambdaQuery = CbsLessonCoursewareWrapper.LambdaQuery.builder().ids(coursewareIds)
+                .delFlag(false).enableFlag(true).build();
+            List<CbsLessonCoursewareWrapper.Entity> entities = coursewareFeignService.lessonCoursewareLambdaQuery(lambdaQuery).feignData();
+            if (CollectionUtils.isNotEmpty(entities)) {
+                // id 集合
+                List<Long> courseIds = entities.stream().map(CbsLessonCoursewareWrapper.Entity::getId).collect(Collectors.toList());
+                // list 去除类型为COURSEWARE,id 不在courseIds
+                list = list.stream().filter(x -> x.getSubjectType() != SubjectTypeEnum.COURSEWARE || courseIds.contains(x.getMusicSheetId())).collect(Collectors.toList());
+            } else {
+                list = list.stream().filter(x -> x.getSubjectType() != SubjectTypeEnum.COURSEWARE).collect(Collectors.toList());
+            }
         }
 
 

+ 32 - 45
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java

@@ -500,56 +500,43 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         String name = tenantAlbum.getName();
         //机构专辑封面
         String coverImg = tenantAlbum.getCoverImg();
-        //机构专辑曲目数
-        List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicMapper.getByAlbumAndEnable(Lists.newArrayList(tenantAlbumId));
-        // 过滤出曲目
-        List<SubjectTypeEnum> enumList = com.beust.jcommander.internal.Lists.newArrayList(SubjectTypeEnum.MUSIC, SubjectTypeEnum.SUBJECT, SubjectTypeEnum.ENSEMBLE);
-        List<Long> MusicSheetIds = tenantAlbumMusiclist.stream().filter(o->enumList.contains(o.getSubjectType()))
-            .map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
-
-        List<Long> coursewareIds = tenantAlbumMusiclist.stream().filter(o->o.getSubjectType() == SubjectTypeEnum.COURSEWARE)
-            .map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
-        CbsLessonCoursewareWrapper.LambdaQuery lambdaQuery = CbsLessonCoursewareWrapper.LambdaQuery.builder().ids(coursewareIds)
-            .delFlag(false).enableFlag(true).build();
-        List<CbsLessonCoursewareWrapper.Entity> entities = coursewareFeignService.lessonCoursewareLambdaQuery(lambdaQuery).feignData();
-        if (CollectionUtils.isNotEmpty(entities)) {
-            // id 集合
-            List<Long> courseIds = entities.stream().map(CbsLessonCoursewareWrapper.Entity::getId).collect(Collectors.toList());
-            // list 去除类型为COURSEWARE,id 不在courseIds
-            album.setCoursewareCounts(courseIds.size());
-        } else {
-            album.setCoursewareCounts(0);
-        }
 
-        //计算符合条件的个数
-        if (CollectionUtils.isNotEmpty(MusicSheetIds)) {
-            size = musicSheetService.lambdaQuery().in(MusicSheet::getId, MusicSheetIds).eq(MusicSheet::getState, true)
-                .eq(MusicSheet::getDelFlag, false).count();
+        List<TenantAlbumMusic> albumMusicList = tenantAlbumMusicMapper.getByAlbumAndEnable(tenantAlbumIds);
+        // 过滤出课件
+        List<Long> coursewareIds = albumMusicList.stream().filter(x -> x.getSubjectType() == SubjectTypeEnum.COURSEWARE).map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+
+        if (CollectionUtils.isNotEmpty(coursewareIds)) {
+            CbsLessonCoursewareWrapper.LambdaQuery lambdaQuery = CbsLessonCoursewareWrapper.LambdaQuery.builder().ids(coursewareIds)
+                .delFlag(false).enableFlag(true).build();
+            List<CbsLessonCoursewareWrapper.Entity> entities = coursewareFeignService.lessonCoursewareLambdaQuery(lambdaQuery).feignData();
+            if (CollectionUtils.isNotEmpty(entities)) {
+                // id 集合
+                List<Long> courseIds = entities.stream().map(CbsLessonCoursewareWrapper.Entity::getId).collect(Collectors.toList());
+                // list 去除类型为COURSEWARE,id 不在courseIds
+                albumMusicList = albumMusicList.stream().filter(x -> x.getSubjectType() != SubjectTypeEnum.COURSEWARE || courseIds.contains(x.getMusicSheetId())).collect(Collectors.toList());
+            } else {
+                albumMusicList = albumMusicList.stream().filter(x -> x.getSubjectType() != SubjectTypeEnum.COURSEWARE).collect(Collectors.toList());
+            }
         }
 
-        //获取合奏曲目数量
-        List<TenantAlbumMusic> ensembleLits = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getSubjectType, "ENSEMBLE")
-            .eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId)
-            .eq(TenantAlbumMusic::getDelFlag, false).list();
-        List<Long> ensembleMusicSheetIds = ensembleLits.stream().map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
-
-        album.setEnsembleCounts(ensembleMusicSheetIds.size());
 
-        //获取小曲目的曲目数量
-        List<TenantAlbumMusic> musicLists = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getSubjectType, "MUSIC")
-            .eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId)
-            .eq(TenantAlbumMusic::getDelFlag, false).list();
-        List<Long> musicSheetIds = musicLists.stream().map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
-
-        album.setMusicCounts(musicSheetIds.size());
-
-        //获取声部的曲目数量
-        List<TenantAlbumMusic> subjectLists = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getSubjectType, "SUBJECT")
-            .eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId)
-            .eq(TenantAlbumMusic::getDelFlag, false).list();
-        List<Long> subjectSheetIds = subjectLists.stream().map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
+        // 根据专辑ID分组 在根据声部分类 分组
+        Map<Long, Map<SubjectTypeEnum, Long>> map = albumMusicList.stream()
+            .collect(Collectors.groupingBy(TenantAlbumMusic::getTenantAlbumId, Collectors.groupingBy(TenantAlbumMusic::getSubjectType,Collectors.counting())));
 
-        album.setSubjectCounts(subjectSheetIds.size());
+        Map<SubjectTypeEnum, Long> subjectTypeEnumLongMap = map.get(tenantAlbum.getId());
+        if (subjectTypeEnumLongMap != null) {
+            album.setMusicCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.MUSIC,0L).intValue());
+            album.setEnsembleCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.ENSEMBLE,0L).intValue());
+            album.setSubjectCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.SUBJECT,0L).intValue());
+            album.setCoursewareCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.COURSEWARE,0L).intValue());
+        } else {
+            album.setMusicCounts(0);
+            album.setEnsembleCounts(0);
+            album.setSubjectCounts(0);
+            album.setCoursewareCounts(0);
+        }
+        album.setMusicNum(album.getMusicCounts() + album.getEnsembleCounts()+album.getSubjectCounts());
 
 
         //机构专辑简介