Prechádzať zdrojové kódy

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into zx_saas_music_simple_1216

# Conflicts:
#	pom.xml
zouxuan 6 mesiacov pred
rodič
commit
3a505f5000

+ 84 - 11
mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java

@@ -10,8 +10,6 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClientEnum;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
@@ -22,13 +20,15 @@ import com.ym.mec.common.page.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.jetbrains.annotations.NotNull;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.student:}/lessonCourseware")
@@ -47,15 +47,18 @@ public class LessonCoursewareController extends BaseController {
 	@Resource
 	private CbsMusicScoreCategoriesService cbsMusicScoreCategoriesService;
 
-    @Autowired
+    @Resource
     private CloudTeacherOrderDao cloudTeacherOrderDao;
 
-    @Autowired
+    @Resource
     private MemberRankCourseTypeMapperService memberRankCourseTypeMapperService;
 
-    @Autowired
+    @Resource
     private MemberRankCategoryMapperService memberRankCategoryMapperService;
 
+    @Resource
+    private SysMusicScoreService sysMusicScoreService;
+
 	@ApiOperation(value = "分页查询已添加的课件")
 	@PostMapping("/queryLessonCourseware")
 	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>> queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
@@ -129,16 +132,87 @@ public class LessonCoursewareController extends BaseController {
 
     @ApiOperation(value = "获取课件关联的课程列表")
 	@GetMapping("/getLessonCoursewareCourseList/{id}")
-	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id){
-		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(id).feignData();
+	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,
+                                                                                                                          String search,
+                                                                                                                          Boolean detailFlag){
+        CbsLessonCoursewareWrapper.CoursewareDetailQuery query = new CbsLessonCoursewareWrapper.CoursewareDetailQuery();
+        query.setId(id);
+        query.setSearch(search);
+        query.setDetailFlag(detailFlag);
+		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(query).feignData();
 		if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+            SysUser sysUser = sysUserService.getUser();
+            // 机构可用曲目分类
+            String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
+            List<Integer> categoryIdList = cbsMusicScoreCategoriesService.getAllCategoryIdList(teachingMaterialIds);
+            // 学生会员可用曲目分类
+            List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(sysUser.getId());
+            // 获取会员的曲目分类
+            List<Integer> categoryIds = new ArrayList<>();
+            if (CollectionUtils.isNotEmpty(activationVipIds)) {
+                List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(activationVipIds);
+                if (CollectionUtils.isEmpty(categoryMapperList)) {
+                    categoryMapperList = new ArrayList<>();
+                }
+                categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId)
+                        .distinct().collect(Collectors.toList());
+            }
+            LessonCoursewareWrapper.LessonCoursewareDetailQuery query1 = new LessonCoursewareWrapper.LessonCoursewareDetailQuery();
+            query1.setUserType(ClientEnum.STUDENT);
+            query1.setTenantCategoriesIdList(categoryIdList);
+            query1.setStudentCategoriesIdList(categoryIds);
+            //获取课件下面包含的所有的曲目编号
+            List<Long> musicScoreIds = lessonCoursewareService.getMusicScoreIds(courseScheduleCoursewareDetails);
+            Map<Long, SysMusicScore> musicScoreMap = new HashMap<>();
+            if (CollectionUtils.isNotEmpty(musicScoreIds)) {
+                List<SysMusicScore> musicScores = sysMusicScoreService.getDao().findByCbsId(musicScoreIds,false);
+                musicScoreMap = musicScores.stream().collect(Collectors.toMap(e -> Long.parseLong(e.getCbsMusicSheetId()), o -> o));
+            }
+            for (CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail e : courseScheduleCoursewareDetails) {
+                lessonCoursewareService.setTreeResourceId(e.getKnowledgePointList(), query1, musicScoreMap);
+            }
+            courseScheduleCoursewareDetails.removeIf(courseScheduleCoursewareDetail -> !filterAndUpdateKnowledgePointList(courseScheduleCoursewareDetail));
 			String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
-			List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject.parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);
+			List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList =
+                    JSONObject.parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);
 			return succeed(courseScheduleCoursewareDetailList);
 		}
 		return succeed(new ArrayList<>());
 	}
 
