|  | @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  |  import com.dayaedu.cbs.common.enums.school.ECourseType;
 | 
	
		
			
				|  |  |  import com.dayaedu.cbs.common.enums.school.EKnowledgeType;
 | 
	
		
			
				|  |  | +import com.dayaedu.cbs.common.enums.school.EMaterialType;
 | 
	
		
			
				|  |  |  import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 | 
	
		
			
				|  |  |  import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsCourseTypeWrapper;
 | 
	
		
			
				|  |  |  import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
 | 
	
	
		
			
				|  | @@ -18,6 +19,8 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMusicMapper;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.*;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.cbs.CbsMusicScoreService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareDetailWrapper;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareWrapper;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.base.exception.BizException;
 | 
	
	
		
			
				|  | @@ -423,14 +426,38 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(String lessonCoursewareDetailId) {
 | 
	
		
			
				|  |  | -        CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail lessonCoursewareDetail = coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(lessonCoursewareDetailId)).feignData();
 | 
	
		
			
				|  |  | +    public LessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(String lessonCoursewareDetailId) {
 | 
	
		
			
				|  |  | +        CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail cbsLessonCoursewareDetail = coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(lessonCoursewareDetailId)).feignData();
 | 
	
		
			
				|  |  | +        if (cbsLessonCoursewareDetail == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("课件不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        LessonCoursewareDetailWrapper.LessonCoursewareDetail lessonCoursewareDetail = JSON.parseObject(JSON.toJSONString(cbsLessonCoursewareDetail), LessonCoursewareDetailWrapper.LessonCoursewareDetail.class);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 过滤调未应用到项目的去练习曲目
 | 
	
		
			
				|  |  | -        List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList = lessonCoursewareDetail.getKnowledgePointList();
 | 
	
		
			
				|  |  | -        List<CbsMaterialRefWrapper.AddMaterialRef> addMaterialRefs = getMaterialRefList(knowledgePointList);
 | 
	
		
			
				|  |  | +        List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList = lessonCoursewareDetail.getKnowledgePointList();
 | 
	
		
			
				|  |  | +        List<LessonCoursewareDetailWrapper.AddMaterialRef> addMaterialRefs = getMaterialRefList(knowledgePointList);
 | 
	
		
			
				|  |  | +        List<LessonCoursewareDetailWrapper.MaterialSmall> musicMaterialSmalls = getMaterialSmalls(knowledgePointList);
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(musicMaterialSmalls)) {
 | 
	
		
			
				|  |  | +            List<Long> cbsMaterialMusicIds = musicMaterialSmalls.stream().map(LessonCoursewareDetailWrapper.MaterialSmall::getContent)
 | 
	
		
			
				|  |  | +                .filter(StringUtils::isNotBlank).map(Long::parseLong).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +            Map<Long, Long> idMap = musicSheetService.lambdaQuery()
 | 
	
		
			
				|  |  | +                .in(MusicSheet::getCbsMusicSheetId, cbsMaterialMusicIds)
 | 
	
		
			
				|  |  | +                .eq(MusicSheet::getDelFlag, false)
 | 
	
		
			
				|  |  | +                .eq(MusicSheet::getState, 1)
 | 
	
		
			
				|  |  | +                .list()
 | 
	
		
			
				|  |  | +                .stream()
 | 
	
		
			
				|  |  | +                .collect(Collectors.toMap(MusicSheet::getCbsMusicSheetId, MusicSheet::getId,(o1,o2)->o1));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 过滤掉没有对应的曲目
 | 
	
		
			
				|  |  | +            filterMusicMaterialList(knowledgePointList,new ArrayList<>(idMap.keySet()));
 | 
	
		
			
				|  |  | +            for (LessonCoursewareDetailWrapper.MaterialSmall musicMaterialSmall : musicMaterialSmalls) {
 | 
	
		
			
				|  |  | +                musicMaterialSmall.setContent(idMap.getOrDefault(Long.parseLong(musicMaterialSmall.getContent()),-1L).toString());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          List<Long> cbsMusicSheetIdList =
 | 
	
		
			
				|  |  | -            addMaterialRefs.stream().filter(next -> EKnowledgeType.MUSIC.equals(next.getKnowledgeType())).map(CbsMaterialRefWrapper.AddMaterialRef::getResourceId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | +            addMaterialRefs.stream().filter(next -> EKnowledgeType.MUSIC.equals(next.getKnowledgeType()))
 | 
	
		
			
				|  |  | +                .map(LessonCoursewareDetailWrapper.AddMaterialRef::getResourceId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  |          if (!org.springframework.util.CollectionUtils.isEmpty(cbsMusicSheetIdList)) {
 | 
	
		
			
				|  |  |              Map<Long, Long> idMap = musicSheetService.lambdaQuery()
 | 
	
		
			
				|  |  |                  .in(MusicSheet::getCbsMusicSheetId, cbsMusicSheetIdList)
 | 
	
	
		
			
				|  | @@ -440,10 +467,11 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
 | 
	
		
			
				|  |  |                  .stream()
 | 
	
		
			
				|  |  |                  .collect(Collectors.toMap(MusicSheet::getCbsMusicSheetId, MusicSheet::getId,(o1,o2)->o1));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            for (CbsMaterialRefWrapper.AddMaterialRef addMaterialRef : addMaterialRefs) {
 | 
	
		
			
				|  |  | +            for (LessonCoursewareDetailWrapper.AddMaterialRef addMaterialRef : addMaterialRefs) {
 | 
	
		
			
				|  |  |                  Long resourceId = addMaterialRef.getResourceId();
 | 
	
		
			
				|  |  |                  if (idMap.containsKey(resourceId)) {
 | 
	
		
			
				|  |  |                      addMaterialRef.setResourceId(idMap.get(resourceId));
 | 
	
		
			
				|  |  | +                    addMaterialRef.setResourceIdStr(idMap.getOrDefault(resourceId,-1L).toString());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              // 过滤掉没有对应的曲目
 | 
	
	
		
			
				|  | @@ -453,18 +481,55 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
 | 
	
		
			
				|  |  |          return lessonCoursewareDetail;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private void filterMaterialRefList(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,List<Long> cbsMusicSheetIds) {
 | 
	
		
			
				|  |  | +    private void filterMusicMaterialList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList, List<Long> cbsMusicSheetIds) {
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(knowledgePointList)) {
 | 
	
		
			
				|  |  | +            for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
 | 
	
		
			
				|  |  | +                    filterMusicMaterialList(knowledgePointSmall.getChildren(),cbsMusicSheetIds);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
 | 
	
		
			
				|  |  | +                if (CollectionUtils.isNotEmpty(materialList)) {
 | 
	
		
			
				|  |  | +                    materialList.removeIf(next -> (EMaterialType.SONG.equals(next.getType()) && !cbsMusicSheetIds.contains(Long.parseLong(next.getContent()))));
 | 
	
		
			
				|  |  | +                    knowledgePointSmall.setMaterialList(materialList);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private List<LessonCoursewareDetailWrapper.MaterialSmall> getMaterialSmalls(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList) {
 | 
	
		
			
				|  |  | +        List<LessonCoursewareDetailWrapper.MaterialSmall> materialRefList = new ArrayList<>();
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(knowledgePointList)) {
 | 
	
		
			
				|  |  | +            for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
 | 
	
		
			
				|  |  | +                    materialRefList.addAll(getMaterialSmalls(knowledgePointSmall.getChildren()));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
 | 
	
		
			
				|  |  | +                if (CollectionUtils.isNotEmpty(materialList)) {
 | 
	
		
			
				|  |  | +                    for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
 | 
	
		
			
				|  |  | +                        if (materialSmall.getType() == EMaterialType.SONG) {
 | 
	
		
			
				|  |  | +                            materialRefList.add(materialSmall);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return materialRefList;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void filterMaterialRefList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,List<Long> cbsMusicSheetIds) {
 | 
	
		
			
				|  |  |          if (CollectionUtils.isNotEmpty(knowledgePointList)) {
 | 
	
		
			
				|  |  | -            for (CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 | 
	
		
			
				|  |  | +            for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
 | 
	
		
			
				|  |  |                      filterMaterialRefList(knowledgePointSmall.getChildren(),cbsMusicSheetIds);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
 | 
	
		
			
				|  |  | +                List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
 | 
	
		
			
				|  |  |                  if (CollectionUtils.isNotEmpty(materialList)) {
 | 
	
		
			
				|  |  | -                    for (CbsLessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
 | 
	
		
			
				|  |  | +                    for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
 | 
	
		
			
				|  |  |                          if (CollectionUtils.isNotEmpty(materialSmall.getMaterialRefs())) {
 | 
	
		
			
				|  |  | -                            List<CbsMaterialRefWrapper.AddMaterialRef> refList = materialSmall.getMaterialRefs().stream()
 | 
	
		
			
				|  |  | +                            List<LessonCoursewareDetailWrapper.AddMaterialRef> refList = materialSmall.getMaterialRefs().stream()
 | 
	
		
			
				|  |  |                                  .filter(next -> !(EKnowledgeType.MUSIC.equals(next.getKnowledgeType()) && !cbsMusicSheetIds.contains(next.getResourceId())))
 | 
	
		
			
				|  |  |                                  .collect(Collectors.toList());
 | 
	
		
			
				|  |  |                              materialSmall.setMaterialRefs(refList);
 | 
	
	
		
			
				|  | @@ -475,17 +540,17 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private List<CbsMaterialRefWrapper.AddMaterialRef> getMaterialRefList(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList) {
 | 
	
		
			
				|  |  | -        List<CbsMaterialRefWrapper.AddMaterialRef> materialRefList = new ArrayList<>();
 | 
	
		
			
				|  |  | +    private List<LessonCoursewareDetailWrapper.AddMaterialRef> getMaterialRefList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList) {
 | 
	
		
			
				|  |  | +        List<LessonCoursewareDetailWrapper.AddMaterialRef> materialRefList = new ArrayList<>();
 | 
	
		
			
				|  |  |          if (CollectionUtils.isNotEmpty(knowledgePointList)) {
 | 
	
		
			
				|  |  | -            for (CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 | 
	
		
			
				|  |  | +            for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
 | 
	
		
			
				|  |  |                      materialRefList.addAll(getMaterialRefList(knowledgePointSmall.getChildren()));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
 | 
	
		
			
				|  |  | +                List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
 | 
	
		
			
				|  |  |                  if (CollectionUtils.isNotEmpty(materialList)) {
 | 
	
		
			
				|  |  | -                    for (CbsLessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
 | 
	
		
			
				|  |  | +                    for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
 | 
	
		
			
				|  |  |                          if (CollectionUtils.isNotEmpty(materialSmall.getMaterialRefs())) {
 | 
	
		
			
				|  |  |                              materialRefList.addAll(materialSmall.getMaterialRefs());
 | 
	
		
			
				|  |  |                          }
 |