Joburgess 5 سال پیش
والد
کامیت
71e7802419

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -136,8 +136,8 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @describe 更新vip课班级人数及状态
      * @author Joburgess
      * @date 2019/10/20
-     * @param vipGroupId:
-     * @param num:
+     * @param vipGroupId: vip课编号
+     * @param num: 人数
      * @return void
      */
     void updateVipGroupStudentNumAndStatus(Long vipGroupId,Integer num);

+ 38 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -52,6 +53,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Autowired
 	private SysMessageService sysMessageService;
 	@Autowired
+	private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
+	@Autowired
+	private VipGroupDao vipGroupDao;
+	@Autowired
+	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
+	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
 
 	@Override
@@ -341,11 +348,28 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				checkStudentIsRepeat(repeatClassGroupIds);
 				courseScheduleDao.update(newCourseSchedule);
 			}
-			if(oldCourseSchedule.getType()== CourseSchedule.CourseScheduleType.VIP){
-				if(!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId())){
 
+			//被修改的教师编号列表,需要将预计薪水置零
+			List<Integer> beReplaceTeacherIds=new ArrayList<>();
+
+			if(oldCourseSchedule.getType()== CourseSchedule.CourseScheduleType.VIP){
+				if(Objects.isNull(oldCourseSchedule.getActualTeacherId())||!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId())){
+					VipGroup byCourseSchedule = vipGroupDao.findByCourseSchedule(newCourseSchedule.getId().intValue());
+					TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId());
+					List<CourseSchedule> courseSchedules=new ArrayList<>();
+					coursesByDates.add(newCourseSchedule);
+					courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(byCourseSchedule,
+							courseSchedules,
+							byTeacherAndCategory.getOnlineClassesSalary(),
+							byTeacherAndCategory.getOfflineClassesSalary());
+					beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
 				}
 			}else{
+				if(Objects.isNull(oldCourseSchedule.getActualTeacherId())||!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId())){
+					//如果主教被修改则调整课酬记录
+
+					beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+				}
 				List<CourseScheduleTeacherSalary> courseTeachingTeacherList=courseTeachingTeacherMaps.get(newCourseSchedule.getId());
 				//当前设置的课程助教编号列表
 				List<Integer> currentCourseTeachingTeacherIds=new ArrayList<>();
@@ -356,7 +380,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				List<Integer> newTeachingTeacherIdList = newCourseSchedule.getTeachingTeacherIdList();
 				//找出重复的助教编号
 				List<Integer> foundInCurrentCourseTeachingTeacherIds = newTeachingTeacherIdList.stream().filter(currentCourseTeachingTeacherIds::contains).collect(Collectors.toList());
+
+				newTeachingTeacherIdList.forEach(newTeacherId->{
+					//如果不在重复列表中,则需要生成对应的课酬记录
+					if(!foundInCurrentCourseTeachingTeacherIds.contains(newTeacherId)){
+						//计算修改后的助教的课酬
+
+
+						beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+					}
+				});
 			}
+			//将被修改的教师预计薪水置零
+			courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalary(newCourseSchedule.getId().intValue(),beReplaceTeacherIds);
 		});
 	}
 

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

@@ -69,7 +69,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 				CourseScheduleTeacherSalary courseScheduleTeacherSalary=new CourseScheduleTeacherSalary();
 				courseScheduleTeacherSalary.setCourseScheduleId(courseSchedules.get(i).getId());
 				courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-				courseScheduleTeacherSalary.setUserId(vipGroup.getUserId());
+				courseScheduleTeacherSalary.setUserId(courseSchedules.get(i).getActualTeacherId().intValue());
 				courseScheduleTeacherSalary.setClassGroupId(courseSchedules.get(i).getClassGroupId());
 
 				Map<String,BigDecimal> feeInfo = vipGroupService.countVipGroupPredictFee(vipGroup,

+ 38 - 43
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -465,6 +465,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId.longValue(),
 				vipGroup.getVipGroupCategoryId());
 
+		if(Objects.isNull(vipGroup.getVipGroupActivityId())){
+			throw new BizException("请指定活动方案");
+		}
+
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 
 		if(Objects.isNull(vipGroupActivity)){
@@ -487,51 +491,42 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
 
-		if(vipGroup.getOnlineClassesNum()>0){
-			//教师课酬线上单课酬计算
-			switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
-				case TEACHER_DEFAULT:
-					if(Objects.isNull(teacherDefaultVipGroupSalary)){
-						throw new BizException("未设置教师默认课酬");
-					}
-					results.put("onlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(classTimeDuty));
-					break;
-				case RATIO_DISCOUNT:
-					results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
-					break;
-				case FIXED_SALARY:
-					results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
-					break;
-				default:
-					throw new BizException("未指定课酬结算标准!");
-			}
-		}else{
-			results.put("onlineTeacherSalary",new BigDecimal(0));
-		}
-
-		if(vipGroup.getOfflineClassesNum()>0){
-			//教师线下单课酬计算
-			switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
-				case TEACHER_DEFAULT:
-					if(Objects.isNull(teacherDefaultVipGroupSalary)){
-						throw new BizException("未设置教师默认课酬");
-					}
-					results.put("offlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(classTimeDuty));
-					break;
-				case RATIO_DISCOUNT:
-					results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
-					break;
-				case FIXED_SALARY:
-					results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
-					break;
-				default:
-					throw new BizException("未指定课酬结算标准!");
-			}
-		}else{
-			results.put("offlineTeacherSalary",new BigDecimal(0));
+		//教师课酬线上单课酬计算
+		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
+			case TEACHER_DEFAULT:
+				if(Objects.isNull(teacherDefaultVipGroupSalary)){
+					throw new BizException("未设置教师默认课酬");
+				}
+				results.put("onlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(classTimeDuty));
+				break;
+			case RATIO_DISCOUNT:
+				results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
+				break;
+			case FIXED_SALARY:
+				results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
+				break;
+			default:
+				throw new BizException("未指定课酬结算标准!");
+		}
+
+		//教师线下单课酬计算
+		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
+			case TEACHER_DEFAULT:
+				if(Objects.isNull(teacherDefaultVipGroupSalary)){
+					throw new BizException("未设置教师默认课酬");
+				}
+				results.put("offlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(classTimeDuty));
+				break;
+			case RATIO_DISCOUNT:
+				results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
+				break;
+			case FIXED_SALARY:
+				results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
+				break;
+			default:
+				throw new BizException("未指定课酬结算标准!");
 		}
 
-
 		if(computeTotalPrice){
 			//课程购买费用计算
 			BigDecimal totalPrice;