浏览代码

1、乐团课新增排课教师课酬计算逻辑调整

Joburgess 5 年之前
父节点
当前提交
78026ab7ac

+ 22 - 7
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -1,18 +1,18 @@
 package com.ym.mec.biz.dal.dao;
 package com.ym.mec.biz.dal.dao;
 
 
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.ibatis.annotations.Param;
-
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 
 public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseScheduleTeacherSalary> {
 public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseScheduleTeacherSalary> {
 
 
@@ -257,4 +257,19 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 
 
 	List<CourseScheduleTeacherSalary> queryUserNoSettlementListByTypeAndStartClassDate(@Param("userId") Integer userId, @Param("typeList") String typeList,
 	List<CourseScheduleTeacherSalary> queryUserNoSettlementListByTypeAndStartClassDate(@Param("userId") Integer userId, @Param("typeList") String typeList,
 			@Param("startClassDate") Date startClassDate);
 			@Param("startClassDate") Date startClassDate);
+
+	/**
+	 * @describe 根据教师编号获取课酬
+	 * @author Joburgess
+	 * @date 2020/1/27
+	 * @param groupId:
+	 * @param groupType:
+	 * @param courseType:
+	 * @param teacherId:
+	 * @return com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary
+	 */
+	List<CourseScheduleTeacherSalary> findByTeacher(@Param("groupId") String groupId,
+											  @Param("groupType") GroupType groupType,
+											  @Param("courseType")CourseSchedule.CourseScheduleType courseType,
+											  @Param("teacherIds")List<Integer> teacherIds);
 }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1418,6 +1418,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //3、插入班级排课信息
         //3、插入班级排课信息
         LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
         LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
 
 
+        List<CourseScheduleTeacherSalary> allTeacherSalarys = courseScheduleTeacherSalaryDao.findByTeacher(classGroup4MixDto.getMusicGroupId(), GroupType.MUSIC, classGroup4MixDto.getCourseType(), allTeacherIds);
+
         //计算每节课的课酬
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
@@ -1530,6 +1532,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     }
                     }
                     salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                     salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
 
 
+                    for (CourseScheduleTeacherSalary teacherSalary : allTeacherSalarys) {
+                        if(teacherSalary.getUserId().equals(classGroupTeacherMapper.getUserId())
+                            &&teacherSalary.getTeacherRole().equals(classGroupTeacherMapper.getTeacherRole())){
+                            salary=teacherSalary.getExpectSalary();
+                            break;
+                        }
+                    }
+
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
                     courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
                     courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -278,11 +278,15 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         List<Teacher> teachers = teacherDao.findByTeacherIds(teacherUserIds);
         List<Teacher> teachers = teacherDao.findByTeacherIds(teacherUserIds);
         Map<Integer, Teacher> teacherMap = teachers.stream()
         Map<Integer, Teacher> teacherMap = teachers.stream()
                 .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
                 .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
+
         //老师默认的课酬
         //老师默认的课酬
 //        Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
 //        Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
         for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
         for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
             List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
             List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
             List<TeacherAttendance> teacherAttendances = new ArrayList<>();
             List<TeacherAttendance> teacherAttendances = new ArrayList<>();
+
+            List<CourseScheduleTeacherSalary> allTeacherSalarys = courseScheduleTeacherSalaryDao.findByTeacher(musicGroupId, GroupType.MUSIC, classGroupNoStartCourseSchedule.getType(), teacherUserIds);
+
             //课时长度
             //课时长度
             int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
             int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
             List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupNoStartCourseSchedule.getClassGroupId());
             List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupNoStartCourseSchedule.getClassGroupId());
@@ -340,6 +344,14 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
 
                 salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                 salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
 
 
+                for (CourseScheduleTeacherSalary teacherSalary : allTeacherSalarys) {
+                    if(teacherSalary.getUserId().equals(classGroupTeacherMapper.getUserId())
+                            &&teacherSalary.getTeacherRole().equals(classGroupTeacherMapper.getTeacherRole())){
+                        salary=teacherSalary.getExpectSalary();
+                        break;
+                    }
+                }
+
                 //课程与老师薪水表
                 //课程与老师薪水表
                 CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                 CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                 courseScheduleTeacherSalary.setCourseScheduleId(classGroupNoStartCourseSchedule.getId());
                 courseScheduleTeacherSalary.setCourseScheduleId(classGroupNoStartCourseSchedule.getId());

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

@@ -427,4 +427,19 @@
 		SELECT ts.*,cs.type_,cs.teach_mode_,cs.class_date_,cs.start_class_time_,cs.end_class_time_ FROM course_schedule_teacher_salary ts LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
 		SELECT ts.*,cs.type_,cs.teach_mode_,cs.class_date_,cs.start_class_time_,cs.end_class_time_ FROM course_schedule_teacher_salary ts LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
 		WHERE FIND_IN_SET(cs.type_, #{typeList}) AND ts.user_id_ = #{userId} AND ts.settlement_time_ IS NULL AND cs.class_date_ &gt;= #{startClassDate}
 		WHERE FIND_IN_SET(cs.type_, #{typeList}) AND ts.user_id_ = #{userId} AND ts.settlement_time_ IS NULL AND cs.class_date_ &gt;= #{startClassDate}
 	</select>
 	</select>
+    <select id="findByTeacher" resultMap="CourseScheduleTeacherSalary">
+		SELECT
+			csts.*
+		FROM
+			course_schedule cs
+			LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
+		WHERE
+			cs.music_group_id_ = #{groupId}
+			AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			AND cs.type_ = #{courseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			AND csts.user_id_ IN
+			<foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
+				#{teacherId}
+			</foreach>
+    </select>
 </mapper>
 </mapper>