Browse Source

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into zx_saas_0422

zouxuan 1 year ago
parent
commit
675a96f804

+ 2 - 2
mec-application/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -19,13 +19,13 @@ import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -357,7 +357,7 @@ public class CourseScheduleController extends BaseController {
 				return failed("请指定班级");
 			}
     		List<ClassGroup> classGroupList = classGroupDao.findClassGroupByMusicGroupIdAndType(batchInsertCoursesDto.getMusicGroupId(), ClassGroupTypeEnum.valueOf(batchInsertCoursesDto.getType().getCode()));
-    		if(classGroupList == null || classGroupList.size() == 0){
+    		if(CollectionUtils.isEmpty(classGroupList)){
     			return failed("没有查询到班级信息");
     		}
     		batchInsertCoursesDto.setClassGroupId(classGroupList.get(0).getId());

+ 12 - 80
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseTimeDto.java

@@ -3,18 +3,30 @@ package com.ym.mec.biz.dal.dto;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+import java.time.LocalDateTime;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
+@Data
 public class CourseTimeDto {
 
 
     @ApiModelProperty(value = "课程类型", required = true)
     private CourseSchedule.CourseScheduleType courseType;
 
+    @ApiModelProperty(value = "开始排课时间(原来按周排课参数,从外层,提到内层)")
+    private Date courseCreateStartTime;
+
     @ApiModelProperty(value = "排课星期几")
     private Integer dayOfWeek;
+//    当前排课日期
+    private LocalDateTime calendar;
+
+    @ApiModelProperty(value = "间隔天数(默认7)")
+    private Integer intervalDays = 7;
 
     @ApiModelProperty(value = "开始排课日期,如果有值,则单独循环")
     private Date startDate;
@@ -43,22 +55,6 @@ public class CourseTimeDto {
     @ApiModelProperty(value = "课程老师设置", required = true)
     private List<ClassGroupTeacherMapper> classGroupTeacherMapperList;
 
-    public int getExpectCourseMinutes() {
-        return expectCourseMinutes;
-    }
-
-    public void setExpectCourseMinutes(int expectCourseMinutes) {
-        this.expectCourseMinutes = expectCourseMinutes;
-    }
-
-    public List<ClassGroupTeacherMapper> getClassGroupTeacherMapperList() {
-        return classGroupTeacherMapperList;
-    }
-
-    public void setClassGroupTeacherMapperList(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
-        this.classGroupTeacherMapperList = classGroupTeacherMapperList;
-    }
-
     public Boolean getHoliday() {
         return isHoliday;
     }
@@ -66,68 +62,4 @@ public class CourseTimeDto {
     public void setHoliday(Boolean holiday) {
         isHoliday = holiday;
     }
-
-    public CourseSchedule.CourseScheduleType getCourseType() {
-        return courseType;
-    }
-
-    public void setCourseType(CourseSchedule.CourseScheduleType courseType) {
-        this.courseType = courseType;
-    }
-
-    public Date getStartDate() {
-        return startDate;
-    }
-
-    public void setStartDate(Date startDate) {
-        this.startDate = startDate;
-    }
-
-    public Date getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(Date endDate) {
-        this.endDate = endDate;
-    }
-
-    public Integer getDayOfWeek() {
-        return dayOfWeek;
-    }
-
-    public void setDayOfWeek(Integer dayOfWeek) {
-        this.dayOfWeek = dayOfWeek;
-    }
-
-    public String getStartClassTime() {
-        return startClassTime;
-    }
-
-    public void setStartClassTime(String startClassTime) {
-        this.startClassTime = startClassTime;
-    }
-
-    public String getEndClassTime() {
-        return endClassTime;
-    }
-
-    public void setEndClassTime(String endClassTime) {
-        this.endClassTime = endClassTime;
-    }
-
-    public int getExpectCourseNum() {
-        return expectCourseNum;
-    }
-
-    public void setExpectCourseNum(int expectCourseNum) {
-        this.expectCourseNum = expectCourseNum;
-    }
-
-    public int getCourseNum() {
-        return courseNum;
-    }
-
-    public void setCourseNum(int courseNum) {
-        this.courseNum = courseNum;
-    }
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCourseAdjustInfoDto.java

@@ -23,7 +23,7 @@ public class VipGroupCourseAdjustInfoDto {
     @ApiModelProperty(value = "需要调整的vip课排课计划的编号")
     private String courseScheduleIds;
 
-    @ApiModelProperty(value = "开始排课时间")
+    @ApiModelProperty(value = "开始排课时间(兼容历史版本)")
     private Date courseCreateStartTime;
 
     @ApiModelProperty(value = "教学形式")

+ 18 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -32,6 +32,7 @@ import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,8 +41,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
-
 import java.math.BigDecimal;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
@@ -2138,7 +2137,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
-            if (classGroup4MixDto.getCourseTimeDtoList() == null || classGroup4MixDto.getCourseTimeDtoList().size() == 0) {
+            if (CollectionUtils.isEmpty(classGroup4MixDto.getCourseTimeDtoList())) {
                 break;
             }
             //5、插入班级排课信息
@@ -2636,7 +2635,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 throw new BizException("主教与助教存在冲突");
             }
             //3、插入班级排课信息
-            LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
+//            LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
+
 
             if (!courseTypeMinutesMap.containsKey(classGroup4MixDto.getCourseType().getCode())) {
                 throw new BizException("{}课程类型暂无剩余课程时长", classGroup4MixDto.getCourseType().getMsg());
@@ -2678,8 +2678,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             WhileNode:
             while (true) {
-                int dayOfWeek = now.getDayOfWeek().getValue();
+//                int dayOfWeek = now.getDayOfWeek().getValue();
                 for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                    if(courseTimeDto.getCalendar() == null){
+                        //排课开始时间
+                        courseTimeDto.setCalendar(courseTimeDto.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                    }
                     List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = courseTimeDto.getClassGroupTeacherMapperList();
 
                     Set<Integer> noRepeatTeacherIds = newClassGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
@@ -2692,21 +2696,22 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         throw new BizException("请设置主教");
                     }
 
-                    if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
-                        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.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
+                    if (courseTimeDto.getHoliday() && holidayDays.contains(courseTimeDto.getCalendar().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
+                        courseTimeDto.setCalendar(courseTimeDto.getCalendar().plusDays(courseTimeDto.getIntervalDays()));
                         continue;
                     }
 
-                    if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
+//                    if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
-                    Date classDate = DateConvertor.toDate(now);
+                    Date classDate = DateConvertor.toDate(courseTimeDto.getCalendar());
 
                     if (courseTimeDto.getStartDate().compareTo(classDate) > 0
                             || courseTimeDto.getEndDate().compareTo(classDate) < 0
@@ -2717,6 +2722,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         if (totalCourseTimes <= generateCourseTimes) {
                             break WhileNode;
                         }
+                        courseTimeDto.setCalendar(courseTimeDto.getCalendar().plusDays(courseTimeDto.getIntervalDays()));
                         continue;
                     }
 
@@ -2798,9 +2804,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                             return BaseController.failed(HttpStatus.MULTI_STATUS, "当前课程课酬预计为0,是否继续");
                         }
                     }
+                    courseTimeDto.setCalendar(courseTimeDto.getCalendar().plusDays(courseTimeDto.getIntervalDays()));
                 }
-
-                now = now.plusDays(1);
             }
 
             if (totalCourseDuration > totalMinutes) {

+ 166 - 165
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -75,6 +75,7 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import static com.timevale.tgtext.text.html.b.i;
 import static com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType.MUSIC_NETWORK;
 import static com.ym.mec.biz.dal.enums.GroupType.*;
 import static com.ym.mec.biz.dal.enums.PracticeGroupType.FREE;
@@ -1642,12 +1643,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<Date> courseStartDates = new ArrayList<>();
 
 		Set<String> holidayDays = new HashSet<>();
-        Integer tenantId = TenantContextHolder.getTenantId();
-        if (courseAdjustInfo.isHoliday()) {
-            String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
-            if(StringUtils.isNotBlank(holidaySetting)){
-                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
-            }
+		Integer tenantId = TenantContextHolder.getTenantId();
+		if (courseAdjustInfo.isHoliday()) {
+			String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
+			if(StringUtils.isNotBlank(holidaySetting)){
+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
+			}
 		}
 
 		Map<String, List<CourseSchedule>> result = new HashMap<String, List<CourseSchedule>>(){{
@@ -2323,37 +2324,37 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo) {
-        SysUser user = sysUserService.getUser();
-        if (Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())) {
-            throw new BizException("请指定课程");
-        }
-        if (Objects.isNull(vipGroupCourseAdjustInfo.getCourseCreateStartTime())) {
-            throw new BizException("请指定排课起始时间;");
-        }
-        if (CollectionUtils.isEmpty(vipGroupCourseAdjustInfo.getCourseTimes())) {
-            throw new BizException("请指定排课周期");
-        }
-        if (StringUtils.isBlank(vipGroupCourseAdjustInfo.getCourseScheduleIds())) {
-            throw new BizException("请指定需要调整的课程");
-        }
-        Date courseCreateStartTime = vipGroupCourseAdjustInfo.getCourseCreateStartTime();
-        Date now = new Date();
-        Date today = DateUtil.stringToDate(DateUtil.dateToString(now, DateUtil.ISO_EXPANDED_DATE_FORMAT),
-                DateUtil.ISO_EXPANDED_DATE_FORMAT);
-        if (courseCreateStartTime.before(today)) {
-            throw new BizException("排课起始时间不能小于当前时间");
-        }
+		SysUser user = sysUserService.getUser();
+		if (Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())) {
+			throw new BizException("请指定课程");
+		}
+		if (Objects.isNull(vipGroupCourseAdjustInfo.getCourseCreateStartTime())) {
+			throw new BizException("请指定排课起始时间;");
+		}
+		if (CollectionUtils.isEmpty(vipGroupCourseAdjustInfo.getCourseTimes())) {
+			throw new BizException("请指定排课周期");
+		}
+		if (StringUtils.isBlank(vipGroupCourseAdjustInfo.getCourseScheduleIds())) {
+			throw new BizException("请指定需要调整的课程");
+		}
+		Date courseCreateStartTime = vipGroupCourseAdjustInfo.getCourseCreateStartTime();
+		Date now = new Date();
+		Date today = DateUtil.stringToDate(DateUtil.dateToString(now, DateUtil.ISO_EXPANDED_DATE_FORMAT),
+				DateUtil.ISO_EXPANDED_DATE_FORMAT);
+		if (courseCreateStartTime.before(today)) {
+			throw new BizException("排课起始时间不能小于当前时间");
+		}
 
-        boolean needSchoolId = Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode()) && vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE) && Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId());
-        if (needSchoolId) {
-            throw new BizException("请设置教学点");
-        }
+		boolean needSchoolId = Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode()) && vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE) && Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId());
+		if (needSchoolId) {
+			throw new BizException("请设置教学点");
+		}
 
