Browse Source

管乐迷曲目来源内容平台

zouxuan 8 months ago
parent
commit
20e9fdddaf

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicScoreService.java

@@ -23,6 +23,8 @@ public interface SysMusicScoreService extends BaseService<Integer, SysMusicScore
 
     List<CbsMusicSheetWrapper.MusicSheetApplication> queryCbsMusicSheetApplication(CbsMusicSheetWrapper.MusicSheetApplicationQuery query);
 
+    PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication> queryCbsMusicSheetSoundApplication(CbsMusicSheetWrapper.MusicSheetApplicationQuery query);
+
     List<CbsMusicSheetWrapper.MusicSheetApplication> queryCbsMusicSheetApplication(List<String> cbsMusicSheetIds);
 
     //获取乐器名称

+ 78 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreAccompanimentServiceImpl.java

@@ -1,20 +1,20 @@
 package com.ym.mec.biz.service.impl;
 
 
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetCategoryWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.ym.mec.auth.api.dto.MusicScoreQueryInfo;
 import com.ym.mec.biz.dal.dao.SysMusicScoreAccompanimentDao;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SysMusicScore;
-import com.ym.mec.biz.dal.entity.SysMusicScoreAccompaniment;
-import com.ym.mec.biz.dal.entity.SysMusicScoreCategories;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
+import com.ym.mec.biz.service.InstrumentService;
 import com.ym.mec.biz.service.SysMusicScoreAccompanimentService;
 import com.ym.mec.biz.service.SysMusicScoreCategoriesService;
 import com.ym.mec.biz.service.SysMusicScoreService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.collections.CollectionUtils;
@@ -22,10 +22,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -38,6 +35,8 @@ public class SysMusicScoreAccompanimentServiceImpl extends BaseServiceImpl<Strin
 	private SysMusicScoreCategoriesService sysMusicScoreCategoriesService;
 	@Resource
 	private SysMusicScoreService sysMusicScoreService;
+	@Resource
+	private InstrumentService instrumentService;
 	@Override
 	public BaseDAO<String, SysMusicScoreAccompaniment> getDAO() {
 		return sysMusicScoreAccompanimentDao;
@@ -123,6 +122,57 @@ public class SysMusicScoreAccompanimentServiceImpl extends BaseServiceImpl<Strin
 		return result;
 	}
 
