|  | @@ -1601,10 +1601,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public void calMusicCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
 |  |      public void calMusicCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
 | 
											
												
													
														|  | -                                                  List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                                  List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange, Boolean updated) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 |  |          if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 | 
											
												
													
														|  |              //不结算课酬
 |  |              //不结算课酬
 | 
											
												
													
														|  | 
 |  | +            if(updated){
 | 
											
												
													
														|  | 
 |  | +                List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.NOT_SETTLEMENT, courseScheduleTeacherSalary.getExpectSalary().abs()));
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setDeductReasons(deductReasons);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |              return;
 |  |              return;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -1836,11 +1842,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public void calVipCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
 |  |      public void calVipCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
 | 
											
												
													
														|  | -                                                List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                                List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange, Boolean updated) {
 | 
											
												
													
														|  |          List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 |  |          List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 |  |          if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 | 
											
												
													
														|  |              //不结算课酬
 |  |              //不结算课酬
 | 
											
												
													
														|  | 
 |  | +            if(updated){
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.NOT_SETTLEMENT, courseScheduleTeacherSalary.getExpectSalary().abs()));
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setDeductReasons(deductReasons);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |              return;
 |  |              return;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          
 |  |          
 | 
											
										
											
												
													
														|  | @@ -1943,11 +1954,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public void calPracticeTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
 |  |      public void calPracticeTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
 | 
											
												
													
														|  | -                                               List<TeacherAttendance> teacherAttendances, School school, Teacher teacher) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                               List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, Boolean updated) {
 | 
											
												
													
														|  |          List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 |  |          List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 |  |          if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 | 
											
												
													
														|  |              //不结算课酬
 |  |              //不结算课酬
 | 
											
												
													
														|  | 
 |  | +            if(updated){
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.NOT_SETTLEMENT, courseScheduleTeacherSalary.getExpectSalary().abs()));
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setDeductReasons(deductReasons);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |              return;
 |  |              return;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          
 |  |          
 | 
											
										
											
												
													
														|  | @@ -2041,12 +2057,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | -    public TeacherIncomeReviewDto getTeacherSalaryOverview(Integer teacherId) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public TeacherIncomeReviewDto getTeacherSalaryOverview(TeacherIncomeQueryInfo queryInfo) {
 | 
											
												
													
														|  |          LocalDate nowDate = LocalDate.now();
 |  |          LocalDate nowDate = LocalDate.now();
 | 
											
												
													
														|  | -        LocalDate monthFirstDay = nowDate.with(TemporalAdjusters.firstDayOfMonth());
 |  | 
 | 
											
												
													
														|  | -        LocalDate monthLastDay = nowDate.with(TemporalAdjusters.lastDayOfMonth());
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        TeacherIncomeReviewDto teacherSalaryOverview = courseScheduleTeacherSalaryDao.getTeacherSalaryOverview(teacherId, monthFirstDay.toString(), monthLastDay.toString(), "2021-03-01", null);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        TeacherIncomeReviewDto teacherSalaryOverview = courseScheduleTeacherSalaryDao.getTeacherSalaryOverview(queryInfo.getTeacherId(), queryInfo.getStartDay(), queryInfo.getEndDay(), "2021-03-01", null);
 | 
											
												
													
														|  |          if(Objects.isNull(teacherSalaryOverview)){
 |  |          if(Objects.isNull(teacherSalaryOverview)){
 | 
											
												
													
														|  |              teacherSalaryOverview = new TeacherIncomeReviewDto();
 |  |              teacherSalaryOverview = new TeacherIncomeReviewDto();
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
										
											
												
													
														|  | @@ -2054,7 +2068,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |              teacherSalaryOverview.setThisMonthExpectIncome(BigDecimal.ZERO);
 |  |              teacherSalaryOverview.setThisMonthExpectIncome(BigDecimal.ZERO);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        List<CourseSchedule> teacherCourses = courseScheduleDao.getTeacherCourseWithClassDate(teacherId, monthFirstDay.toString(), monthLastDay.toString(), CourseStatusEnum.OVER);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        List<CourseSchedule> teacherCourses = courseScheduleDao.getTeacherCourseWithClassDate(queryInfo.getTeacherId(), queryInfo.getStartDay(), queryInfo.getEndDay(), CourseStatusEnum.OVER);
 | 
											
												
													
														|  |          if(CollectionUtils.isEmpty(teacherCourses)){
 |  |          if(CollectionUtils.isEmpty(teacherCourses)){
 | 
											
												
													
														|  |              return teacherSalaryOverview;
 |  |              return teacherSalaryOverview;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
										
											
												
													
														|  | @@ -2063,7 +2077,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          //课程教师课酬
 |  |          //课程教师课酬
 | 
											
												
													
														|  |          List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseIds);
 |  |          List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseIds);
 | 
											
												
													
														|  | -        List<CourseScheduleTeacherSalary> teacherSalaries = courseScheduleTeacherSalaries.stream().filter(c -> teacherId.equals(c.getUserId())).collect(Collectors.toList());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        List<CourseScheduleTeacherSalary> teacherSalaries = courseScheduleTeacherSalaries.stream().filter(c -> queryInfo.getTeacherId().equals(c.getUserId())).collect(Collectors.toList());
 | 
											
												
													
														|  |          if(CollectionUtils.isEmpty(teacherSalaries)){
 |  |          if(CollectionUtils.isEmpty(teacherSalaries)){
 | 
											
												
													
														|  |              return teacherSalaryOverview;
 |  |              return teacherSalaryOverview;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
										
											
												
													
														|  | @@ -2094,7 +2108,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          //教师签到记录
 |  |          //教师签到记录
 | 
											
												
													
														|  |          List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);
 |  |          List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);
 | 
											
												
													
														|  | -        Map<Long, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().filter(c->teacherId.equals(c.getTeacherId())).collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
 |  | 
 | 
											
												
													
														|  | 
 |  | +        Map<Long, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().filter(c->queryInfo.getTeacherId().equals(c.getTeacherId())).collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          //教师信息
 |  |          //教师信息
 | 
											
												
													
														|  |          Set<Integer> teacherIds = teacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
 |  |          Set<Integer> teacherIds = teacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
 | 
											
										
											
												
													
														|  | @@ -2111,15 +2125,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |              //教师
 |  |              //教师
 | 
											
												
													
														|  |              Teacher teacher = idTeacherMap.get(teacherSalary.getUserId());
 |  |              Teacher teacher = idTeacherMap.get(teacherSalary.getUserId());
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +            if(Objects.nonNull(teacherSalary.getActualSalary())){
 | 
											
												
													
														|  | 
 |  | +                continue;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |              switch (courseSchedule.getGroupType()){
 |  |              switch (courseSchedule.getGroupType()){
 | 
											
												
													
														|  |                  case MUSIC:
 |  |                  case MUSIC:
 | 
											
												
													
														|  | -                    calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, false);
 | 
											
												
													
														|  |                      break;
 |  |                      break;
 | 
											
												
													
														|  |                  case VIP:
 |  |                  case VIP:
 | 
											
												
													
														|  | -                    calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange, false);
 | 
											
												
													
														|  |                      break;
 |  |                      break;
 | 
											
												
													
														|  |                  case PRACTICE:
 |  |                  case PRACTICE:
 | 
											
												
													
														|  | -                    calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, false);
 | 
											
												
													
														|  |                      break;
 |  |                      break;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
										
											
												
													
														|  | @@ -2217,13 +2235,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |                  switch (courseSchedule.getGroupType()){
 |  |                  switch (courseSchedule.getGroupType()){
 | 
											
												
													
														|  |                      case MUSIC:
 |  |                      case MUSIC:
 | 
											
												
													
														|  | -                        calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                        calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, queryInfo.getUpdated());
 | 
											
												
													
														|  |                          break;
 |  |                          break;
 | 
											
												
													
														|  |                      case VIP:
 |  |                      case VIP:
 | 
											
												
													
														|  | -                        calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                        calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange, queryInfo.getUpdated());
 | 
											
												
													
														|  |                          break;
 |  |                          break;
 | 
											
												
													
														|  |                      case PRACTICE:
 |  |                      case PRACTICE:
 | 
											
												
													
														|  | -                        calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                        calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, queryInfo.getUpdated());
 | 
											
												
													
														|  |                          break;
 |  |                          break;
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -2338,6 +2356,117 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | 
 |  | +    public Map<String, Object> teacherIncomeStatNew(Integer teacherId, Integer year, Integer month) {
 | 
											
												
													
														|  | 
 |  | +        if(Objects.isNull(year)){
 | 
											
												
													
														|  | 
 |  | +            year = LocalDate.now().get(ChronoField.YEAR);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        Map<String, Object> result = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        result.put("total", BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        LocalDate minDate = LocalDate.of(2021, 3, 1);
 | 
											
												
													
														|  | 
 |  | +        LocalDate startDate = LocalDate.of(year, Objects.isNull(month)?1:month, 1);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        if(year<=2021&&Objects.isNull(month)){
 | 
											
												
													
														|  | 
 |  | +            startDate = startDate.withMonth(3);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        List<Map<String, Object>> data = new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        Map<String, Object> salaryResult = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        salaryResult.put("desc", "课酬");
 | 
											
												
													
														|  | 
 |  | +        salaryResult.put("amount", BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        salaryResult.put("data", Collections.emptyList());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        Map<String, Object> subsidyResult = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        subsidyResult.put("desc", "教学点补贴");
 | 
											
												
													
														|  | 
 |  | +        subsidyResult.put("amount", BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        subsidyResult.put("data", Collections.emptyList());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        Map<String, Object> saleRewardResult = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        saleRewardResult.put("desc", "销售奖励");
 | 
											
												
													
														|  | 
 |  | +        saleRewardResult.put("amount", BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        saleRewardResult.put("data", Collections.emptyList());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        data.add(salaryResult);
 | 
											
												
													
														|  | 
 |  | +        data.add(subsidyResult);
 | 
											
												
													
														|  | 
 |  | +        data.add(saleRewardResult);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        result.put("data", data);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        if(startDate.compareTo(minDate)<0){
 | 
											
												
													
														|  | 
 |  | +            return result;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        List<LocalDateBigDecimalMapDto> monthIncomeMapList = courseScheduleTeacherSalaryDao.teacherIncomeStat(teacherId, year, month);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        if(CollectionUtils.isEmpty(monthIncomeMapList)){
 | 
											
												
													
														|  | 
 |  | +            return result;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        if(Objects.isNull(month)){
 | 
											
												
													
														|  | 
 |  | +            Set<String> months = monthIncomeMapList.stream().map(e -> DateUtil.dateToString(e.getDate(), "yyyy-MM")).collect(Collectors.toSet());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            LocalDate now = LocalDate.now();
 | 
											
												
													
														|  | 
 |  | +            now = now.plusMonths(-1);
 | 
											
												
													
														|  | 
 |  | +            DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
 | 
											
												
													
														|  | 
 |  | +            while (startDate.compareTo(now)<=0&&year.equals(startDate.get(ChronoField.YEAR))){
 | 
											
												
													
														|  | 
 |  | +                String dateStr = dateFormatter.format(startDate);
 | 
											
												
													
														|  | 
 |  | +                if(!months.contains(dateStr)){
 | 
											
												
													
														|  | 
 |  | +                    monthIncomeMapList.add(new LocalDateBigDecimalMapDto(Date.from(startDate.atStartOfDay(DateUtil.zoneId).toInstant()), dateStr, BigDecimal.ZERO));
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                startDate = startDate.plusMonths(1);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }else{
 | 
											
												
													
														|  | 
 |  | +            Set<String> dates = monthIncomeMapList.stream().map(e -> DateUtil.dateToString(e.getDate(), "yyyy-MM-dd")).collect(Collectors.toSet());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            Integer oldMonth = Objects.isNull(month)?new Integer(1):month;
 | 
											
												
													
														|  | 
 |  | +            while (oldMonth.equals(startDate.get(ChronoField.MONTH_OF_YEAR))){
 | 
											
												
													
														|  | 
 |  | +                String dateStr = DateUtil.dateFormatter.format(startDate);
 | 
											
												
													
														|  | 
 |  | +                if(!dates.contains(dateStr)){
 | 
											
												
													
														|  | 
 |  | +                    monthIncomeMapList.add(new LocalDateBigDecimalMapDto(Date.from(startDate.atStartOfDay(DateUtil.zoneId).toInstant()), dateStr, BigDecimal.ZERO));
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                startDate = startDate.plusDays(1);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        monthIncomeMapList.sort(Comparator.comparing(LocalDateBigDecimalMapDto::getDate));
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        BigDecimal reduce = monthIncomeMapList.stream().map(LocalDateBigDecimalMapDto::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        BigDecimal subsidy = monthIncomeMapList.stream().map(LocalDateBigDecimalMapDto::getSubsidy).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        result.put("total", reduce.add(subsidy));
 | 
											
												
													
														|  | 
 |  | +        salaryResult.put("amount", reduce);
 | 
											
												
													
														|  | 
 |  | +        salaryResult.put("data", monthIncomeMapList);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        List<LocalDateBigDecimalMapDto> subsidyList = new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +        List<LocalDateBigDecimalMapDto> saleRewardList = new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +        for (LocalDateBigDecimalMapDto localDateBigDecimalMapDto : monthIncomeMapList) {
 | 
											
												
													
														|  | 
 |  | +            if(localDateBigDecimalMapDto.getAmount().compareTo(BigDecimal.ZERO)<0){
 | 
											
												
													
														|  | 
 |  | +                localDateBigDecimalMapDto.setAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            LocalDateBigDecimalMapDto subsidyData = new LocalDateBigDecimalMapDto();
 | 
											
												
													
														|  | 
 |  | +            BeanUtils.copyProperties(localDateBigDecimalMapDto, subsidyData);
 | 
											
												
													
														|  | 
 |  | +            subsidyData.setAmount(subsidyData.getSubsidy());
 | 
											
												
													
														|  | 
 |  | +            subsidyList.add(subsidyData);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            LocalDateBigDecimalMapDto saleRewardData = new LocalDateBigDecimalMapDto();
 | 
											
												
													
														|  | 
 |  | +            BeanUtils.copyProperties(localDateBigDecimalMapDto, saleRewardData);
 | 
											
												
													
														|  | 
 |  | +            saleRewardData.setAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +            saleRewardList.add(saleRewardData);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        subsidyResult.put("amount", subsidy);
 | 
											
												
													
														|  | 
 |  | +        subsidyResult.put("data", subsidyList);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        saleRewardResult.put("data", saleRewardList);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        return result;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    @Override
 | 
											
												
													
														|  |      public void todayIncomeRemind() {
 |  |      public void todayIncomeRemind() {
 | 
											
												
													
														|  |          List<Integer> teacherIds = courseScheduleTeacherSalaryDao.getTodayHasCourseTeacherIds();
 |  |          List<Integer> teacherIds = courseScheduleTeacherSalaryDao.getTodayHasCourseTeacherIds();
 | 
											
												
													
														|  |          if(CollectionUtils.isEmpty(teacherIds)){
 |  |          if(CollectionUtils.isEmpty(teacherIds)){
 |