|
@@ -64,6 +64,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
@Autowired
|
|
|
private SysConfigService sysConfigDao;
|
|
|
@Autowired
|
|
|
+ private SysTenantConfigService sysTenantConfigService;
|
|
|
+ @Autowired
|
|
|
private TeacherAttendanceDao teacherAttendanceDao;
|
|
|
@Autowired
|
|
|
private ClassGroupDao classGroupDao;
|
|
@@ -72,16 +74,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
@Autowired
|
|
|
private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
|
@Autowired
|
|
|
- private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
|
|
|
- @Autowired
|
|
|
private CourseScheduleRewardsRulesService courseScheduleRewardsRulesService;
|
|
|
@Autowired
|
|
|
- private StudentAttendanceDao studentAttendanceDao;
|
|
|
- @Autowired
|
|
|
private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao;
|
|
|
@Autowired
|
|
|
- private TeacherCourseRewardService teacherCourseRewardService;
|
|
|
- @Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
@Autowired
|
|
|
private TeacherCourseRewardDao teacherCourseRewardDao;
|
|
@@ -216,7 +212,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void practiceTeacherSalarySettlement() {
|
|
|
+ public void practiceTeacherSalarySettlement(Integer tenantId) {
|
|
|
//获取教师未结算课程记录
|
|
|
Date now = new Date();
|
|
|
Date date = DateUtil.addMonths(now, -1);
|
|
@@ -242,28 +238,21 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- BigDecimal zero = new BigDecimal("0");
|
|
|
+ //试用期课酬规则
|
|
|
+ String configValue2 = sysTenantConfigService.getConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
|
|
|
+ Integer probationTeacherSalary = 100;
|
|
|
+ if(StringUtils.isNotEmpty(configValue2)){
|
|
|
+ probationTeacherSalary = Integer.parseInt(configValue2);
|
|
|
+ }
|
|
|
|
|
|
- //获取课程对应教学点补贴
|
|
|
-// List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(new ArrayList<>(courseScheduleIds));
|
|
|
-// Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
|
|
|
+ BigDecimal zero = new BigDecimal("0");
|
|
|
|
|
|
- someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
|
+ for (int i = 0; i < someDayAgoTeacherCourseSalaryNoSettlement.size(); i++) {
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = someDayAgoTeacherCourseSalaryNoSettlement.get(i);
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
|
|
|
|
BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
|
|
|
|
|
|
-// BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
|
-// if (Objects.isNull(subsidy)) {
|
|
|
-// subsidy = new BigDecimal(0);
|
|
|
-// }
|
|
|
-// courseScheduleTeacherSalary.setSubsidy(subsidy);
|
|
|
-// expectSalary = expectSalary.add(subsidy);
|
|
|
-//
|
|
|
-// if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
|
-// deductReasons.add("教学点补贴:" + subsidy);
|
|
|
-// }
|
|
|
-
|
|
|
if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){
|
|
|
courseScheduleTeacherSalary.setSubsidy(zero);
|
|
|
}
|
|
@@ -286,22 +275,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-// boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
|
|
|
-// boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
|
|
|
-
|
|
|
//判断课程是否在试用期内
|
|
|
- boolean trail = false;
|
|
|
-
|
|
|
- if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getEntryDate())>=0){
|
|
|
- trail = true;
|
|
|
- }
|
|
|
- if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())>=0){
|
|
|
- trail = false;
|
|
|
- }
|
|
|
-
|
|
|
- //如果上课日期在试用期内按80%结算
|
|
|
- if(trail){
|
|
|
- expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
|
|
|
+ if(isTrail(teacher,courseScheduleTeacherSalary.getCourseSchedule().getClassDate())){
|
|
|
+ expectSalary = expectSalary.multiply(new BigDecimal(probationTeacherSalary/100));
|
|
|
deductReasons.add("未转正");
|
|
|
}
|
|
|
|
|
@@ -364,12 +340,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
courseScheduleTeacherSalary.setSettlementTime(now);
|
|
|
courseScheduleTeacherSalary.setBelongToDaya(false);
|
|
|
courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
|
|
|
- });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void teacherSalarySettlement() {
|
|
|
+ public void teacherSalarySettlement(Integer tenantId) {
|
|
|
Date now = new Date();
|
|
|
Date date = DateUtil.addMonths(now, -1);
|
|
|
String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
|
|
@@ -388,6 +364,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
LOGGER.info("未获取到未结算课酬记录!");
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ //试用期课酬规则
|
|
|
+ String configValue2 = sysTenantConfigService.getConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
|
|
|
+ Integer probationTeacherSalary = 100;
|
|
|
+ if(StringUtils.isNotEmpty(configValue2)){
|
|
|
+ probationTeacherSalary = Integer.parseInt(configValue2);
|
|
|
+ }
|
|
|
//获取未结算课程编号列表
|
|
|
List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
|
|
|
|
|
@@ -395,30 +378,15 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseScheduleIds);
|
|
|
Map<String, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().collect(Collectors.groupingBy(ta -> org.apache.commons.lang3.StringUtils.joinWith(":", ta.getCourseScheduleId(), ta.getTeacherId())));
|
|
|
|
|
|
- BigDecimal zero = new BigDecimal(0);
|
|
|
-
|
|
|
- //获取课程对应教学点补贴
|
|
|
-// List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds);
|
|
|
-// Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
|
|
|
-
|
|
|
//处理课酬信息
|
|
|
- someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
|
+ for (int i = 0; i < someDayAgoTeacherCourseSalaryNoSettlement.size(); i++) {
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = someDayAgoTeacherCourseSalaryNoSettlement.get(i);
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
|
|
|
|
BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
|
|
|
|
|
|
-// BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
|
-// if (Objects.isNull(subsidy)) {
|
|
|
-// subsidy = new BigDecimal(0);
|
|
|
-// }
|
|
|
-// courseScheduleTeacherSalary.setSubsidy(subsidy);
|
|
|
-// expectSalary = expectSalary.add(subsidy);
|
|
|
-// if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
|
-// deductReasons.add("教学点补贴:" + subsidy);
|
|
|
-// }
|
|
|
-
|
|
|
if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){
|
|
|
- courseScheduleTeacherSalary.setSubsidy(zero);
|
|
|
+ courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
|
|
|
}
|
|
|
|
|
|
if(BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getSubsidy())!=0){
|
|
@@ -439,22 +407,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-// boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
|
|
|
-// boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
|
|
|
-
|
|
|
//判断课程是否在试用期内
|
|
|
- boolean trail = false;
|
|
|
-
|
|
|
- if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getEntryDate())>=0){
|
|
|
- trail = true;
|
|
|
- }
|
|
|
- if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())>=0){
|
|
|
- trail = false;
|
|
|
- }
|
|
|
-
|
|
|
//如果上课日期在试用期内按80%结算
|
|
|
- if(trail){
|
|
|
- expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
|
|
|
+ if(isTrail(teacher,courseScheduleTeacherSalary.getCourseSchedule().getClassDate())){
|
|
|
+ expectSalary = expectSalary.multiply(new BigDecimal(probationTeacherSalary/100));
|
|
|
deductReasons.add("未转正");
|
|
|
}
|
|
|
|
|
@@ -462,7 +418,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
BigDecimal deductCost = new BigDecimal(0);
|
|
|
List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
|
|
|
|
|
|
-// TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
|
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(courseTeacherAttendances.get(0).getSignInStatus())){
|
|
|
//未签到扣除全部课酬
|
|
|
deductCost = deductCost.add(expectSalary.abs());
|
|
@@ -520,12 +475,24 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
courseScheduleTeacherSalary.setSettlementTime(now);
|
|
|
courseScheduleTeacherSalary.setBelongToDaya(false);
|
|
|
courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
|
|
|
- });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Boolean isTrail(Teacher teacher,Date classDate){
|
|
|
+ //判断课程是否在试用期内
|
|
|
+ boolean trail = false;
|
|
|
+ if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&classDate.compareTo(teacher.getEntryDate())>=0){
|
|
|
+ trail = true;
|
|
|
+ }
|
|
|
+ if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&classDate.compareTo(teacher.getFormalStaffDate())>=0){
|
|
|
+ trail = false;
|
|
|
+ }
|
|
|
+ return trail;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void musicGroupTeacherSalarySettlement() {
|
|
|
+ public void musicGroupTeacherSalarySettlement(Integer tenantId) {
|
|
|
Date now = new Date();
|
|
|
Date date = DateUtil.addMonths(now, -1);
|
|
|
String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
|
|
@@ -541,10 +508,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
BigDecimal zero = new BigDecimal(0);
|
|
|
|
|
|
- //获取课程对应教学点补贴
|
|
|
-// List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds);
|
|
|
-// Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
|
|
|
-
|
|
|
Set<Integer> schoolIds = yesterdayCourseSchedules.stream().map(CourseSchedule::getSchoolId).collect(Collectors.toSet());
|
|
|
List<School> schools = schoolDao.getSchools(new ArrayList<>(schoolIds));
|
|
|
Map<Integer, School> idSchoolMap = new HashMap<>();
|
|
@@ -563,20 +526,35 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
|
|
|
+ //定位范围
|
|
|
+ String gpsRange = sysTenantConfigService.getConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
|
|
|
double attendanceRange = 0;
|
|
|
- if(Objects.nonNull(sysConfig)){
|
|
|
- attendanceRange = Double.valueOf(sysConfig.getParanValue());
|
|
|
+ if(StringUtils.isNotEmpty(gpsRange)){
|
|
|
+ attendanceRange = Double.valueOf(gpsRange);
|
|
|
+ }
|
|
|
+ //签到签退定位异常扣除金额
|
|
|
+// String configValue = sysTenantConfigService.getConfigValue(SysConfigService.OFFLINE_GPS_ERROR_CUT_SALARY,tenantId);
|
|
|
+// Integer gpsCutSalary = null;
|
|
|
+// if(StringUtils.isNotEmpty(configValue)){
|
|
|
+// gpsCutSalary = Integer.parseInt(configValue);
|
|
|
+// }
|
|
|
+// //签到签退定位异常扣除单位
|
|
|
+// String configValue1 = sysTenantConfigService.getConfigValue(SysConfigService.OFFLINE_GPS_ERROR_CUT_SALARY_UNIT,tenantId);
|
|
|
+// UnitEnum unitEnum = null;
|
|
|
+// if(StringUtils.isNotEmpty(configValue1)){
|
|
|
+// unitEnum = UnitEnum.valueOf(configValue1);
|
|
|
+// }
|
|
|
+ //试用期课酬规则
|
|
|
+ String configValue2 = sysTenantConfigService.getConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
|
|
|
+ Integer probationTeacherSalary = 100;
|
|
|
+ if(StringUtils.isNotEmpty(configValue2)){
|
|
|
+ probationTeacherSalary = Integer.parseInt(configValue2);
|
|
|
}
|
|
|
|
|
|
//教师签到记录
|
|
|
List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseScheduleIds);
|
|
|
Map<String, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().collect(Collectors.groupingBy(ta -> org.apache.commons.lang3.StringUtils.joinWith(":", ta.getCourseScheduleId(), ta.getTeacherId())));
|
|
|
|
|
|
- //学员点名记录
|
|
|
- List<StudentAttendance> allStudentAttendances = studentAttendanceDao.findByCourseIds(courseScheduleIds);
|
|
|
- Map<Long, List<StudentAttendance>> courseStudentAttendanceMap = allStudentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
|
|
|
-
|
|
|
//需要根据实际上课学员结算课酬的课程编号
|
|
|
List<Long> needStudentAttendanceCourseScheduleIds = yesterdayCourseSchedules.stream()
|
|
|
.filter(c -> CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(c.getType())
|
|
@@ -591,23 +569,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
Map<Long, Long> courseNormalStudentsMap = new HashMap<>();
|
|
|
if(!CollectionUtils.isEmpty(studentAttendances)){
|
|
|
courseNormalStudentsMap =studentAttendances.stream()
|
|
|
-// .filter(studentAttendance -> StudentAttendanceStatusEnum.NORMAL.equals(studentAttendance.getStatus()))
|
|
|
.collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.counting()));
|
|
|
}
|
|
|
|
|
|
- //课程对应乐团结算方式集合
|
|
|
- List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
|
|
|
- Map<String, String> musicGroupSettlementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse);
|
|
|
-
|
|
|
- //所有老师编号
|
|
|
- List<Integer> allTeacherIds = courseScheduleTeacherSalaries.stream()
|
|
|
- .map(CourseScheduleTeacherSalary::getUserId)
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- //所有老师默认乐团课酬
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
|
|
|
- Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
|
|
|
-
|
|
|
Set<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
|
|
|
List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds));
|
|
|
Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1));
|
|
@@ -644,15 +608,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
|
|
|
|
-// BigDecimal subsidy = courseSubsidyMap.get(courseSchedule.getId());
|
|
|
-// if (Objects.isNull(subsidy)) {
|
|
|
-// subsidy = new BigDecimal(0);
|
|
|
-// }
|
|
|
-// teacherSalary = teacherSalary.add(subsidy);
|
|
|
-// if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
|
-// deductReasons.add("教学点补贴:" + subsidy);
|
|
|
-// }
|
|
|
-
|
|
|
if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){
|
|
|
courseScheduleTeacherSalary.setSubsidy(zero);
|
|
|
}
|
|
@@ -662,24 +617,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
deductReasons.add("课程补贴:" + courseScheduleTeacherSalary.getSubsidy());
|
|
|
}
|
|
|
|
|
|
- //未转正
|
|
|
-// boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0;
|
|
|
- //试用期
|
|
|
-// boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
|
|
|
-
|
|
|
- //判断课程是否在试用期内
|
|
|
- boolean trail = false;
|
|
|
-
|
|
|
- if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseSchedule.getClassDate().compareTo(teacher.getEntryDate())>=0){
|
|
|
- trail = true;
|
|
|
- }
|
|
|
- if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())>=0){
|
|
|
- trail = false;
|
|
|
- }
|
|
|
-
|
|
|
//如果上课日期在试用期内按80%结算
|
|
|
- if(trail){
|
|
|
- teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
|
|
|
+ if(isTrail(teacher,courseSchedule.getClassDate())){
|
|
|
+ teacherSalary = teacherSalary.multiply(new BigDecimal(probationTeacherSalary/100));
|
|
|
deductReasons.add("未转正");
|
|
|
}
|
|
|
|
|
@@ -749,15 +689,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
|
|
|
|
-// BigDecimal subsidy = courseSubsidyMap.get(courseSchedule.getId());
|
|
|
-// if (Objects.isNull(subsidy)) {
|
|
|
-// subsidy = new BigDecimal(0);
|
|
|
-// }
|
|
|
-// teacherSalary = teacherSalary.add(subsidy);
|
|
|
-// if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
|
-// deductReasons.add("教学点补贴:" + subsidy);
|
|
|
-// }
|
|
|
-
|
|
|
if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){
|
|
|
courseScheduleTeacherSalary.setSubsidy(zero);
|
|
|
}
|
|
@@ -767,9 +698,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
deductReasons.add("课程补贴:" + courseScheduleTeacherSalary.getSubsidy());
|
|
|
}
|
|
|
|
|
|
-// boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0;
|
|
|
-// boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
|
|
|
-
|
|
|
//判断课程是否在试用期内
|
|
|
boolean trail = false;
|
|
|
|
|
@@ -790,15 +718,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
BigDecimal deductCost = BigDecimal.ZERO;
|
|
|
List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
|
|
|
|
|
|
- boolean isCallName = false;
|
|
|
- List<StudentAttendance> courseStudentAttendance = courseStudentAttendanceMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
|
- if(!CollectionUtils.isEmpty(courseStudentAttendance)){
|
|
|
- long csaNum = courseStudentAttendance.stream().filter(csa -> DateUtil.hoursBetween(csa.getCreateTime(), courseSchedule.getStartClassTime()) < 4).count();
|
|
|
- if(csaNum>0){
|
|
|
- isCallName = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
TeacherAttendance teacherAttendance = null;
|
|
|
if(!CollectionUtils.isEmpty(courseTeacherAttendances)){
|
|
|
teacherAttendance = courseTeacherAttendances.get(0);
|
|
@@ -822,6 +741,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
signOutInRange = true;
|
|
|
}
|
|
|
}
|
|
|
+ //签到状态
|
|
|
+ if(Objects.isNull(teacherAttendance) || Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
|
+ //无签到记录扣除全部课酬
|
|
|
+ deductCost = deductCost.add(teacherSalary.abs());
|
|
|
+ deductReasons.add("未签到扣除全部课酬");
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
|
//无签到记录扣除全部课酬
|
|
@@ -2160,11 +2086,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
}
|
|
|
|
|
|
//签到GPS范围VIP
|
|
|
- SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
|
|
|
- double vipAttendanceRange = 0;
|
|
|
- if(Objects.nonNull(vipSysConfig)){
|
|
|
- vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
|
|
|
- }
|
|
|
+// SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
|
|
|
+// double vipAttendanceRange = 0;
|
|
|
+// if(Objects.nonNull(vipSysConfig)){
|
|
|
+// vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
|
|
|
+// }
|
|
|
|
|
|
//教师签到记录
|
|
|
List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);
|
|
@@ -2203,7 +2129,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, false);
|
|
|
break;
|
|
|
case VIP:
|
|
|
- calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange, false);
|
|
|
+ calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, false);
|
|
|
break;
|
|
|
case PRACTICE:
|
|
|
calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, false);
|
|
@@ -2228,7 +2154,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
}
|
|
|
|
|
|
teacherSalaryOverview.setAttendanceRange(attendanceRange);
|
|
|
- teacherSalaryOverview.setVipAttendanceRange(vipAttendanceRange);
|
|
|
+ teacherSalaryOverview.setVipAttendanceRange(attendanceRange);
|
|
|
|
|
|
return teacherSalaryOverview;
|
|
|
}
|
|
@@ -2277,11 +2203,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
}
|
|
|
|
|
|
//签到GPS范围VIP
|
|
|
- SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
|
|
|
- double vipAttendanceRange = 0;
|
|
|
- if(Objects.nonNull(vipSysConfig)){
|
|
|
- vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
|
|
|
- }
|
|
|
+// SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
|
|
|
+// double vipAttendanceRange = 0;
|
|
|
+// if(Objects.nonNull(vipSysConfig)){
|
|
|
+// vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
|
|
|
+// }
|
|
|
|
|
|
//教师签到记录
|
|
|
List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);
|
|
@@ -2323,7 +2249,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, queryInfo.getUpdated());
|
|
|
break;
|
|
|
case VIP:
|
|
|
- calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange, queryInfo.getUpdated());
|
|
|
+ calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, queryInfo.getUpdated());
|
|
|
break;
|
|
|
case PRACTICE:
|
|
|
calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, queryInfo.getUpdated());
|
|
@@ -2567,4 +2493,5 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
sysMessageService.batchPushMessage(MessageTypeEnum.TEACHER_PUSH_INCOME_REMIND,
|
|
|
userMap, null, 0, "12", "TEACHER","income_remind.mp3","income_remind_channel");
|
|
|
}
|
|
|
+
|
|
|
}
|