|
@@ -4,26 +4,35 @@ package com.ym.mec.biz.service.impl;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.beust.jcommander.internal.Lists;
|
|
|
+import com.dayaedu.cbs.common.enums.EClientType;
|
|
|
+import com.dayaedu.cbs.common.enums.music.EAudioType;
|
|
|
+import com.dayaedu.cbs.common.enums.music.EMusicAvailableType;
|
|
|
+import com.dayaedu.cbs.common.enums.music.EMusicPlayMode;
|
|
|
+import com.dayaedu.cbs.common.enums.music.EMusicSourceType;
|
|
|
+import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
|
|
|
import com.dayaedu.cbs.domain.wrapper.MusicSheetWrapper;
|
|
|
import com.dayaedu.cbs.openfeign.client.MusicFeignClientService;
|
|
|
import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendClientWrapper;
|
|
|
import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
|
|
|
import com.microsvc.toolkit.common.response.template.R;
|
|
|
+import com.ym.mec.biz.dal.dao.SysMusicScoreAccompanimentDao;
|
|
|
import com.ym.mec.biz.dal.dao.SysMusicScoreCategoriesDao;
|
|
|
import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
|
|
|
import com.ym.mec.biz.dal.dto.ReasonDto;
|
|
|
+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.enums.YesOrNoEnum;
|
|
|
import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
|
|
|
-import com.ym.mec.biz.service.OrganizationService;
|
|
|
-import com.ym.mec.biz.service.SysMusicScoreCategoriesService;
|
|
|
-import com.ym.mec.biz.service.SysMusicScoreService;
|
|
|
+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.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -38,6 +47,7 @@ import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicScore> implements SysMusicScoreService {
|
|
|
|
|
|
@Resource
|
|
@@ -49,6 +59,10 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
|
|
|
@Resource
|
|
|
private OrganizationService organizationService;
|
|
|
@Resource
|
|
|
+ private SubjectService subjectService;
|
|
|
+ @Resource
|
|
|
+ private SysMusicScoreAccompanimentDao sysMusicScoreAccompanimentDao;
|
|
|
+ @Resource
|
|
|
private MusicFeignClientService musicFeignClientService;
|
|
|
|
|
|
@Value("${openfeign-client.app-id:1745637981387108354}")
|
|
@@ -291,38 +305,24 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
|
|
|
|
|
|
@Override
|
|
|
public void sync() {
|
|
|
- Date date = new Date();
|
|
|
- // 100个线程的无界线程池
|
|
|
ThreadPoolExecutor executorService = new ThreadPoolExecutor(50, 50,
|
|
|
0L, TimeUnit.MILLISECONDS,
|
|
|
new LinkedBlockingQueue<>());
|
|
|
-// while (true) {
|
|
|
- IPage<MusicSheet> page = baseMapper.selectSyncPage(new Page<>(1, -1));
|
|
|
- List<MusicSheet> records = page.getRecords();
|
|
|
+ List<SysMusicScore> records = sysMusicScoreDao.selectSyncPage();
|
|
|
if (CollectionUtils.isEmpty(records)) {
|
|
|
return;
|
|
|
}
|
|
|
- for (MusicSheet record : records) {
|
|
|
- if (record.getCbsMusicSheetId() != null && !DateUtil.format(record.getCreateTime(),"yyyy-MM-dd HH:mm:ss").equals("2024-06-25 00:00:00")) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
+ for (SysMusicScore record : records) {
|
|
|
executorService.submit(() ->
|
|
|
{
|
|
|
-
|
|
|
try {
|
|
|
-
|
|
|
- syncMusicSheet(record, date);
|
|
|
+ syncMusicSheet(record);
|
|
|
}catch (Exception e) {
|
|
|
log.error("曲目同步异常,曲目ID:{}", record.getId(), e);
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
}
|
|
|
-
|
|
|
- curPage++;
|
|
|
-// }
|
|
|
-
|
|
|
while (!executorService.getQueue().isEmpty()) {
|
|
|
try {
|
|
|
log.info("线程池中正在执行的任务数量:{},等待数量:{}", executorService.getActiveCount(),executorService.getQueue().size());
|
|
@@ -335,6 +335,152 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
|
|
|
executorService.shutdown();
|
|
|
}
|
|
|
|
|
|
+ private void syncMusicSheet(SysMusicScore record) {
|
|
|
+ List<SysMusicScoreAccompaniment> list = sysMusicScoreAccompanimentDao.findByMusicScoreId(record.getId());
|
|
|
+
|
|
|
+ CbsMusicSheetWrapper.AddMusicSheet addMusicSheet = this.musicToAddMusicSheet(record,list);
|
|
|
+
|
|
|
+ R<CbsMusicSheetWrapper.MusicSheet> musicSheetR = musicFeignClientService.musicCbsSync(addMusicSheet);
|
|
|
+ try {
|
|
|
+ CbsMusicSheetWrapper.MusicSheet musicSheet = musicSheetR.feignData();
|
|
|
+ if (musicSheet == null) {
|
|
|
+ log.error("曲目同步失败,曲目ID:{}", record.getId());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ MusicSheet musicSheet1 = new MusicSheet();
|
|
|
+ musicSheet1.setId(record.getId());
|
|
|
+ musicSheet1.setCbsMusicSheetId(musicSheet.getId());
|
|
|
+// musicSheet1.setCbsSubjectId(musicSheet.getSubjectIds());
|
|
|
+ musicSheet1.setMusicSheetName(musicSheet.getName());
|
|
|
+ this.updateById(musicSheet1);
|
|
|
+ } catch (Exception e){
|
|
|
+ log.error("曲目同步失败,曲目ID:{}", record.getId(),e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //测试环境合奏分类
|
|
|
+ private static String categoryIds = "42,43,44,45,46,91,92,93,94,95,7,11,15,180";
|
|
|
+ private static String prodCategoryIds = "42,43,44,45,46,91,92,93,94,95,185,186,7,11,15,180";
|
|
|
+
|
|
|
+ private CbsMusicSheetWrapper.AddMusicSheet musicToAddMusicSheet(SysMusicScore from, List<SysMusicScoreAccompaniment> accList) {
|
|
|
+ CbsMusicSheetWrapper.AddMusicSheet addMusicSheet = new CbsMusicSheetWrapper.AddMusicSheet();
|
|
|
+ addMusicSheet.setId(Long.parseLong(from.getCbsMusicSheetId()));
|
|
|
+ addMusicSheet.setName(from.getName());
|
|
|
+ if (StringUtils.isNotBlank(from.getSubjectIds())) {
|
|
|
+ List<Integer> subjectIds = Arrays.stream(from.getSubjectIds().split(","))
|
|
|
+ .map(Integer::parseInt).distinct().collect(Collectors.toList());
|
|
|
+ List<Subject> list = subjectService.findBySubjectByIdList(subjectIds);
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ addMusicSheet.setSubjectIds(list.stream().map(o->o.getCbsSubjectId().toString()).collect(Collectors.joining(",")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addMusicSheet.setSendAppFlag(false);
|
|
|
+ addMusicSheet.setAppAuditFlag(false);
|
|
|
+ addMusicSheet.setRemark(from.getMuseScoreMemo());
|
|
|
+ addMusicSheet.setIsUseSystemBeat(true);
|
|
|
+ if(categoryIds.contains(from.getCategoriesId().toString())){
|
|
|
+ addMusicSheet.setMusicSheetType(EMusicSheetType.CONCERT);
|
|
|
+ }else {
|
|
|
+ addMusicSheet.setMusicSheetType(EMusicSheetType.SINGLE);
|
|
|
+ }
|
|
|
+ addMusicSheet.setIsEvaluated(from.isEnableEvaluation());
|
|
|
+ addMusicSheet.setIsConvertibleScore(true);
|
|
|
+ addMusicSheet.setPlaySpeed(from.getSpeed());
|
|
|
+ addMusicSheet.setPlayMode(from.getPlayMode() == SysMusicScore.PlayMode.MP3 ? EMusicPlayMode.MP3 : EMusicPlayMode.MIDI);
|
|
|
+
|
|
|
+ addMusicSheet.setMidiFileUrl(from.getMidiUrl());
|
|
|
+ addMusicSheet.setMusicJson(from.getMusicJSON());
|
|
|
+ addMusicSheet.setMusicSvg(from.getMusicSvg());
|
|
|
+ addMusicSheet.setMusicJianSvg(from.getMusicJianSvg());
|
|
|
+ addMusicSheet.setMusicFirstSvg(from.getMusicFirstSvg());
|
|
|
+
|
|
|
+ addMusicSheet.setMusicFirstImg(Optional.ofNullable(from.getFirstTone()).orElse(from.getFirstTone()));
|
|
|
+ addMusicSheet.setMusicJianImg(Optional.ofNullable(from.getFixedTone()).orElse(from.getFixedTone()));
|
|
|
+ addMusicSheet.setMusicImg(from.getMusicImg());
|
|
|
+ addMusicSheet.setExtConfigJson(from.getExtConfigJson());
|
|
|
+ addMusicSheet.setCreateTime(from.getCreateTime());
|
|
|
+ addMusicSheet.setAudioType(from.getAccompanimentType() !=null && from.getAccompanimentType() == AccompanimentTypeEnum.COMMON? EAudioType.COMMON:EAudioType.HOMEMODE);
|
|
|
+ if (from.getSourceType() !=null) {
|
|
|
+ addMusicSheet.setAvailableType(from.getSourceType() == SourceTypeEnum.PLATFORM? EMusicAvailableType.PLATFORM:EMusicAvailableType.PERSON);
|
|
|
+ addMusicSheet.setSourceType(from.getSourceType() == SourceTypeEnum.PLATFORM? EMusicSourceType.PLATFORM:EMusicSourceType.PERSON);
|
|
|
+ } else {
|
|
|
+ addMusicSheet.setAvailableType(EMusicAvailableType.PLATFORM);
|
|
|
+ addMusicSheet.setSourceType(EMusicSourceType.PLATFORM);
|
|
|
+ }
|
|
|
+ addMusicSheet.setStatus(from.getState() == YesOrNoEnum.YES);
|
|
|
+ addMusicSheet.setReason(from.getReason());
|
|
|
+
|
|
|
+ String tracks = "";
|
|
|
+ // 伴奏,原音 扩展信息
|
|
|
+ if (addMusicSheet.getPlayMode() == EMusicPlayMode.MP3) {
|
|
|
+ CbsMusicSheetWrapper.MusicSheetAccompaniment musicSheetAccompaniment = new CbsMusicSheetWrapper.MusicSheetAccompaniment();
|
|
|
+ if (StringUtils.isNotBlank(from.getMetronomeUrl())) {
|
|
|
+ musicSheetAccompaniment.setAudioFileUrl(from.getMetronomeUrl());
|
|
|
+ }else if (StringUtils.isNotBlank(from.getUrl())) {
|
|
|
+ musicSheetAccompaniment.setAudioFileUrl(from.getUrl());
|
|
|
+ } else if (StringUtils.isNotBlank(from.getAudioFileUrl())) {
|
|
|
+ musicSheetAccompaniment.setAudioFileUrl(from.getAudioFileUrl());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(musicSheetAccompaniment.getAudioFileUrl())) {
|
|
|
+ addMusicSheet.setMusicSheetAccompanimentList(Lists.newArrayList(musicSheetAccompaniment));
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(accList)) {
|
|
|
+ List<CbsMusicSheetWrapper.MusicSheetSound> musicSheetSounds = new ArrayList<>();
|
|
|
+ int i = 0;
|
|
|
+ for (SysMusicScoreAccompaniment sheetAccompaniment : accList) {
|
|
|
+ CbsMusicSheetWrapper.MusicSheetSound musicSheetSound = new CbsMusicSheetWrapper.MusicSheetSound();
|
|
|
+ if (StringUtils.isNotBlank(sheetAccompaniment.getMetronomeMp3Url())){
|
|
|
+ musicSheetSound.setAudioFileUrl(sheetAccompaniment.getMetronomeMp3Url());
|
|
|
+ } else {
|
|
|
+ musicSheetSound.setAudioFileUrl(sheetAccompaniment.getMp3Url());
|
|
|
+ }
|
|
|
+ musicSheetSound.setTrack(sheetAccompaniment.getTrack());
|
|
|
+ musicSheetSound.setSortNumber(i++);
|
|
|
+ if (StringUtils.isNotBlank(musicSheetSound.getAudioFileUrl())) {
|
|
|
+ //xml
|
|
|
+ addMusicSheet.setXmlFileUrl(sheetAccompaniment.getXmlUrl());
|
|
|
+ //是否显示指法
|
|
|
+ addMusicSheet.setIsShowFingering(sheetAccompaniment.getIsShowFingering());
|
|
|
+ //是否播放节拍器
|
|
|
+ addMusicSheet.setIsPlayBeat(sheetAccompaniment.getIsOpenMetronome());
|
|
|
+ musicSheetSounds.add(musicSheetSound);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tracks = musicSheetSounds.stream().map(CbsMusicSheetWrapper.MusicSheetSound::getTrack).collect(Collectors.joining(","));
|
|
|
+ addMusicSheet.setMusicSheetSoundList(musicSheetSounds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addMusicSheet.setMultiTracksSelection(tracks);
|
|
|
+
|
|
|
+ CbsMusicSheetWrapper.MusicSheetExtend musicSheetExtend = new CbsMusicSheetWrapper.MusicSheetExtend();
|
|
|
+ musicSheetExtend.setApplicationId(Long.parseLong(openFeignClientConfigProperties.getAppId()));
|
|
|
+ if (from.getSourceType() !=null) {
|
|
|
+ if (from.getSourceType() == SourceTypeEnum.TEACHER) {
|
|
|
+ musicSheetExtend.setUserId(from.getUserId());
|
|
|
+ musicSheetExtend.setClientType(EClientType.TEACHER.name());
|
|
|
+ } else {
|
|
|
+ musicSheetExtend.setClientType(EClientType.BACKEND.name());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addMusicSheet.setMusicSheetExtend(musicSheetExtend);
|
|
|
+
|
|
|
+ // 应用扩展信息
|
|
|
+ CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend addMusicSheetApplicationExtend = new CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend();
|
|
|
+ addMusicSheetApplicationExtend.setApplicationId(Long.parseLong(openFeignClientConfigProperties.getAppId()));
|
|
|
+ addMusicSheetApplicationExtend.setStatus(addMusicSheet.getStatus());
|
|
|
+ addMusicSheetApplicationExtend.setSortNo(from.getSortNumber());
|
|
|
+ addMusicSheetApplicationExtend.setPaymentType(from.getPaymentType());
|
|
|
+ addMusicSheetApplicationExtend.setTopFlag(from.getTopFlag() !=null && from.getTopFlag() == YesOrNoEnum.YES);
|
|
|
+ addMusicSheetApplicationExtend.setExquisiteFlag(from.getExquisiteFlag() !=null && from.getExquisiteFlag() == YesOrNoEnum.YES);
|
|
|
+ addMusicSheetApplicationExtend.setAvailableType(from.getProviderType() !=null && from.getProviderType() == SourceTypeEnum.TENANT?EMusicAvailableType.ORG:EMusicAvailableType.PLATFORM);
|
|
|
+ addMusicSheetApplicationExtend.setMusicTagIds(from.getMusicTag());
|
|
|
+ addMusicSheetApplicationExtend.setMusicPrice(from.getMusicPrice());
|
|
|
+ addMusicSheet.setAddMusicSheetApplicationExtend(Lists.newArrayList(addMusicSheetApplicationExtend));
|
|
|
+ addMusicSheet.setIsConvertibleScore(true);
|
|
|
+ return addMusicSheet;
|
|
|
+ }
|
|
|
+
|
|
|
private void getAllCategoryIdList(List<Integer> categoryIdList, List<SysMusicScoreCategories> sysMusicScoreCategoriesList) {
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(sysMusicScoreCategoriesList)) {
|