周箭河 5 лет назад
Родитель
Сommit
9b48adbe27

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherSalaryDao.java

@@ -3,7 +3,16 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
-public interface ClassGroupTeacherSalaryDao extends BaseDAO<Integer, ClassGroupTeacherSalary> {
+import java.util.List;
 
+public interface ClassGroupTeacherSalaryDao extends BaseDAO<Long, ClassGroupTeacherSalary> {
+
+    /**
+     * 获取乐团老师课酬配置
+     * @param musicGroupId
+     * @return
+     */
+    List<ClassGroupTeacherSalary> findByMusicGroupId(@Param("musicGroupId") int musicGroupId);
 }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupTeacherSalaryService.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
+import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ClassGroupTeacherSalaryService extends BaseService<Long, ClassGroupTeacherSalary> {
+    /**
+     * 获取乐团老师课酬配置
+     *
+     * @param musicGroupId
+     * @return
+     */
+    List<ClassGroupTeacherSalary> findByMusicGroupId(int musicGroupId);
+
+}

+ 48 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -20,10 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
+import java.math.BigDecimal;
+import java.time.*;
 import java.util.*;
 
 @Service
@@ -45,6 +43,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private CourseScheduleService courseScheduleService;
     @Autowired
     private StudentRegistrationService studentRegistrationService;
+    @Autowired
+    private ClassGroupTeacherSalaryService classGroupTeacherSalaryService;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -267,17 +267,59 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     public List<ClassGroupTeachers> getClassGroupAndTeacherSalary(Integer musicGroupId) {
+        //乐团班级及班级老师
         List<ClassGroupTeachers> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId);
+        //乐团的课程计划
         List<CourseSchedule> classGroupCourseSchedules = courseScheduleService.findClassGroupCourseSchedules(classGroupAndTeachers);
 
+        //获取乐团老师课酬
+        List<ClassGroupTeacherSalary> nowClassGroupTeacherSalaryList = classGroupTeacherSalaryService.findByMusicGroupId(musicGroupId);
+
+        //基础课时
+        BigDecimal baseDuration = new BigDecimal("30");
         for (ClassGroupTeachers classGroupAndTeacher : classGroupAndTeachers) {
-            for (CourseSchedule classGroupCourseSchedule : classGroupCourseSchedules) {
-                if(classGroupCourseSchedule.getClassGroupId().equals(classGroupAndTeacher.getId())){
 
+            Set<Long> courseScheduleDurationSet = new HashSet<>();
+            for (CourseSchedule classGroupCourseSchedule : classGroupCourseSchedules) {
+                if (classGroupCourseSchedule.getClassGroupId().equals(classGroupAndTeacher.getId())) {
+                    //课程时长
+                    long duration = (classGroupCourseSchedule.getEndClassTime().getTime() - classGroupCourseSchedule.getStartClassTime().getTime()) / (1000 * 60);
+                    courseScheduleDurationSet.add(duration);
                 }
             }
 
+            //获取教师列表
             List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupAndTeacher.getClassGroupTeacherMapperList();
+
+            ArrayList<ClassGroupTeacherSalary> classGroupTeacherSalaryList = new ArrayList<>();
+            for (Long duration : courseScheduleDurationSet) {
+                THREE:
+                for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+                    
+                    //已经设置跳过计算
+                    for (ClassGroupTeacherSalary classGroupTeacherSalary : nowClassGroupTeacherSalaryList) {
+                        if (classGroupTeacherMapper.getClassGroupId().equals(classGroupTeacherSalary.getClassGroupId()) &&
+                                classGroupTeacherMapper.getUserId().equals(classGroupTeacherSalary.getUserId()) &&
+                                classGroupTeacherSalary.getDuration().equals(duration)
+                        ) {
+                            classGroupTeacherSalaryList.add(classGroupTeacherSalary);
+                            continue THREE;
+                        }
+                    }
+
+                    ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
+                    classGroupTeacherSalary.setMusicGroupId(classGroupTeacherMapper.getMusicGroupId());
+                    classGroupTeacherSalary.setClassGroupId(classGroupTeacherMapper.getClassGroupId());
+                    classGroupTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
+                    classGroupTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
+                    classGroupTeacherSalary.setDuration(duration.intValue());
+                    BigDecimal salary = new BigDecimal(duration).divide(baseDuration).multiply(classGroupTeacherMapper.getSalary()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    classGroupTeacherSalary.setSalary(salary);
+                    classGroupTeacherSalaryList.add(classGroupTeacherSalary);
+                }
+            }
+            //教师课酬列表
+            classGroupAndTeacher.setClassGroupTeacherSalaryList(classGroupTeacherSalaryList);
         }
         return classGroupAndTeachers;
     }

+ 29 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherSalaryServiceImpl.java

@@ -0,0 +1,29 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
+import com.ym.mec.biz.service.ClassGroupTeacherSalaryService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ClassGroupTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ClassGroupTeacherSalary> implements ClassGroupTeacherSalaryService {
+
+    @Autowired
+    private ClassGroupTeacherSalaryDao ClassGroupTeacherSalaryDao;
+
+    @Override
+    public BaseDAO<Long, ClassGroupTeacherSalary> getDAO() {
+        return ClassGroupTeacherSalaryDao;
+    }
+
+
+    @Override
+    public List<ClassGroupTeacherSalary> findByMusicGroupId(int musicGroupId) {
+        return ClassGroupTeacherSalaryDao.findByMusicGroupId(musicGroupId);
+    }
+}

+ 6 - 5
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml

@@ -12,11 +12,6 @@
     <result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
     <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
   </resultMap>
-  <sql id="Base_Column_List">
-    
-    id_, music_group_id_, class_group_id_, teacher_role_, user_id_, duration_, salary_, 
-    create_time_, update_time_
-  </sql>
   <select id="get" parameterType="java.lang.Long" resultMap="ClassGroupTeacherSalary">
      select * from class_group_teacher_salary where id_ = #{id}
   </select>
@@ -121,4 +116,10 @@
   <select id="queryCount" resultType="int">
     SELECT COUNT(*) FROM class_group_teacher_salary
   </select>
+
+  <!-- 获取乐团老师课酬配置表 -->
+  <select id="findByMusicGroupId" resultMap="ClassGroupTeacherSalary">
+    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{musicGroupId}
+  </select>
+
 </mapper>