-        int singleClassMinutes = 0;
-        int courseNum = 0;
-        Date coursesExpireDate = null;
-        Date coursesStartDate = null;
-        GroupType groupType = vipGroupCourseAdjustInfo.getGroupType();
+		int singleClassMinutes = 0;
+		int courseNum = 0;
+		Date coursesExpireDate = null;
+		Date coursesStartDate = null;
+		GroupType groupType = vipGroupCourseAdjustInfo.getGroupType();
 
 		VipGroup vipGroup=null;
 		VipGroupActivity vipGroupActivity = null;
@@ -2366,116 +2367,116 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
 		}
 
-        switch (vipGroupCourseAdjustInfo.getGroupType()){
-            case PRACTICE:
-                PracticeGroup practiceGroup = practiceGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
-                if (Objects.isNull(practiceGroup)) {
-                    throw new BizException("指定课程不存在");
-                }
-                singleClassMinutes = practiceGroup.getSingleClassMinutes();
-                courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode());
-                coursesExpireDate = practiceGroup.getCoursesExpireDate();
-                coursesStartDate = practiceGroup.getCoursesStartDate();
-                break;
-            default:
-                if (Objects.isNull(vipGroup)) {
-                    throw new BizException("指定课程不存在");
-                }
+		switch (vipGroupCourseAdjustInfo.getGroupType()){
+			case PRACTICE:
+				PracticeGroup practiceGroup = practiceGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
+				if (Objects.isNull(practiceGroup)) {
+					throw new BizException("指定课程不存在");
+				}
+				singleClassMinutes = practiceGroup.getSingleClassMinutes();
+				courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode());
+				coursesExpireDate = practiceGroup.getCoursesExpireDate();
+				coursesStartDate = practiceGroup.getCoursesStartDate();
+				break;
+			default:
+				if (Objects.isNull(vipGroup)) {
+					throw new BizException("指定课程不存在");
+				}
 				if(Objects.nonNull(vipGroup)
 						&&!VipGroupStatusEnum.PROGRESS.equals(vipGroup.getStatus())
 						&&!VipGroupStatusEnum.FINISHED.equals(vipGroup.getStatus())){
 					throw new BizException("非进行中课程组不允许进行此操作");
 				}
