|
@@ -23,14 +23,12 @@ import com.ym.mec.common.page.PageInfo;
|
|
|
import com.ym.mec.common.page.QueryInfo;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.im.ImFeignService;
|
|
|
-import com.ym.mec.jiari.JiaRiFeignService;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
|
|
|
import com.ym.mec.util.collection.ListUtil;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.json.JsonUtil;
|
|
|
import org.apache.commons.collections.ListUtils;
|
|
|
-import org.apache.commons.lang3.ArrayUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -52,7 +50,6 @@ 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.PracticeGroupType.*;
|
|
|
-import static com.ym.mec.biz.dal.enums.SignInStatusEnum.*;
|
|
|
|
|
|
@Service
|
|
|
public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSchedule> implements CourseScheduleService {
|
|
@@ -75,10 +72,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
private StudentAttendanceDao studentAttendanceDao;
|
|
|
@Autowired
|
|
|
private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
|
-
|
|
|
@Autowired
|
|
|
private TeacherDefaultPracticeGroupSalaryDao teacherDefaultPracticeGroupSalaryDao;
|
|
|
-
|
|
|
@Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
@Autowired
|
|
@@ -112,8 +107,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
@Autowired
|
|
|
private PracticeGroupDao practiceGroupDao;
|
|
|
@Autowired
|
|
|
- private JiaRiFeignService jiaRiFeignService;
|
|
|
- @Autowired
|
|
|
private VipGroupService vipGroupService;
|
|
|
@Autowired
|
|
|
private MusicGroupService musicGroupService;
|
|
@@ -123,10 +116,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
private SchoolDao schoolDao;
|
|
|
@Autowired
|
|
|
private ImFeignService imFeignService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private CourseHomeworkService courseHomeworkService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private GroupDao groupDao;
|
|
|
@Autowired
|
|
@@ -135,6 +126,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
private CourseScheduleReviewDao courseScheduleReviewDao;
|
|
|
@Autowired
|
|
|
private PracticeGroupService practiceGroupService;
|
|
|
+ @Autowired
|
|
|
+ private CoursesGroupModifyLogDao coursesGroupModifyLogDao;
|
|
|
|
|
|
private final Logger LOGGER = LoggerFactory
|
|
|
.getLogger(this.getClass());
|
|
@@ -2472,8 +2465,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
|
|
|
List<Integer> oldTeacherIdList = teacherAttendanceList.stream().map(TeacherAttendance::getTeacherId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
- List<Integer> newTeacherIdList = newCourseSchedule.getTeachingTeacherIdList();
|
|
|
+ Set<Integer> newTeacherIdList = new HashSet(newCourseSchedule.getTeachingTeacherIdList());
|
|
|
newTeacherIdList.add(newCourseSchedule.getActualTeacherId());
|
|
|
+ List<Integer> integerArrayList = new ArrayList<>(newTeacherIdList);
|
|
|
|
|
|
if (newCourseSchedule.getStatus() != CourseStatusEnum.OVER) {
|
|
|
// 清理原来考勤
|
|
@@ -2534,7 +2528,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
int newMinutes = DateUtil.minutesBetween(newCourseSchedule.getStartClassTime(), newCourseSchedule.getEndClassTime());
|
|
|
|
|
|
// 如果修改了老师、课程类型、课程时长、教学模式,需要修改课酬
|
|
|
- if (!ListUtil.isEquals(oldTeacherIdList, newTeacherIdList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
|
|
|
+ if (!ListUtil.isEquals(oldTeacherIdList, integerArrayList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
|
|
|
|| newCourseSchedule.getTeachMode() != oldCourseSchedule.getTeachMode() || oldMinutes != newMinutes) {
|
|
|
|
|
|
Map<Integer, Teacher> teacherMap = null;
|
|
@@ -2542,11 +2536,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
|
|
|
if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
|
|
|
// 所有教师列表
|
|
|
- List<Teacher> teachers = teacherDao.findByTeacherIds(newTeacherIdList);
|
|
|
+ List<Teacher> teachers = teacherDao.findByTeacherIds(integerArrayList);
|
|
|
teacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
|
|
|
// 所有老师默认乐团课酬
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(newTeacherIdList);
|
|
|
+ List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(integerArrayList);
|
|
|
for (TeacherDefaultMusicGroupSalary tdms : teacherDefaultMusicGroupSalaries) {
|
|
|
Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> map = musicGroupSalaryMap.get(tdms.getUserId());
|
|
|
if (map == null) {
|
|
@@ -2599,12 +2593,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> map = musicGroupSalaryMap.get(teacherId);
|
|
|
|
|
|
if (map == null) {
|
|
|
- throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
|
|
|
+ throw new BizException("老师{}没有设置默认课酬,请先设置", teacherId);
|
|
|
}
|
|
|
|
|
|
TeacherDefaultMusicGroupSalary tdms = map.get(newCourseSchedule.getType());
|
|
|
if (tdms == null) {
|
|
|
- throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
|
|
|
+ throw new BizException("老师{}没有设置默认课酬,请先设置", teacherId);
|
|
|
}
|
|
|
|
|
|
// 乐团结算方式
|
|
@@ -3764,6 +3758,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
}
|
|
|
|
|
|
PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(oldCourseSchedule.getMusicGroupId()));
|
|
|
+ CoursesGroupModifyLog coursesGroupModifyLog = new CoursesGroupModifyLog();
|
|
|
+ coursesGroupModifyLog.setGroupId(oldCourseSchedule.getMusicGroupId());
|
|
|
+ coursesGroupModifyLog.setGroupType(PRACTICE.getCode());
|
|
|
+ coursesGroupModifyLog.setOperatorId(user.getId());
|
|
|
+ coursesGroupModifyLog.setPreviousGroup(JSONObject.toJSONString(practiceGroup));
|
|
|
String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
@@ -3828,6 +3827,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
practiceGroup.setCoursesExpireDate(courseScheduleDao.getLastTime(practiceGroup.getId(),PRACTICE.getCode()));
|
|
|
practiceGroup.setUpdateTime(date);
|
|
|
practiceGroupDao.update(practiceGroup);
|
|
|
+ coursesGroupModifyLog.setCurrentGroup(JSONObject.toJSONString(practiceGroup));
|
|
|
+ coursesGroupModifyLogDao.insert(coursesGroupModifyLog);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -3923,6 +3924,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
courseSchedules = courseSchedules.stream().filter(courseSchedule -> !courseSchedule.getActualTeacherId().equals(teacherId)).collect(Collectors.toList());
|
|
|
}
|
|
|
PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(practiceGroupId));
|
|
|
+ CoursesGroupModifyLog coursesGroupModifyLog = new CoursesGroupModifyLog();
|
|
|
+ coursesGroupModifyLog.setGroupId(practiceGroupId);
|
|
|
+ coursesGroupModifyLog.setGroupType(PRACTICE.getCode());
|
|
|
+ coursesGroupModifyLog.setOperatorId(user.getId());
|
|
|
+ coursesGroupModifyLog.setPreviousGroup(JSONObject.toJSONString(practiceGroup));
|
|
|
ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(practiceGroupId, PRACTICE.getCode());
|
|
|
if(Objects.nonNull(educationalTeacherId)&&!educationalTeacherId.equals(practiceGroup.getEducationalTeacherId())){
|
|
|
if(Objects.nonNull(practiceGroup.getEducationalTeacherId())){
|
|
@@ -3947,10 +3953,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
classGroupDao.update(classGroup);
|
|
|
courseScheduleDao.updateCourseNameByGroup(practiceGroupId, PRACTICE,groupName);
|
|
|
}
|
|
|
+ practiceGroup.setUserId(teacherId);
|
|
|
practiceGroupDao.update(practiceGroup);
|
|
|
+ coursesGroupModifyLog.setCurrentGroup(JSONObject.toJSONString(practiceGroup));
|
|
|
+ coursesGroupModifyLogDao.insert(coursesGroupModifyLog);
|
|
|
classGroupTeacherMapperService.updateTeacher(practiceGroupId,teacherId, PRACTICE.getCode());
|
|
|
classGroupTeacherSalaryDao.updateTeacher(practiceGroupId,teacherId, PRACTICE.getCode());
|
|
|
- practiceGroupDao.updateUserId(practiceGroupId,teacherId);
|
|
|
+// practiceGroupDao.updateUserId(practiceGroupId,teacherId);
|
|
|
if(courseSchedules == null || courseSchedules.size() == 0){
|
|
|
return;
|
|
|
}
|
|
@@ -4201,6 +4210,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void updateCoursesExpireDate(String practiceGroupId, Date coursesExpireDate) {
|
|
|
+ SysUser user = sysUserFeignService.queryUserInfo();
|
|
|
+ if (null == user) {
|
|
|
+ throw new BizException("获取用户信息失败");
|
|
|
+ }
|
|
|
if(practiceGroupId == null || coursesExpireDate == null ){
|
|
|
throw new BizException("参数校验失败");
|
|
|
}
|
|
@@ -4211,7 +4224,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
if(practiceGroup.getCoursesStartDate().after(coursesExpireDate)){
|
|
|
throw new BizException("课程有效时间不能早于开始时间");
|
|
|
}
|
|
|
-
|
|
|
if(Objects.nonNull(practiceGroup.getBuyMonths())){
|
|
|
LocalDate courseStartDay = LocalDateTime.ofInstant(practiceGroup.getCoursesStartDate().toInstant(), DateUtil.zoneId).toLocalDate();
|
|
|
LocalDate currentExpiredDay = courseStartDay.plusMonths(practiceGroup.getBuyMonths()).plusDays(-1);
|
|
@@ -4220,10 +4232,85 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
throw new BizException("课程结束时间不得早于,{}", DateUtil.dateToString(courseExpiredDateTemp, "yyyy年MM月dd日"));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ CoursesGroupModifyLog coursesGroupModifyLog = new CoursesGroupModifyLog();
|
|
|
+ coursesGroupModifyLog.setGroupId(practiceGroupId);
|
|
|
+ coursesGroupModifyLog.setGroupType(PRACTICE.getCode());
|
|
|
+ coursesGroupModifyLog.setOperatorId(user.getId());
|
|
|
+ coursesGroupModifyLog.setPreviousGroup(JSONObject.toJSONString(practiceGroup));
|
|
|
practiceGroup.setCoursesExpireDate(DateUtil.addSeconds(DateUtil.addDays(coursesExpireDate, 1),-1));
|
|
|
practiceGroup.setUpdateTime(new Date());
|
|
|
practiceGroupDao.update(practiceGroup);
|
|
|
+ coursesGroupModifyLog.setCurrentGroup(JSONObject.toJSONString(practiceGroup));
|
|
|
+ coursesGroupModifyLogDao.insert(coursesGroupModifyLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CourseSchedule> queryNoStartCourseByTeacherId(String classGroupIds, Integer teacherId, String teacherRole) {
|
|
|
+ return courseScheduleDao.queryNoStartCourseByTeacherId(classGroupIds,teacherId,teacherRole);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void classGroupTeacherAdjust(String classGroupIds, Integer teacherId, Integer targetTeacherId) {
|
|
|
+ List<Integer> teachingTeacherIdList = new ArrayList<Integer>();
|
|
|
+ teachingTeacherIdList.add(targetTeacherId);
|
|
|
+ List<CourseSchedule> courseSchedules = this.queryNoStartCourseByTeacherId(classGroupIds,teacherId,"BISHOP");
|
|
|
+ //获取助教老师列表
|
|
|
+ if(courseSchedules.size() > 0){
|
|
|
+ courseSchedules.forEach(e->{
|
|
|
+ e.setTeachingTeacherIdList(courseScheduleTeacherSalaryDao.queryTeacherByTeaching(e.getClassGroupId()));
|
|
|
+ e.setActualTeacherId(targetTeacherId);
|
|
|
+ });
|
|
|
+ this.courseAdjust(courseSchedules);
|
|
|
+ //修改老师考勤
|
|
|
+ Set<Integer> collect1 = courseSchedules.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
|
|
|
+// teacherAttendanceDao.deleteByCourseAndTeacherId(collect1,teacherId);
|
|
|
+ batchUpdateClassTeacher(new ArrayList<>(collect1),teacherId,targetTeacherId);
|
|
|
+ }
|
|
|
+ List<CourseSchedule> courseSchedules1 = this.queryNoStartCourseByTeacherId(classGroupIds, teacherId, "TEACHING");
|
|
|
+ if(courseSchedules1.size() > 0){
|
|
|
+ courseSchedules1.forEach(e->{
|
|
|
+ e.setActualTeacherId(courseScheduleTeacherSalaryDao.queryTeacherByBishop(e.getClassGroupId()));
|
|
|
+ e.setTeachingTeacherIdList(teachingTeacherIdList);
|
|
|
+ });
|
|
|
+ this.courseAdjust(courseSchedules1);
|
|
|
+ Set<Integer> collect1 = courseSchedules1.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
|
|
|
+//// teacherAttendanceDao.deleteByCourseAndTeacherId(collect1,teacherId);
|
|
|
+ batchUpdateClassTeacher(new ArrayList<>(collect1),teacherId,targetTeacherId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void batchPracticeGroupTeacherAdjust(String practiceGroupId, Integer teacherId, Integer subjectId, Integer educationalTeacherId,Integer oldTeacherId) {
|
|
|
+ String[] split = practiceGroupId.split(",");
|
|
|
+ for (int i = 0; i < split.length; i++) {
|
|
|
+ this.practiceGroupTeacherAdjust(split[i],teacherId,subjectId,educationalTeacherId);
|
|
|
+ }
|
|
|
+ List<ClassGroup> classGroups = classGroupDao.queryClassGroups(practiceGroupId,"PRACTICE");
|
|
|
+ if(classGroups.size() > 0){
|
|
|
+ List<Integer> collect = classGroups.stream().map(e -> e.getId()).collect(Collectors.toList());
|
|
|
+ batchUpdateClassTeacher(collect,oldTeacherId,teacherId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void batchUpdateClassTeacher(List<Integer> classGroupIds,Integer oldTeacherId,Integer newTeacherId){
|
|
|
+ //修改班级老师
|
|
|
+ List<ClassGroup> classGroupList = classGroupDao.findByClassGroupIds(classGroupIds);
|
|
|
+ classGroupList.forEach(e->{
|
|
|
+ e.setUserIds(newTeacherId.toString());
|
|
|
+ });
|
|
|
+ classGroupTeacherMapperService.batchUpdateTeacherByClassId(classGroupIds,oldTeacherId,newTeacherId);
|
|
|
+ //旧老师退群,新老师加群
|
|
|
+ if(classGroupList != null && classGroupIds.size() > 0){
|
|
|
+ ImGroupMember[] oldImGroupMembers = {new ImGroupMember(oldTeacherId.toString())};
|
|
|
+ ImGroupMember[] imGroupMembers = {new ImGroupMember(newTeacherId.toString())};
|
|
|
+ for (ClassGroup classGroup:classGroupList) {
|
|
|
+ imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), oldImGroupMembers, classGroup.getName()));
|
|
|
+ imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|