+
+    private boolean filterAndUpdateKnowledgePointList(CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail courseScheduleCoursewareDetail) {
+        List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList = courseScheduleCoursewareDetail.getKnowledgePointList();
+        if (CollectionUtils.isEmpty(knowledgePointList)) {
+            return false; // 如果 knowledgePointList 为空,直接返回 false,后续会删除该 courseScheduleCoursewareDetail
+        }
+
+        // 过滤 KnowledgePointSmall
+        knowledgePointList.removeIf(knowledgePointSmall -> !filterKnowledgePoint(knowledgePointSmall));
+        courseScheduleCoursewareDetail.setKnowledgePointList(knowledgePointList);
+
+        // 如果过滤后的 knowledgePointList 为空,返回 false
+        return CollectionUtils.isNotEmpty(knowledgePointList);
+    }
+
+    private boolean filterKnowledgePoint(CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall) {
+        // 过滤 materialList
+//        if (CollectionUtils.isNotEmpty(knowledgePointSmall.getMaterialList())) {
+//            filterAndUpdateMaterialList(knowledgePointSmall.getMaterialList(), search);
+//        }
+        // 过滤子知识点 children
+        if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
+            knowledgePointSmall.getChildren().removeIf(child -> !filterKnowledgePoint(child));
+        }
+        // 保留当前的条件:materialList 不为空 或者 children 不为空,**否则删除当前节点**
+        return CollectionUtils.isNotEmpty(knowledgePointSmall.getMaterialList()) ||
+                CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren());
+    }
+
+    private void filterAndUpdateMaterialList(List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList, String search) {
+        materialList.removeIf(materialSmall -> !materialSmall.getName().contains(search));
+    }
+
 	@ApiOperation(value = "获取课程详情")
 	@GetMapping("/getLessonCourseDetail/{id}")
 	public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") Long id){
@@ -148,8 +222,7 @@ public class LessonCoursewareController extends BaseController {
 		List<Integer> categoryIdList = cbsMusicScoreCategoriesService.getAllCategoryIdList(teachingMaterialIds);
 
         // 学生会员可用曲目分类
-        Integer userId = sysUserService.getUserId();
-        List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(userId);
+        List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(sysUser.getId());
 
         // 获取会员的曲目分类
 

+ 66 - 11
mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java

@@ -6,18 +6,14 @@ import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
-import com.microsvc.toolkit.common.response.template.R;
-import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
-import com.ym.mec.biz.service.CbsMusicScoreCategoriesService;
-import com.ym.mec.biz.service.LessonCoursewareService;
-import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
@@ -26,13 +22,14 @@ import com.ym.mec.common.page.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.teacher:}/lessonCourseware")
 @Api(tags = "课件教材")
@@ -48,6 +45,8 @@ public class LessonCoursewareController extends BaseController {
 	@Resource
 	private OrganizationService organizationService;
 	@Resource
+	private SysMusicScoreService sysMusicScoreService;
+	@Resource
 	private CbsMusicScoreCategoriesService cbsMusicScoreCategoriesService;
 	@Resource
 	private TeacherDao teacherDao;
@@ -79,16 +78,72 @@ public class LessonCoursewareController extends BaseController {
 
 	@ApiOperation(value = "获取课件关联的课程列表")
 	@GetMapping("/getLessonCoursewareCourseList/{id}")
-	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id){
-		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(id).feignData();
+	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,
+																														  String search,
+																														  Boolean detailFlag){
+		CbsLessonCoursewareWrapper.CoursewareDetailQuery query = new CbsLessonCoursewareWrapper.CoursewareDetailQuery();
+		query.setId(id);
+		query.setSearch(search);
+		query.setDetailFlag(detailFlag);
+		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(query).feignData();
 		if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+			SysUser sysUser = sysUserService.getUser();
+			String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
+			List<Integer> categoryIdList = cbsMusicScoreCategoriesService.getAllCategoryIdList(teachingMaterialIds);
+			LessonCoursewareWrapper.LessonCoursewareDetailQuery query1 = new LessonCoursewareWrapper.LessonCoursewareDetailQuery();
+			query1.setUserType(ClientEnum.TEACHER);
+			query1.setTenantCategoriesIdList(categoryIdList);
+			//获取课件下面包含的所有的曲目编号
+			List<Long> musicScoreIds = lessonCoursewareService.getMusicScoreIds(courseScheduleCoursewareDetails);
+			Map<Long, SysMusicScore> musicScoreMap = new HashMap<>();
+			if (CollectionUtils.isNotEmpty(musicScoreIds)) {
+				List<SysMusicScore> musicScores = sysMusicScoreService.getDao().findByCbsId(musicScoreIds,false);
+				musicScoreMap = musicScores.stream().collect(Collectors.toMap(e -> Long.parseLong(e.getCbsMusicSheetId()), o -> o));
+			}
+			for (CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail e : courseScheduleCoursewareDetails) {
+				lessonCoursewareService.setTreeResourceId(e.getKnowledgePointList(), query1, musicScoreMap);
+			}
+			courseScheduleCoursewareDetails.removeIf(courseScheduleCoursewareDetail -> !filterAndUpdateKnowledgePointList(courseScheduleCoursewareDetail));
 			String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
-			List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject.parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);
+			List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList =
+					JSONObject.parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);
 			return succeed(courseScheduleCoursewareDetailList);
 		}
 		return succeed(new ArrayList<>());
 	}
 
