|
@@ -1,7 +1,9 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
|
import com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto;
|
|
|
+import com.ym.mec.biz.dal.dto.RewardsRulesJsonDto;
|
|
|
import com.ym.mec.biz.dal.dto.TaskRewardsRulesDto;
|
|
|
import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
@@ -685,11 +687,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PageInfo<ExportTeacherSalaryDto> exportTeacherSalary(ExportTeacherSalaryQueryInfo queryInfo) {
|
|
|
- //课时编号 老师编号 老师姓名 老师分部 工作类别 课程分部
|
|
|
- //课程班名称(乐团名或者小课名) 乐团模式 活动名称 线上课/线下课 线上课单价
|
|
|
- //线下课单价 上课形式 课程类别 课时时长 上课日期 上课时间 签到状态
|
|
|
- //签退状态 签到时间 签退时间 课时课酬 主辅 上课地点 应到学员
|
|
|
+ public List<ExportTeacherSalaryDto> exportTeacherSalary(ExportTeacherSalaryQueryInfo queryInfo) {
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
MapUtil.populateMap(params, queryInfo);
|
|
|
Date months = DateUtil.addMonths(new Date(), -1);
|
|
@@ -697,15 +695,72 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
String lastDayOfMonth = DateUtil.format(DateUtil.getLastDayOfMonth(months),DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
params.put("firstDayOfMonth",firstDayOfMonth);
|
|
|
params.put("lastDayOfMonth",lastDayOfMonth);
|
|
|
+ List<ExportTeacherSalaryDto> exportTeacherSalaryDtos = new ArrayList<>();
|
|
|
//乐团课
|
|
|
- List<ExportTeacherSalaryDto> exportMusicTeacherSalaryDtos = courseScheduleTeacherSalaryDao.exportMusicTeacherSalary(params);
|
|
|
+ exportTeacherSalaryDtos.addAll(courseScheduleTeacherSalaryDao.exportMusicTeacherSalary(params));
|
|
|
//vip课
|
|
|
List<ExportTeacherSalaryDto> exportVipTeacherSalaryDtos = courseScheduleTeacherSalaryDao.exportVipTeacherSalary(params);
|
|
|
- //获取有奖励的vip课
|
|
|
+ //获取有奖励的vip课 .collect(Collectors.toMap(Group::getId, group -> group));
|
|
|
List<TaskRewardsRulesDto> rewardsRulesDtos = courseScheduleRewardsRulesService.queryVipGroupTeacherClassTimesByMonth(firstDayOfMonth,lastDayOfMonth);
|
|
|
+ Map<Integer,Double> rewardMap = new HashMap<>(1000);
|
|
|
+ Map<Integer,String> rewardNameMap = new HashMap<>(1000);
|
|
|
+ if(rewardsRulesDtos != null && rewardsRulesDtos.size() > 0){
|
|
|
+ List<Integer> activeIds = rewardsRulesDtos.stream().map(e -> e.getActiveId()).collect(Collectors.toList());
|
|
|
+ List<CourseScheduleRewardsRules> rewardsRules = courseScheduleRewardsRulesService.findByIds(activeIds);
|
|
|
+ Map<Integer, List<CourseScheduleRewardsRules>> integerListMap = rewardsRules.stream().collect(Collectors.groupingBy(CourseScheduleRewardsRules::getId));
|
|
|
+ rewardsRulesDtos.forEach(e->{
|
|
|
+ CourseScheduleRewardsRules rewardsRule = integerListMap.get(e.getActiveId()).get(0);
|
|
|
+ List<RewardsRulesJsonDto> rulesJsonDtos = JSONObject.parseArray(rewardsRule.getRewardsRulesJson(), RewardsRulesJsonDto.class);
|
|
|
+ BigDecimal money = BigDecimal.ZERO;
|
|
|
+ //STAIR 阶梯, PER 累计, TOTAL
|
|
|
+ RewardsRulesJsonDto dto;
|
|
|
+ int times = e.getTimes();
|
|
|
+ switch (rewardsRule.getRewardMode()) {
|
|
|
+ case STAIR:
|
|
|
+ for (int i = 0;i< rulesJsonDtos.size();i++){
|
|
|
+ dto = rulesJsonDtos.get(i);
|
|
|
+ if (e.getTimes() >= dto.getMin()) {
|
|
|
+ //最后一个梯度
|
|
|
+ if(rulesJsonDtos.size()-1 == i){
|
|
|
+ money = money.add(dto.getMoney().multiply(new BigDecimal(times)));
|
|
|
+ }else if(e.getTimes() >= dto.getMax()){
|
|
|
+ times = Math.abs(dto.getMax() - times);
|
|
|
+ money = money.add(dto.getMoney().multiply(new BigDecimal(dto.getMax()-dto.getMin()+1)));
|
|
|
+ }else {
|
|
|
+ money = money.add(dto.getMoney().multiply(new BigDecimal(times)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case PER:
|
|
|
+ for (int i = 0;i< rulesJsonDtos.size();i++){
|
|
|
+ dto = rulesJsonDtos.get(i);
|
|
|
+ if (e.getTimes() >= dto.getMin()) {
|
|
|
+ money = dto.getMoney().multiply(new BigDecimal(times));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case TOTAL:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (money.doubleValue() > 0) {
|
|
|
+ String[] split = e.getCourseScheduleIds().split(",");
|
|
|
+ for (int i = 0; i < split.length; i++) {
|
|
|
+ rewardMap.put(Integer.parseInt(split[i]),money.doubleValue()/split.length);
|
|
|
+ rewardNameMap.put(Integer.parseInt(split[i]),e.getActiveName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ exportVipTeacherSalaryDtos.forEach(e->{
|
|
|
+ e.setRewards(rewardMap.get(e.getCourseScheduleId()));
|
|
|
+ e.setActiveName(rewardNameMap.get(e.getCourseScheduleId()));
|
|
|
+ });
|
|
|
+ exportTeacherSalaryDtos.addAll(exportVipTeacherSalaryDtos);
|
|
|
//vip课(梯度课酬)
|
|
|
//陪练课
|
|
|
- return null;
|
|
|
+ exportTeacherSalaryDtos.addAll(courseScheduleTeacherSalaryDao.exportPracticeTeacherSalary(params));
|
|
|
+ return exportTeacherSalaryDtos;
|
|
|
}
|
|
|
|
|
|
@Override
|