Browse Source

fix:导入

liujunchi 3 years ago
parent
commit
c0ede86ad6

+ 12 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/AudioTypeConverter.java

@@ -6,6 +6,7 @@ import com.alibaba.excel.metadata.CellData;
 import com.alibaba.excel.metadata.GlobalConfiguration;
 import com.alibaba.excel.metadata.property.ExcelContentProperty;
 import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 
 /**
  * Description
@@ -27,7 +28,17 @@ public class AudioTypeConverter implements Converter<AudioTypeEnum> {
     @Override
     public AudioTypeEnum convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
         try {
-            return AudioTypeEnum.valueOf(cellData.getStringValue().trim());
+            if ("MAP".equals(cellData.getStringValue())) {
+                return AudioTypeEnum.MP3;
+            } else if ("MIDI".equals(cellData.getStringValue())){
+                return AudioTypeEnum.MIDI;
+            } else if ("是".equals(cellData.getStringValue())) {
+                return AudioTypeEnum.MP3_METRONOME;
+            } else if ("否".equals(cellData.getStringValue())) {
+                return AudioTypeEnum.MP3;
+            } else {
+                return null;
+            }
         } catch (Exception e) {
             return null;
         }

+ 7 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/YesOrNoConverter.java

@@ -26,16 +26,20 @@ public class YesOrNoConverter implements Converter<YesOrNoEnum> {
     }
 
     @Override
-    public YesOrNoEnum convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+    public YesOrNoEnum convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
         try {
-            return YesOrNoEnum.valueOf(cellData.getStringValue().trim());
+            if ("是".equals(cellData.getStringValue())) {
+                return YesOrNoEnum.YES;
+            } else {
+                return YesOrNoEnum.NO;
+            }
         } catch (Exception e) {
             return null;
         }
     }
 
     @Override
-    public CellData convertToExcelData(YesOrNoEnum yesOrNoEnum, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+    public CellData convertToExcelData(YesOrNoEnum yesOrNoEnum, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
         if (null != yesOrNoEnum) {
             return new CellData(yesOrNoEnum.getCode());
         }

+ 0 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetExport.java

@@ -22,41 +22,32 @@ public class MusicSheetExport {
     @ExcelProperty(value = "曲目名称", index = 1)
     private String musicSheetName;  //曲谱名称
 
-
     @ApiModelProperty(value = "曲目音频类型 MP3:mp3, MIDI:midi,")
     @ExcelProperty(value = "播放类型",converter = AudioTypeConverter.class)
     private AudioTypeEnum audioType;
 
-
     @ApiModelProperty(value = "mp3类型 MP3:mp3, MP3_METRONOME:MP3_METRONOME,")
     @ExcelProperty(value = "是否含节拍器", index = 0)
     private AudioTypeEnum mp3Type;
 
-
-
     @ApiModelProperty(value = "XML文件存储路径")
     @ExcelProperty(value = "XML文件地址", index = 0)
     private String xmlFileUrl;  //XML文件存储路径
 
-
     @ApiModelProperty(value = "midi路径")
     @ExcelProperty(value = "伴奏文件地址", index = 0)
     private String midiUrl;  //XML文件存储路径
 
-
-
     @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
     @ExcelProperty(value = "曲目标签", index = 0)
     private String musicTags;  //曲谱标签(多个标签用逗号分隔)
 
-
     @ExcelProperty(value = "可用声部", index = 0)
     private String musicSubjects;  //曲谱声部(适用的乐器,可能是多个,用逗号分隔)
 
     @ExcelProperty(value = "音乐人", index = 0)
     private String composer;  //作曲人
 
-
     @ExcelProperty(value = "指法是否展示",converter = YesOrNoConverter.class)
     @ApiModelProperty(value = "是否展示指法(0:否;1:是)")
     private YesOrNoEnum showFingering;  //是否展示指法(0:否;1:是)
@@ -69,7 +60,6 @@ public class MusicSheetExport {
     @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
     private ChargeTypeEnum chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)
 
-
     @ExcelProperty(value = "MP3原音", index = 0)
     @ApiModelProperty(value = "MP3原声音频文件URL")
     private String audioFileUrls;  //MP3原声音频文件URL

+ 85 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -26,6 +26,7 @@ import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.easyexcel.ErrMsg;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
+import com.yonge.toolset.utils.easyexcel.ExcelException;
 import com.yonge.toolset.utils.string.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,6 +88,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     @Autowired
     private UserAccountService userAccountService;
 
+    @Autowired
+    private MusicTagService musicTagService;
+
+    @Autowired
+    private SubjectService subjectService;
+
     public MusicSheetDao getDao() {
         return musicSheetDao;
     }
@@ -587,19 +594,95 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 
         List<ErrMsg> errMsgList = new ArrayList<>();
         dataList.sort(Comparator.comparingInt(ExcelDataReaderProperty::getRowIndex));
-        List<MusicSheetDto> userWithdrawalList = new ArrayList<>();
+        List<MusicSheetDto> musicSheetDtoList = new ArrayList<>();
+        List<MusicTagVo> musicTagVoList = musicTagService.selectMusicTagTree();
 
         for (ExcelDataReaderProperty<MusicSheetExport> readerProperty : dataList) {
+            MusicSheetDto musicSheetDto = new MusicSheetDto();
+            musicSheetDto.setUserId(userId);
+            musicSheetDto.setAuditVersion(YesOrNoEnum.NO);
+            musicSheetDto.setSourceType(SourceTypeEnum.PLATFORM);
+            musicSheetDto.setChargeType(ChargeTypeEnum.FREE);
+            musicSheetDto.setAuditStatus(AuthStatusEnum.PASS);
+            musicSheetDto.setState(YesOrNoEnum.NO);
+            musicSheetDto.setDelFlag(false);
+            musicSheetDto.setCreateBy(userId);
+            musicSheetDto.setUpdateBy(userId);
+            musicSheetDto.setCreateTime(new Date());
+            musicSheetDto.setUpdateTime(new Date());
             String errMsg = readerProperty.getErrorMessage();
             if (!StringUtil.isEmpty(errMsg)) {
                 errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), errMsg));
                 continue;
             }
             MusicSheetExport sheetExport = readerProperty.getClazz();
-            // sheetExport TODO 导入
+            BeanUtils.copyProperties(sheetExport,musicSheetDto);
+            // TODO 导入
+            String musicTags = sheetExport.getMusicTags();
+            if (musicTags == null || musicTags.equals("")) {
+                errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "曲目标签不能为空"));
+            }
+            List<String> stringList = Arrays.asList(musicTags.split(",|,"));
+            String musicTagIds = "";
+            List<MusicTag> childrenMusicTag = new ArrayList<>();
+            for (MusicTagVo musicTagVo : musicTagVoList) {
+                childrenMusicTag.addAll(musicTagVo.getChildren());
+            }
+            for (String s : stringList) {
+                boolean  b = false;
+                for (MusicTag musicTag : childrenMusicTag) {
+                    if(musicTag.getName().equals(s)) {
+                        musicTagIds = musicTags + "," + musicTag.getId();
+                        b = true;
+                    }
+                }
+                if (!b) {
+                    errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "曲目名称错误:" + s));
+                }
+            }
+            if (StringUtil.isEmpty(sheetExport.getComposer())) {
+                errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "音乐人不能为空"));
+            }
+            if (StringUtil.isEmpty(sheetExport.getMusicSubjects())) {
+                errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "曲目声部不能为空"));
+            } else {
+                List<Subject> subjects = subjectService.subjectSelect();
+                List<Subject> childrenSubject = new ArrayList<>();
+                for (Subject subject : subjects) {
+                    childrenSubject.addAll(subject.getSubjects());
+                }
+                List<Subject> collect = childrenSubject.stream()
+                       .filter(subject -> subject.getName().equals(sheetExport.getMusicSubjects()))
+                       .collect(Collectors.toList());
+                if (CollectionUtils.isEmpty(collect)) {
+                    errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "曲目声部名错误:" + sheetExport.getMusicSubjects()));
+                } else {
+                    musicSheetDto.setMusicSubject(collect.get(0).getId().toString());
+                }
+            }
+            if (!StringUtil.isEmpty(sheetExport.getAudioFileUrls())) {
+
+                List<MusicSheetAccompaniment> background = new ArrayList<>();
+                String[] audioFileUrls = sheetExport.getAudioFileUrls().split(",|,");
+                for (int i = 0; i < audioFileUrls.length; i++) {
+                    MusicSheetAccompaniment musicSheetAccompaniment = new MusicSheetAccompaniment();
+                    musicSheetAccompaniment.setAudioFileUrl(audioFileUrls[i]);
+                    background.add(musicSheetAccompaniment);
+                }
+                musicSheetDto.setBackground(background);
+            }
+
+            musicSheetDto.setMusicTag(musicTagIds);
 
+            musicSheetDtoList.add(musicSheetDto);
         }
 
+        if(!CollectionUtils.isEmpty(errMsgList)) {
+            throw new ExcelException("导入异常", errMsgList);
+        }
+
+        musicSheetDtoList.forEach(musicSheetDto -> saveMusicSheet(musicSheetDto,userId));
+
     }
 
     private SysUser getSysUser(Long userId) {

+ 1 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -222,6 +222,7 @@
         <result column="mp3Type" jdbcType="VARCHAR" property="mp3Type"/>
         <result column="remark" jdbcType="VARCHAR" property="remark"/>
         <result column="userName" jdbcType="VARCHAR" property="userName"/>
+        <result column="auditVersion" jdbcType="VARCHAR" property="auditVersion"/>
         <collection property="background" ofType="com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment">
             <id column="accompanimentId" jdbcType="BIGINT" property="id"/>
             <result column="accompanimentMusicSheetId" jdbcType="BIGINT" property="musicSheetId"/>