+	private boolean filterAndUpdateKnowledgePointList(CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail courseScheduleCoursewareDetail) {
+		List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList = courseScheduleCoursewareDetail.getKnowledgePointList();
+		if (CollectionUtils.isEmpty(knowledgePointList)) {
+			return false; // 如果 knowledgePointList 为空,直接返回 false,后续会删除该 courseScheduleCoursewareDetail
+		}
+
+		// 过滤 KnowledgePointSmall
+		knowledgePointList.removeIf(knowledgePointSmall -> !filterKnowledgePoint(knowledgePointSmall));
+		courseScheduleCoursewareDetail.setKnowledgePointList(knowledgePointList);
+
+		// 如果过滤后的 knowledgePointList 为空,返回 false
+		return CollectionUtils.isNotEmpty(knowledgePointList);
+	}
+
+	private boolean filterKnowledgePoint(CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall) {
+		// 过滤 materialList
+//		if (CollectionUtils.isNotEmpty(knowledgePointSmall.getMaterialList())) {
+//			filterAndUpdateMaterialList(knowledgePointSmall.getMaterialList(), search);
+//		}
+		// 过滤子知识点 children
+		if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
+			knowledgePointSmall.getChildren().removeIf(child -> !filterKnowledgePoint(child));
+		}
+		// 保留当前的条件:materialList 不为空 或者 children 不为空,**否则删除当前节点**
+		return CollectionUtils.isNotEmpty(knowledgePointSmall.getMaterialList()) ||
+				CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren());
+	}
+
+	private void filterAndUpdateMaterialList(List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList, String search) {
+		materialList.removeIf(materialSmall -> !materialSmall.getName().contains(search));
+	}
+
 	@ApiOperation(value = "获取课程详情")
 	@GetMapping("/getLessonCourseDetail/{id}")
 	public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") Long id){

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LessonCoursewareWrapper.java

@@ -138,6 +138,9 @@ public class LessonCoursewareWrapper {
         @ApiModelProperty("课件详情名称")
         private String coursewareDetailName;
 
+        @ApiModelProperty("课时目标描述")
+        private String lessonTargetDesc;
+
         @ApiModelProperty("知识点")
         private List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList;
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/LessonCoursewareService.java

@@ -3,11 +3,14 @@ package com.ym.mec.biz.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
+import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.dal.mapper.LessonCoursewareMapper;
 import com.ym.mec.biz.dal.entity.LessonCourseware;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 
 import java.util.List;
+import java.util.Map;
 
 public interface LessonCoursewareService extends IService<LessonCourseware> {
 
@@ -29,5 +32,12 @@ public interface LessonCoursewareService extends IService<LessonCourseware> {
     LessonCourseware getByLessonCoursewareId(Long lessonCoursewareId);
 
     List<LessonCourseware> getByLessonCoursewareIds(List<Integer> categoryIds);
+
+    //递归处理CbsLessonCoursewareDetailWrapper.KnowledgePointSmall
+    void setTreeResourceId(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,
+                           LessonCoursewareWrapper.LessonCoursewareDetailQuery query,
+                           Map<Long, SysMusicScore> musicScores);
+
+    List<Long> getMusicScoreIds(List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails);
 }
 

+ 61 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareServiceImpl.java

@@ -204,8 +204,16 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
         if (detail == null) {
             return null;
         }
+        //获取课件下面包含的所有的曲目编号
+        List<Long> musicScoreIds = new ArrayList<>();
+        this.setMusicSheetId(detail.getKnowledgePointList(),musicScoreIds);
+        Map<Long, SysMusicScore> musicScoreMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(musicScoreIds)) {
+            List<SysMusicScore> musicScores = sysMusicScoreService.getDao().findByCbsId(musicScoreIds,false);
+            musicScoreMap = musicScores.stream().collect(Collectors.toMap(e -> Long.parseLong(e.getCbsMusicSheetId()), o -> o));
+        }
         //获取知识点下的素材列表、下面关联的资源列表,如果applicationIdList是空的,那么把他剔除掉
-        this.setTreeResourceId(detail.getKnowledgePointList(),query);
+        this.setTreeResourceId(detail.getKnowledgePointList(),query,musicScoreMap);
         return detail;
     }
 
@@ -349,25 +357,71 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
     }
 
     //递归处理CbsLessonCoursewareDetailWrapper.KnowledgePointSmall
