瀏覽代碼

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

zouxuan 5 年之前
父節點
當前提交
dc5c684f9e

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

@@ -120,6 +120,17 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	int batchUpdate(@Param("courseScheduleTeacherSalaries") List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);
 
 	/**
+	 * @describe 更新指定课程的课酬
+	 * @author Joburgess
+	 * @date 2020.06.10
+	 * @param courseIds:
+	 * @param salary:
+	 * @return int
+	 */
+	int batchUpdateCourseSalarys(@Param("courseIds") List<Long> courseIds,
+								 @Param("salary") BigDecimal salary);
+
+	/**
 	 * @describe 根据课程编号与老师编号删除对应教师课酬记录
 	 * @author Joburgess
 	 * @date 2019/12/2

+ 45 - 32
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -47,8 +47,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
-import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
+import static com.ym.mec.biz.dal.enums.GroupType.*;
 import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
 
 @Service
@@ -2076,6 +2075,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 }
             }
         }
+        if(groupType == VIP){
+			VipGroup vipGroup = vipGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
+			try {
+				Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
+						courseSchedules.get(0).getActualTeacherId(),
+						vipGroup.getOnlineClassesUnitPrice(),
+						vipGroup.getOfflineClassesUnitPrice(),
+						false,true);
+				courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds,
+						vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?costInfo.get("offlineTeacherSalary"):costInfo.get("onlineTeacherSalary"));
+			} catch (Exception e) {
+				TeacherDefaultVipGroupSalary tdvs = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(courseSchedules.get(0).getActualTeacherId(),vipGroup.getVipGroupCategoryId());
+				if (tdvs == null) {
+					throw new BizException("老师[]没有设置默认课酬,请先设置", courseSchedules.get(0).getActualTeacherId());
+				}
+				courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds,
+						vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?tdvs.getOfflineClassesSalary():tdvs.getOnlineClassesSalary());
+			}
+		}
+
         courseScheduleDao.batchUpdate(courseSchedules);
         classGroupService.updateClassGroupInfo(classGroup.getId());
         if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
@@ -2465,10 +2484,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<TeacherAttendance> teacherAttendanceList = teacherAttendanceMap.get(courseScheduleId);
 
 			List<Integer> oldTeacherIdList = teacherAttendanceList.stream().map(TeacherAttendance::getTeacherId).distinct().collect(Collectors.toList());
-
-			Set<Integer> newTeacherIdList = new HashSet(newCourseSchedule.getTeachingTeacherIdList());
-			newTeacherIdList.add(newCourseSchedule.getActualTeacherId());
-			List<Integer> integerArrayList = new ArrayList<>(newTeacherIdList);
+            List<Integer> newTeacherIdList = new ArrayList<>();
+            newTeacherIdList.addAll(newCourseSchedule.getTeachingTeacherIdList());
+            newTeacherIdList.add(newCourseSchedule.getActualTeacherId());
 
 			if (newCourseSchedule.getStatus() != CourseStatusEnum.OVER) {
 				// 清理原来考勤
@@ -2529,7 +2547,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			int newMinutes = DateUtil.minutesBetween(newCourseSchedule.getStartClassTime(), newCourseSchedule.getEndClassTime());
 
 			// 如果修改了老师、课程类型、课程时长、教学模式,需要修改课酬
-			if (!ListUtil.isEquals(oldTeacherIdList, integerArrayList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
+			if (!ListUtil.isEquals(oldTeacherIdList, newTeacherIdList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
 					|| newCourseSchedule.getTeachMode() != oldCourseSchedule.getTeachMode() || oldMinutes != newMinutes) {
 
 				Map<Integer, Teacher> teacherMap = null;
@@ -2537,11 +2555,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 				if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
 					// 所有教师列表
-					List<Teacher> teachers = teacherDao.findByTeacherIds(integerArrayList);
+					List<Teacher> teachers = teacherDao.findByTeacherIds(newTeacherIdList);
 					teacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
 
 					// 所有老师默认乐团课酬
-					List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(integerArrayList);
+					List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(newTeacherIdList);
 					for (TeacherDefaultMusicGroupSalary tdms : teacherDefaultMusicGroupSalaries) {
 						Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> map = musicGroupSalaryMap.get(tdms.getUserId());
 						if (map == null) {
@@ -2556,7 +2574,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				}
 
 				// 所有老师默认vip课酬
-				List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries = teacherDefaultVipGroupSalaryDao.queryByUserIdList(integerArrayList);
+				List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries = teacherDefaultVipGroupSalaryDao.queryByUserIdList(newTeacherIdList);
 				Map<Integer, Map<Integer, TeacherDefaultVipGroupSalary>> vipGroupSalaryMap = new HashMap<Integer, Map<Integer, TeacherDefaultVipGroupSalary>>();
 				for (TeacherDefaultVipGroupSalary tdvs : teacherDefaultVipGroupSalaries) {
 					Map<Integer, TeacherDefaultVipGroupSalary> map = vipGroupSalaryMap.get(tdvs.getUserId());
@@ -2679,29 +2697,24 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						if (vipGroup == null) {
 							throw new BizException("课程[{}]记录存在异常,请联系管理员", courseScheduleId);
 						}
-						TeacherDefaultVipGroupSalary tdvs = map.get(vipGroup.getVipGroupCategoryId());
-						if (tdvs == null) {
-							throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
-						}
-						Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
-								teacherId,
-								vipGroup.getOnlineClassesUnitPrice(),
-								vipGroup.getOfflineClassesUnitPrice(),
-								false,true);
-						if (newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE) {
-							ts.setExpectSalary(costInfo.get("offlineTeacherSalary"));
-						} else {
-							ts.setExpectSalary(costInfo.get("onlineTeacherSalary"));
+						try {
+							Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
+									teacherId,
+									vipGroup.getOnlineClassesUnitPrice(),
+									vipGroup.getOfflineClassesUnitPrice(),
+									false,true);
+							if (newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE) {
+								ts.setExpectSalary(costInfo.get("offlineTeacherSalary"));
+							} else {
+								ts.setExpectSalary(costInfo.get("onlineTeacherSalary"));
+							}
+						} catch (Exception e) {
+							TeacherDefaultVipGroupSalary tdvs = map.get(vipGroup.getVipGroupCategoryId());
+							if (tdvs == null) {
+								throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
+							}
+							ts.setExpectSalary(newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?tdvs.getOfflineClassesSalary():tdvs.getOnlineClassesSalary());
 						}
-
-//						ts.setExpectSalary(new BigDecimal(0));
-//						Map<Integer, CourseScheduleTeacherSalary> tsMap = courseScheduleTeacherSalaryMap.get(courseScheduleId);
-//						if(tsMap != null){
-//							CourseScheduleTeacherSalary oldTS = tsMap.get(teacherId);
-//							if(oldTS != null){
-//								ts.setExpectSalary(oldTS.getExpectSalary());
-//							}
-//						}
 					} else if (newCourseSchedule.getGroupType() == PRACTICE) {
 						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
 								.queryByUserId(teacherId);

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

@@ -382,7 +382,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             List<CourseScheduleComplaints> courseStudentComplaints = complaintsGroupByCourse.get(courseScheduleTeacherSalary.getCourseScheduleId());
 
             //如果存在投诉记录,需要扣除相应费用
-            if (Objects.nonNull(courseStudentComplaints)) {
+            /*if (Objects.nonNull(courseStudentComplaints)) {
                 //获取审批中的投诉
                 List<CourseScheduleComplaints> auditIng = courseStudentComplaints.stream().filter(courseScheduleComplaint -> courseScheduleComplaint.getStatus() == AuditStatusEnum.ING).collect(Collectors.toList());
                 if (!CollectionUtils.isEmpty(auditIng)) {
@@ -390,12 +390,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     return;
                 }
                 //计算教师责任总占比
-//                double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(courseScheduleComplaint -> Objects.isNull(courseScheduleComplaint.getTeacherLiabilityRatio()) ? 0 : courseScheduleComplaint.getTeacherLiabilityRatio()).sum();
-//                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
+                double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(courseScheduleComplaint -> Objects.isNull(courseScheduleComplaint.getTeacherLiabilityRatio()) ? 0 : courseScheduleComplaint.getTeacherLiabilityRatio()).sum();
+                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
             } else {
                 //如果没有投诉,则教师和学生的责任占比为0
-//                teacherLiabilityAllratio = new BigDecimal(0);
-            }
+                teacherLiabilityAllratio = new BigDecimal(0);
+            }*/
 
             //教师应扣除费用
             /*BigDecimal deductPrice = avgSalary.multiply(teacherLiabilityAllratio);
@@ -1007,7 +1007,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         BigDecimal totalSalary = BigDecimal.ZERO;
         for (CourseTeacherSalaryStatisticsDto teacherMonthSalary : teacherMonthSalarys) {
             if(Objects.nonNull(teacherMonthSalary.getTotalReduceSalary())){
-                teacherMonthSalary.setTotalActualSalary(teacherMonthSalary.getTotalReduceSalary().subtract(teacherMonthSalary.getTotalReduceSalary()));
+                teacherMonthSalary.setTotalActualSalary(teacherMonthSalary.getTotalActualSalary().subtract(teacherMonthSalary.getTotalReduceSalary()));
             }
             totalSalary = totalSalary.add(teacherMonthSalary.getTotalActualSalary());
         }

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

@@ -477,8 +477,14 @@
 			#{id}
 		</foreach>
 	</update>
+    <update id="batchUpdateCourseSalarys">
+		UPDATE course_schedule_teacher_salary SET expect_salary_ = #{salary} WHERE course_schedule_id_ IN
+		<foreach collection="courseIds" item="courseId" separator="," open="(" close=")">
+			#{courseId}
+		</foreach>
+	</update>
 
-	<select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
+    <select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
 		SELECT * FROM course_schedule_teacher_salary WHERE music_group_id_=#{musicGroupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
 	<select id="countActualAmount" resultType="java.util.Map">

+ 1 - 3
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -183,12 +183,10 @@
     </select>
     <select id="findAllByOrgan" resultMap="PracticeGroupDto">
         SELECT pg.*,
-        su.real_name_ teacher_name_,
-        CASE WHEN COUNT(cs.id_) > 0 THEN 1 ELSE 0 END hasRestClass
+        su.real_name_ teacher_name_
         FROM
         practice_group pg
         LEFT JOIN sys_user su ON pg.user_id_ = su.id_
-        LEFT JOIN course_schedule cs ON (FIND_IN_SET(cs.music_group_id_,pg.id_) AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.group_type_ = 'PRACTICE')
         <include refid="practiceGroupQueryCondition"/>
         GROUP BY pg.id_ ORDER BY pg.id_ DESC
         <include refid="global.limit"/>