|
@@ -3,19 +3,26 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
+import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.*;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
|
|
|
+import com.yonge.toolset.mybatis.support.PageUtil;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
|
|
|
import com.yonge.cooleshow.biz.dal.mapper.UserTenantAlbumRecordMapper;
|
|
|
-import com.yonge.cooleshow.biz.dal.service.UserTenantAlbumRecordService;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -26,6 +33,21 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbumRecordMapper, UserTenantAlbumRecord> implements UserTenantAlbumRecordService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TenantAlbumRefService tenantAlbumRefService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TenantInfoService tenantInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TenantAlbumMusicService tenantAlbumMusicService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MusicSheetService musicSheetService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询详情
|
|
|
* @param id 详情ID
|
|
@@ -44,9 +66,76 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
|
|
|
* @return IPage<UserTenantAlbumRecord>
|
|
|
*/
|
|
|
@Override
|
|
|
- public IPage<UserTenantAlbumRecord> selectPage(IPage<UserTenantAlbumRecord> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query) {
|
|
|
-
|
|
|
- return page.setRecords(baseMapper.selectPage(page, query));
|
|
|
+ public IPage<TenantAlbumWrapper.TenantAlbum> selectPage(IPage<TenantAlbumWrapper.TenantAlbum> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query) {
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
+ Long id = sysUser.getId();
|
|
|
+ query.setUserId(sysUser.getId());
|
|
|
+
|
|
|
+ List<TenantAlbumWrapper.TenantAlbum> list = new ArrayList<>();
|
|
|
+
|
|
|
+ //查询生效的机构专辑id
|
|
|
+ List<Long> tenantIds = baseMapper.selectTenantIds(id);
|
|
|
+ List<TenantAlbum> tenantAlbums = baseMapper.selectTenantAlbumInfo(tenantIds);
|
|
|
+ tenantAlbums.stream().forEach(i->{
|
|
|
+ TenantAlbumWrapper.TenantAlbum vo = JSON.parseObject(JSON.toJSONString(i),
|
|
|
+ TenantAlbumWrapper.TenantAlbum.class);
|
|
|
+
|
|
|
+ //查关联表
|
|
|
+ TenantAlbumRef one = tenantAlbumRefService.lambdaQuery().eq(TenantAlbumRef::getTenantAlbumId, i.getId())
|
|
|
+ .last("limit 1").one();
|
|
|
+ vo.setTenantId(one.getTenantId());
|
|
|
+
|
|
|
+ //查询曲目表
|
|
|
+ TenantInfo tenantInfo = tenantInfoService.getById(one.getTenantId());
|
|
|
+ vo.setTenantName(tenantInfo.getName());
|
|
|
+
|
|
|
+ List<TenantAlbumMusic> tenantAlbumMusics = tenantAlbumMusicService.lambdaQuery()
|
|
|
+ .eq(TenantAlbumMusic::getTenantAlbumId, i.getId())
|
|
|
+ .eq(TenantAlbumMusic::getDelFlag, false)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ Map<SubjectTypeEnum, List<TenantAlbumMusic>> groupByType =
|
|
|
+ tenantAlbumMusics.stream().collect(Collectors.groupingBy(TenantAlbumMusic::getSubjectType));
|
|
|
+
|
|
|
+ List<Long> musicSheetIdlist = tenantAlbumMusics.stream().map(next -> next.getMusicSheetId()).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ StudentMusicSheetSearch search = new StudentMusicSheetSearch();
|
|
|
+ search.setMusicSheetIdlist(musicSheetIdlist);
|
|
|
+ search.setPage(1);
|
|
|
+ search.setRows(9999);
|
|
|
+
|
|
|
+ IPage<MusicSheetVo> records = musicSheetService.selectStudentPage(PageUtil.getPage(search), search, ClientEnum.TENANT_STUDENT);
|
|
|
+
|
|
|
+ Map<Long, MusicSheetVo> idMsMap = records.getRecords().stream()
|
|
|
+ .collect(Collectors.toMap(MusicSheet::getId, Function.identity()));
|
|
|
+
|
|
|
+ List<TenantAlbumWrapper.MusicSheetData> musicSheetData = vo.getMusicSheetData();
|
|
|
+
|
|
|
+ groupByType.forEach((key, value) -> {
|
|
|
+ value.sort(Comparator.comparing(TenantAlbumMusic::getSortNumber));
|
|
|
+ TenantAlbumWrapper.MusicSheetData sheetData = new TenantAlbumWrapper.MusicSheetData();
|
|
|
+ sheetData.setSubjectType(key);
|
|
|
+ List<TenantAlbumWrapper.TenantAlbumSheet> tenantAlbumSheets = value.stream().map(next -> {
|
|
|
+
|
|
|
+ TenantAlbumWrapper.TenantAlbumSheet tenantAlbumSheet = new TenantAlbumWrapper.TenantAlbumSheet();
|
|
|
+ BeanUtils.copyProperties(value.get(0), tenantAlbumSheet);
|
|
|
+ Long musicSheetId = tenantAlbumSheet.getMusicSheetId();
|
|
|
+ MusicSheetVo musicSheet = idMsMap.getOrDefault(musicSheetId, new MusicSheetVo());
|
|
|
+ tenantAlbumSheet.setMusicSheetName(musicSheet.getMusicSheetName());
|
|
|
+ tenantAlbumSheet.setMusicTag(musicSheet.getMusicTag());
|
|
|
+ tenantAlbumSheet.setComposer(musicSheet.getComposer());
|
|
|
+ return tenantAlbumSheet;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ sheetData.setTenantAlbumSheetList(tenantAlbumSheets);
|
|
|
+ musicSheetData.add(sheetData);
|
|
|
+ vo.setMusicSheetData(musicSheetData);
|
|
|
+ });
|
|
|
+ list.add(vo);
|
|
|
+ });
|
|
|
+
|
|
|
+ return page.setRecords(list);
|
|
|
}
|
|
|
|
|
|
/**
|