Selaa lähdekoodia

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

zouxuan 5 vuotta sitten
vanhempi
commit
e4095ae882

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -135,6 +135,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
     List<CourseScheduleTeacherSalary> findByCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
 	/**
+	 * @describe 根据课程获取课程相关的老师未结算课酬记录
+	 * @author Joburgess
+	 * @date 2019/11/3
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary>
+	 */
+	List<CourseScheduleTeacherSalary> findByCourseSchedulesWithNoSettlement(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
 	 * @describe 统计班级上老师的先上课,线下课课酬
 	 * @author Joburgess
 	 * @date 2019/11/5

+ 14 - 30
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -1,36 +1,11 @@
 package com.ym.mec.biz.service.impl;
 
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
-import com.ym.mec.biz.service.MusicGroupService;
-import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -39,6 +14,15 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, ClassGroupTeacherMapper> implements ClassGroupTeacherMapperService {
@@ -316,12 +300,12 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         //如果结算方式是教师默认课酬
         if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
             //课程时长与结算单位时长占比
-            BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30));
+            BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30),6,BigDecimal.ROUND_DOWN);
             BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
             teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
         } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
             //课程时长与结算单位时长占比
-            BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90));
+            BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90),6,BigDecimal.ROUND_DOWN);
             BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
             teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
         }

+ 16 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -344,7 +344,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 .collect(Collectors.toMap(CourseSchedule::getId, courseSchedule -> courseSchedule));
 
         //课程教师课酬
-        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedulesWithNoSettlement(courseScheduleIds);
+
+        if(CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
+            return;
+        }
 
         //课程对应乐团结算方式集合
         List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
@@ -428,32 +432,35 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             String settlementType=musicGroupSettlementsMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             //如果结算方式是教师默认课酬
-            if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+            if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT.getCode())) {
                 //课程时长与结算单位时长占比
                 BigDecimal classTimeDuty = new BigDecimal(duration);
                 if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                    classTimeDuty=classTimeDuty.divide(new BigDecimal(45));
+                    classTimeDuty=classTimeDuty.divide(new BigDecimal(45),6,BigDecimal.ROUND_DOWN);
                 }else  if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
-                    classTimeDuty=classTimeDuty.divide(new BigDecimal(40));
+                    classTimeDuty=classTimeDuty.divide(new BigDecimal(40),6,BigDecimal.ROUND_DOWN);
                 }else{
-                    classTimeDuty=classTimeDuty.divide(new BigDecimal(30));
+                    classTimeDuty=classTimeDuty.divide(new BigDecimal(30),6,BigDecimal.ROUND_DOWN);
                 }
                 BigDecimal teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
                 teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
-            } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+            } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY.getCode())) {
                 //课程时长与结算单位时长占比
                 BigDecimal classTimeDuty = new BigDecimal(duration);
                 if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                    classTimeDuty=classTimeDuty.divide(new BigDecimal(45));
+                    classTimeDuty=classTimeDuty.divide(new BigDecimal(45),6,BigDecimal.ROUND_DOWN);
                 }else  if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
-                    classTimeDuty=classTimeDuty.divide(new BigDecimal(40));
+                    classTimeDuty=classTimeDuty.divide(new BigDecimal(40),6,BigDecimal.ROUND_DOWN);
                 }else{
-                    classTimeDuty=classTimeDuty.divide(new BigDecimal(90));
+                    classTimeDuty=classTimeDuty.divide(new BigDecimal(90),6,BigDecimal.ROUND_DOWN);
                 }
                 BigDecimal teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
                 teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
             }
             BigDecimal subsidy = courseSubsidyMap.get(courseSchedule.getSchoolId());
+            if(Objects.isNull(subsidy)){
+                subsidy=new BigDecimal(0);
+            }
             teacherSalary=teacherSalary.add(subsidy);
             //更新教师结算信息
             courseScheduleTeacherSalary.setActualSalary(teacherSalary);

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

@@ -782,6 +782,7 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
+        AND group_type_ = 'MUSIC'
     </delete>
 
     <select id="findClassGroupByType" resultMap="ClassGroupTeachers">

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

@@ -155,5 +155,6 @@
         <foreach collection="classGroupIds" item="classGroupId" index="index" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
+        AND group_type_='MUSIC'
     </delete>
 </mapper>

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

@@ -1208,7 +1208,7 @@
             CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.teacher_id_,
-            csts.user_id_ actual_teacher_id_,
+            cs.actual_teacher_id_,
             cs.create_time_,
             cs.update_time_,
             cs.teach_mode_,
@@ -1219,7 +1219,6 @@
             cs.schoole_id_
         FROM
             course_schedule cs
-            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
         WHERE cs.class_date_=DATE_FORMAT(#{date},'%Y-%m-%d')
         AND cs.type_!='VIP'
     </select>
@@ -1369,6 +1368,7 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
+        AND group_type_ = 'MUSIC'
     </delete>
     
     <select id="queryUnsignedStudentList" resultMap="StudentAttendance">

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

@@ -294,6 +294,13 @@
 			#{courseScheduleId}
 		</foreach>
 	</select>
+	<select id="findByCourseSchedulesWithNoSettlement" resultMap="CourseScheduleTeacherSalary">
+		SELECT * FROM  course_schedule_teacher_salary WHERE course_schedule_id_ IN
+		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+			#{courseScheduleId}
+		</foreach>
+		AND settlement_time_ IS NULL
+	</select>
 
     <select id="countTeacherOnlineOfflineSalaryByClass" resultType="map">
 		SELECT