|
@@ -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){
|