Browse Source

管乐迷曲目来源内容平台

zouxuan 1 year ago
parent
commit
2bca495bd3

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java

@@ -118,4 +118,6 @@ public interface SubjectService extends BaseService<Integer, Subject> {
     Map<Integer, StudentSubjectDto> getSubjectByStudentId(Set studentIds);
 
     List<SubjectWrapper.Subject> queryList(SubjectWrapper.SubjectQuery query);
+
+    PageInfo<SubjectWrapper.Subject> selectPage(SubjectWrapper.SubjectQuery query);
 }

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -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;
+    }
 }