-                singleClassMinutes = vipGroup.getSingleClassMinutes();
-                courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue(),groupType.getCode());
-        }
-        if (courseNum == 0) {
-            throw new BizException("未排课的课程不能进行调整");
-        }
+				singleClassMinutes = vipGroup.getSingleClassMinutes();
+				courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue(),groupType.getCode());
+		}
+		if (courseNum == 0) {
+			throw new BizException("未排课的课程不能进行调整");
+		}
 
-        ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupCourseAdjustInfo.getVipGroupId().toString(),groupType.getCode());
-        if (Objects.isNull(classGroup)) {
-            throw new BizException("对应班级不存在");
-        }
+		ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupCourseAdjustInfo.getVipGroupId().toString(),groupType.getCode());
+		if (Objects.isNull(classGroup)) {
+			throw new BizException("对应班级不存在");
+		}
 
-        //所有课程编号
-        List<Long> courseScheduleIds = Arrays.asList(vipGroupCourseAdjustInfo.getCourseScheduleIds().split(","))
-                .stream().map(Long::parseLong).collect(Collectors.toList());
-        //所有的课程
-        List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
+		//所有课程编号
+		List<Long> courseScheduleIds = Arrays.asList(vipGroupCourseAdjustInfo.getCourseScheduleIds().split(","))
+				.stream().map(Long::parseLong).collect(Collectors.toList());
+		//所有的课程
+		List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
 		//校验可排课时间
 		this.checkLiveAdjust(courseSchedules);
 		//校验机构线上课人数上限
 		this.checkOnlineCategory(courseSchedules,vipGroupCourseAdjustInfo.getTeachMode());
