|  | @@ -109,7 +109,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |          //获取活动信息
 | 
	
		
			
				|  |  |          VipGroupActivity vipGroupActivity = null;
 | 
	
		
			
				|  |  |          if(vipGroup.getVipGroupActivityId() != null){
 | 
	
		
			
				|  |  | -        	vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 | 
	
		
			
				|  |  | +            vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
 | 
	
	
		
			
				|  | @@ -203,10 +203,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void practiceTeacherSalarySettlement() {
 | 
	
		
			
				|  |  |  //        int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
 | 
	
		
			
				|  |  | -        int days = 0;
 | 
	
		
			
				|  |  | +//        int days = 0;
 | 
	
		
			
				|  |  |          //获取教师未结算课程记录
 | 
	
		
			
				|  |  |          Date now = new Date();
 | 
	
		
			
				|  |  | -        List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findTeacherCourseSalaryNoSettlement(days,GroupType.PRACTICE.getCode());
 | 
	
		
			
				|  |  | +        Date date = DateUtil.addMonths(now, -1);
 | 
	
		
			
				|  |  | +        String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
 | 
	
		
			
				|  |  | +        String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
 | 
	
		
			
				|  |  | +        List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findTeacherCourseSalaryNoSettlement(startDate,endDate);
 | 
	
		
			
				|  |  |          if (!CollectionUtils.isEmpty(someDayAgoTeacherCourseSalaryNoSettlement)) {
 | 
	
		
			
				|  |  |              someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalary.setActualSalary(courseScheduleTeacherSalary.getTeacherActualSalary());
 | 
	
	
		
			
				|  | @@ -284,16 +287,20 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void teacherSalarySettlement() {
 | 
	
		
			
				|  |  |  //        int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
 | 
	
		
			
				|  |  | -        int days = 0;
 | 
	
		
			
				|  |  | +//        int days = 0;
 | 
	
		
			
				|  |  |          BigDecimal percent = new BigDecimal(10);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        Date now = new Date();
 | 
	
		
			
				|  |  | +        Date date = DateUtil.addMonths(now, -1);
 | 
	
		
			
				|  |  | +        String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
 | 
	
		
			
				|  |  | +        String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
 | 
	
		
			
				|  |  |          //获取教师未结算课程记录
 | 
	
		
			
				|  |  | -        List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findSomeDayAgoTeacherCourseSalaryNoSettlement(days);
 | 
	
		
			
				|  |  | +        List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findSomeDayAgoTeacherCourseSalaryNoSettlement(startDate,endDate);
 | 
	
		
			
				|  |  |          if (CollectionUtils.isEmpty(someDayAgoTeacherCourseSalaryNoSettlement)) {
 | 
	
		
			
				|  |  |              LOGGER.info("未获取到未结算课酬记录!");
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        Date now = new Date();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        vipGroupService.updateHistoryTeacherSalaryOfOnline(startDate, endDate);
 | 
	
		
			
				|  |  |          //获取未结算课程编号列表
 | 
	
		
			
				|  |  |          List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -302,8 +309,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  //        Map<Long, List<StudentAttendance>> courseStudentAttendancesMap = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //所有课程的教师考勤记录
 | 
	
		
			
				|  |  | -        List<TeacherAttendance> teacherAttendancesByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
 | 
	
		
			
				|  |  | -        Map<Long, List<TeacherAttendance>> courseTeacherAttendancesMap = teacherAttendancesByCourseSchedule.stream().collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
 | 
	
		
			
				|  |  | +//        List<TeacherAttendance> teacherAttendancesByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
 | 
	
		
			
				|  |  | +//        Map<Long, List<TeacherAttendance>> courseTeacherAttendancesMap = teacherAttendancesByCourseSchedule.stream().collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //获取未结算课程投诉记录
 | 
	
		
			
				|  |  |          List<CourseScheduleComplaints> courseScheduleComplaints = courseScheduleComplaintsDao.findByCourseScheduleIds(courseScheduleIds);
 | 
	
	
		
			
				|  | @@ -347,19 +354,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  //                return;
 | 
	
		
			
				|  |  |  //            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            List<TeacherAttendance> teacherAttendances = courseTeacherAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
 | 
	
		
			
				|  |  | -            if(CollectionUtils.isEmpty(teacherAttendances)){
 | 
	
		
			
				|  |  | -                return;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            int teacherAttendanceNum=0;
 | 
	
		
			
				|  |  | -            for (TeacherAttendance teacherAttendance : teacherAttendances) {
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(teacherAttendance.getSignInTime())||Objects.nonNull(teacherAttendance.getSignOutTime())){
 | 
	
		
			
				|  |  | -                    teacherAttendanceNum+=1;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if(teacherAttendanceNum==0){
 | 
	
		
			
				|  |  | -                return;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +//            List<TeacherAttendance> teacherAttendances = courseTeacherAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
 | 
	
		
			
				|  |  | +//            if(CollectionUtils.isEmpty(teacherAttendances)){
 | 
	
		
			
				|  |  | +//                return;
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  | +//            int teacherAttendanceNum=0;
 | 
	
		
			
				|  |  | +//            for (TeacherAttendance teacherAttendance : teacherAttendances) {
 | 
	
		
			
				|  |  | +//                if(Objects.nonNull(teacherAttendance.getSignInTime())||Objects.nonNull(teacherAttendance.getSignOutTime())){
 | 
	
		
			
				|  |  | +//                    teacherAttendanceNum+=1;
 | 
	
		
			
				|  |  | +//                }
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  | +//            if(teacherAttendanceNum==0){
 | 
	
		
			
				|  |  | +//                return;
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //当前课程缴费学生数量
 | 
	
		
			
				|  |  |  //            BigDecimal courseStudentNum = new BigDecimal(studentPaymentsWithCourse.size());
 | 
	
	
		
			
				|  | @@ -492,12 +499,15 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void musicGroupTeacherSalarySettlement() {
 | 
	
		
			
				|  |  |          Date now = new Date();
 | 
	
		
			
				|  |  | -        Date settleTime = DateUtil.addDays1(now, -sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_DAY).getParanValue(Integer.class));
 | 
	
		
			
				|  |  | +        Date date = DateUtil.addMonths(now, -1);
 | 
	
		
			
				|  |  | +        String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
 | 
	
		
			
				|  |  | +        String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
 | 
	
		
			
				|  |  | +//        Date settleTime = DateUtil.addDays1(now, -sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_DAY).getParanValue(Integer.class));
 | 
	
		
			
				|  |  |          Integer settlementClassMinutes = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_CLASS_MINUTES).getParanValue());
 | 
	
		
			
				|  |  |          Integer singleClassTime = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_SINGLE_CLASS_MINUTES).getParanValue());
 | 
	
		
			
				|  |  |          Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(),"yyyy-MM-dd");
 | 
	
		
			
				|  |  | -        //获取昨天的课程计划
 | 
	
		
			
				|  |  | -        List<CourseSchedule> yesterdayCourseSchedules = courseScheduleDao.findCourseScheduleWithDate(settleTime);
 | 
	
		
			
				|  |  | +        //获取上个月的课程计划
 | 
	
		
			
				|  |  | +        List<CourseSchedule> yesterdayCourseSchedules = courseScheduleDao.findCourseScheduleWithDate(startDate,endDate);
 | 
	
		
			
				|  |  |          //课程编号列表
 | 
	
		
			
				|  |  |          List<Long> courseScheduleIds = yesterdayCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 | 
	
		
			
				|  |  |          if (CollectionUtils.isEmpty(courseScheduleIds)) {
 | 
	
	
		
			
				|  | @@ -581,14 +591,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |              teacherClassMinutesMap.put(teacherId, schoolClassMinutesMap);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          //用户账户自己变动信息列表
 | 
	
		
			
				|  |  | -        List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
 | 
	
		
			
				|  |  | +//        List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
 | 
	
		
			
				|  |  |          //计算课酬
 | 
	
		
			
				|  |  |          courseScheduleTeacherSalaries.forEach(courseScheduleTeacherSalary -> {
 | 
	
		
			
				|  |  | -            TeacherAttendance teacherAttendanceInfo = teacherAttendanceDao.findByTeacherAttendanceInfo(courseScheduleTeacherSalary.getUserId().longValue(), courseScheduleTeacherSalary.getCourseScheduleId());
 | 
	
		
			
				|  |  | +            /*TeacherAttendance teacherAttendanceInfo = teacherAttendanceDao.findByTeacherAttendanceInfo(courseScheduleTeacherSalary.getUserId().longValue(), courseScheduleTeacherSalary.getCourseScheduleId());
 | 
	
		
			
				|  |  |              if(Objects.isNull(teacherAttendanceInfo)
 | 
	
		
			
				|  |  |                  ||(Objects.isNull(teacherAttendanceInfo.getSignInTime())&&Objects.isNull(teacherAttendanceInfo.getSignOutTime()))){
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            }*/
 | 
	
		
			
				|  |  |              boolean durationIsChange = false;
 | 
	
		
			
				|  |  |              //当前课酬对应的课程信息
 | 
	
		
			
				|  |  |              CourseSchedule courseSchedule = courseScheduleIdMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
 |