|
@@ -7,6 +7,7 @@ import static com.ym.mec.biz.dal.enums.GroupType.COMM;
|
|
|
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.VIP;
|
|
|
+import static com.ym.mec.biz.dal.enums.MusicGroupStatusEnum.PROGRESS;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.Duration;
|
|
@@ -32,6 +33,9 @@ import com.ym.mec.biz.dal.dao.*;
|
|
|
import com.ym.mec.biz.dal.dto.*;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.service.*;
|
|
|
+import com.ym.mec.common.entity.HttpResponseResult;
|
|
|
+import com.ym.mec.util.collection.ListUtil;
|
|
|
+
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -72,7 +76,6 @@ import com.ym.mec.common.page.PageInfo;
|
|
|
import com.ym.mec.common.page.QueryInfo;
|
|
|
import com.ym.mec.common.redis.service.RedisCache;
|
|
|
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.DateConvertor;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
@@ -131,14 +134,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
@Autowired
|
|
|
private StudentRegistrationService studentRegistrationService;
|
|
|
@Autowired
|
|
|
- private ImFeignService imFeignService;
|
|
|
+ private ImGroupMemberService imGroupMemberService;
|
|
|
+ @Autowired
|
|
|
+ private ImGroupService imGroupService;
|
|
|
+ @Autowired
|
|
|
+ private ImUserFriendService imUserFriendService;
|
|
|
@Autowired
|
|
|
private CourseScheduleService courseScheduleService;
|
|
|
@Autowired
|
|
|
private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
|
|
|
@Autowired
|
|
|
private StudentApplyRefundsDao studentApplyRefundsDao;
|
|
|
-
|
|
|
@Autowired
|
|
|
private RedisCache<String, Object> redisCache;
|
|
|
@Autowired
|
|
@@ -215,11 +221,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
//基础技能班和线上基础技能班,可分班原则为声部人数/6向上取整
|
|
|
if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) || classGroup.getType().equals(ClassGroupTypeEnum.HIGH)) {
|
|
|
- String subjectIds = classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) ? classGroup.getMemo() : classGroup.getSubjectIdList();
|
|
|
- HighClassGroupNumDto highClassGroupNumDto = getSubjectMaxHighClassGroupNum(classGroup.getMusicGroupId(), classGroup.getType(), subjectIds);
|
|
|
+ HighClassGroupNumDto highClassGroupNumDto = getSubjectMaxHighClassGroupNum(classGroup.getMusicGroupId(), classGroup.getType());
|
|
|
if (highClassGroupNumDto.getNowHighClassGroupNum() >= highClassGroupNumDto.getMaxHighClassGroupNum()) {
|
|
|
String errMsg = classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) ? "线上基础技能班" : "基础技能班";
|
|
|
- throw new BizException("此乐团所选声部," + errMsg + "数量不能大于" + highClassGroupNumDto.getMaxHighClassGroupNum());
|
|
|
+ throw new BizException("此乐团," + errMsg + "数量不能大于" + highClassGroupNumDto.getMaxHighClassGroupNum());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -239,6 +244,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
insert(classGroup);
|
|
|
|
|
|
//设置班级上的老师
|
|
|
+ List<Integer> teacherIdList = new ArrayList<>();
|
|
|
List<ClassGroupTeacherMapper> teacherMapperList = classGroup.getTeacherMapperList();
|
|
|
for (ClassGroupTeacherMapper tm : teacherMapperList) {
|
|
|
tm.setClassGroupId(classGroup.getId());
|
|
@@ -246,6 +252,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
tm.setGroupType(classGroup.getGroupType());
|
|
|
tm.setCreateTime(date);
|
|
|
tm.setUpdateTime(date);
|
|
|
+ teacherIdList.add(tm.getUserId());
|
|
|
}
|
|
|
|
|
|
if (teacherMapperList.size() > 0) {
|
|
@@ -279,7 +286,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
// 加入IM群组
|
|
|
if (userIdList.size() > 0) {
|
|
|
- addImGroup(classGroup, userIdList);
|
|
|
+ addImGroup(classGroup, userIdList, teacherIdList);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
@@ -361,7 +368,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentList);
|
|
|
|
|
|
//加入IM群组
|
|
|
- addImGroup(classGroup, userIdList);
|
|
|
+ addImGroup(classGroup, userIdList, null);
|
|
|
return classGroup;
|
|
|
}
|
|
|
|
|
@@ -427,7 +434,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
classGroupRelationService.classGroupRelationsInsert(classGroupRelationList);
|
|
|
|
|
|
//加入IM群组
|
|
|
- addImGroup(classGroup, userIdList);
|
|
|
+ addImGroup(classGroup, userIdList, null);
|
|
|
|
|
|
return classGroup;
|
|
|
}
|
|
@@ -476,7 +483,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
for (ClassGroup classGroup : classGroups) {
|
|
|
imGroupModelList.add(new ImGroupModel(classGroup.getId().toString(), null, classGroup.getName()));
|
|
|
}
|
|
|
- imFeignService.groupBatchDismiss(imGroupModelList);
|
|
|
+ //imFeignService.groupBatchDismiss(imGroupModelList);
|
|
|
}
|
|
|
|
|
|
List<CourseSchedule> courseScheduleList = new ArrayList<>();
|
|
@@ -575,7 +582,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
// 加入Im群组
|
|
|
- batchAddImGroup(classGroupImGroupList);
|
|
|
+ //batchAddImGroup(classGroupImGroupList);
|
|
|
classGroupTeacherMapperService.classGroupTeachersInsert(classGroupTeacherMapperList);
|
|
|
// 检测新排课冲突
|
|
|
courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
|
|
@@ -1087,8 +1094,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
//5、加入班级群组
|
|
|
- ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(userId.toString())};
|
|
|
- imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
+ imGroupMemberService.join(classGroup.getId().longValue(), userId, null, false);
|
|
|
|
|
|
return classGroup;
|
|
|
}
|
|
@@ -1234,8 +1240,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
// 5、加入班级群组
|
|
|
- ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentId.toString())};
|
|
|
- imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
+ imGroupMemberService.join(classGroup.getId().longValue(), studentId, null, false);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -1257,6 +1262,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
}
|
|
|
courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
|
|
|
+ studentDao.updateStudentServiceTag(studentId,null,YesOrNoEnum.YES.getCode());
|
|
|
}
|
|
|
|
|
|
return true;
|
|
@@ -1296,7 +1302,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//删除班级
|
|
|
classGroupDao.delete(classGroupId);
|
|
|
//删除im群组
|
|
|
- imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), null, null));
|
|
|
+ imGroupService.cancel(classGroupId.longValue());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -1318,7 +1324,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//删除合奏班
|
|
|
classGroupDao.delete(classGroupId);
|
|
|
//删除im群组
|
|
|
- imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), null, null));
|
|
|
+ imGroupService.cancel(classGroupId.longValue());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -1765,12 +1771,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
throw new BizException("主教与助教存在冲突");
|
|
|
}
|
|
|
|
|
|
+ List<Integer> teacherIds = new ArrayList<>();
|
|
|
Integer teacherId = null;
|
|
|
for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
groupTeacherMapper.setGroupType(classGroup.getGroupType());
|
|
|
groupTeacherMapper.setClassGroupId(classGroup.getId());
|
|
|
groupTeacherMapper.setMusicGroupId(classGroup4MixDtos.get(0).getMusicGroupId());
|
|
|
- userIds.add(groupTeacherMapper.getUserId());
|
|
|
+ teacherIds.add(groupTeacherMapper.getUserId());
|
|
|
if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) {
|
|
|
teacherId = groupTeacherMapper.getUserId();
|
|
|
}
|
|
@@ -1787,7 +1794,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
.collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
|
|
|
//创建IM群组
|
|
|
- addImGroup(classGroup, userIds);
|
|
|
+ addImGroup(classGroup, userIds, teacherIds);
|
|
|
|
|
|
|
|
|
Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIdList);
|
|
@@ -1911,6 +1918,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//学生结算表
|
|
|
if (courseScheduleList.size() > 0) {
|
|
|
courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIdList);
|
|
|
+ studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
|
|
|
}
|
|
|
return classGroup;
|
|
|
}
|
|
@@ -2094,10 +2102,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
|
|
|
|
|
|
MusicGroupStudentClassAdjust classAdjust = musicGroupStudentClassAdjustDao.get(classGroup4MixDto.getMusicGroupStudentClassAdjustId());
|
|
|
- //获取默认的排课时长
|
|
|
-// String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
- JSONObject jsonObject = JSON.parseObject(classAdjust.getDefaultCourseTypeMinute());
|
|
|
- long classCourseDuration = Integer.parseInt(jsonObject.get(classGroup4MixDto.getCourseType().getCode()).toString());
|
|
|
ClassGroup classGroup = classGroup4MixDto.getClassGroup();
|
|
|
if (classGroup == null) {
|
|
|
//建班
|
|
@@ -2125,16 +2129,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
|
|
|
|
|
|
+ List<Integer> teacherIds = new ArrayList<>();
|
|
|
for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
groupTeacherMapper.setGroupType(classGroup.getGroupType());
|
|
|
groupTeacherMapper.setClassGroupId(classGroup.getId());
|
|
|
groupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
|
|
|
- userIds.add(groupTeacherMapper.getUserId());
|
|
|
+ teacherIds.add(groupTeacherMapper.getUserId());
|
|
|
}
|
|
|
//3、将老师加入关联关系
|
|
|
classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
|
|
|
//创建IM群组
|
|
|
- addImGroup(classGroup, userIds);
|
|
|
+ addImGroup(classGroup, userIds, teacherIds);
|
|
|
}
|
|
|
//排课
|
|
|
List<CourseSchedule> courseScheduleList = new ArrayList<>();
|
|
@@ -2145,15 +2150,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//冲突校验
|
|
|
courseScheduleList = autoAdjust(classGroup4MixDto, courseScheduleList, classAdjust);
|
|
|
|
|
|
- List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
|
|
|
- .map(ClassGroupTeacherMapper::getUserId)
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- //所有教师列表
|
|
|
- List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
|
|
|
- Map<Integer, Teacher> teacherMap = teachers.stream()
|
|
|
- .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
-
|
|
|
courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
|
|
|
|
|
|
//计算每节课的课酬
|
|
@@ -2206,26 +2202,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupId);
|
|
|
- if (byClassGroup != null && byClassGroup.size() > 0) {
|
|
|
- ClassGroupTeacherMapper groupTeacherMapper = byClassGroup.stream().filter(classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole() == TeachTypeEnum.BISHOP).findFirst().get();
|
|
|
- if (groupTeacherMapper != null) {
|
|
|
- ImGroupMember[] imGroupMembers = {new ImGroupMember(groupTeacherMapper.getUserId().toString())};
|
|
|
- imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
List<ClassGroupTeacherMapper> newTeacherMapperList = classGroup4MixDtos.get(0).getClassGroupTeacherMapperList();
|
|
|
- if (newTeacherMapperList.size() > 0) {
|
|
|
- //获取之前的班级老师
|
|
|
- Set<Integer> groupTeacher = classGroupDao.findGroupTeacher(classGroupId);
|
|
|
- groupTeacher.forEach(e -> {
|
|
|
- ImGroupMember[] imGroupMembers = {new ImGroupMember(e.toString())};
|
|
|
- imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
|
|
|
- });
|
|
|
- newTeacherMapperList.forEach(e -> {
|
|
|
- ImGroupMember[] imGroupMembers = {new ImGroupMember(e.getUserId().toString())};
|
|
|
- imFeignService.groupJoin(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
|
|
|
- });
|
|
|
+ MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
|
|
|
+ if(musicGroup.getStatus() == PROGRESS){
|
|
|
+ if (byClassGroup != null && byClassGroup.size() > 0) {
|
|
|
+ ClassGroupTeacherMapper groupTeacherMapper = byClassGroup.stream().filter(classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole() == TeachTypeEnum.BISHOP).findFirst().get();
|
|
|
+ if (groupTeacherMapper != null) {
|
|
|
+ imGroupMemberService.quit(classGroupId.longValue(), groupTeacherMapper.getUserId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (newTeacherMapperList.size() > 0) {
|
|
|
+ //获取之前的班级老师
|
|
|
+ Set<Integer> groupTeacher = classGroupDao.findGroupTeacher(classGroupId);
|
|
|
+ groupTeacher.forEach(e -> {
|
|
|
+ imGroupMemberService.quit(classGroupId.longValue(), e);
|
|
|
+ });
|
|
|
+ newTeacherMapperList.forEach(e -> {
|
|
|
+ imGroupMemberService.join(classGroupId.longValue(), e.getUserId(), "指导老师", false);
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
if (Objects.nonNull(classGroup4MixDtos.get(0).getCourseAddType()) && classGroup4MixDtos.get(0).getCourseAddType().equals("onlyUpdateTeacher")) {
|
|
|
List<Integer> classGroupIds = new ArrayList<>();
|
|
@@ -2249,8 +2244,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
classGroupService.updateTotalClassTimes(classGroup.getId(), courseTimes);
|
|
|
|
|
|
- MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
|
|
|
-
|
|
|
Integer schoolId = teachMode.equals(TeachModeEnum.ONLINE) ? null : musicGroup.getSchoolId();
|
|
|
|
|
|
List<Subject> subjectList = subjectService.findBySubjectByIdList(classGroup.getSubjectIdList());
|
|
@@ -2279,11 +2272,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
.map(ClassGroupTeacherMapper::getUserId)
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
- //所有教师列表
|
|
|
- List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
|
|
|
- Map<Integer, Teacher> teacherMap = teachers.stream()
|
|
|
- .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
-
|
|
|
Set<String> newTeacher = newClassGroupTeacherMapperList.stream().map(
|
|
|
classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole().getCode() + classGroupTeacherMapper.getUserId()
|
|
|
).collect(Collectors.toSet());
|
|
@@ -2320,7 +2308,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
Integer totalMinutes = courseTypeMinutesMap.get(classGroup4MixDto.getCourseType().getCode());
|
|
|
long totalCourseDuration = 0;
|
|
|
-// classGroup4MixDto.setCourseTimes(totalMinutes/(int)courseDuration);
|
|
|
|
|
|
if (classGroup4MixDto.getCourseTimes() <= 0) {
|
|
|
throw new BizException("{}课程类型剩余课程时长不足", classGroup4MixDto.getCourseType().getMsg());
|
|
@@ -2406,12 +2393,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //排课处理
|
|
|
-// if (classGroup.getType().equals(ClassGroupTypeEnum.SNAP)) {
|
|
|
-// courseScheduleService.checkSnapCourseShchedules(courseScheduleList);
|
|
|
-// } else {
|
|
|
courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
|
|
|
-// }
|
|
|
|
|
|
//老师结算表
|
|
|
if (courseScheduleTeacherSalaryList.size() > 0) {
|
|
@@ -2424,7 +2406,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//学生结算表
|
|
|
courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIds);
|
|
|
}
|
|
|
-
|
|
|
+ if(musicGroup.getStatus() == PROGRESS){
|
|
|
+ imUserFriendService.refreshClassImUserFriend(classGroupId);
|
|
|
+ }
|
|
|
return classGroup;
|
|
|
}
|
|
|
|
|
@@ -2495,11 +2479,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
Integer teacherId = null;
|
|
|
+ List<Integer> teacherIds = new ArrayList<>();
|
|
|
for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
groupTeacherMapper.setGroupType(classGroup.getGroupType());
|
|
|
groupTeacherMapper.setClassGroupId(classGroup.getId());
|
|
|
groupTeacherMapper.setMusicGroupId(classGroup4MixDtos.get(0).getMusicGroupId());
|
|
|
- userIds.add(groupTeacherMapper.getUserId());
|
|
|
+ teacherIds.add(groupTeacherMapper.getUserId());
|
|
|
if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) {
|
|
|
teacherId = groupTeacherMapper.getUserId();
|
|
|
}
|
|
@@ -2516,7 +2501,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
.collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
|
|
|
//创建IM群组
|
|
|
- addImGroup(classGroup, userIds);
|
|
|
+ addImGroup(classGroup, userIds, teacherIds);
|
|
|
|
|
|
Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIdList);
|
|
|
|
|
@@ -2635,6 +2620,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//学生结算表
|
|
|
if (!CollectionUtils.isEmpty(studentIdList)) {
|
|
|
courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIdList);
|
|
|
+ studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
|
|
|
}
|
|
|
return classGroup;
|
|
|
}
|
|
@@ -2938,6 +2924,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalNumByClassGroupId(classGroupSet, null));
|
|
|
Map<Integer, Long> currentNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countExpendNumByClassGroupId(classGroupSet));
|
|
|
+
|
|
|
for (ClassGroupTeachersDto classGroup : dataList) {
|
|
|
List<ClassGroupTeacherMapper> classGroupTeacherMappers = new ArrayList<>();
|
|
|
for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
|
|
@@ -2966,25 +2953,27 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Boolean addImGroup(ClassGroup classGroup, List<Integer> userIds) {
|
|
|
+ public Boolean addImGroup(ClassGroup classGroup, List<Integer> userIds, List<Integer> teacherIdList) {
|
|
|
MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
|
|
|
- List<Integer> userIdList = new ArrayList<>();
|
|
|
- userIdList.add(musicGroup.getEducationalTeacherId());
|
|
|
- userIdList.add(musicGroup.getTeamTeacherId());
|
|
|
- userIdList.add(musicGroup.getOperatorUserId());
|
|
|
- userIdList.add(musicGroup.getDirectorUserId());
|
|
|
- if (userIds != null) {
|
|
|
- userIdList.addAll(userIds);
|
|
|
- }
|
|
|
|
|
|
- List<ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
|
- for (Integer userId : userIdList) {
|
|
|
+ Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
|
|
|
+ userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
|
|
|
+ userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
|
|
|
+ userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
|
|
|
+ for (Integer userId : userIds) {
|
|
|
if (userId == null) continue;
|
|
|
- imGroupMemberList.add(new ImGroupMember(userId.toString()));
|
|
|
- }
|
|
|
- //创建IM群组
|
|
|
- ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
|
|
|
- imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
+
|
|
|
+ userRoleMap.put(userId, "");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(teacherIdList != null && teacherIdList.size() > 0){
|
|
|
+ for(Integer teacherId : teacherIdList){
|
|
|
+ userRoleMap.put(teacherId, "指导老师");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), musicGroup.getName(), musicGroup.getName(), musicGroup.getName(), null, "MUSIC");
|
|
|
+ imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -3022,7 +3011,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
ImGroupModel imGroupModel = new ImGroupModel(classGroupImGroupDto.getClassGroup().getId().toString(), imGroupMembers, classGroupImGroupDto.getClassGroup().getName());
|
|
|
imGroupModelList.add(imGroupModel);
|
|
|
}
|
|
|
- imFeignService.groupBatchCreate(imGroupModelList);
|
|
|
+ //imFeignService.groupBatchCreate(imGroupModelList);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -3342,9 +3331,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
settingsDetail.setCourseTotalNum(subNum.intValue());
|
|
|
settingsDetail.setCourseType(CourseScheduleType.valueOf(courseType));
|
|
|
settingsDetail.setUnitPrice(unitPrice);
|
|
|
-// settingsDetail.setCourseTotalMinuties(Integer.parseInt(jsonObject.get(courseType).toString()) * subNum.intValue());
|
|
|
-// settingsDetail.setCourseCurrentPrice(unitPrice.multiply(new BigDecimal(settingsDetail.getCourseTotalMinuties())));
|
|
|
-// settingsDetail.setCourseOriginalPrice(settingsDetail.getCourseCurrentPrice());
|
|
|
courseMap.put(courseType, settingsDetail);
|
|
|
}
|
|
|
resultMap.put(classGroupId, courseMap);
|
|
@@ -3357,7 +3343,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public String mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
|
|
|
+ public HttpResponseResult mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
|
|
|
List<Integer> classGroupIds = mergeClassSplitClassAffirmDto.getClassGroupIds();
|
|
|
if (classGroupIds == null || classGroupIds.size() == 0) {
|
|
|
throw new BizException("参数校验失败");
|
|
@@ -3441,6 +3427,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust);
|
|
|
//如果需要审核,校验参数配置
|
|
|
checkMergeClassSplitClassAffirmParam(mergeClassSplitClassAffirmDto);
|
|
|
+ HttpResponseResult httpResponseResult = new HttpResponseResult();
|
|
|
+ httpResponseResult.setStatus(true);
|
|
|
+ httpResponseResult.setCode(200);
|
|
|
//如果缴费项目不需要审核,那么生成班级以及课表
|
|
|
if (status == null || status != AUDITING) {
|
|
|
//每种课程类型单独进行排课
|
|
@@ -3458,6 +3447,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
for (Map<Integer, String> classGroupStudent : classGroupStudents) {
|
|
|
Set<Integer> integers = classGroupStudent.keySet();
|
|
|
for (Integer integer : integers) {
|
|
|
+ List<Integer> collect = Arrays.asList(classGroupStudent.get(integer).split(",")).stream().map(e -> Integer.parseInt(e)).collect(Collectors.toList());
|
|
|
+ //学员退出群聊
|
|
|
+ imGroupMemberService.quit(integer.longValue(),collect);
|
|
|
classGroupStudentMapperDao.deleteByClassGroupIdAndStudents(integer, classGroupStudent.get(integer));
|
|
|
}
|
|
|
}
|
|
@@ -3471,14 +3463,16 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
//删除教师课酬
|
|
|
courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
|
|
|
}
|
|
|
- return "学员班级调整完成";
|
|
|
+ imUserFriendService.refreshGroupImUserFriend(musicGroup.getId(),MUSIC);
|
|
|
+ httpResponseResult.setMsg("学员班级调整完成");
|
|
|
} else {
|
|
|
//冻结班级
|
|
|
classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds, 1);
|
|
|
//冻结所选班级的课程
|
|
|
courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 1);
|
|
|
- return "学员班级调整申请已提交,缴费项目审核中";
|
|
|
+ httpResponseResult.setMsg("学员班级调整申请已提交,缴费项目审核中");
|
|
|
}
|
|
|
+ return httpResponseResult;
|
|
|
}
|
|
|
|
|
|
public void checkMergeClassSplitClassAffirmParam(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
|
|
@@ -3494,7 +3488,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
if (noRepeatTeacherIds.size() != classGroupTeacherMapperList.size()) {
|
|
|
throw new BizException("主教与助教存在冲突");
|
|
|
}
|
|
|
- //所选班级不能有未开始的临时合并课程
|
|
|
List<Integer> classGroupIds = mergeClassSplitClassAffirmDto.getClassGroupIds();
|
|
|
if (classGroupIds == null || classGroupIds.size() == 0) {
|
|
|
throw new BizException("请填写班级信息");
|
|
@@ -3542,9 +3535,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
@Override
|
|
|
public Map<String, Long> findClassCourseMinuteMap(List<Integer> classGroupIds, Map<String, Long> classCourseMinuteMap) {
|
|
|
Map<String, Long> resultMap = new HashMap<>();
|
|
|
- //获取默认的排课时长
|
|
|
-// String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
-// JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
//获取所选班级最大剩余课时
|
|
|
Map<String, Long> map = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(classGroupIds));
|
|
|
Set<String> courseTypes = map.keySet();
|
|
@@ -3556,27 +3546,38 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HighClassGroupNumDto getSubjectMaxHighClassGroupNum(String musicGroupId, ClassGroupTypeEnum type, String subjectIds) {
|
|
|
+ public HighClassGroupNumDto getSubjectMaxHighClassGroupNum(String musicGroupId, ClassGroupTypeEnum type) {
|
|
|
//基础技能班和线上基础技能班,可分班原则为声部人数/6向上取整
|
|
|
- String[] subjectIdArr = subjectIds.split(",");
|
|
|
- List<String> subjectIdList = Arrays.asList(subjectIdArr);
|
|
|
- if (subjectIdList.contains("14") || subjectIdList.contains("15")) {
|
|
|
- subjectIds += ",14,15";
|
|
|
+ List<StudentRegistration> musicGroupStudents = studentRegistrationDao.findMusicGroupStudent(musicGroupId, null);
|
|
|
+ Map<Integer, List<StudentRegistration>> regMap = musicGroupStudents.stream().collect(Collectors.groupingBy(StudentRegistration::getActualSubjectId));
|
|
|
+ int maxClassGroupNum = 0;
|
|
|
+ int otherSubjectRegNum = 0;
|
|
|
+ for (Map.Entry<Integer, List<StudentRegistration>> regEntry : regMap.entrySet()) {
|
|
|
+ //上低音号、长号 合并计算
|
|
|
+ if (regEntry.getKey().equals(14) || regEntry.getKey().equals(15)) {
|
|
|
+ otherSubjectRegNum += regEntry.getValue().size();
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ int classNum = regEntry.getValue().size() / 6;
|
|
|
+ classNum += (regEntry.getValue().size() % 6) > 0 ? 1 : 0;
|
|
|
+ maxClassGroupNum += classNum;
|
|
|
}
|
|
|
+ maxClassGroupNum += otherSubjectRegNum / 6;
|
|
|
+ maxClassGroupNum += (otherSubjectRegNum % 6) > 0 ? 1 : 0;
|
|
|
+
|
|
|
HighClassGroupNumDto highClassGroupNumDto = new HighClassGroupNumDto();
|
|
|
- int nowClassGroupNum = classGroupDao.getMusicGroupHighClassNumBySubject(musicGroupId, subjectIds, type);
|
|
|
- int subjectStudentNum = studentRegistrationDao.getMusicGroupSubjectStudentNum(musicGroupId, subjectIds);
|
|
|
- int maxClassGroupNum = subjectStudentNum / 6;
|
|
|
- maxClassGroupNum += (subjectStudentNum % 6) > 0 ? 1 : 0;
|
|
|
+ int nowClassGroupNum = classGroupDao.getMusicGroupHighClassNumBySubject(musicGroupId, type);
|
|
|
+
|
|
|
highClassGroupNumDto.setNowHighClassGroupNum(nowClassGroupNum);
|
|
|
highClassGroupNumDto.setMaxHighClassGroupNum(maxClassGroupNum);
|
|
|
return highClassGroupNumDto;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<MusicGroupPaymentCalenderStudentDetail> queryStudentPaymentCalenders(Integer masterClassGroupId,List<Map<Integer, String>> classGroupStudents,List<Integer> studentIds) {
|
|
|
- //获取主班剩余时长
|
|
|
- Map<String, Long> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(masterClassGroupId));
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
+ public List<MusicGroupPaymentCalenderStudentDetail> queryStudentPaymentCalenders(Integer masterClassGroupId,String classGroupStudentMap,List<Integer> studentIds) {
|
|
|
+ //获取主班剩余课程时长
|
|
|
+ Map<String, BigDecimal> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseTimeMap(masterClassGroupId));
|
|
|
if(masterMap.size() <= 0){
|
|
|
throw new BizException("所选主班没有剩余课程,请重新选择");
|
|
|
}
|
|
@@ -3586,13 +3587,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
Map<Integer, Integer> studentCLassMap = new HashMap<>();
|
|
|
List<Map<Integer, BigDecimal>> surplusCourseFeeMapList = new ArrayList<>();
|
|
|
- for (Map<Integer, String> classGroupStudent : classGroupStudents) {
|
|
|
- for (Integer integer : classGroupStudent.keySet()) {
|
|
|
+ List<Map<String,String>> classGroupStudents = (List<Map<String,String>>)JSON.parse(classGroupStudentMap);
|
|
|
+ for (Map<String, String> classGroupStudent : classGroupStudents) {
|
|
|
+ for (String integer : classGroupStudent.keySet()) {
|
|
|
//获取学员剩余课程费用
|
|
|
- surplusCourseFeeMapList.addAll(studentRegistrationDao.querySurplusCourseFeeByClassGroupId(integer,classGroupStudent.get(integer)));
|
|
|
+ surplusCourseFeeMapList.addAll(studentRegistrationDao.querySurplusCourseFeeByClassGroupId(Integer.parseInt(integer),classGroupStudent.get(integer)));
|
|
|
String[] s = classGroupStudent.get(integer).split(",");
|
|
|
for (String s1 : s) {
|
|
|
- studentCLassMap.put(Integer.parseInt(s1),integer);
|
|
|
+ studentCLassMap.put(Integer.parseInt(s1),Integer.parseInt(integer));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3611,13 +3613,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
if (unitPrice == null) {
|
|
|
throw new BizException("分部默认课程类型单价不存在,请设置");
|
|
|
}
|
|
|
- Long courseTime = masterMap.get(s);
|
|
|
+ BigDecimal courseTime = masterMap.get(s);
|
|
|
//获取主班剩余课程价值,按分部默认单价计算
|
|
|
- if(courseTime == 0l){
|
|
|
- masterTotalPriceMap.put(s,BigDecimal.ZERO);
|
|
|
- }
|
|
|
//总价四舍五入取整
|
|
|
- BigDecimal totalPrice = unitPrice.multiply(new BigDecimal(courseTime)).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal totalPrice = unitPrice.multiply(courseTime).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
masterTotalPriceMap.put(s,totalPrice);
|
|
|
//课程余额转移
|
|
|
for (Integer studentId : studentCLassMap.keySet()) {
|
|
@@ -3633,17 +3632,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}else {
|
|
|
//如果剩余课程余额大于等于总价值,那么补交0元
|
|
|
if(bigDecimal.doubleValue() >= totalPrice.doubleValue()){
|
|
|
+ calenderDto.setCutAmount(totalPrice);
|
|
|
calenderDto.setCourseCurrentPrice(BigDecimal.ZERO);
|
|
|
calenderDto.setCourseOriginalPrice(BigDecimal.ZERO);
|
|
|
}else {
|
|
|
calenderDto.setCourseCurrentPrice(totalPrice.subtract(bigDecimal));
|
|
|
+ calenderDto.setCutAmount(bigDecimal);
|
|
|
calenderDto.setCourseOriginalPrice(totalPrice.subtract(bigDecimal));
|
|
|
}
|
|
|
//剩余课程余额减去主班对应课程类型总的课程价值,负数就是需要补交的金额
|
|
|
// bigDecimal = bigDecimal.subtract(totalPrice);
|
|
|
surplusCourseFeeMap.put(studentId,bigDecimal.subtract(totalPrice));
|
|
|
}
|
|
|
- calenderDto.setCourseTime(courseTime);
|
|
|
+ calenderDto.setCourseTime(courseTime.intValue());
|
|
|
calenderDto.setCourseType(s);
|
|
|
|
|
|
calenderDto.setPhone(phoneMaps.get(studentId));
|
|
@@ -3659,7 +3660,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
@Override
|
|
|
public BigDecimal getMasterTotalPrice(Integer masterClassGroupId) {
|
|
|
//获取主班剩余时长
|
|
|
- Map<String, Long> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(masterClassGroupId));
|
|
|
+ Map<String, BigDecimal> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseTimeMap(masterClassGroupId));
|
|
|
if(masterMap.size() <= 0){
|
|
|
throw new BizException("所选主班没有剩余课程,请重新选择");
|
|
|
}
|
|
@@ -3674,10 +3675,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
if (unitPrice == null) {
|
|
|
throw new BizException("分部默认课程类型单价不存在,请设置");
|
|
|
}
|
|
|
- Long courseTime = masterMap.get(s);
|
|
|
+ BigDecimal courseTime = masterMap.get(s);
|
|
|
//获取主班剩余课程价值,按分部默认单价计算
|
|
|
//总价四舍五入取整
|
|
|
- BigDecimal totalPrice = unitPrice.multiply(new BigDecimal(courseTime)).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal totalPrice = unitPrice.multiply(courseTime).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
masterTotalPrice = masterTotalPrice.add(totalPrice);
|
|
|
}
|
|
|
return masterTotalPrice;
|
|
@@ -3690,15 +3691,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
|
|
|
+ public HttpResponseResult spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
|
|
|
SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
//缴费项目
|
|
|
- List<MusicGroupPaymentCalenderDto> paymentCalenderDtos = mergeClassSplitClassAffirmDto.getMusicGroupPaymentCalenderDtos();
|
|
|
+ MusicGroupPaymentCalenderDto paymentCalenderDto = mergeClassSplitClassAffirmDto.getMusicGroupPaymentCalenderDtos().get(0);
|
|
|
//主班
|
|
|
Integer masterClassGroupId = mergeClassSplitClassAffirmDto.getMasterClassGroupId();
|
|
|
//学员列表
|
|
|
List<Integer> studentIds = mergeClassSplitClassAffirmDto.getStudentIds();
|
|
|
- //主班是否包含所选学员学员
|
|
|
+ //主班是否包含所选学员列表
|
|
|
Boolean hasStudent = classGroupStudentMapperDao.hasStudent(masterClassGroupId,studentIds);
|
|
|
if(hasStudent){
|
|
|
throw new BizException("操作失败: 主班包含部分已选学员");
|
|
@@ -3709,99 +3710,132 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
List<Map<Integer, String>> classGroupStudents = mergeClassSplitClassAffirmDto.getClassGroupStudents();
|
|
|
//获取默认的学员缴费详情
|
|
|
List<MusicGroupPaymentCalenderStudentDetail> musicGroupPaymentCalenderStudentDetails = queryStudentPaymentCalenders(masterClassGroupId,
|
|
|
- classGroupStudents,
|
|
|
+ JSON.toJSONString(mergeClassSplitClassAffirmDto.getClassGroupStudents()),
|
|
|
studentIds);
|
|
|
//创建缴费项目
|
|
|
MusicGroup musicGroup = musicGroupDao.findByClassGroupId(masterClassGroupId);
|
|
|
- MusicGroupPaymentCalender.PaymentCalenderStatusEnum status = null;
|
|
|
- StringBuffer batchNos = new StringBuffer();
|
|
|
- List<String> batchNoList = new ArrayList<>();
|
|
|
- if (paymentCalenderDtos != null && paymentCalenderDtos.size() > 0) {
|
|
|
- BigDecimal masterTotalPrice = getMasterTotalPrice(masterClassGroupId);
|
|
|
- //是否有需要审核的缴费项目
|
|
|
- for (MusicGroupPaymentCalenderDto calenderDto : paymentCalenderDtos) {
|
|
|
- //将学员加入新乐团、扣除原乐团剩余课程余额、补充到现有乐团
|
|
|
- studentRegistrationService.insertStudent(calenderDto.getStudentIds(),calenderDto.getMusicGroupId(),musicGroup.getId(),masterTotalPrice);
|
|
|
- calenderDto.setMusicGroupId(musicGroup.getId());
|
|
|
- List<MusicGroupPaymentCalenderStudentDetail> calenderStudentDetails = calenderDto.getMusicGroupPaymentCalenderStudentDetails();
|
|
|
- boolean containsAll = musicGroupPaymentCalenderStudentDetails.containsAll(calenderStudentDetails);
|
|
|
- if(!containsAll){
|
|
|
- calenderDto.setStatus(AUDITING);
|
|
|
- }else {
|
|
|
- calenderDto.setStatus(NO);
|
|
|
- }
|
|
|
- calenderDto.setPaymentType(SPAN_GROUP_CLASS_ADJUST);
|
|
|
- //生成缴费项目
|
|
|
- calenderDto.setMasterTotalPrice(masterTotalPrice);
|
|
|
- musicGroupPaymentCalenderService.create(calenderDto);
|
|
|
- if (batchNos.length() > 0) {
|
|
|
- batchNos.append(",");
|
|
|
- }
|
|
|
- batchNoList.add(calenderDto.getBatchNo());
|
|
|
- batchNos.append(calenderDto.getBatchNo());
|
|
|
- if (status == null || status != AUDITING) {
|
|
|
- if(!containsAll){
|
|
|
- status = AUDITING;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //记录申请信息
|
|
|
- MusicGroupStudentClassAdjust musicGroupStudentClassAdjust = new MusicGroupStudentClassAdjust();
|
|
|
- musicGroupStudentClassAdjust.setMasterClassGroupId(masterClassGroupId);
|
|
|
- musicGroupStudentClassAdjust.setBatchNo(batchNos.toString());
|
|
|
- musicGroupStudentClassAdjust.setMusicGroupId(musicGroup.getId());
|
|
|
- musicGroupStudentClassAdjust.setOperatorId(sysUser.getId());
|
|
|
- musicGroupStudentClassAdjust.setClassGroupIds(JSON.toJSONString(classGroupIds));
|
|
|
- musicGroupStudentClassAdjust.setStudentIds(JSON.toJSONString(studentIds));
|
|
|
- if (classGroupStudents != null && classGroupStudents.size() > 0) {
|
|
|
- musicGroupStudentClassAdjust.setClassGroupStudents(JSON.toJSONString(mergeClassSplitClassAffirmDto.getClassGroupStudents()));
|
|
|
- }
|
|
|
- //获取需要删除的学员关联的课程
|
|
|
- List<Long> courseIds = courseScheduleDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds, studentIds);
|
|
|
- musicGroupStudentClassAdjust.setSubLockCourseIds(JSON.toJSONString(courseIds));
|
|
|
- //获取关联的学员缴费信息
|
|
|
- List<Long> studentPaymentIds = courseScheduleStudentPaymentDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds, studentIds);
|
|
|
- musicGroupStudentClassAdjust.setStudentPaymentIds(JSON.toJSONString(studentPaymentIds));
|
|
|
- //获取需要冻结的课程
|
|
|
- classGroupIds.add(masterClassGroupId);
|
|
|
- List<Long> allLockCourseIds = courseScheduleDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds, null);
|
|
|
- musicGroupStudentClassAdjust.setAllLockCourseIds(JSON.toJSONString(allLockCourseIds));
|
|
|
- musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust);
|
|
|
- //没有需要审核的缴费项目
|
|
|
- if (status == null) {
|
|
|
- spanGroupClassAdjustPass(masterClassGroupId,studentIds,courseIds,classGroupStudents);
|
|
|
- }else {
|
|
|
+ BigDecimal masterTotalPrice = getMasterTotalPrice(masterClassGroupId);
|
|
|
+ //是否有需要审核的缴费项目
|
|
|
+ List<MusicGroupPaymentCalenderStudentDetail> calenderStudentDetails = paymentCalenderDto.getMusicGroupPaymentCalenderStudentDetails();
|
|
|
+
|
|
|
+ paymentCalenderDto.setMusicGroupId(musicGroup.getId());
|
|
|
+ boolean containsAll = musicGroupPaymentCalenderStudentDetails.containsAll(calenderStudentDetails);
|
|
|
+ if(!containsAll){
|
|
|
+ paymentCalenderDto.setStatus(AUDITING);
|
|
|
+ }else {
|
|
|
+ paymentCalenderDto.setStatus(NO);
|
|
|
+ }
|
|
|
+
|
|
|
+ //将学员加入新乐团、扣除原乐团剩余课程余额、补充到现有乐团
|
|
|
+ Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect = calenderStudentDetails.stream().collect(Collectors.groupingBy(e -> e.getUserId()));
|
|
|
+ for (Map<Integer, String> classGroupStudent : classGroupStudents) {
|
|
|
+ Integer classGroupId = classGroupStudent.keySet().iterator().next();
|
|
|
+ studentRegistrationService.insertStudent(classGroupStudent.get(classGroupId),musicGroupDao.findByClassGroupId(classGroupId).getId(),musicGroup.getId(),collect);
|
|
|
+ }
|
|
|
+ paymentCalenderDto.setPayUserType(MusicGroupPaymentCalender.PayUserType.STUDENT);
|
|
|
+ paymentCalenderDto.setPaymentType(SPAN_GROUP_CLASS_ADJUST);
|
|
|
+ //生成缴费项目
|
|
|
+ paymentCalenderDto.setMasterTotalPrice(masterTotalPrice);
|
|
|
+ paymentCalenderDto.setIsGiveMusicNetwork(false);
|
|
|
+ paymentCalenderDto.setStudentIds(StringUtils.join(studentIds,","));
|
|
|
+ musicGroupPaymentCalenderService.create(paymentCalenderDto);
|
|
|
+ //记录申请信息
|
|
|
+ MusicGroupStudentClassAdjust musicGroupStudentClassAdjust = new MusicGroupStudentClassAdjust();
|
|
|
+ musicGroupStudentClassAdjust.setMasterClassGroupId(masterClassGroupId);
|
|
|
+ musicGroupStudentClassAdjust.setBatchNo(paymentCalenderDto.getBatchNo());
|
|
|
+ musicGroupStudentClassAdjust.setMusicGroupId(musicGroup.getId());
|
|
|
+ musicGroupStudentClassAdjust.setOperatorId(sysUser.getId());
|
|
|
+ musicGroupStudentClassAdjust.setClassGroupIds(JSON.toJSONString(classGroupIds));
|
|
|
+ musicGroupStudentClassAdjust.setStudentIds(JSON.toJSONString(studentIds));
|
|
|
+ musicGroupStudentClassAdjust.setMasterTotalPrice(masterTotalPrice);
|
|
|
+ musicGroupStudentClassAdjust.setMasterClassCourseTimes(courseScheduleDao.queryTotalCourseTimes(masterClassGroupId));
|
|
|
+ if (classGroupStudents != null && classGroupStudents.size() > 0) {
|
|
|
+ musicGroupStudentClassAdjust.setClassGroupStudents(JSON.toJSONString(mergeClassSplitClassAffirmDto.getClassGroupStudents()));
|
|
|
+ }
|
|
|
+ //获取需要删除的学员关联的课程
|
|
|
+ List<Long> courseIds = courseScheduleDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds, studentIds);
|
|
|
+ musicGroupStudentClassAdjust.setSubLockCourseIds(JSON.toJSONString(courseIds));
|
|
|
+ //获取关联的学员缴费信息
|
|
|
+ List<Long> studentPaymentIds = courseScheduleStudentPaymentDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds, studentIds);
|
|
|
+ musicGroupStudentClassAdjust.setStudentPaymentIds(JSON.toJSONString(studentPaymentIds));
|
|
|
+ //获取需要冻结的课程
|
|
|
+ classGroupIds.add(masterClassGroupId);
|
|
|
+ //所选班级列表,是否包含已冻结的班级
|
|
|
+ List<ClassGroup> lockClassGroupIds = classGroupDao.findByClassGroupIds(classGroupIds, 1);
|
|
|
+ if (lockClassGroupIds != null && lockClassGroupIds.size() > 0) {
|
|
|
+ throw new BizException("所选班级包含审核中的学员班级调整申请");
|
|
|
+ }
|
|
|
+ //所选班级不能有未开始的临时合并课程
|
|
|
+ int courseNum = courseScheduleDao.findNoStartMasterCourseNum(classGroupIds);
|
|
|
+ if (courseNum > 0) {
|
|
|
+ throw new BizException("所选班级不能有未开始的临时合并课程");
|
|
|
+ }
|
|
|
+ List<Long> allLockCourseIds = courseScheduleDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds, null);
|
|
|
+ musicGroupStudentClassAdjust.setAllLockCourseIds(JSON.toJSONString(allLockCourseIds));
|
|
|
+ musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust);
|
|
|
+ HttpResponseResult httpResponseResult = new HttpResponseResult();
|
|
|
+ httpResponseResult.setCode(200);
|
|
|
+ httpResponseResult.setStatus(true);
|
|
|
+ //没有需要审核的缴费项目
|
|
|
+ if (paymentCalenderDto.getStatus() != AUDITING) {
|
|
|
+ List<Map> classGroupStudents1 = JSON.parseArray(musicGroupStudentClassAdjust.getClassGroupStudents(),Map.class);
|
|
|
+ spanGroupClassAdjustPass(masterClassGroupId,studentIds,courseIds,classGroupStudents1,allLockCourseIds,paymentCalenderDto.getBatchNo(),masterTotalPrice);
|
|
|
+ httpResponseResult.setMsg("操作成功:学员班级调整完成");
|
|
|
+ }else {
|
|
|
// 冻结班级
|
|
|
- classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds, 1);
|
|
|
+ classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds, 1);
|
|
|
// 冻结所选班级的课程
|
|
|
- courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 1);
|
|
|
- }
|
|
|
+ courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 1);
|
|
|
+ httpResponseResult.setMsg("操作成功:学员班级调整申请已提交,缴费项目审核中");
|
|
|
}
|
|
|
+ return httpResponseResult;
|
|
|
}
|
|
|
|
|
|
- public void spanGroupClassAdjustPass(Integer masterClassGroupId,List<Integer> studentIds,List<Long> courseIds,List<Map<Integer, String>> classGroupStudents){
|
|
|
- //将学员加进班级未开始的课程,以及班级关联、加群
|
|
|
- classGroupStudentMapperService.updateClassGroupStudents(masterClassGroupId.longValue(),new HashSet<>(studentIds));
|
|
|
- //删除学员课程
|
|
|
- courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void spanGroupClassAdjustPass(Integer masterClassGroupId,
|
|
|
+ List<Integer> studentIds,
|
|
|
+ List<Long> courseIds,
|
|
|
+ List<Map> classGroupStudents,
|
|
|
+ List<Long> allLockCourseIds,
|
|
|
+ String batchNo,BigDecimal masterTotalPrice){
|
|
|
//删除班级关联的学员
|
|
|
+ List<Integer> classGroupIds = new ArrayList<>();
|
|
|
if (classGroupStudents != null && classGroupStudents.size() > 0) {
|
|
|
for (Map<Integer, String> classGroupStudent : classGroupStudents) {
|
|
|
Set<Integer> integers = classGroupStudent.keySet();
|
|
|
for (Integer integer : integers) {
|
|
|
+ List<Integer> collect = Arrays.asList(classGroupStudent.get(integer).split(",")).stream().map(e -> Integer.parseInt(e)).collect(Collectors.toList());
|
|
|
+ //学员退出群聊
|
|
|
+ imGroupMemberService.quit(integer.longValue(),collect);
|
|
|
+ classGroupIds.add(integer);
|
|
|
classGroupStudentMapperDao.deleteByClassGroupIdAndStudents(integer, classGroupStudent.get(integer));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //获取没有学员的课程
|
|
|
- List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
|
|
|
- if (delCourseIds != null && delCourseIds.size() > 0) {
|
|
|
- //删除课程
|
|
|
- courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
|
|
|
- //删除教师考勤
|
|
|
- teacherAttendanceDao.batchDeleteByCourseSchedules(delCourseIds);
|
|
|
- //删除教师课酬
|
|
|
- courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
|
|
|
+
|
|
|
+ //将学员加进班级未开始的课程,以及班级关联、加群
|
|
|
+ classGroupStudentMapperService.updateClassGroupStudents1(masterClassGroupId.longValue(),studentIds,allLockCourseIds,batchNo,masterTotalPrice);
|
|
|
+ //删除学员课程
|
|
|
+ if(courseIds.size() > 0){
|
|
|
+ courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
|
|
|
+ }
|
|
|
+ //解冻课程
|
|
|
+ courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds,0);
|
|
|
+ //解冻班级
|
|
|
+ classGroupIds.add(masterClassGroupId);
|
|
|
+ classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds,0);
|
|
|
+ if(courseIds.size() > 0){
|
|
|
+ //获取没有学员的课程
|
|
|
+ List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
|
|
|
+ if (delCourseIds != null && delCourseIds.size() > 0) {
|
|
|
+ //删除课程
|
|
|
+ courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
|
|
|
+ //删除教师考勤
|
|
|
+ teacherAttendanceDao.batchDeleteByCourseSchedules(delCourseIds);
|
|
|
+ //删除教师课酬
|
|
|
+ courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|