-        courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
+		courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 		//拷贝历史直播课
 		List<CourseSchedule> liveCourseSchedules = JSON.parseArray(JSON.toJSONString(courseSchedules),CourseSchedule.class);
 		//获取操作日志
 		List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseScheduleIds, courseSchedules, user.getId(), now);
 
-        if (courseScheduleIds.size() != courseScheduleIds.size()) {
-            throw new BizException("部分课程不存在");
-        }
+		if (courseScheduleIds.size() != courseScheduleIds.size()) {
+			throw new BizException("部分课程不存在");
+		}
 
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(courseCreateStartTime);
-        List<Date> courseStartDates = new ArrayList<>();
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(courseCreateStartTime);
+		List<Date> courseStartDates = new ArrayList<>();
 
 		Set<String> holidayDays = new HashSet<>();
 
-        Integer tenantId = TenantContextHolder.getTenantId();
-        if (vipGroupCourseAdjustInfo.isHoliday()) {
-            String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
-            if(StringUtils.isNotBlank(holidaySetting)){
-                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
-            }
+		Integer tenantId = TenantContextHolder.getTenantId();
+		if (vipGroupCourseAdjustInfo.isHoliday()) {
+			String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
+			if(StringUtils.isNotBlank(holidaySetting)){
+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
+			}
 		}
 
-        while (true) {
-            if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
-                calendar.add(Calendar.DATE, 1);
-                continue;
-            }
-            int i = calendar.get(Calendar.DAY_OF_WEEK);
-            if (i == 1) {
-                i = 7;
-            } else {
-                i = i - 1;
-            }
-            for (CourseTimeDto courseTime : vipGroupCourseAdjustInfo.getCourseTimes()) {
-                if (Objects.isNull(courseTime.getDayOfWeek())) {
-                    throw new BizException("排课循环周期错误");
-                }
-                if (courseTime.getDayOfWeek() < 1 || courseTime.getDayOfWeek() > 7) {
-                    throw new BizException("排课循环周期错误");
-                }
-                if (courseTime.getDayOfWeek() == i) {
-                    String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
-                    dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime();
-                    Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
-                    Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes);
-                    if(DateUtil.daysBetween(DateUtil.stringToDate(DateUtil.format(courseStartTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN),
-                            DateUtil.stringToDate(DateUtil.format(courseEndTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN)) > 0){
-                        throw new BizException("单节课时不允许跨天");
-                    }
-                    courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT));
+		while (true) {
+			if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
+				calendar.add(Calendar.DATE, 1);
+				continue;
+			}
+			int i = calendar.get(Calendar.DAY_OF_WEEK);
+			if (i == 1) {
+				i = 7;
+			} else {
+				i = i - 1;
+			}
+			for (CourseTimeDto courseTime : vipGroupCourseAdjustInfo.getCourseTimes()) {
+				if (Objects.isNull(courseTime.getDayOfWeek())) {
+					throw new BizException("排课循环周期错误");
+				}
+				if (courseTime.getDayOfWeek() < 1 || courseTime.getDayOfWeek() > 7) {
+					throw new BizException("排课循环周期错误");
+				}
+				if (courseTime.getDayOfWeek() == i) {
+					String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
+					dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime();
+					Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
+					Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes);
+					if(DateUtil.daysBetween(DateUtil.stringToDate(DateUtil.format(courseStartTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN),
+							DateUtil.stringToDate(DateUtil.format(courseEndTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN)) > 0){
+						throw new BizException("单节课时不允许跨天");
+					}
+					courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT));
 					CourseSchedule courseSchedule = courseSchedules.get(courseStartDates.size() - 1);
 					//校验课程是否结算
 					this.checkCourseIsSettlement(courseSchedule);
-                    int num = studentAttendanceDao.countStudentAttendenceNum(courseSchedule.getId().intValue());
-                    if (num > 0) {
-                        throw new BizException("{}[{}]{}-{}课程已点名",
+					int num = studentAttendanceDao.countStudentAttendenceNum(courseSchedule.getId().intValue());
+					if (num > 0) {
+						throw new BizException("{}[{}]{}-{}课程已点名",
 								courseSchedule.getName(),
 								courseSchedule.getId(),
-                                DateUtil.dateToString(courseSchedule.getStartClassTime(),
-                                        DateUtil.EXPANDED_DATE_TIME_FORMAT),
-                                DateUtil.dateToString(courseSchedule.getEndClassTime(),
-                                        DateUtil.EXPANDED_DATE_TIME_FORMAT));
-                    }
-                    courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-                    courseSchedule.setClassDate(courseStartTime);
-                    courseSchedule.setStartClassTime(courseStartTime);
-                    courseSchedule.setEndClassTime(courseEndTime);
+								DateUtil.dateToString(courseSchedule.getStartClassTime(),
+										DateUtil.EXPANDED_DATE_TIME_FORMAT),
+								DateUtil.dateToString(courseSchedule.getEndClassTime(),
+										DateUtil.EXPANDED_DATE_TIME_FORMAT));
+					}
+					courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+					courseSchedule.setClassDate(courseStartTime);
+					courseSchedule.setStartClassTime(courseStartTime);
+					courseSchedule.setEndClassTime(courseEndTime);
 
 					Integer allowOnlineToOffline = 0;
 					if(Objects.nonNull(vipGroupActivity)){
@@ -2489,13 +2490,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					}
 
 					if (Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode())) {
-                    	boolean onlineToOffline = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
+						boolean onlineToOffline = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
 								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE);
 						boolean offlineToOnline = courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
 								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.ONLINE);
-                        if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){
-                            throw new BizException("此VIP课活动不支持线上课调整为线下课");
-                        }
+						if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){
+							throw new BizException("此VIP课活动不支持线上课调整为线下课");
+						}
 						if(offlineToOnline&&Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 2 || allowOnlineToOffline == 3)){
 							throw new BizException("此VIP课活动不支持线下课调整为线上课");
 						}
