浏览代码

Merge branch 'master' of http://git.dayaedu.com/yonge/mec into master_teacherSalary_2020-12-11

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
zouxuan 4 年之前
父节点
当前提交
55295fd020

+ 0 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -425,12 +425,4 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherBasicDto>
      */
     List<TeacherBasicDto> findTeacherWithVipGroupOrganAndSubject(Long vipGroupId);
-
-    /**
-     * 更新线上课老师的课酬
-     * @param startDate
-     * @param endDate
-     * @return
-     */
-    void updateHistoryTeacherSalaryOfOnline(String startDate, String endDate);
 }

+ 12 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -321,16 +321,16 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		List<Long> studentPaymentIds = JSON.parseArray(classAdjust.getStudentPaymentIds(), Long.class);
 		String batchNo = classAdjust.getBatchNo();
 
-		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 		//获取默认的排课时长
 //		classAdjust.getDefaultCourseTypeMinute();
 //		String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
 		JSONObject jsonObject = JSON.parseObject(classAdjust.getDefaultCourseTypeMinute());
-
+		List<CourseScheduleStudentPayment> totalCourseScheduleStudentPayments = new ArrayList<>();
 		for (Integer studentId : studentIds) {
 			List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = null;
 			BigDecimal typeCourseTotalOriginalPrice = new BigDecimal("0"), typeCourseTotalCurrentPrice = new BigDecimal("0");
-			int index = courseScheduleStudentPayments.size();
+			List<CourseScheduleStudentPayment> oldCourseScheduleStudentPayments = new ArrayList<>();
+			List<CourseScheduleStudentPayment> newCourseScheduleStudentPayments = new ArrayList<>();
 			for (int i = 0; i < courseSchedules.size(); i++) {
 				CourseSchedule courseSchedule = courseSchedules.get(i);
 				//优先处理之前的剩余课程
@@ -351,7 +351,8 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 						studentPayment.setSettlementTime(null);
 						studentPayment.setExamSongDownloadJson(null);
 						studentPayment.setId(null);
-						courseScheduleStudentPayments.add(studentPayment);
+						oldCourseScheduleStudentPayments.add(studentPayment);
+						totalCourseScheduleStudentPayments.add(studentPayment);
 						continue ;
 					}
 				}
@@ -364,13 +365,13 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				}
 				//获取合班时的缴费项目
 				Set<Long> calenderIds = musicGroupPaymentCalenderDao.findByBatchNoAndStudentId(batchNo,studentId);
-				List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettings = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalendersAndCourseType(calenderIds, null);
+				List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettings = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalendersAndCourseType(calenderIds, courseSchedule.getType());
 				MusicGroupPaymentCalenderCourseSettings courseSetting = musicGroupPaymentCalenderCourseSettings.get(0);
 				//课程每分钟原价
