|
@@ -1,5 +1,6 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsSubjectWrapper;
|
|
|
import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
|
|
|
import com.ym.mec.biz.dal.dao.SubjectDao;
|
|
|
import com.ym.mec.biz.dal.dao.SubjectGoodsMapperDao;
|
|
@@ -281,4 +282,68 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
|
|
|
}
|
|
|
return records;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo<SubjectWrapper.Subject> selectPage(SubjectWrapper.SubjectQuery query) {
|
|
|
+ PageInfo<SubjectWrapper.Subject> pageInfo = new PageInfo<>(query.getPage(), query.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ MapUtil.populateMap(params, query);
|
|
|
+
|
|
|
+ List<SubjectWrapper.Subject> dataList = null;
|
|
|
+ int count = subjectDao.findCount(params);
|
|
|
+ if (count > 0) {
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ dataList = subjectDao.findPage(params);
|
|
|
+ if(query.getParentSubjectId() == null || query.getParentSubjectId() > 0){
|
|
|
+ // 转map
|
|
|
+ Map<Long, SubjectWrapper.Subject> subjectMap = dataList.stream().collect(Collectors.toMap(SubjectWrapper.Subject::getCbsSubjectId, Function.identity(),(o1, o2)->o1));
|
|
|
+ // cbs声部ID集合
|
|
|
+ List<Long> cbsSubjectIds = dataList.stream().map(SubjectWrapper.Subject::getCbsSubjectId).collect(Collectors.toList());
|
|
|
+ dataList = new ArrayList<>();
|
|
|
+ CbsSubjectWrapper.SubjectQuery subjectQuery = new CbsSubjectWrapper.SubjectQuery();
|
|
|
+ subjectQuery.setIds(cbsSubjectIds);
|
|
|
+ subjectQuery.setPage(1);
|
|
|
+ subjectQuery.setRows(query.getRows());
|
|
|
+ try {
|
|
|
+ com.microsvc.toolkit.common.response.paging.PageInfo<CbsSubjectWrapper.Subject> subjectPageInfo = musicFeignClientService.subjectPage(subjectQuery).feignData();
|
|
|
+ List<CbsSubjectWrapper.Subject> rows = subjectPageInfo.getRows();
|
|
|
+ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(rows)) {
|
|
|
+ for (CbsSubjectWrapper.Subject row : rows) {
|
|
|
+ SubjectWrapper.Subject subject = subjectMap.get(row.getId());
|
|
|
+ if (subject == null) {
|
|
|
+ log.warn("未查询到声部信息,id:{}", row.getId());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ subject.setCbsSubjectName(row.getName());
|
|
|
+// subject.setName(row.getName());
|
|
|
+// subject.setCode(row.getCode());
|
|
|
+ dataList.add(subject);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("调用音乐服务查询曲目详情失败", e);
|
|
|
+ }
|
|
|
+ // 设置声部下的乐器信息
|
|
|
+ List<Integer> subjectIds = dataList.stream().map(SubjectWrapper.Subject::getId).distinct().collect(Collectors.toList());
|
|
|
+ Map<Integer, List<InstrumentWrapper.Instrument>> groupBySubjectId = instrumentService.getGroupBySubjectId(subjectIds, query.getEnableFlag());
|
|
|
+ Map<Long, Subject> map = this.findBySubjectByIdList(dataList.stream().map(SubjectWrapper.Subject::getParentSubjectId).collect(Collectors.toList())).stream()
|
|
|
+ .collect(Collectors.toMap(Subject::getId, t -> t));
|
|
|
+ dataList.forEach(e -> {
|
|
|
+ if(e.getParentSubjectId() != null && e.getParentSubjectId() > 0) {
|
|
|
+ e.setParentSubjectName(map.get(e.getParentSubjectId()).getName());
|
|
|
+ }
|
|
|
+ List<InstrumentWrapper.Instrument> instruments = groupBySubjectId.get(e.getId());
|
|
|
+ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(instruments)) {
|
|
|
+ e.setInstruments(instruments);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (count == 0) {
|
|
|
+ dataList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
}
|