@@ -2503,45 +2504,45 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 							throw new BizException("请选择教学点");
 						}
 						courseSchedule.setTeachMode(vipGroupCourseAdjustInfo.getTeachMode());
-                        if (vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)) {
-                            if(Objects.nonNull(vipGroupCourseAdjustInfo.getSchoolId())){
+						if (vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)) {
+							if(Objects.nonNull(vipGroupCourseAdjustInfo.getSchoolId())){
 								courseSchedule.setSchoolId(vipGroupCourseAdjustInfo.getSchoolId());
-                            }
-                        } else {
+							}
+						} else {
 							courseSchedule.setSchoolId(null);
-                        }
-                    }
-                }
-                if (courseStartDates.size() == courseScheduleIds.size()) {
-                    break;
-                }
-            }
-            if (courseStartDates.size() == courseScheduleIds.size()) {
-                break;
-            }
-            calendar.add(Calendar.DATE, 1);
-        }
-        checkNewCourseSchedules(courseSchedules, false,false);
-        //如果是陪练课,调整时间不允许超过有效期
-        if(groupType == PRACTICE){
-            for (CourseSchedule e:courseSchedules) {
-                //已点名的不允许调整
-                List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId());
-                if(studentAttendances != null && studentAttendances.size() > 0){
-                    throw new BizException("调整失败: 课程已点名");
-                }
-                String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
-                String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-                Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-                Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes);
-                if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){
-                    throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId());
-                }
-                if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){
-                    throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId());
-                }
-            }
-        }
+						}
+					}
+				}
+				if (courseStartDates.size() == courseScheduleIds.size()) {
+					break;
+				}
+			}
+			if (courseStartDates.size() == courseScheduleIds.size()) {
+				break;
+			}
+			calendar.add(Calendar.DATE, 1);
+		}
+		checkNewCourseSchedules(courseSchedules, false,false);
+		//如果是陪练课,调整时间不允许超过有效期
+		if(groupType == PRACTICE){
+			for (CourseSchedule e:courseSchedules) {
+				//已点名的不允许调整
+				List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId());
+				if(studentAttendances != null && studentAttendances.size() > 0){
+					throw new BizException("调整失败: 课程已点名");
+				}
+				String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+				String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+				Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes);
+				if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){
+					throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId());
+				}
+				if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){
+					throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId());
+				}
+			}
+		}
 		if(groupType == VIP || groupType == LIVE){
 			CourseSchedule courseSchedule = courseSchedules.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
 			if(courseSchedule.getEndClassTime().compareTo(vipGroup.getCoursesExpireDate())>0){
@@ -2562,12 +2563,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 		}
 
-        courseScheduleDao.batchUpdate(courseSchedules);
-        classGroupService.updateClassGroupInfo(classGroup.getId());
-        if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
-            teacherAttendanceDao.batchCleanCourseTeacherSignInfo(courseScheduleIds);
-        }
-        studentAttendanceDao.deleteByCourseSchedules(courseScheduleIds);
+		courseScheduleDao.batchUpdate(courseSchedules);
+		classGroupService.updateClassGroupInfo(classGroup.getId());
+		if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
+			teacherAttendanceDao.batchCleanCourseTeacherSignInfo(courseScheduleIds);
+		}
+		studentAttendanceDao.deleteByCourseSchedules(courseScheduleIds);
 		//删除作业
 		courseHomeworkService.delHomwworkByCourseScheduleId(courseScheduleIds);
 		//删除评论

