|
@@ -1399,6 +1399,54 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public void salaryMarkNew(Date startDay) {
|
|
|
+ Date now = new Date();
|
|
|
+ Date date = DateUtil.addMonths(now, -1);
|
|
|
+ if(Objects.nonNull(startDay)){
|
|
|
+ date = startDay;
|
|
|
+ }
|
|
|
+ String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
|
|
|
+ String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
|
|
|
+
|
|
|
+ redisTemplate.delete(CourseScheduleTeacherSalaryService.TASK_KEY);
|
|
|
+ List<CourseScheduleTeacherSalary> salaries = courseScheduleTeacherSalaryDao.getIsSalaryWithDate(startDate, endDate);
|
|
|
+ if(CollectionUtils.isEmpty(salaries)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SysConfig dayaBaseSalaryAmountConfig = sysConfigService.findByParamName(SysConfigService.DAYA_BASE_SALARY_AMOUNT);
|
|
|
+ BigDecimal dayaBaseSalaryAmount = new BigDecimal(4000);
|
|
|
+ if(Objects.nonNull(dayaBaseSalaryAmountConfig)&&StringUtils.isNotBlank(dayaBaseSalaryAmountConfig.getParanValue())){
|
|
|
+ dayaBaseSalaryAmount = new BigDecimal(dayaBaseSalaryAmountConfig.getParanValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Integer, List<CourseScheduleTeacherSalary>> teacherSalariesMap = salaries.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getUserId));
|
|
|
+ List<CourseScheduleTeacherSalary> updateRecords = new ArrayList<>();
|
|
|
+ for (Map.Entry<Integer, List<CourseScheduleTeacherSalary>> teacherSalariesMapEntry : teacherSalariesMap.entrySet()) {
|
|
|
+ List<CourseScheduleTeacherSalary> teacherSalaries = teacherSalariesMapEntry.getValue();
|
|
|
+
|
|
|
+ BigDecimal teacherBaseSalaryAmount = new BigDecimal("0");
|
|
|
+
|
|
|
+ teacherSalaries.sort(Comparator.comparing(ts->ts.getCourseSchedule().getStartClassTime()));
|
|
|
+ for (CourseScheduleTeacherSalary teacherSalary : teacherSalaries) {
|
|
|
+ if(teacherBaseSalaryAmount.compareTo(dayaBaseSalaryAmount)>=0){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ teacherBaseSalaryAmount = teacherBaseSalaryAmount.add(teacherSalary.getActualSalary());
|
|
|
+
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
+ courseScheduleTeacherSalary.setId(teacherSalary.getId());
|
|
|
+ courseScheduleTeacherSalary.setBelongToDaya(true);
|
|
|
+ updateRecords.add(courseScheduleTeacherSalary);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(!CollectionUtils.isEmpty(updateRecords)){
|
|
|
+ courseScheduleTeacherSalaryDao.batchUpdate(updateRecords);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void salaryMark() {
|
|
|
Date now = new Date();
|