|
@@ -1,21 +1,154 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+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.PracticeGroupType.CHARGE;
|
|
|
+import static com.ym.mec.biz.dal.enums.PracticeGroupType.FREE;
|
|
|
+import static com.ym.mec.biz.dal.enums.PracticeGroupType.TRIAL;
|
|
|
+
|
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.TreeSet;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+import org.apache.commons.collections.ListUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.auth.api.entity.SysUserRole;
|
|
|
-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.dal.dao.ClassGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
|
|
|
+import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
|
|
|
+import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleModifyLogDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleReviewDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CoursesGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CoursesGroupModifyLogDao;
|
|
|
+import com.ym.mec.biz.dal.dao.GroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.PracticeGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SchoolDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SubjectDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SysConfigDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherDefaultPracticeGroupSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dao.VipGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dto.BatchInsertCoursesDto;
|
|
|
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CoursePostponeDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseScheduleEndDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseScheduleRateDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseScheduleStudentDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseTimeDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
|
|
|
+import com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto;
|
|
|
+import com.ym.mec.biz.dal.dto.Mapper;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherRemarkCommitDto;
|
|
|
+import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
|
|
|
+import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
|
|
|
+import com.ym.mec.biz.dal.dto.VipGroupCourseAdjustInfoDto;
|
|
|
+import com.ym.mec.biz.dal.entity.ClassGroup;
|
|
|
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
|
|
|
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
|
|
|
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseGenerateDto;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseSchedule;
|
|
|
import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
|
|
|
-import com.ym.mec.biz.dal.enums.*;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleModifyLog;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleReview;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
|
|
|
+import com.ym.mec.biz.dal.entity.CoursesGroup;
|
|
|
+import com.ym.mec.biz.dal.entity.CoursesGroupModifyLog;
|
|
|
+import com.ym.mec.biz.dal.entity.Group;
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroup;
|
|
|
+import com.ym.mec.biz.dal.entity.PracticeGroup;
|
|
|
+import com.ym.mec.biz.dal.entity.School;
|
|
|
+import com.ym.mec.biz.dal.entity.StudentAttendance;
|
|
|
+import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
|
|
|
+import com.ym.mec.biz.dal.entity.Subject;
|
|
|
+import com.ym.mec.biz.dal.entity.SysConfig;
|
|
|
+import com.ym.mec.biz.dal.entity.Teacher;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherAttendance;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherDefaultPracticeGroupSalary;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
|
|
|
+import com.ym.mec.biz.dal.entity.VipGroup;
|
|
|
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.ParamEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
|
|
|
import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
|
|
|
-import com.ym.mec.biz.event.source.StudentEventSource;
|
|
|
-import com.ym.mec.biz.service.*;
|
|
|
+import com.ym.mec.biz.service.ClassGroupService;
|
|
|
+import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
|
|
|
+import com.ym.mec.biz.service.CourseHomeworkService;
|
|
|
+import com.ym.mec.biz.service.CourseScheduleService;
|
|
|
+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
|
|
|
+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
|
|
|
+import com.ym.mec.biz.service.MusicGroupService;
|
|
|
+import com.ym.mec.biz.service.PracticeGroupService;
|
|
|
+import com.ym.mec.biz.service.SysConfigService;
|
|
|
+import com.ym.mec.biz.service.SysMessageService;
|
|
|
+import com.ym.mec.biz.service.VipGroupService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.entity.ImGroupMember;
|
|
|
import com.ym.mec.common.entity.ImGroupModel;
|
|
@@ -29,30 +162,6 @@ 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.StringUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.context.annotation.Bean;
|
|
|
-import org.springframework.context.annotation.Lazy;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Propagation;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
-
|
|
|
-import java.lang.reflect.InvocationTargetException;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.time.LocalDate;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-import java.util.stream.Stream;
|
|
|
-
|
|
|
-import static com.ym.mec.biz.dal.enums.GroupType.*;
|
|
|
-import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
|
|
|
|
|
|
@Service
|
|
|
public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSchedule> implements CourseScheduleService {
|
|
@@ -472,13 +581,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
|
|
|
String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
|
|
|
- dateYmdStr = dateYmdStr + " " + courseTimeDto.getStartClassTime();
|
|
|
- Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
+ String startTimeStr = dateYmdStr + " " + courseTimeDto.getStartClassTime();
|
|
|
+ Date courseStartTime = DateUtil.stringToDate(startTimeStr, "yyyy-MM-dd HH:mm");
|
|
|
courseSchedule.setStartClassTime(courseStartTime);
|
|
|
|
|
|
if (StringUtils.isNotBlank(courseTimeDto.getEndClassTime())) {
|
|
|
- dateYmdStr = dateYmdStr + " " + courseTimeDto.getEndClassTime();
|
|
|
- Date courseEndTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
+ String endTimeStr = dateYmdStr + " " + courseTimeDto.getEndClassTime();
|
|
|
+ Date courseEndTime = DateUtil.stringToDate(endTimeStr, "yyyy-MM-dd HH:mm");
|
|
|
courseSchedule.setEndClassTime(courseEndTime);
|
|
|
|
|
|
if (courseEndTime.before(courseStartTime)) {
|
|
@@ -1750,8 +1859,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
||!preCourseSchedule.getEndClassTime().after(backCourseSchedule.getStartClassTime())) {
|
|
|
continue;
|
|
|
}
|
|
|
- if (!checkExistCourseSchedule
|
|
|
- && !courseScheduleIdsSet.contains(backCourseSchedule.getId())) {
|
|
|
+ if (preCourseSchedule.equals(backCourseSchedule)) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -2103,7 +2211,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
|
|
|
newNode:
|
|
|
for (CourseSchedule newCourseSchedule : courseSchedules) {
|
|
|
- for (CourseSchedule existCourseSchedule : existCourseSchedules) {
|
|
|
+ for (CourseSchedule existCourseSchedule : allCourseSchedules) {
|
|
|
if (newCourseSchedule.getEndClassTime().compareTo(existCourseSchedule.getStartClassTime()) <= 0) {
|
|
|
continue newNode;
|
|
|
}
|
|
@@ -2111,6 +2219,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ if(newCourseSchedule.equals(existCourseSchedule)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
boolean isTeacherRepeat = false;
|
|
|
boolean isStudentRepeat = false;
|
|
|
//检测老师冲突
|
|
@@ -2168,7 +2280,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (existCourseSchedule.getClassGroupType().equals(ClassGroupTypeEnum.SNAP.getCode()) || existCourseSchedule.getClassGroupType().equals(ClassGroupTypeEnum.VIP.getCode())) {
|
|
|
+ if (ClassGroupTypeEnum.SNAP.getCode().equals(existCourseSchedule.getClassGroupType()) || ClassGroupTypeEnum.VIP.getCode().equals(existCourseSchedule.getClassGroupType())) {
|
|
|
throw new BizException(courseCheckInfo(newCourseSchedule, existCourseSchedule, existCourseScheduleIds, isTeacherRepeat?1:3));
|
|
|
}
|
|
|
|
|
@@ -2218,13 +2330,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
errInfo.append("安排的课程存在冲突,");
|
|
|
errInfo.append("冲突课程为:");
|
|
|
|
|
|
- if (Objects.isNull(preCourseSchedule.getId()) && Objects.isNull(backCourseSchedule.getId())) {
|
|
|
- errInfo.setLength(0);
|
|
|
- errInfo.append("您设置的循环周期存在时间冲突");
|
|
|
- return errInfo.toString();
|
|
|
- }
|
|
|
-
|
|
|
- CourseSchedule courseSchedule = new CourseSchedule();
|
|
|
+ CourseSchedule courseSchedule = null;
|
|
|
if (Objects.nonNull(preCourseSchedule.getId()) && existCourseScheduleIds.contains(preCourseSchedule.getId())) {
|
|
|
courseSchedule = preCourseSchedule;
|
|
|
}
|
|
@@ -2232,6 +2338,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
courseSchedule = backCourseSchedule;
|
|
|
}
|
|
|
|
|
|
+ if (Objects.isNull(courseSchedule)) {
|
|
|
+ errInfo.setLength(0);
|
|
|
+ errInfo.append("您设置的循环周期存在时间冲突");
|
|
|
+ return errInfo.toString();
|
|
|
+ }
|
|
|
+
|
|
|
String groupName = "";
|
|
|
|
|
|
if (Objects.nonNull(courseSchedule.getId())) {
|
|
@@ -2984,7 +3096,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
// 修改了主教/助教/课程状态,需修改考勤记录
|
|
|
List<TeacherAttendance> teacherAttendanceList = teacherAttendanceMap.get(courseScheduleId);
|
|
|
|
|
|
- List<Integer> oldTeacherIdList = teacherAttendanceList.stream().map(TeacherAttendance::getTeacherId).distinct().collect(Collectors.toList());
|
|
|
+ List<Integer> oldTeacherIdList = new ArrayList<Integer>();
|
|
|
+ if(teacherAttendanceList != null){
|
|
|
+ oldTeacherIdList = teacherAttendanceList.stream().map(TeacherAttendance::getTeacherId).distinct().collect(Collectors.toList());
|
|
|
+ }
|
|
|
List<Integer> newTeacherIdList = new ArrayList<>();
|
|
|
newTeacherIdList.addAll(newCourseSchedule.getTeachingTeacherIdList());
|
|
|
newTeacherIdList.add(newCourseSchedule.getActualTeacherId());
|