|
@@ -1,5 +1,6 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import static com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType.*;
|
|
|
import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.AUDITING;
|
|
|
import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.NO;
|
|
|
import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType.SPAN_GROUP_CLASS_ADJUST;
|
|
@@ -163,6 +164,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
|
|
|
@Autowired
|
|
|
private EmployeeDao employeeDao;
|
|
|
+ @Autowired
|
|
|
+ private MusicGroupSchoolTermStudentCourseDetailDao musicGroupSchoolTermStudentCourseDetailDao;
|
|
|
+ @Autowired
|
|
|
+ private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Integer, ClassGroup> getDAO() {
|
|
@@ -2023,7 +2028,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseSchedule.setType(classGroup4MixDto.getCourseType());
|
|
|
courseSchedule.setGroupType(MUSIC);
|
|
|
courseSchedule.setOrganId(musicGroup.getOrganId());
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)) {
|
|
|
+ if (classGroup4MixDto.getCourseType().equals(MIX)) {
|
|
|
courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
|
|
|
} else if (classGroup4MixDto.getCourseType().equals(CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
courseSchedule.setName(classGroup.getName());
|
|
@@ -2163,7 +2168,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseSchedule.setTeacherId(teacherId);
|
|
|
courseSchedule.setActualTeacherId(teacherId);
|
|
|
courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)) {
|
|
|
+ if (classGroup4MixDto.getCourseType().equals(MIX)) {
|
|
|
courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
|
|
|
} else if (classGroup4MixDto.getCourseType().equals(CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
courseSchedule.setName(classGroup.getName());
|
|
@@ -2544,7 +2549,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
courseSchedule.setType(classGroup4MixDto.getCourseType());
|
|
|
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)) {
|
|
|
+ if (classGroup4MixDto.getCourseType().equals(MIX)) {
|
|
|
courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
|
|
|
} else if (classGroup4MixDto.getCourseType().equals(CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
courseSchedule.setName(classGroup.getName());
|
|
@@ -2626,6 +2631,279 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
+ public HttpResponseResult preCourseSchedule(List<ClassGroup4MixDto> classGroup4MixDtos) {
|
|
|
+ Date date = new Date();
|
|
|
+ Integer classGroupId = classGroup4MixDtos.get(0).getClassGroupId();
|
|
|
+ String musicGroupId = classGroup4MixDtos.get(0).getMusicGroupId();
|
|
|
+ Integer musicGroupSchoolTermCourseDetailId = classGroup4MixDtos.get(0).getMusicGroupSchoolTermCourseDetailId();
|
|
|
+ ClassGroup classGroup = classGroupDao.get(classGroupId);
|
|
|
+ if (classGroup == null) {
|
|
|
+ throw new BizException("班级不存在");
|
|
|
+ }
|
|
|
+ MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
|
|
|
+
|
|
|
+ Boolean confirmGenerate = false;
|
|
|
+ if (Objects.nonNull(classGroup4MixDtos.get(0).getConfirmGenerate())) {
|
|
|
+ confirmGenerate = classGroup4MixDtos.get(0).getConfirmGenerate();
|
|
|
+ }
|
|
|
+
|
|
|
+ TeachModeEnum teachMode = TeachModeEnum.OFFLINE;
|
|
|
+ if (classGroup.getType().equals(HIGH_ONLINE) || classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
|
|
|
+ teachMode = TeachModeEnum.ONLINE;
|
|
|
+ }
|
|
|
+ if (classGroup4MixDtos.get(0).getCourseTimes().compareTo(0) <= 0) {
|
|
|
+ throw new BizException("排课次数必须大于0");
|
|
|
+ }
|
|
|
+// Integer courseTimes = classGroup4MixDtos.get(0).getCourseTimes();
|
|
|
+
|
|
|
+// classGroupService.updateTotalClassTimes(classGroup.getId(), courseTimes);
|
|
|
+
|
|
|
+ Integer schoolId = teachMode.equals(TeachModeEnum.ONLINE) ? null : musicGroup.getSchoolId();
|
|
|
+
|
|
|
+ List<Subject> subjectList = subjectService.findBySubjectByIdList(classGroup.getSubjectIdList());
|
|
|
+
|
|
|
+ String subjectNames = subjectList.stream().map(Subject::getName).collect(Collectors.joining("/"));
|
|
|
+
|
|
|
+// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ //2、获取班级学生
|
|
|
+ List<StudentRegistration> studentList = classGroupStudentMapperDao.findClassStudentList(classGroup.getId(), ClassGroupStudentStatusEnum.NORMAL);
|
|
|
+
|
|
|
+ List<Integer> studentIds = studentList.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
|
|
|
+
|
|
|
+// Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIds);
|
|
|
+
|
|
|
+ //计算每节课的课酬
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
+ List<CourseSchedule> courseScheduleList = new ArrayList<>();
|
|
|
+ MusicGroupSchoolTermCourseDetail schoolTermCourseDetail = musicGroupSchoolTermCourseDetailDao.get(musicGroupSchoolTermCourseDetailId);
|
|
|
+ for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
|
|
|
+ //3、插入班级排课信息
|
|
|
+ LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
|
+
|
|
|
+ int totalCourseMinutes = classGroup4MixDto.getExpectStudentNum() * classGroup4MixDto.getCourseMinutes();
|
|
|
+ if(classGroup4MixDto.getCourseType() == SINGLE || classGroup4MixDto.getCourseType() == MIX ||
|
|
|
+ classGroup4MixDto.getCourseType() == TRAINING_SINGLE || classGroup4MixDto.getCourseType() == TRAINING_MIX){
|
|
|
+ //单技课和合奏课最大的排课时长不能超过44 * 45 分钟
|
|
|
+ if(totalCourseMinutes > 44 * 45){
|
|
|
+ throw new BizException("操作失败:单技课和合奏课最大的排课时长不能超过{}分钟",44*45);
|
|
|
+ }
|
|
|
+ if(classGroup4MixDto.getCourseType() == SINGLE || classGroup4MixDto.getCourseType() == TRAINING_SINGLE){
|
|
|
+ //获取所选学员最大的已消耗的单技课时长
|
|
|
+ int maxSingleCourseMinutes = musicGroupSchoolTermStudentCourseDetailDao.getMaxSingleCourseMinutes(musicGroupSchoolTermCourseDetailId,studentIds);
|
|
|
+ if(44 * 45 - maxSingleCourseMinutes > totalCourseMinutes){
|
|
|
+ throw new BizException("操作失败:所选学员可排单技课时长已不足{}分钟",totalCourseMinutes);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ int maxMixCourseMinutes = musicGroupSchoolTermStudentCourseDetailDao.getMaxMixCourseMinutes(musicGroupSchoolTermCourseDetailId,studentIds);
|
|
|
+ if(44 * 45 - maxMixCourseMinutes > totalCourseMinutes){
|
|
|
+ throw new BizException("操作失败:所选学员可排合奏课时长已不足{}分钟",totalCourseMinutes);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取班级学员最少可排课时长
|
|
|
+ int mixCourseMinutes = musicGroupSchoolTermStudentCourseDetailDao.getMixCourseMinutes(musicGroupSchoolTermCourseDetailId,studentIds);
|
|
|
+ if(totalCourseMinutes > mixCourseMinutes){
|
|
|
+ throw new BizException("操作失败:所选部分学员可排课时间不足");
|
|
|
+ }
|
|
|
+
|
|
|
+ int totalCourseTimes = 0;
|
|
|
+ int generateCourseTimes = 0;
|
|
|
+ if (!CollectionUtils.isEmpty(classGroup4MixDto.getCourseTimeDtoList())) {
|
|
|
+ totalCourseTimes = classGroup4MixDto.getCourseTimeDtoList().stream().mapToInt(CourseTimeDto::getExpectCourseNum).reduce(0, Integer::sum);
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<String> holidayDays = new HashSet<>();
|
|
|
+ SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
|
|
|
+ if (Objects.nonNull(holidaySetting) && StringUtils.isNotBlank(holidaySetting.getParanValue())) {
|
|
|
+ holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<Integer> allTeacherIds = new HashSet<>();
|
|
|
+ List<SimpleUserDto> allTeacherInfo = new ArrayList<>();
|
|
|
+ if(!confirmGenerate){
|
|
|
+ for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
|
|
|
+ List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = courseTimeDto.getClassGroupTeacherMapperList();
|
|
|
+ Set<Integer> teacherIds = newClassGroupTeacherMapperList.stream().map(t -> t.getUserId()).collect(Collectors.toSet());
|
|
|
+ if(!CollectionUtils.isEmpty(teacherIds)){
|
|
|
+ allTeacherIds.addAll(teacherIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!CollectionUtils.isEmpty(allTeacherIds)){
|
|
|
+ allTeacherInfo = teacherDao.getUsersSimpleInfo(new ArrayList<>(allTeacherIds));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ WhileNode:
|
|
|
+ while (true) {
|
|
|
+ int dayOfWeek = now.getDayOfWeek().getValue();
|
|
|
+ for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
|
|
|
+ List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = courseTimeDto.getClassGroupTeacherMapperList();
|
|
|
+
|
|
|
+ Set<Integer> noRepeatTeacherIds = newClassGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
|
|
|
+ if (noRepeatTeacherIds.size() != newClassGroupTeacherMapperList.size()) {
|
|
|
+ throw new BizException("主教与助教存在冲突");
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer teacherId = newClassGroupTeacherMapperList.stream().filter(ct->TeachTypeEnum.BISHOP.equals(ct.getTeacherRole())).findAny().get().getUserId();
|
|
|
+ if(Objects.isNull(teacherId)){
|
|
|
+ throw new BizException("请设置主教");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
|
|
|
+ throw new BizException("排课循环周期错误,请核查");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(courseTimeDto.getStartDate()) || Objects.isNull(courseTimeDto.getEndDate())) {
|
|
|
+ throw new BizException("排课循环周期错误,请核查");
|
|
|
+ }
|
|
|
+ //排课截止时间不可超过学期截止日期
|
|
|
+ if(courseTimeDto.getEndDate().compareTo(schoolTermCourseDetail.getEndSchoolTerm()) > 0){
|
|
|
+ throw new BizException("操作失败:不可跨学期排课,请调整课程截止日期");
|
|
|
+ }
|
|
|
+ //排课开始时间不可小于预排课时间
|
|
|
+ if(courseTimeDto.getStartDate().compareTo(schoolTermCourseDetail.getStartSchoolTerm()) < 0){
|
|
|
+ throw new BizException("操作失败:排课开始时间不可小于预排课时间");
|
|
|
+ }
|
|
|
+
|
|
|
+ //跳过节假日
|
|
|
+ if (courseTimeDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
|
|
|
+
|
|
|
+ Date classDate = DateConvertor.toDate(now);
|
|
|
+
|
|
|
+ if (courseTimeDto.getStartDate().compareTo(classDate) > 0
|
|
|
+ || courseTimeDto.getEndDate().compareTo(classDate) < 0
|
|
|
+ || courseTimeDto.getExpectCourseNum() <= courseTimeDto.getCourseNum()) {
|
|
|
+ if (courseTimeDto.getEndDate().compareTo(classDate) < 0 && courseTimeDto.getExpectCourseNum() > courseTimeDto.getCourseNum()) {
|
|
|
+ throw new BizException("在指定的排课时间段内({}-{})无法完成预计课时数的排课", DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy.MM.dd"), DateUtil.dateToString(courseTimeDto.getEndDate(), "yyyy.MM.dd"));
|
|
|
+ }
|
|
|
+ if (totalCourseTimes <= generateCourseTimes) {
|
|
|
+ break WhileNode;
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //课时长度
|
|
|
+// long classCourseDuration = Duration.between(LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
|
|
|
+// LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
|
|
|
+// .toMinutes();
|
|
|
+//
|
|
|
+// totalCourseDuration += classCourseDuration;
|
|
|
+
|
|
|
+ courseTimeDto.setCourseNum(courseTimeDto.getCourseNum() + 1);
|
|
|
+ generateCourseTimes += 1;
|
|
|
+
|
|
|
+ if (totalCourseTimes < generateCourseTimes) {
|
|
|
+ break WhileNode;
|
|
|
+ }
|
|
|
+
|
|
|
+ String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
|
|
|
+ String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";
|
|
|
+
|
|
|
+ CourseSchedule courseSchedule = new CourseSchedule();
|
|
|
+ courseSchedule.setSchoolId(schoolId);
|
|
|
+ courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
+ courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
+ courseSchedule.setClassDate(classDate);
|
|
|
+ courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime));
|
|
|
+ if (date.compareTo(courseSchedule.getStartClassTime()) > 0) {
|
|
|
+ throw new BizException("课程开始时间不得早于当前时间");
|
|
|
+ }
|
|
|
+ courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime));
|
|
|
+ courseSchedule.setCreateTime(date);
|
|
|
+ courseSchedule.setUpdateTime(date);
|
|
|
+ courseSchedule.setTeachMode(teachMode);
|
|
|
+ courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ courseSchedule.setType(classGroup4MixDto.getCourseType());
|
|
|
+
|
|
|
+ if (classGroup4MixDto.getCourseType().equals(MIX)) {
|
|
|
+ courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
|
|
|
+ } else if (classGroup4MixDto.getCourseType().equals(CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
+ courseSchedule.setName(classGroup.getName());
|
|
|
+ } else {
|
|
|
+ courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ courseSchedule.setGroupType(MUSIC);
|
|
|
+ courseSchedule.setTeacherId(teacherId);
|
|
|
+ courseSchedule.setActualTeacherId(teacherId);
|
|
|
+ courseSchedule.setOrganId(musicGroup.getOrganId());
|
|
|
+ courseSchedule.setClassGroupType(classGroup.getType().getCode());
|
|
|
+ courseSchedule.setIsLock(1);
|
|
|
+ courseSchedule.setPreCourseFlag(1);
|
|
|
+ courseScheduleDao.insert(courseSchedule);
|
|
|
+ courseScheduleList.add(courseSchedule);
|
|
|
+
|
|
|
+ if(!confirmGenerate){
|
|
|
+ Set<Integer> teacherIds = newClassGroupTeacherMapperList.stream().filter(ct->TeachTypeEnum.TEACHING.equals(ct.getTeacherRole())).map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
|
|
|
+ SimpleUserDto mainTeacher = allTeacherInfo.stream().filter(t -> teacherId.equals(t.getUserId())).findAny().get();
|
|
|
+ if(Objects.nonNull(mainTeacher)){
|
|
|
+ courseSchedule.setActualTeacherName(mainTeacher.getUserName());
|
|
|
+ }
|
|
|
+ List<SimpleUserDto> teachingTeachers = allTeacherInfo.stream().filter(t -> teacherIds.contains(t.getUserId())).collect(Collectors.toList());
|
|
|
+ if(!CollectionUtils.isEmpty(teachingTeachers)){
|
|
|
+ courseSchedule.setTeachingTeacherNames(StringUtils.join(teachingTeachers.stream().map(SimpleUserDto::getUserName).collect(Collectors.toList()), ","));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ClassGroupTeacherMapper classGroupTeacherMapper : newClassGroupTeacherMapperList) {
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
+ courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
|
|
|
+ courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
+ courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
+ courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
+ courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleTeacherSalary.setCreateTime(date);
|
|
|
+ courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
+ courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(musicGroup, courseSchedule, courseScheduleTeacherSalary);
|
|
|
+ courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
+ if (confirmGenerate && !classGroup4MixDto.getAllowZeroSalary() && BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getExpectSalary()) == 0) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return BaseController.failed(HttpStatus.MULTI_STATUS, "当前课程课酬预计为0,是否继续");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ now = now.plusDays(1);
|
|
|
+ }
|
|
|
+
|
|
|
+// if (totalCourseDuration > totalMinutes) {
|
|
|
+// throw new BizException("课程时长不足");
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
|
|
|
+
|
|
|
+ if (!confirmGenerate) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ courseScheduleList.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
|
|
|
+ return BaseController.failed(HttpStatus.PARTIAL_CONTENT, courseScheduleList, "");
|
|
|
+ }
|
|
|
+
|
|
|
+ //老师结算表
|
|
|
+ if (courseScheduleTeacherSalaryList.size() > 0) {
|
|
|
+// courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
+ courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(studentList)) {
|
|
|
+// studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
|
|
|
+
|
|
|
+ //学生结算表
|
|
|
+ courseScheduleStudentPaymentService.createForMemberMusicGroup(musicGroupId, courseScheduleList, studentIds);
|
|
|
+ }
|
|
|
+ /*if (musicGroup.getStatus() == PROGRESS) {
|
|
|
+ imUserFriendService.refreshClassImUserFriend(classGroupId);
|
|
|
+ }*/
|
|
|
+ return BaseController.succeed(classGroup);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public ClassGroup classGroupSnap(List<ClassGroup4MixDto> classGroup4MixDtos) throws Exception {
|
|
|
Date date = new Date();
|
|
|
String musicGroupId = classGroup4MixDtos.get(0).getMusicGroupId();
|
|
@@ -2798,7 +3076,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseSchedule.setType(classGroup4MixDto.getCourseType());
|
|
|
courseSchedule.setGroupType(MUSIC);
|
|
|
courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)) {
|
|
|
+ if (classGroup4MixDto.getCourseType().equals(MIX)) {
|
|
|
courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
|
|
|
} else {
|
|
|
courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
|
|
@@ -3100,6 +3378,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countStudyNum(classGroupIds))), HashMap.class);
|
|
|
|
|
|
Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalNumByClassGroupId(classGroupSet, null));
|
|
|
+ Map<Integer, Long> preTotalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countPreTotalNumByClassGroupId(classGroupSet));
|
|
|
Map<Integer, Long> currentNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countExpendNumByClassGroupId(classGroupSet));
|
|
|
|
|
|
for (ClassGroupTeachersDto classGroup : classGroups) {
|
|
@@ -3111,13 +3390,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
classGroup.setClassGroupTeacherMapperList(classGroupTeacherMappers);
|
|
|
classGroup.setStudentNum(studyNums.get(classGroup.getId()));
|
|
|
int totalClassTimes = 0;
|
|
|
+ int preTotalClassTimes = 0;
|
|
|
int currentClassTimes = 0;
|
|
|
+ if (preTotalNumMap.containsKey(classGroup.getId())) {
|
|
|
+ preTotalClassTimes = preTotalNumMap.get(classGroup.getId()).intValue();
|
|
|
+ }
|
|
|
if (totalNumMap.containsKey(classGroup.getId())) {
|
|
|
totalClassTimes = totalNumMap.get(classGroup.getId()).intValue();
|
|
|
}
|
|
|
if (currentNumMap.containsKey(classGroup.getId())) {
|
|
|
currentClassTimes = currentNumMap.get(classGroup.getId()).intValue();
|
|
|
}
|
|
|
+ classGroup.setPreTotalClassTimes(preTotalClassTimes);
|
|
|
classGroup.setTotalClassTimes(totalClassTimes);
|
|
|
classGroup.setCurrentClassTimes(currentClassTimes);
|
|
|
}
|
|
@@ -4223,4 +4507,24 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//如果是基础技能班,重新计算老师课酬
|
|
|
batchUpdateTeacherSalary(classGroupIds);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CourseSchedule> queryPreCourseList(Integer classGroupId) {
|
|
|
+ List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseList(classGroupId);
|
|
|
+ if(courseSchedules.size() > 0){
|
|
|
+ List<Long> courseIdList = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toList());
|
|
|
+ Map<Long, String> bishopTeacherMap = MapUtil.convertMybatisMap(courseScheduleTeacherSalaryDao.queryTeacherIdMap(courseIdList,"BISHOP"));
|
|
|
+ Map<Long, String> teachingTeacherMap = MapUtil.convertMybatisMap(courseScheduleTeacherSalaryDao.queryTeacherIdMap(courseIdList,"TEACHING"));
|
|
|
+ for (CourseSchedule courseSchedule : courseSchedules) {
|
|
|
+ courseSchedule.setActualTeacherName(bishopTeacherMap.get(courseSchedule.getId()));
|
|
|
+ courseSchedule.setTeachingTeacherNames(teachingTeacherMap.get(courseSchedule.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return courseSchedules;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResponseResult confirmPreCourseSchedule(Integer musicGroupSchoolTermCourseDetailId) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|