+	public List<SysMusicScoreAccompaniment> initAccompaniments(List<CbsMusicSheetWrapper.MusicSheetAccApplication> applications){
+		List<SysMusicScoreAccompaniment> result = new ArrayList<>();
+		if(CollectionUtils.isEmpty(applications)){
+			return result;
+		}
+		List<Long> musicSheetCategoryIds = applications.stream().map(e -> e.getMusicSheetCategoryId())
+				.filter(Objects::isNull).distinct().collect(Collectors.toList());
+		CbsMusicSheetCategoryWrapper.MusicSheetCategoryQuery categoryQuery = new CbsMusicSheetCategoryWrapper.MusicSheetCategoryQuery();
+		categoryQuery.setIds(musicSheetCategoryIds);
+		List<CbsMusicSheetCategoryWrapper.MusicSheetCategory> musicSheetCategories = sysMusicScoreCategoriesService.getDao().categoryList(categoryQuery);
+		Map<Long, CbsMusicSheetCategoryWrapper.MusicSheetCategory> categoryMap = musicSheetCategories.stream().
+				collect(Collectors.toMap(CbsMusicSheetCategoryWrapper.MusicSheetCategory::getId, Function.identity()));
+		for (CbsMusicSheetWrapper.MusicSheetAccApplication musicSheetApplication : applications) {
+			SysMusicScoreAccompaniment record = new SysMusicScoreAccompaniment();
+			record.setId(musicSheetApplication.getMusicSheetSoundId().toString());
+			record.setRankIds("FREE".equals(musicSheetApplication.getPaymentType()) ? null : "1");
+//			record.setExamSongId(accompaniment.getExamSongId());
+			record.setCbsMusicSheetId(musicSheetApplication.getId().toString());
+			record.setPlayMode(SysMusicScore.PlayMode.valueOf(musicSheetApplication.getPlayMode().getCode()));
+			record.setExtConfigJson(musicSheetApplication.getExtConfigJson());
+//				record.setSubjectId(accompaniment.getSubjectId());
+			record.setExtStyleConfigJson(musicSheetApplication.getExtStyleConfigJson());
+			if(musicSheetApplication.getMusicSheetCategoryId() != null){
+				record.setCategoriesId(musicSheetApplication.getMusicSheetCategoryId().intValue());
+				CbsMusicSheetCategoryWrapper.MusicSheetCategory musicSheetCategory = categoryMap.get(record.getCategoriesId().longValue());
+				if(musicSheetCategory != null){
+					record.setParentCategoriesId(musicSheetCategory.getParentId().intValue());
+				}
+			}
+			record.setMusicSheetType(musicSheetApplication.getMusicSheetType().getCode());
+			record.setExamSongName(musicSheetApplication.getName());
+			record.setCategoriesName(musicSheetApplication.getMusicSheetCategoryName());
+			record.setSpeed(musicSheetApplication.getPlaySpeed());
+			//原音
+			record.setMetronomeMp3Url(musicSheetApplication.getMp3Url());
+			record.setMp3Url(musicSheetApplication.getMp3Url());
+			record.setTrack(musicSheetApplication.getTrack());
+			record.setSubjectName(musicSheetApplication.getTrack());
+			record.setXmlUrl(musicSheetApplication.getXmlFileUrl());
+			record.setMidiUrl(musicSheetApplication.getMidiFileUrl());
+			record.setEnableEvaluation(musicSheetApplication.getIsEvaluated());
+			record.setIsOpenMetronome(musicSheetApplication.getIsUseSystemBeat());
+			//伴奏
+			record.setMetronomeUrl(musicSheetApplication.getUrl());
+			record.setUrl(musicSheetApplication.getUrl());
+			record.setIsShowFingering(musicSheetApplication.getIsShowFingering());
+			result.add(record);
+		}
+		return result;
+	}
+
 	@Override
 	public SysMusicScoreAccompaniment initSysMusicScoreAccompaniment(CbsMusicSheetWrapper.MusicSheetApplication musicSheetApplication,
 																	 CbsMusicSheetWrapper.MusicSheetSound sound){
@@ -252,9 +302,26 @@ public class SysMusicScoreAccompanimentServiceImpl extends BaseServiceImpl<Strin
 			}
 			queryInfo.setFilterCategoriesIds(filterCategoriesIdList.stream().map(String :: valueOf).collect(Collectors.joining(",")));
 		}
-		PageInfo<SysMusicScoreAccompaniment> info = this.queryPage(queryInfo);
-		info.setRows(this.initAccompaniment(info.getRows()));
-		return info;
+		//如果声部不为空,关联声部挂的乐器
+		List<Instrument> list = null;
+		if(queryInfo.getSubjectId() != null){
+			list = instrumentService.lambdaQuery().eq(Instrument::getSubjectId, queryInfo.getSubjectId()).list();
+		}else {
+			//获取所有有关联的乐器
+			list = instrumentService.lambdaQuery().list();
+		}
+		if(CollectionUtils.isEmpty(list)){
+			return new PageInfo<>();
+		}
+		CbsMusicSheetWrapper.MusicSheetApplicationQuery applicationQuery = sysMusicScoreService.getMusicSheetApplicationQuery();
+		applicationQuery.setCategoriesIds(queryInfo.getCategoriesIds());
+		applicationQuery.setFilterCategoriesIds(queryInfo.getFilterCategoriesIds());
+		applicationQuery.setMusicalInstrumentIds(list.stream().map(e->e.getId().longValue()).collect(Collectors.toList()));
+		applicationQuery.setPage(queryInfo.getPage());
+		applicationQuery.setRows(queryInfo.getRows());
+		PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication> musicSheetAccApplicationPageInfo = sysMusicScoreService.queryCbsMusicSheetSoundApplication(applicationQuery);
+		List<SysMusicScoreAccompaniment> accompaniments = this.initAccompaniments(musicSheetAccApplicationPageInfo.getRows());
+		return PageUtil.transPageInfo(musicSheetAccApplicationPageInfo,accompaniments);
 	}
     
     private void getAllCategoryIdList(List<Integer> categoryIdList, List<SysMusicScoreCategories> sysMusicScoreCategoriesList){

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -26,6 +26,7 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -118,6 +119,17 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
     }
 
     @Override
