|
@@ -77,6 +77,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
@Autowired
|
|
|
private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao;
|
|
|
@Autowired
|
|
|
+ private TeacherCourseRewardService teacherCourseRewardService;
|
|
|
+ @Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
@Autowired
|
|
|
private TeacherCourseRewardDao teacherCourseRewardDao;
|
|
@@ -210,6 +212,69 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
courseScheduleTeacherSalary.setSettlementTime(now);
|
|
|
courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
|
|
|
});
|
|
|
+ //获取未转结的
|
|
|
+ List<TeacherCourseReward> teacherCourseRewards = teacherCourseRewardService.findBySettlementStatus(0);
|
|
|
+ if(teacherCourseRewards.size() > 0){
|
|
|
+ //逗号分隔的课程拆分
|
|
|
+ List<String> collect = teacherCourseRewards.stream().map(e -> e.getCourseScheduleIdList()).collect(Collectors.toList());
|
|
|
+ List<Long> courseScheduleIds = new ArrayList<>();
|
|
|
+ collect.forEach(e->{
|
|
|
+ if(!StringUtils.isEmpty(e)){
|
|
|
+ String[] split = e.split(",");
|
|
|
+ for (String s : split) {
|
|
|
+ courseScheduleIds.add(Long.parseLong(s));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (courseScheduleIds.size() > 0){
|
|
|
+ //去掉有未结束课程的数据
|
|
|
+ List<Long> mapList = courseScheduleDao.findNotStartCourseByIds(courseScheduleIds);
|
|
|
+ List<TeacherAttendance> teacherAttendances = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
|
|
|
+ Map<Long, TeacherAttendance> teacherAttendancesMap = teacherAttendances.stream().collect(Collectors.toMap(TeacherAttendance::getCourseScheduleId,t -> t));
|
|
|
+ String courseScheduleIdList = null;
|
|
|
+ StringBuffer memo;
|
|
|
+ BigDecimal multiply;
|
|
|
+ BigDecimal add;
|
|
|
+ outer1:for (TeacherCourseReward e : teacherCourseRewards) {
|
|
|
+ memo = new StringBuffer();
|
|
|
+ courseScheduleIdList = e.getCourseScheduleIdList();
|
|
|
+ if(!StringUtils.isEmpty(courseScheduleIdList)){
|
|
|
+ String[] split = courseScheduleIdList.split(",");
|
|
|
+ for (String s : split) {
|
|
|
+ //如果包含未结算的课程,不转结
|
|
|
+ if(mapList.contains(Long.parseLong(s))){
|
|
|
+ continue outer1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //转结,是否正常签到,签退
|
|
|
+ BigDecimal expectRewardAmount = e.getExpectRewardAmount().divide(new BigDecimal(split.length));
|
|
|
+ multiply = expectRewardAmount.multiply(new BigDecimal(0.5));
|
|
|
+ add = expectRewardAmount.multiply(new BigDecimal(0));
|
|
|
+ for (String s : split) {
|
|
|
+ //如果包含未结算的课程,不转结
|
|
|
+ TeacherAttendance teacherAttendance = teacherAttendancesMap.get(Long.parseLong(s));
|
|
|
+ if(teacherAttendance == null){
|
|
|
+ throw new BizException("教师签到记录不存在 : courseScheduleId:{}",s);
|
|
|
+ }
|
|
|
+ if(teacherAttendance.getSignInStatus() != null && teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
|
|
|
+ expectRewardAmount.subtract(multiply);
|
|
|
+ memo.append("课程").append(s).append("异常签到");
|
|
|
+ }
|
|
|
+ if(teacherAttendance.getSignOutStatus() != null && teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
|
|
|
+ expectRewardAmount.subtract(multiply);
|
|
|
+ memo.append("课程").append(s).append("异常签退");
|
|
|
+ }
|
|
|
+ add.add(expectRewardAmount);
|
|
|
+ expectRewardAmount = e.getExpectRewardAmount().divide(new BigDecimal(split.length));
|
|
|
+ }
|
|
|
+ e.setActualRewardAmount(add);
|
|
|
+ e.setSettlementStatus(YesOrNoEnum.YES);
|
|
|
+ e.setSettlementDate(now);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ teacherCourseRewardService.batchUpdate(teacherCourseRewards);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|