|
@@ -3,17 +3,25 @@ package com.ym.mec.biz.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.ym.mec.biz.dal.dao.SubjectDao;
|
|
|
import com.ym.mec.biz.dal.entity.DegreeLevelFeeNew;
|
|
|
-import com.ym.mec.biz.dal.vo.DegreeLevelFeeNewVo;
|
|
|
+import com.ym.mec.biz.dal.entity.Subject;
|
|
|
+import com.ym.mec.biz.dal.enums.DegreeTypeEnum;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import com.ym.mec.biz.dal.vo.DegreeLevelFeeNewVo;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import com.ym.mec.biz.dal.entity.DegreeLevelFee;
|
|
|
import com.ym.mec.biz.dal.wrapper.DegreeLevelFeeWrapper;
|
|
|
import com.ym.mec.biz.dal.mapper.DegreeLevelFeeMapper;
|
|
|
import com.ym.mec.biz.service.DegreeLevelFeeService;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 考级等级费用配置
|
|
@@ -23,12 +31,15 @@ import java.util.List;
|
|
|
@Service
|
|
|
public class DegreeLevelFeeServiceImpl extends ServiceImpl<DegreeLevelFeeMapper, DegreeLevelFeeNew> implements DegreeLevelFeeService {
|
|
|
|
|
|
- /**
|
|
|
+ @Autowired
|
|
|
+ private SubjectDao subjectDao;
|
|
|
+
|
|
|
+ /**
|
|
|
* 查询详情
|
|
|
* @param id 详情ID
|
|
|
* @return DegreeLevelFee
|
|
|
*/
|
|
|
- @Override
|
|
|
+ @Override
|
|
|
public DegreeLevelFeeNew detail(Long id) {
|
|
|
|
|
|
return baseMapper.selectById(id);
|
|
@@ -44,15 +55,15 @@ public class DegreeLevelFeeServiceImpl extends ServiceImpl<DegreeLevelFeeMapper,
|
|
|
public IPage<DegreeLevelFeeNewVo> selectPage(IPage<DegreeLevelFeeNewVo> page, DegreeLevelFeeWrapper.DegreeLevelFeeQuery query) {
|
|
|
return page.setRecords(baseMapper.selectPage(page, query));
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 添加
|
|
|
* @param degreeLevelFee DegreeLevelFeeWrapper.DegreeLevelFee
|
|
|
* @return Boolean
|
|
|
*/
|
|
|
@Override
|
|
|
- public Boolean add(DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFee) {
|
|
|
-
|
|
|
+ public Boolean add(DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFee) {
|
|
|
+
|
|
|
return this.save(JSON.parseObject(degreeLevelFee.jsonString(), DegreeLevelFeeNew.class));
|
|
|
}
|
|
|
|
|
@@ -66,4 +77,81 @@ public class DegreeLevelFeeServiceImpl extends ServiceImpl<DegreeLevelFeeMapper,
|
|
|
|
|
|
return this.updateById(JSON.parseObject(degreeLevelFee.jsonString(), DegreeLevelFeeNew.class));
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 机构考级价格配置
|
|
|
+ *
|
|
|
+ * @param tenantId 机构ID
|
|
|
+ * @return DegreeLevelFeeWrapper.DegreeLevelFee
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFeeConfig(Integer tenantId) {
|
|
|
+
|
|
|
+ // 根据机构ID查询考级价格配置
|
|
|
+ Map<DegreeTypeEnum, List<DegreeLevelFeeNew>> collect = lambdaQuery().eq(DegreeLevelFeeNew::getTenantId, tenantId).list().stream()
|
|
|
+ .collect(Collectors.groupingBy(DegreeLevelFeeNew::getDegreeType));
|
|
|
+
|
|
|
+ // 考级价格信息
|
|
|
+ DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFee = DegreeLevelFeeWrapper.DegreeLevelFee
|
|
|
+ .builder()
|
|
|
+ .gradeFeeConfigs(Lists.newArrayList())
|
|
|
+ .theoryFeeConfigs(Lists.newArrayList())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ // 考级价格配置
|
|
|
+ for (Map.Entry<DegreeTypeEnum, List<DegreeLevelFeeNew>> entry : collect.entrySet()) {
|
|
|
+
|
|
|
+ switch (entry.getKey()) {
|
|
|
+ case GRADE: // 考级
|
|
|
+ {
|
|
|
+ // 查询声部信息
|
|
|
+ String subjectIds = entry.getValue().stream()
|
|
|
+ .map(DegreeLevelFeeNew::getSubjectId)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .map(String::valueOf)
|
|
|
+ .distinct().collect(Collectors.joining(","));
|
|
|
+
|
|
|
+ Map<Integer, String> subjectMap = subjectDao.findBySubjectByIdList(subjectIds).stream()
|
|
|
+ .collect(Collectors.toMap(Subject::getId, Subject::getName));
|
|
|
+
|
|
|
+ // 设置声部名称
|
|
|
+ List<DegreeLevelFeeWrapper.LevelFeeConfig> levelFeeConfigs = JSON.parseArray(JSON.toJSONString(entry.getValue()),
|
|
|
+ DegreeLevelFeeWrapper.LevelFeeConfig.class);
|
|
|
+
|
|
|
+ for (DegreeLevelFeeWrapper.LevelFeeConfig item : levelFeeConfigs) {
|
|
|
+ item.setSubjectName(subjectMap.getOrDefault(item.getSubjectId(), ""));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 按声部分类聚合
|
|
|
+ Map<Integer, List<DegreeLevelFeeWrapper.LevelFeeConfig>> subjectFeeConfigMap = levelFeeConfigs.stream()
|
|
|
+ .collect(Collectors.groupingBy(DegreeLevelFeeWrapper.LevelFeeConfig::getSubjectId));
|
|
|
+
|
|
|
+ for (Map.Entry<Integer, List<DegreeLevelFeeWrapper.LevelFeeConfig>> item : subjectFeeConfigMap.entrySet()) {
|
|
|
+
|
|
|
+ degreeLevelFee.getGradeFeeConfigs().add(DegreeLevelFeeWrapper.LevelFeeConfig
|
|
|
+ .builder()
|
|
|
+ .subjectId(item.getKey())
|
|
|
+ .subjectName(subjectMap.getOrDefault(item.getKey(), ""))
|
|
|
+ .subjectFeeConfigs(item.getValue())
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case THEORY: // 乐理
|
|
|
+ {
|
|
|
+ List<DegreeLevelFeeWrapper.LevelFeeConfig> levelFeeConfigs = JSON.parseArray(JSON.toJSONString(entry.getValue()),
|
|
|
+ DegreeLevelFeeWrapper.LevelFeeConfig.class);
|
|
|
+ if (CollectionUtils.isNotEmpty(levelFeeConfigs)) {
|
|
|
+ degreeLevelFee.setTheoryFeeConfigs(levelFeeConfigs);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return degreeLevelFee;
|
|
|
+ }
|
|
|
}
|