-				BigDecimal unitMinuteOriginalPrice = courseSetting.getCourseOriginalPrice().divide(new BigDecimal(courseSetting.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN);
+				BigDecimal unitMinuteOriginalPrice = courseSetting.getCourseOriginalPrice().divide(new BigDecimal(courseSetting.getCourseTotalMinuties()), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
 
 				//课程每分钟现价
-				BigDecimal unitMinuteCurrentPrice = courseSetting.getCourseCurrentPrice().divide(new BigDecimal(courseSetting.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN);
+				BigDecimal unitMinuteCurrentPrice = courseSetting.getCourseCurrentPrice().divide(new BigDecimal(courseSetting.getCourseTotalMinuties()), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
 
 				//默认课程时长
 				int courseDuration = Integer.parseInt(jsonObject.get(courseSchedule.getType().getCode()).toString());
@@ -390,11 +391,12 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				cssp.setOriginalPrice(courseOriginalPrice);
 				cssp.setExpectPrice(courseCurrentPrice);
 				cssp.setActualPrice(BigDecimal.ZERO);
-				courseScheduleStudentPayments.add(cssp);
+				newCourseScheduleStudentPayments.add(cssp);
 				if(courseSchedules.size() - 1 == i){
-					CourseScheduleStudentPayment scheduleStudentPayment = courseScheduleStudentPayments.get(index);
+					CourseScheduleStudentPayment scheduleStudentPayment = newCourseScheduleStudentPayments.get(0);
 					scheduleStudentPayment.setOriginalPrice(scheduleStudentPayment.getOriginalPrice().add(courseSetting.getCourseOriginalPrice().subtract(typeCourseTotalOriginalPrice)));
 					scheduleStudentPayment.setExpectPrice(scheduleStudentPayment.getExpectPrice().add(courseSetting.getCourseCurrentPrice().subtract(typeCourseTotalCurrentPrice)));
+					totalCourseScheduleStudentPayments.addAll(newCourseScheduleStudentPayments);
 				}
 				//获取课程类型默认排课时长
 				int typeCourseDuration = Integer.parseInt(jsonObject.get(courseSchedule.getType().getCode()).toString());
@@ -410,7 +412,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				musicGroupPaymentStudentCourseDetailDao.batchUpdate(musicGroupPaymentStudentCourseDetails);
 			}
 		}
-		courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
+		courseScheduleStudentPaymentDao.batchInsert(totalCourseScheduleStudentPayments);
 	}
 
 

+ 34 - 181
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -30,6 +30,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -43,12 +44,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Autowired
     private VipGroupActivityDao vipGroupActivityDao;
     @Autowired
-    private CourseScheduleComplaintsDao courseScheduleComplaintsDao;
-    @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
-    private SysUserCashAccountService sysUserCashAccountService;
-    @Autowired
     @Lazy
     private VipGroupService vipGroupService;
     @Autowired
@@ -58,8 +55,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Autowired
     private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
     @Autowired
-    private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
-    @Autowired
     private SysConfigService sysConfigDao;
     @Autowired
     private TeacherAttendanceDao teacherAttendanceDao;
@@ -70,14 +65,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Autowired
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
-    private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
-    @Autowired
     private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
     @Autowired
     private CourseScheduleRewardsRulesService courseScheduleRewardsRulesService;
     @Autowired
-    private VipGroupCategoryDao vipGroupCategoryDao;
-    @Autowired
     private StudentAttendanceDao studentAttendanceDao;
     @Autowired
     private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao;
@@ -91,6 +82,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private MusicGroupDao musicGroupDao;
     @Autowired
     private TeacherDefaultPracticeGroupSalaryDao teacherDefaultPracticeGroupSalaryDao;
+    @Autowired
+    private VipGroupDao vipGroupDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -221,7 +214,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findTeacherCourseSalaryNoSettlement(startDate,endDate);
         if (!CollectionUtils.isEmpty(someDayAgoTeacherCourseSalaryNoSettlement)) {
             someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
-                courseScheduleTeacherSalary.setActualSalary(courseScheduleTeacherSalary.getTeacherActualSalary());
+                courseScheduleTeacherSalary.setActualSalary(courseScheduleTeacherSalary.getTeacherActualSalary().setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP));
                 courseScheduleTeacherSalary.setSettlementTime(now);
                 courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
             });
@@ -295,15 +288,38 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void teacherSalarySettlement() {
-//        int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
-//        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);
 
-        vipGroupService.updateHistoryTeacherSalaryOfOnline(startDate, endDate);
+        // 查询需要修改的课酬记录
+        List<TeacherVipSalaryDto> teacherSalaryList = courseScheduleTeacherSalaryDao.queryOnlineCourseByGroupType(startDate, endDate);
+
+        for (TeacherVipSalaryDto ts : teacherSalaryList) {
+            // 修复兼职老师不管1v?和全职老师1vn的课酬为系统默认课酬(不管线上还是线下课)
+            if (ts.getTeacherJobNature() != JobNatureEnum.FULL_TIME || !org.apache.commons.lang3.StringUtils.equalsIgnoreCase("1v1", ts.getVipGroupCategoryName())) {
+                // 查询默认课酬
+                TeacherDefaultVipGroupSalary tdvs = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(ts.getUserId(), ts.getVipGroupCategoryId());
+                if (tdvs != null) {
+                    if (ts.getTeachMode() == TeachModeEnum.ONLINE) {
+                        ts.setExpectSalary(tdvs.getOfflineClassesSalary());
+                    } else {
+                        ts.setExpectSalary(tdvs.getOfflineClassesSalary());
+                    }
+                }
+            }else{
+                //按照活动重新计算课酬
+                VipGroup vipGroup = vipGroupService.get(Long.valueOf(ts.getMusicGroupId()));
+                Map<String, BigDecimal> teachModeSalaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, ts.getUserId(), null, null);
+                if(TeachModeEnum.ONLINE.equals(ts.getTeachMode())&&teachModeSalaryMap.containsKey("onlineTeacherSalary")){
+                    ts.setExpectSalary(teachModeSalaryMap.get("onlineTeacherSalary"));
+                }else if(TeachModeEnum.OFFLINE.equals(ts.getTeachMode())&&teachModeSalaryMap.containsKey("offlineTeacherSalary")){
+                    ts.setExpectSalary(teachModeSalaryMap.get("offlineTeacherSalary"));
+                }
+            }
+            courseScheduleTeacherSalaryDao.update(ts);
+        }
 
         //获取教师未结算课程记录
         List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findSomeDayAgoTeacherCourseSalaryNoSettlement(startDate,endDate);
