瀏覽代碼

feat: 课程合并

Joburgess 4 年之前
父節點
當前提交
68af3ba751

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseMergeDto.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author qnc99
+ * @Date 2020/11/27 0027
+ */
+public class CourseMergeDto extends CourseSchedule {
+
+    @ApiModelProperty(value = "合并课程编号")
+    private List<Long> mergeCourseIds;
+
+    public List<Long> getMergeCourseIds() {
+        return mergeCourseIds;
+    }
+
+    public void setMergeCourseIds(List<Long> mergeCourseIds) {
+        this.mergeCourseIds = mergeCourseIds;
+    }
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -376,6 +376,14 @@ public class CourseSchedule {
 		return this.id;
 	}
 
+	public Long getNewCourseId() {
+		return newCourseId;
+	}
+
+	public void setNewCourseId(Long newCourseId) {
+		this.newCourseId = newCourseId;
+	}
+
 	public GroupType getGroupType() {
 		return groupType;
 	}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -616,4 +616,13 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @return void
 	 */
 	void courseRepeatCheck();
+
+	/**
+	 * @describe 课程合并
+	 * @author qnc99
+	 * @date 2020/11/27 0027
+	 * @param courseMergeInfo:
+	 * @return void
+	 */
+	void courseMerge(CourseMergeDto courseMergeInfo);
 }

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -5233,4 +5233,44 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		System.out.println("需调整课程数量:" + needAdjustCourseNum);
 		System.out.println("重复课程数量:" + courseRepeatIdMap.size());
 	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void courseMerge(CourseMergeDto courseMergeInfo) {
+		if(CollectionUtils.isEmpty(courseMergeInfo.getMergeCourseIds())){
+			throw new BizException("请选择需要合并的课程");
+		}
+		List<Long> allCourseIds = new ArrayList<>();
+		allCourseIds.add(courseMergeInfo.getId());
+		allCourseIds.addAll(courseMergeInfo.getMergeCourseIds());
+		List<CourseSchedule> allCourses = courseScheduleDao.findByCourseScheduleIds(allCourseIds);
+		for (CourseSchedule courseSchedule : allCourses) {
+			if(VIP.equals(courseSchedule.getGroupType())||PRACTICE.equals(courseSchedule.getGroupType())){
+				throw new BizException("VIP课、网管课暂不支持课程合并");
+			}
+			if(CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
+				throw new BizException("乐团网管课、线上基础技能课暂不支持课程合并");
+			}
+			if(Objects.isNull(courseMergeInfo.getClassGroupId())&&courseMergeInfo.getId().equals(courseSchedule.getId())){
+				courseMergeInfo.setClassGroupId(courseSchedule.getClassGroupId());
+			}
+		}
+		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(allCourseIds);
+//		Map<Long, Set<Integer>> courseStudentIdsMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.mapping(CourseScheduleStudentPayment::getUserId, Collectors.toSet())));
+		Set<Integer> allStudentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
+		if(courseScheduleStudentPayments.size()!=allStudentIds.size()){
+			throw new BizException("所选课程中学员重复");
+		}
+
+
+		List<CourseSchedule> courseSchedules=new ArrayList<>();
+		courseSchedules.add(courseMergeInfo);
+		courseAdjust(courseSchedules);
+
+		List<CourseSchedule> mergeCourses = allCourses.stream().filter(c->courseMergeInfo.getMergeCourseIds().contains(c.getId())).collect(Collectors.toList());
+		for (CourseSchedule courseSchedule : mergeCourses) {
+			courseSchedule.setNewCourseId(courseMergeInfo.getId());
+		}
+		courseScheduleDao.batchUpdate(mergeCourses);
+	}
 }

+ 19 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -538,6 +538,24 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		Set<Integer> studentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
 		List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(new ArrayList<>(studentIds));
 		List<Student> students = studentDao.findByStudentIds(new ArrayList<>(studentIds));
-		return null;
+		Map<Integer, Student> idStudentMap = students.stream().collect(Collectors.toMap(Student::getUserId, s -> s, (s1, s2) -> s1));
+		Set<Integer> subjectIds = new HashSet<>();
+		for (Student student : students) {
+			if(StringUtils.isBlank(student.getSubjectIdList())){
+				continue;
+			}
+			subjectIds.addAll(Arrays.stream(student.getSubjectIdList().split(",")).map(Integer::valueOf).collect(Collectors.toSet()));
+		}
+		if(!CollectionUtils.isEmpty(subjectIds)){
+			List<Subject> subjects = subjectDao.findBySubjectIds(new ArrayList<>(subjectIds));
+			for (SimpleUserDto simpleUserDto : usersSimpleInfo) {
+				if(StringUtils.isBlank(idStudentMap.get(simpleUserDto.getUserId()).getSubjectIdList())){
+					continue;
+				}
+				Set<Integer> userSubjectIds = Arrays.stream(idStudentMap.get(simpleUserDto.getUserId()).getSubjectIdList().split(",")).map(Integer::valueOf).collect(Collectors.toSet());
+				simpleUserDto.setSubjectNames(subjects.stream().filter(s->userSubjectIds.contains(s.getId())).map(Subject::getName).collect(Collectors.joining(",")));
+			}
+		}
+		return usersSimpleInfo;
 	}
 }

+ 9 - 4
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -6,10 +6,7 @@ import com.ym.mec.biz.dal.dao.ClassGroupDao;
 import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.VipGroupDao;
-import com.ym.mec.biz.dal.dto.BatchInsertCoursesDto;
-import com.ym.mec.biz.dal.dto.CoursePostponeDto;
-import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
-import com.ym.mec.biz.dal.dto.VipGroupCourseAdjustInfoDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.*;
@@ -215,6 +212,14 @@ public class CourseScheduleController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "课程合并")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/courseMerge','system')")
+    @PostMapping(value = "/courseMerge",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public HttpResponseResult courseMerge(CourseMergeDto courseMergeInfo){
+        courseScheduleService.courseMerge(courseMergeInfo);
+        return succeed();
+    }
+
     @ApiOperation(value = "根据班级列表调整课程")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/classGroupTeacherAdjust','system')")
     @PostMapping(value = "/classGroupTeacherAdjust")

+ 13 - 4
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleStudentPaymentController.java

@@ -10,16 +10,15 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Author Joburgess
@@ -40,4 +39,14 @@ public class CourseScheduleStudentPaymentController extends BaseController {
         return succeed(courseScheduleStudentPaymentService.queryCourseStudentList(queryInfo));
     }
 
+    @ApiOperation(value = "获取指定课程上的学员信息")
+    @GetMapping("/getCourseStudents")
+    @PreAuthorize("@pcs.hasPermissions('courseScheduleStudentPayment/getCourseStudents')")
+    public HttpResponseResult getCourseStudents(String courseIds){
+        if(StringUtils.isBlank(courseIds)){
+            return failed("请指定课程");
+        }
+        return succeed(courseScheduleStudentPaymentService.getCourseStudents(Arrays.stream(courseIds.split(",")).map(Long::valueOf).collect(Collectors.toList())));
+    }
+
 }