+    public PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication> queryCbsMusicSheetSoundApplication(CbsMusicSheetWrapper.MusicSheetApplicationQuery query) {
+        R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication>> pageInfoR =
+                musicFeignClientService.musicSheetAccPageByApplication(query);
+        if(pageInfoR.getCode() != 200){
+            throw new BizException("获取曲目信息失败");
+        }
+        com.microsvc.toolkit.common.response.paging.PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication> pageInfo = pageInfoR.getData();
+        return PageUtil.pageInfo(pageInfo);
+    }
+
+    @Override
     public List<CbsMusicSheetWrapper.MusicSheetApplication> queryCbsMusicSheetApplication(List<String> cbsMusicSheetIds){
         CbsMusicSheetWrapper.MusicSheetApplicationQuery query = this.getMusicSheetApplicationQuery();
         query.setMusicSheetIds(cbsMusicSheetIds.stream().map(Long::parseLong).collect(Collectors.toList()));
@@ -133,7 +145,8 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
         musicalInstrumentQuery.setIds(musicalInstrumentIds);
         musicalInstrumentQuery.setPage(1);
         musicalInstrumentQuery.setRows(musicalInstrumentIds.size());
-        R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMusicalInstrumentWrapper.MusicalInstrumentQueryDto>> infoR = musicFeignClientService.musicalInstrumentPage(musicalInstrumentQuery);
+        R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMusicalInstrumentWrapper.MusicalInstrumentQueryDto>> infoR =
+                musicFeignClientService.musicalInstrumentPage(musicalInstrumentQuery);
         if(infoR.getCode() != 200){
             throw new com.microsvc.toolkit.common.webportal.exception.BizException("获取乐器信息失败,{}",infoR.getMessage());
         }

+ 25 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/page/PageUtil.java

@@ -1,8 +1,10 @@
 package com.ym.mec.common.page;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
@@ -72,6 +74,29 @@ public class PageUtil {
                 .map(Integer::valueOf);
     }
 
+    public static <T,E> PageInfo<T> transPageInfo(PageInfo<E> source, List<T> rows) {
+        if (Objects.isNull(source)) {
+            return new PageInfo<>();
+        }
+        PageInfo<T> resultPage = JSON.parseObject(JSON.toJSONString(source),PageInfo.class);
+        resultPage.setRows(rows);
+        return resultPage;
+    }
+
+    public static <T> PageInfo<T> pageInfo(com.microsvc.toolkit.common.response.paging.PageInfo<T> source) {
+        if (Objects.isNull(source)) {
+            return new PageInfo<>(1, 20);
+        }
+        int total = Integer.parseInt(String.valueOf(source.getTotal()));
+        int limit = Integer.parseInt(String.valueOf(source.getLimit()));
+        PageInfo<T> resultPage = new PageInfo<>();
+        resultPage.setRows(source.getRows());
+        resultPage.setPageNo(Long.valueOf(source.getCurrent()).intValue());
+        resultPage.setLimit(limit);
+        resultPage.setTotal(total);
+        return resultPage;
+    }
+
     public static <O, T> Page<T> getPageInfo(Map<String, O> param) {
         int pageSize = getPage(param, "rows").orElse(20);
         int pageIndex = getPage(param, "page").orElse(1);

+ 1 - 1
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -2726,7 +2726,7 @@ public class RoomServiceImpl implements RoomService {
                         courseScheduleId, null, null, 0);
         CbsMusicSheetWrapper.MusicSheetApplicationQuery query = sysMusicScoreService.getMusicSheetApplicationQuery();
         query.setRows(1);
-        query.setMusicSheetIds(Lists.newArrayList(Long.parseLong(musicScoreData.getMusicScoreAccompanimentId())));
+        query.setMusicSheetSoundId(Long.parseLong(musicScoreData.getMusicScoreAccompanimentId()));
         List<CbsMusicSheetWrapper.MusicSheetApplication> applications = sysMusicScoreService.queryCbsMusicSheetApplication(query);
         if (CollectionUtils.isEmpty(applications)) {
             throw new BizException("曲目信息不存在");