@@ -314,31 +330,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         //获取未结算课程编号列表
         List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
 
-        //所有课程的学生考勤记录
-//        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(courseScheduleIds);
-//        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<CourseScheduleComplaints> courseScheduleComplaints = courseScheduleComplaintsDao.findByCourseScheduleIds(courseScheduleIds);
         //获取未结算课程学生缴费信息
         List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(courseScheduleIds);
 
-        //根据课程将投诉信息分组
-        Map<Long, List<CourseScheduleComplaints>> complaintsGroupByCourse = courseScheduleComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getCourseScheduleId));
         //根据课程将学生缴费信息分组
         Map<Long, List<CourseScheduleStudentPayment>> studentPaymentGroupByCourse = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId));
 
         //需更新教师课程结算记录
         List<CourseScheduleTeacherSalary> updateTeacherSalarys = new ArrayList<>();
-        //需更新学生课程缴费记录
-        List<CourseScheduleStudentPayment> updateStudentPayments = new ArrayList<>();
-
-        //用户账户资金变动信息列表
-//        List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
 
         //处理课酬信息
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
@@ -349,160 +348,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             if (CollectionUtils.isEmpty(studentPaymentsWithCourse)) {
                 return;
             }
+            BigDecimal expectSalary = courseScheduleTeacherSalary.getTeacherActualSalary().setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 
-//            List<StudentAttendance> courseStudentAttendances = courseStudentAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
-//            int normalStudentNum=0;
-//            if(CollectionUtils.isEmpty(courseStudentAttendances)){
-//                return;
-//            }
-//            for (StudentAttendance courseStudentAttendance : courseStudentAttendances) {
-//                if(Objects.nonNull(courseStudentAttendance.getStatus())&&courseStudentAttendance.getStatus().equals(StudentAttendanceStatusEnum.NORMAL)){
-//                    normalStudentNum+=1;
-//                }
-//            }
-//            if(normalStudentNum==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());
-
-            //教师预计课酬
-            BigDecimal expectSalary = courseScheduleTeacherSalary.getTeacherActualSalary();
-            //当前课程每个学生平均课酬
-//            BigDecimal avgSalary = expectSalary.divide(courseStudentNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-            //教师当前课程责任总占比,当前课程应得课酬
-//            BigDecimal teacherLiabilityAllratio;
-
-            //当前课程学生投诉记录
-            List<CourseScheduleComplaints> courseStudentComplaints = complaintsGroupByCourse.get(courseScheduleTeacherSalary.getCourseScheduleId());
-
-            //如果存在投诉记录,需要扣除相应费用
-            /*if (Objects.nonNull(courseStudentComplaints)) {
-                //获取审批中的投诉
-                List<CourseScheduleComplaints> auditIng = courseStudentComplaints.stream().filter(courseScheduleComplaint -> courseScheduleComplaint.getStatus() == AuditStatusEnum.ING).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(auditIng)) {
-                    //如果当前课程存在未处理的投诉,则不做结算处理
-                    return;
-                }
-                //计算教师责任总占比
-                double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(courseScheduleComplaint -> Objects.isNull(courseScheduleComplaint.getTeacherLiabilityRatio()) ? 0 : courseScheduleComplaint.getTeacherLiabilityRatio()).sum();
-                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
-            } else {
-                //如果没有投诉,则教师和学生的责任占比为0
-                teacherLiabilityAllratio = new BigDecimal(0);
-            }*/
-
-            //教师应扣除费用
-            /*BigDecimal deductPrice = avgSalary.multiply(teacherLiabilityAllratio);
-            //教师实际课酬
-            BigDecimal schoolSubsidy = new BigDecimal(0);
-            if (Objects.nonNull(courseScheduleTeacherSalary.getSubsidy())) {
-                schoolSubsidy = courseScheduleTeacherSalary.getSubsidy();
-            }
-            BigDecimal actualSalary = expectSalary.subtract(deductPrice).add(schoolSubsidy);
-
-            //更新教师结算信息
-            courseScheduleTeacherSalary.setActualSalary(actualSalary);*/
             courseScheduleTeacherSalary.setActualSalary(expectSalary);
             courseScheduleTeacherSalary.setSettlementTime(now);
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
             updateTeacherSalarys.add(courseScheduleTeacherSalary);
 
