|
@@ -1,40 +1,130 @@
|
|
package com.ym.mec.biz.service.impl;
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Set;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+
|
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
|
|
|
|
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
|
|
import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
|
|
import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
|
|
|
|
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
|
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
|
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroup;
|
|
import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
|
|
import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
|
|
import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
|
|
import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
|
|
|
|
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
|
|
import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
|
|
import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
-
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
-public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultMusicGroupSalary> implements TeacherDefaultMusicGroupSalaryService {
|
|
|
|
-
|
|
|
|
|
|
+public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultMusicGroupSalary> implements
|
|
|
|
+ TeacherDefaultMusicGroupSalaryService {
|
|
|
|
+
|
|
@Autowired
|
|
@Autowired
|
|
private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
|
|
private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private MusicGroupDao musicGroupDao;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public BaseDAO<Long, TeacherDefaultMusicGroupSalary> getDAO() {
|
|
public BaseDAO<Long, TeacherDefaultMusicGroupSalary> getDAO() {
|
|
return teacherDefaultMusicGroupSalaryDao;
|
|
return teacherDefaultMusicGroupSalaryDao;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<TeacherDefaultMusicGroupSalary> getTeacherSalaryByUserIdAndType(int userId, String classGroupType, SalarySettlementTypeEnum settlementType) {
|
|
|
|
- return teacherDefaultMusicGroupSalaryDao.getTeacherSalaryByUserIdAndType(userId, classGroupType,settlementType);
|
|
|
|
- }
|
|
|
|
|
|
+ public List<TeacherDefaultMusicGroupSalary> getTeacherSalaryByUserIdAndType(int userId, String classGroupType, SalarySettlementTypeEnum settlementType) {
|
|
|
|
+ return teacherDefaultMusicGroupSalaryDao.getTeacherSalaryByUserIdAndType(userId, classGroupType);
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void batchUpset(List<TeacherDefaultMusicGroupSalary> salaries) {
|
|
|
|
- if(salaries != null && salaries.size() > 0){
|
|
|
|
- //删除当前教师所有的结算类型的数据
|
|
|
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
|
+ public void batchUpset(List<TeacherDefaultMusicGroupSalary> salaries, Date startDate) {
|
|
|
|
+ if (salaries != null && salaries.size() > 0) {
|
|
TeacherDefaultMusicGroupSalary salary = salaries.get(0);
|
|
TeacherDefaultMusicGroupSalary salary = salaries.get(0);
|
|
- teacherDefaultMusicGroupSalaryDao.delByTeacherId(salary.getUserId());
|
|
|
|
- //批量新增
|
|
|
|
- teacherDefaultMusicGroupSalaryDao.batchAdd(salaries);
|
|
|
|
|
|
+ Integer userId = salary.getUserId();
|
|
|
|
+ // 获取老师默认乐团课课酬
|
|
|
|
+ List<TeacherDefaultMusicGroupSalary> origSalaryList = teacherDefaultMusicGroupSalaryDao.getTeacherSalaryByUserIdAndType(userId, null);
|
|
|
|
+
|
|
|
|
+ Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> map = new HashMap<CourseScheduleType, TeacherDefaultMusicGroupSalary>();
|
|
|
|
+ if (origSalaryList != null && origSalaryList.size() > 0) {
|
|
|
|
+ for (TeacherDefaultMusicGroupSalary ms : origSalaryList) {
|
|
|
|
+ map.put(ms.getCourseScheduleType(), ms);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> salaryMap = new HashMap<CourseScheduleType, TeacherDefaultMusicGroupSalary>();
|
|
|
|
+ for (TeacherDefaultMusicGroupSalary ms : salaries) {
|
|
|
|
+ // 修改了哪些课酬
|
|
|
|
+ TeacherDefaultMusicGroupSalary oldMS = map.get(ms.getCourseScheduleType());
|
|
|
|
+
|
|
|
|
+ if (oldMS.getAssistantTeacher30MinSalary().doubleValue() != ms.getAssistantTeacher30MinSalary().doubleValue()
|
|
|
|
+ || oldMS.getMainTeacher30MinSalary().doubleValue() != ms.getMainTeacher30MinSalary().doubleValue()
|
|
|
|
+ || oldMS.getAssistantTeacher90MinSalary().doubleValue() != ms.getAssistantTeacher90MinSalary().doubleValue()
|
|
|
|
+ || oldMS.getMainTeacher90MinSalary().doubleValue() != ms.getMainTeacher90MinSalary().doubleValue()) {
|
|
|
|
+ salaryMap.put(ms.getCourseScheduleType(), ms);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (salaryMap.size() > 0) {
|
|
|
|
+ String typeList = salaryMap.keySet().stream().map(e -> e.getCode()).collect(Collectors.joining(","));
|
|
|
|
+ // 查询所有需要修改的课酬
|
|
|
|
+ List<CourseScheduleTeacherSalary> updateTeacherSalaryList = courseScheduleTeacherSalaryDao.queryUserNoSettlementListByTypeAndStartClassDate(
|
|
|
|
+ userId, typeList, startDate);
|
|
|
|
+
|
|
|
|
+ if (updateTeacherSalaryList != null && updateTeacherSalaryList.size() > 0) {
|
|
|
|
+ Set<String> musicGroupIdList = updateTeacherSalaryList.stream().map(ts -> ts.getMusicGroupId()).collect(Collectors.toSet());
|
|
|
|
+ // 查询包含的乐团信息
|
|
|
|
+ Map<String, MusicGroup> musicGroupMap = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIdList, ",")).stream()
|
|
|
|
+ .collect(Collectors.toMap(MusicGroup::getId, mg -> mg));
|
|
|
|
+
|
|
|
|
+ // 批量修改课程课酬
|
|
|
|
+ for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
|
|
|
|
+ MusicGroup musicGroup = musicGroupMap.get(ts.getMusicGroupId());
|
|
|
|
+ // 课酬结算标准
|
|
|
|
+ if (musicGroup != null) {
|
|
|
|
+ TeacherDefaultMusicGroupSalary tdms = salaryMap.get(ts.getCourseSchedule().getType());
|
|
|
|
+ if (tdms != null) {
|
|
|
|
+ if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.GRADIENT_SALARY) {// 3.0课酬
|
|
|
|
+
|
|
|
|
+ // 判断是助教、主教
|
|
|
|
+ if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
|
|
|
|
+ ts.setExpectSalary(tdms.getMainTeacher90MinSalary());
|
|
|
|
+ } else {
|
|
|
|
+ ts.setExpectSalary(tdms.getAssistantTeacher90MinSalary());
|
|
|
|
+ }
|
|
|
|
+ } else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.TEACHER_DEFAULT) {// 默认课酬
|
|
|
|
+ // 判断是助教、主教
|
|
|
|
+ if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
|
|
|
|
+ ts.setExpectSalary(tdms.getMainTeacher30MinSalary());
|
|
|
|
+ } else {
|
|
|
|
+ ts.setExpectSalary(tdms.getAssistantTeacher30MinSalary());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(updateTeacherSalaryList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 删除当前教师所有的结算类型的数据
|
|
|
|
+ teacherDefaultMusicGroupSalaryDao.delByTeacherId(userId);
|
|
|
|
+ // 批量新增
|
|
|
|
+ teacherDefaultMusicGroupSalaryDao.batchAdd(salaries);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|