+ 3 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -662,14 +662,13 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             if(!CollectionUtils.isEmpty(studentNotStartPracticeCourseNumMapList)){
                 studentNotStartPracticeCourseNumMap = MapUtil.convertIntegerMap(studentNotStartPracticeCourseNumMapList);
             }
-            Map<Integer, String> subjectMap = subjectService.getMap("subject", "id", "name", false, 1, Integer.class, String.class);
+            Map<Integer, String> subjectMap = subjectService.getMap("subject", "id_", "name_", false, 1, Integer.class, String.class);
             //获取分部年级列表
             Map<Integer, String> gradeList = organizationService.getGradeList(1);
             for (EduOrganStudentListDto eduOrganStudentListDto : dataList1) {
-                EduOrganStudentListExportDto data = new EduOrganStudentListExportDto();
-                BeanUtils.copyProperties(eduOrganStudentListDto, data);
+                EduOrganStudentListExportDto data = JSON.parseObject(JSON.toJSONString(eduOrganStudentListDto),EduOrganStudentListExportDto.class);
                 data.setOrganName(organMap.get(data.getOrganId()));
-                data.setSubjectName(subjectMap.get(data.getStudentId()));
+                data.setSubjectName(subjectMap.get(data.getSubjectId()));
                 if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentGradeNum())) {
                     data.setCurrentGradeNum(eduOrganStudentListDto.getCurrentGradeNum());
                     String grade = gradeList.get(Integer.parseInt(eduOrganStudentListDto.getCurrentGradeNum()));

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/ExportMapper.xml

@@ -61,7 +61,7 @@
         left join class_group cg ON cg.id_ = cs.class_group_id_
         left join music_group mg ON mg.id_ = cs.music_group_id_
         left join organization o ON o.id_ = mg.organ_id_
-        where cs.group_type_ = 'MUSIC' AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1 and cg.del_flag_ = 0
+        where cs.group_type_ = 'MUSIC' AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1
         <if test="organIds != null and organIds != ''">
             AND FIND_IN_SET(cs.organ_id_,#{organIds})
         </if>

+ 4 - 4
mec-common/common-core/src/main/java/com/ym/mec/common/redis/config/RedisConfig.java

@@ -18,7 +18,7 @@ import java.io.Serializable;
 @Configuration
 public class RedisConfig {
 
-	@Value("${spring.redis.host}")
+	/*@Value("${spring.redis.host}")
 	private String host;
 
 	@Value("${spring.redis.port}")
@@ -56,9 +56,9 @@ public class RedisConfig {
 		redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
 		redisTemplate.setConnectionFactory(jedisConnectionFactory());
 		return redisTemplate;
-	}
+	}*/
 
-	/*@Bean
+	@Bean
 	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
 		// 定义redis模板
 		RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
@@ -72,6 +72,6 @@ public class RedisConfig {
 		redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
 		redisTemplate.afterPropertiesSet();
 		return redisTemplate;
-	}*/
+	}
 
 }