Explorar o código

Merge remote-tracking branch 'origin/master'

周箭河 %!s(int64=5) %!d(string=hai) anos
pai
achega
79e04d39b9

+ 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

+ 0 - 1
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -438,7 +438,6 @@
         WHERE
             csts.user_id_ = #{teacherId}
             AND cg.group_type_='MUSIC'
-            AND csts.expect_salary_!=0
             AND cg.del_flag_ = 0
         GROUP BY cg.id_
     </select>

+ 4 - 6
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -11,11 +11,13 @@ import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.CourseScheduleComplaintsService;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
@@ -49,14 +51,10 @@ public class CourseScheduleController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
-    
     @Autowired
     private CourseScheduleComplaintsService courseScheduleComplaintsService;
     @Autowired
-    private ClassGroupTeacherMapperService classGroupTeacherMapperService;
-    @Autowired
     private SysUserFeignService sysUserFeignService;
-    
     @Autowired
     private MusicGroupService musicGroupService;