-            //生成教师账户资金变动记录
-//            sysUserCashAccountService.updateBalance(courseScheduleTeacherSalary.getUserId(), actualSalary);
-//            SysUserCashAccount teacherCashAccount = sysUserCashAccountService.get(courseScheduleTeacherSalary.getUserId().intValue());
-//            SysUserCashAccountDetail teacherCashAccountDetail = new SysUserCashAccountDetail();
-//            teacherCashAccountDetail.setUserId(courseScheduleTeacherSalary.getUserId());
-//            teacherCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WAGE);
-//            teacherCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-//            teacherCashAccountDetail.setAmount(actualSalary);
-//            if(Objects.isNull(teacherCashAccount)){
-//                teacherCashAccountDetail.setBalance(new BigDecimal(0));
-//            }else{
-//                teacherCashAccountDetail.setBalance(teacherCashAccount.getBalance());
-//            }
-//            teacherCashAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
-//
-//            userCashAccountDetails.add(teacherCashAccountDetail);
-
-            //根据学生进行投诉分组
-            Map<Integer, List<CourseScheduleComplaints>> complainsGroupByStudent = null;
-            if (Objects.nonNull(courseStudentComplaints)) {
-                complainsGroupByStudent = courseStudentComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getUserId));
-            }
-
-//            BigDecimal zero=new BigDecimal(0);
-
-            //计算学生当前课程应缴费用
-            for (CourseScheduleStudentPayment studentPayment : studentPaymentsWithCourse) {
-                //当前课程学生应缴费用
-                BigDecimal studentExpectPrice = studentPayment.getExpectPrice();
-                if (Objects.isNull(studentExpectPrice)) {
-                    studentExpectPrice = new BigDecimal(0);
-                }
-                //当前课程学生责任占比
-                BigDecimal studentLiabilityRatio;
-                List<CourseScheduleComplaints> currentCourseScheduleComplaints = null;
-                if (!CollectionUtils.isEmpty(complainsGroupByStudent)) {
-                    currentCourseScheduleComplaints = complainsGroupByStudent.get(studentPayment.getUserId());
-                }
-                if (!CollectionUtils.isEmpty(currentCourseScheduleComplaints)) {
-                    Double temp = currentCourseScheduleComplaints.get(0).getStudentLiabilityRatio();
-                    if (Objects.isNull(temp)) {
-                        temp = 0.0;
-                    }
-                    studentLiabilityRatio = new BigDecimal(temp).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
-                } else {
-                    studentLiabilityRatio = new BigDecimal(1);
-                }
-
-
-                //当前课程学生实际缴费
-                BigDecimal actualPrice = studentExpectPrice.multiply(studentLiabilityRatio);
-                //当前课程学生应退费用
-                BigDecimal returnPrice = studentExpectPrice.subtract(actualPrice);
-                //更新学生结算信息
-                studentPayment.setActualPrice(actualPrice);
-                studentPayment.setSettlementTime(now);
-                courseScheduleStudentPaymentDao.update(studentPayment);
-                updateStudentPayments.add(studentPayment);
-
-
-//                if(returnPrice.compareTo(zero)!=0){
-//                    //生成学生账户资金变动记录
-//                    sysUserCashAccountService.updateBalance(studentPayment.getUserId(), returnPrice);
-//                    SysUserCashAccount studentCashAccount = sysUserCashAccountService.get(studentPayment.getUserId().intValue());
-//                    SysUserCashAccountDetail studentAccountDetail = new SysUserCashAccountDetail();
-//                    studentAccountDetail.setUserId(studentPayment.getUserId());
-//                    studentAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
-//                    studentAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-//                    studentAccountDetail.setAmount(returnPrice);
-//                    studentAccountDetail.setBalance(studentCashAccount.getBalance());
-//                    studentAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
-//
-//                    userCashAccountDetails.add(studentAccountDetail);
-//                }
-            }
-
         });
-//        if(!CollectionUtils.isEmpty(userCashAccountDetails)){
-//            sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
-//        }
     }
 
     @Override
@@ -555,7 +408,7 @@ 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()))
+//                    .filter(studentAttendance -> StudentAttendanceStatusEnum.NORMAL.equals(studentAttendance.getStatus()))
                     .collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId, Collectors.counting()));
         }
 
@@ -671,7 +524,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             }
 
-            BigDecimal finalSalary = teacherSalary.subtract(deductCost);
+            BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 
             //更新教师结算信息
             courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);

+ 0 - 42
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -3105,46 +3105,4 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
 		return teacherByOrganAndSubject;
 	}
