Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 years ago
parent
commit
64b9a0f322

+ 25 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -402,7 +402,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
 
         //教师对应的每个教学点的总课时
-        Map<Integer, Map<Integer, Integer>> teacherClassMinutesMap = new HashMap<>();
+        Map<Integer, Map<Integer, Map<Date, Integer>>> teacherClassMinutesMap = new HashMap<>();
         //计算老师对应的总课时
         teacherSalarysByTeacher.forEach((teacherId, teacherSalarys) -> {
             //当前老师所在课程的编号列表
@@ -416,19 +416,26 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             //根据教学点将当前老师的课程分组
             Map<Integer, List<CourseSchedule>> schoolCourseSchedules = currentTeacherCourseSchedules.stream()
                     .collect(Collectors.groupingBy(CourseSchedule::getSchoolId));
-            Map<Integer, Integer> schoolClassMinutesMap = new HashMap<>();
+            Map<Integer, Map<Date,Integer>> schoolClassMinutesMap = new HashMap<>();
             for (Integer schoolId : schoolCourseSchedules.keySet()) {
-                Integer classMinutes = 0;
                 //当前教学点的课程
                 List<CourseSchedule> currentSchoolCourseSchedules = schoolCourseSchedules.get(schoolId);
-                for (CourseSchedule courseSchedule : currentSchoolCourseSchedules) {
-                    //如果课程为单机课或者为合奏课,则算入总课时长
-                    if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE)
-                            || courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX)) {
-                        classMinutes += DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
+                Map<Date, List<CourseSchedule>> courseScheduleWithDate = currentSchoolCourseSchedules.stream()
+                        .collect(Collectors.groupingBy(CourseSchedule::getClassDate));
+                Map<Date,Integer> dataClassMinutesMpa = new HashMap<>();
+                for (Date classDate:courseScheduleWithDate.keySet()){
+                    Integer classMinutes = 0;
+                    List<CourseSchedule> classCourses = courseScheduleWithDate.get(classDate);
+                    for (CourseSchedule courseSchedule : classCourses) {
+                        //如果课程为单机课或者为合奏课,则算入总课时长
+                        if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE)
+                                || courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX)) {
+                            classMinutes += DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
+                        }
                     }
+                    dataClassMinutesMpa.put(classDate, classMinutes);
                 }
-                schoolClassMinutesMap.put(schoolId, classMinutes);
+                schoolClassMinutesMap.put(schoolId, dataClassMinutesMpa);
             }
             teacherClassMinutesMap.put(teacherId, schoolClassMinutesMap);
         });
@@ -444,8 +451,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             boolean durationIsChange = false;
             //当前课酬对应的课程信息
             CourseSchedule courseSchedule = courseScheduleIdMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
-            Map<Integer, Integer> schoolClassMinutesMap = teacherClassMinutesMap.get(courseScheduleTeacherSalary.getUserId());
-            Integer schoolClassMinutes = schoolClassMinutesMap.get(courseSchedule.getSchoolId());
+            Map<Integer, Map<Date,Integer>> schoolClassMinutesMap = teacherClassMinutesMap.get(courseScheduleTeacherSalary.getUserId());
+            Map<Date,Integer> classDateMinutes = schoolClassMinutesMap.get(courseSchedule.getSchoolId());
+            Integer schoolClassMinutes = classDateMinutes.get(courseSchedule.getClassDate());
             //结算方式
             String settlementType = musicGroupSettlementsMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             if(StringUtils.isEmpty(settlementType)){
@@ -586,18 +594,21 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 ||Objects.isNull(classGroupTeacherSalary)){
             TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(),
                     vipGroup.getVipGroupCategoryId());
-            VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
             if(Objects.isNull(teacherDefaultVipGroupSalary)){
                 throw new BizException("请设置课酬");
             }
             onlineTeacherSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
             offlineTeacherSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-            oldStudentNum = vipGroupCategory.getStudentNum();
         }else{
             onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
             offlineTeacherSalary=classGroupTeacherSalary.getSalary();
         }
 
+        if(oldStudentNum==0){
+            VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
+            oldStudentNum = vipGroupCategory.getStudentNum();
+        }
+
         if(Objects.isNull(classGroupTeacherSalary)){
             ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(vipGroupId.toString(), GroupType.VIP.getCode());
             classGroupTeacherSalary=new ClassGroupTeacherSalary();
@@ -615,7 +626,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         if(Objects.nonNull(onlineTeacherSalary)){
             onlineTeacherSalary = onlineTeacherSalary
                     .divide(oldStudentNumDecimal, CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN)
-                    .multiply(studentNumDecimal).setScale(0);
+                    .multiply(studentNumDecimal).setScale(0, BigDecimal.ROUND_HALF_UP);
         }
         if(Objects.nonNull(offlineTeacherSalary)){
             offlineTeacherSalary = offlineTeacherSalary

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -206,11 +206,11 @@
             <if test="paymentChannel != null">
                 AND spo.payment_channel_ NOT IN (#{paymentChannel})
             </if>
-            <if test='orderType != null and orderType=="1"'>
-                AND spo.comAmount > 0
+            <if test='orderType != null and orderType.toString()=="1".toString()'>
+                AND spo.com_amount_ > 0
             </if>
-            <if test='orderType != null and orderType=="2"'>
-                AND spo.perAmount > 0
+            <if test='orderType != null and orderType.toString()=="2".toString()'>
+                AND spo.per_amount_ > 0
             </if>
         </where>
     </sql>