Jelajahi Sumber

管乐迷曲目来源内容平台

zouxuan 1 tahun lalu
induk
melakukan
6aa6ca869f

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicScoreAccompanimentDao.java

@@ -34,4 +34,6 @@ public interface SysMusicScoreAccompanimentDao extends BaseDAO<Integer, SysMusic
      * @return
      */
     List<Subject> querySubjectIds(@Param("categoriesIdList") List<Integer> categoriesIdList);
+
+    List<SysMusicScoreAccompaniment> findByMusicScoreId(@Param("recordId") Integer recordId);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicScoreDao.java

@@ -29,4 +29,6 @@ public interface SysMusicScoreDao extends BaseDAO<Integer, SysMusicScore> {
     void updateMusicSheet(@Param("param") CbsMusicSheetApiWrapper.MusicSheetUpdate musicSheetUpdate);
 
     void batchInsertAccompaniment(@Param("vos") List<Integer> musicSheetIds);
+
+    List<SysMusicScore> selectSyncPage();
 }

+ 166 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

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

+ 4 - 1
mec-biz/src/main/resources/config/mybatis/SysMusicScoreAccompanimentMapper.xml

@@ -215,8 +215,11 @@
 		</if>
 		GROUP BY sesa.subject_id_
 	</select>
+    <select id="findByMusicScoreId" resultMap="SysMusicScoreAccompaniment">
+		SELECT * FROM sys_music_score_accompaniment WHERE exam_song_id_ = #{recordId} AND del_flag_ = 0
+	</select>
 
-	<sql id="queryPageSql">
+    <sql id="queryPageSql">
 		<where>
 			sesa.del_flag_ = 0 AND ses.del_flag_ = 0
 			<if test="enable != null">

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml

@@ -176,6 +176,9 @@
 			</foreach>
 		</if>
 	</select>
+	<select id="selectSyncPage" resultMap="SysMusicScore">
+		select * from sys_music_score where cbs_music_sheet_id_ iS NOT NULL and del_flag_ = 0 and show_flag_ = 1
+	</select>
 
 	<update id="updateBatchByCbsId">
 		<foreach collection="vos" item="item" index="index" separator=";">