-
-	@Override
-	@Async
-	public void updateHistoryTeacherSalaryOfOnline(String startDate, String endDate) {
-		// 查询所有含有线上课的课程组,线上课节数,实付金额
-		List<VipCourseStudentInfoDto> list = vipGroupDao.queryVipCourseStudentInfo();
-		Map<String, VipCourseStudentInfoDto> map = list.stream().collect(Collectors.toMap(VipCourseStudentInfoDto::getMusicGroupId, e -> e));
-
-		VipCourseStudentInfoDto dto = null;
-		// 查询需要修改的课酬记录
-		List<TeacherVipSalaryDto> teacherSalaryList = courseScheduleTeacherSalaryDao.queryOnlineCourseByGroupType(startDate, endDate);
-		for (TeacherVipSalaryDto ts : teacherSalaryList) {
-			// 修复兼职老师不管1v?和全职老师1vn的课酬为系统默认课酬(不管线上还是线下课)
-			if (ts.getTeacherJobNature() != JobNatureEnum.FULL_TIME || !StringUtils.equalsIgnoreCase("1v1", ts.getVipGroupCategoryName())) {
-				// 查询默认课酬
-				TeacherDefaultVipGroupSalary tdvs = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(ts.getUserId(), ts.getVipGroupCategoryId());
-				if (tdvs != null) {
-					if (ts.getTeachMode() == TeachModeEnum.ONLINE) {
-						ts.setExpectSalary(tdvs.getOfflineClassesSalary());
-					} else {
-						ts.setExpectSalary(tdvs.getOfflineClassesSalary());
-					}
-				}
-			} else {
-				if (ts.getTeachMode() == TeachModeEnum.ONLINE && ts.getTeacherJobNature() == JobNatureEnum.FULL_TIME) {
-					dto = map.get(ts.getMusicGroupId());
-					if (dto != null) {
-						ts.setExpectSalary(dto
-								.getTotalAmount()
-								.divide(new BigDecimal(dto.getTotalCourseTimes()).divide(new BigDecimal(dto.getStudentNum()), RoundingMode.HALF_UP),
-										RoundingMode.HALF_UP).multiply(new BigDecimal(0.6)));
-					}
-				}
-			}
-			courseScheduleTeacherSalaryDao.update(ts);
-		}
-
-		if (teacherSalaryList.size() > 0) {
-			// courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(teacherSalaryList);
-		}
-
-	}
 }

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -267,9 +267,9 @@
     <select id="findSomeDayAgoTeacherCourseSalaryNoSettlement" resultMap="CourseScheduleTeacherSalary">
 		SELECT
 		cs.class_date_,
-		csts.*,CASE WHEN cs.teach_mode_ = 'ONLINE' THEN csts.expect_salary_ * (CASE WHEN (ta.sign_in_status_ IS NULL OR ta.sign_in_status_ = 0) AND (ta.sign_out_status_ IS NULL OR ta.sign_out_status_ = 0) THEN 0
+		csts.*,csts.expect_salary_ * (CASE WHEN (ta.sign_in_status_ IS NULL OR ta.sign_in_status_ = 0) AND (ta.sign_out_status_ IS NULL OR ta.sign_out_status_ = 0) THEN 0
 		WHEN ta.sign_in_status_ IS NULL OR ta.sign_in_status_ = 0 THEN 0.5
-		WHEN ta.sign_out_status_ IS NULL OR ta.sign_out_status_ = 0 THEN 0.5 ELSE 1 END) ELSE csts.expect_salary_ END teacher_actual_salary_
+		WHEN ta.sign_out_status_ IS NULL OR ta.sign_out_status_ = 0 THEN 0.5 ELSE 1 END) teacher_actual_salary_
 		FROM
 		course_schedule_teacher_salary csts
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_

+ 0 - 6
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java

@@ -46,12 +46,6 @@ public class CourseScheduleTeacherSalaryController extends BaseController {
     public Object queryPage(CourseScheduleTeacherSalaryQueryInfo queryInfo) {
         return succeed(courseScheduleTeacherSalaryService.querySalaries(queryInfo));
     }
-    
-    @GetMapping("/updateHistoryTeacherSalaryOfOnline")
-    public Object updateHistoryTeacherSalaryOfOnline(String startDate, String endDate) {
-    	vipGroupService.updateHistoryTeacherSalaryOfOnline(startDate, endDate);
-        return succeed();
-    }
 
     @ApiOperation(value = "获取已结算的课酬记录")
     @GetMapping("/findIsSettlementCourseSalarys")