|
@@ -20,10 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.time.Instant;
|
|
|
-import java.time.LocalDate;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.*;
|
|
|
import java.util.*;
|
|
|
|
|
|
@Service
|
|
@@ -45,6 +43,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
private CourseScheduleService courseScheduleService;
|
|
|
@Autowired
|
|
|
private StudentRegistrationService studentRegistrationService;
|
|
|
+ @Autowired
|
|
|
+ private ClassGroupTeacherSalaryService classGroupTeacherSalaryService;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Integer, ClassGroup> getDAO() {
|
|
@@ -267,17 +267,59 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
@Override
|
|
|
public List<ClassGroupTeachers> getClassGroupAndTeacherSalary(Integer musicGroupId) {
|
|
|
+ //乐团班级及班级老师
|
|
|
List<ClassGroupTeachers> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId);
|
|
|
+ //乐团的课程计划
|
|
|
List<CourseSchedule> classGroupCourseSchedules = courseScheduleService.findClassGroupCourseSchedules(classGroupAndTeachers);
|
|
|
|
|
|
+ //获取乐团老师课酬
|
|
|
+ List<ClassGroupTeacherSalary> nowClassGroupTeacherSalaryList = classGroupTeacherSalaryService.findByMusicGroupId(musicGroupId);
|
|
|
+
|
|
|
+ //基础课时
|
|
|
+ BigDecimal baseDuration = new BigDecimal("30");
|
|
|
for (ClassGroupTeachers classGroupAndTeacher : classGroupAndTeachers) {
|
|
|
- for (CourseSchedule classGroupCourseSchedule : classGroupCourseSchedules) {
|
|
|
- if(classGroupCourseSchedule.getClassGroupId().equals(classGroupAndTeacher.getId())){
|
|
|
|
|
|
+ Set<Long> courseScheduleDurationSet = new HashSet<>();
|
|
|
+ for (CourseSchedule classGroupCourseSchedule : classGroupCourseSchedules) {
|
|
|
+ if (classGroupCourseSchedule.getClassGroupId().equals(classGroupAndTeacher.getId())) {
|
|
|
+ //课程时长
|
|
|
+ long duration = (classGroupCourseSchedule.getEndClassTime().getTime() - classGroupCourseSchedule.getStartClassTime().getTime()) / (1000 * 60);
|
|
|
+ courseScheduleDurationSet.add(duration);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //获取教师列表
|
|
|
List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupAndTeacher.getClassGroupTeacherMapperList();
|
|
|
+
|
|
|
+ ArrayList<ClassGroupTeacherSalary> classGroupTeacherSalaryList = new ArrayList<>();
|
|
|
+ for (Long duration : courseScheduleDurationSet) {
|
|
|
+ THREE:
|
|
|
+ for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
+
|
|
|
+ //已经设置跳过计算
|
|
|
+ for (ClassGroupTeacherSalary classGroupTeacherSalary : nowClassGroupTeacherSalaryList) {
|
|
|
+ if (classGroupTeacherMapper.getClassGroupId().equals(classGroupTeacherSalary.getClassGroupId()) &&
|
|
|
+ classGroupTeacherMapper.getUserId().equals(classGroupTeacherSalary.getUserId()) &&
|
|
|
+ classGroupTeacherSalary.getDuration().equals(duration)
|
|
|
+ ) {
|
|
|
+ classGroupTeacherSalaryList.add(classGroupTeacherSalary);
|
|
|
+ continue THREE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
|
|
|
+ classGroupTeacherSalary.setMusicGroupId(classGroupTeacherMapper.getMusicGroupId());
|
|
|
+ classGroupTeacherSalary.setClassGroupId(classGroupTeacherMapper.getClassGroupId());
|
|
|
+ classGroupTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
+ classGroupTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
+ classGroupTeacherSalary.setDuration(duration.intValue());
|
|
|
+ BigDecimal salary = new BigDecimal(duration).divide(baseDuration).multiply(classGroupTeacherMapper.getSalary()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ classGroupTeacherSalary.setSalary(salary);
|
|
|
+ classGroupTeacherSalaryList.add(classGroupTeacherSalary);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //教师课酬列表
|
|
|
+ classGroupAndTeacher.setClassGroupTeacherSalaryList(classGroupTeacherSalaryList);
|
|
|
}
|
|
|
return classGroupAndTeachers;
|
|
|
}
|