-    private void setTreeResourceId(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,LessonCoursewareWrapper.LessonCoursewareDetailQuery query){
+    @Override
+    public void setTreeResourceId(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,
+                                  LessonCoursewareWrapper.LessonCoursewareDetailQuery query,
+                                  Map<Long, SysMusicScore> musicScores){
         if(CollectionUtils.isNotEmpty(knowledgePointList)){
             knowledgePointList.forEach(knowledgePointSmall -> {
-                this.setResourceId(knowledgePointSmall,query);
+                this.setResourceId(knowledgePointSmall,query,musicScores);
                 List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> children = knowledgePointSmall.getChildren();
                 if(CollectionUtils.isNotEmpty(children)){
-                    this.setTreeResourceId(children,query);
+                    this.setTreeResourceId(children,query,musicScores);
                 }
             });
         }
     }
 
+    @Override
+    public List<Long> getMusicScoreIds(List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails) {
+        List<Long> musicScoreIds = new ArrayList<>();
+        //获取所有曲目的ID
+        if(CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)){
+            courseScheduleCoursewareDetails.forEach(courseScheduleCoursewareDetail -> {
+                this.setMusicSheetId(courseScheduleCoursewareDetail.getKnowledgePointList(),musicScoreIds);
+            });
+        }
+        return musicScoreIds;
+    }
+
+    private void setMusicSheetId(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,List<Long> musicScoreIds){
+        if(CollectionUtils.isNotEmpty(knowledgePointList)){
+            for (CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
+                List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
+                if(CollectionUtils.isNotEmpty(materialList)){
+                    //获取所有曲目的ID
+                    List<Long> musicScoreIds1 = materialList.stream().filter(materialSmall -> materialSmall.getType() == EMaterialType.SONG)
+                            .map(materialSmall -> Long.parseLong(materialSmall.getContent())).collect(Collectors.toList());
+                    musicScoreIds.addAll(musicScoreIds1);
+                    for (CbsLessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
+                        List<CbsMaterialRefWrapper.AddMaterialRef> materialRefs = materialSmall.getMaterialRefs();
+                        if(CollectionUtils.isNotEmpty(materialRefs)){
+                            //获取所有曲目的ID
+                            List<Long> musicScoreIds2 = materialRefs.stream().filter(materialRef -> materialRef.getRelateMaterialInfo() != null
+                                    && StringUtils.equals(materialRef.getRelateMaterialInfo().getType(),"SONG")
+                                    && CollectionUtils.isNotEmpty(materialRef.getRelateMaterialInfo().getApplicationIdList()))
+                                    .map(materialRef -> materialRef.getRelateMaterialInfo().getId()).collect(Collectors.toList());
+                            musicScoreIds.addAll(musicScoreIds2);
+                        }
+                    }
+                }
+                List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> children = knowledgePointSmall.getChildren();
+                if(CollectionUtils.isNotEmpty(children)){
+                    this.setMusicSheetId(children,musicScoreIds);
+                }
+            }
+        }
+    }
+
 
-    private void setResourceId(CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall,LessonCoursewareWrapper.LessonCoursewareDetailQuery query){
+    private void setResourceId(CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall,
+                               LessonCoursewareWrapper.LessonCoursewareDetailQuery query,
+                               Map<Long, SysMusicScore> musicScoreMap){
         List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
         if(CollectionUtils.isNotEmpty(materialList)){
             for (CbsLessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
                 if(materialSmall.getType() == EMaterialType.SONG){
-                    SysMusicScore musicScore = sysMusicScoreService.getDao().getCbsId(Long.parseLong(materialSmall.getContent()));
+                    SysMusicScore musicScore = musicScoreMap.get(Long.parseLong(materialSmall.getContent()));
                     //没有启用的曲目不显示
                     if(musicScore != null && musicScore.getShowFlag() == 1 && musicScore.getClientShowFlag() == 1) {
                         materialSmall.setContent(musicScore.getId().toString());
@@ -382,7 +436,7 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
                         CbsMaterialRefWrapper.RelateMaterialInfo relateMaterialInfo = materialRef.getRelateMaterialInfo();
                         if(relateMaterialInfo != null && StringUtils.equals(relateMaterialInfo.getType(),"SONG")
                                 && CollectionUtils.isNotEmpty(relateMaterialInfo.getApplicationIdList())){
-                            SysMusicScore musicScore = sysMusicScoreService.getDao().getCbsId(relateMaterialInfo.getId());
+                            SysMusicScore musicScore = musicScoreMap.get(relateMaterialInfo.getId());
                             if(musicScore != null && musicScore.getShowFlag() == 1 && musicScore.getClientShowFlag() == 1
                                     && query.getTenantCategoriesIdList().contains(musicScore.getCbsMusicCategoriesId())) {
                                 materialRef.setResourceIdStr(musicScore.getId().toString());