diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java index 4eece74f..3e9461af 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java @@ -485,7 +485,9 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService courseInfoIdPair) { + @Nullable Map courseInfoIdPair, + @Nullable Map resourcesQuestionIdPair + ) { Date now = new Date(); CoreUser currentUser = getUser(); diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java index 0cbcb2f3..b0458a0e 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java @@ -807,8 +807,8 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService resourcesQuestionIdPair = teacherOpenCourseMergeResourcesQuestionService.copySystemQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); // 取出来所有的课程章、节的ID。大于等于2,就是章和他的子节点.从系统题目表抽取 // teacherOpenCourseQuestionSettingService.copySystemQuestionChapterTestQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); // 从开课题库中抽取章节练习题 @@ -816,7 +816,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService queryByCondition(PageQuery query) { PageQuery ret = teacherOpenCourseMergeResourcesQuestionDao.queryByCondition(query); @@ -465,8 +468,8 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param allCourseInfo 指定的所有课程章节信息 * @param courseInfoIdPair 拷贝过来的ID段,旧ID和新ID的一个映射关系(非必填) */ - public void copySystemQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, - Collection allCourseInfo, @NotNull Map courseInfoIdPair) { + public Map copySystemQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, + Collection allCourseInfo, @NotNull Map courseInfoIdPair) { // 待拷贝的系统课程ID不能为空.才会执行 if (ObjectUtil.isNotEmpty(allCourseInfo)) { @@ -480,33 +483,12 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ // 系统题目库ID集合 Set resourcesQuestionIds = resourcesQuestionList.stream().map(ResourcesQuestion::getResourcesQuestionId).collect(toSet()); // 拷贝系统题目库到教师开课 - copyFromSystemQuestion(resourcesQuestionIds, teacherOpenCourseId, courseInfoIdPair); + return copyFromSystemQuestion(resourcesQuestionIds, teacherOpenCourseId, courseInfoIdPair); } + return new HashMap<>(); } - /** - * 根据指定的课程ID和章节ID集合,去从系统题目拷贝到开课题目库 - * - * @param teacherOpenCourseId 开课ID - * @param allCourseInfoIdsJoin 指定的所有课程章节ID - * @param courseInfoIdPair 拷贝过来的ID段,旧ID和新ID的一个映射关系(非必填) - */ - public void copySystemQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, - String allCourseInfoIdsJoin, @NotNull Map courseInfoIdPair) { - // 待拷贝的系统课程ID不能为空.才会执行 - if (ObjectUtil.isNotEmpty(allCourseInfoIdsJoin)) { - ResourcesQuestionQuery resourcesQuestionQuery = new ResourcesQuestionQuery(); - resourcesQuestionQuery.setCourseInfoIds(allCourseInfoIdsJoin); - resourcesQuestionQuery.setQuestionStatus(1); - List resourcesQuestionList = resourcesQuestionService.getValuesByQuery(resourcesQuestionQuery); - - // 系统题目库ID集合 - Set resourcesQuestionIds = resourcesQuestionList.stream().map(ResourcesQuestion::getResourcesQuestionId).collect(toSet()); - // 拷贝系统题目库到教师开课 - copyFromSystemQuestion(resourcesQuestionIds, teacherOpenCourseId, courseInfoIdPair); - } - } /** * 从resources_question 表,拷贝数据。类似从模板中,拉取数据 @@ -519,11 +501,11 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param courseInfoIdPair * @return */ - public void copyFromSystemQuestion(Set systemResourcesQuestionIds, - @NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, Map courseInfoIdPair) { + public Map copyFromSystemQuestion(Set systemResourcesQuestionIds, + @NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, Map courseInfoIdPair) { if (ObjectUtil.isEmpty(systemResourcesQuestionIds)) { - return; + return courseInfoIdPair; } // 题目ID集合 String ids = join(systemResourcesQuestionIds.toArray(), ","); @@ -536,11 +518,13 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ // 转换后的数据暂存 List convertedList = new ArrayList<>(); // 类转换方法 - resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion(resourcesQuestions, convertedList, courseInfoIdPair); + Map resourcesQuestionIdPair = resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion(resourcesQuestions, convertedList, courseInfoIdPair); // 设置开课ID convertedList.forEach(item -> item.setTeacherOpenCourseId(teacherOpenCourseId)); // 批量插入 teacherOpenCourseMergeResourcesQuestionDao.insertBatch(convertedList); + + return resourcesQuestionIdPair; } /** @@ -550,21 +534,37 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param to * @param courseInfoIdPair */ - public void resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion( + public Map resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion( @NotNull Collection from, @NotNull Collection to, Map courseInfoIdPair) { + + Map resourcesQuestionIdPair = new HashMap<>(); // 拷贝部分字段映射 - CopyOptions copyOptions = CopyOptions.create().setFieldMapping(MapUtil.of("courseInfoId", "teacherOpenCourseMergeCourseInfoId")); + Map of = MapUtil.of("courseInfoId", "teacherOpenCourseMergeCourseInfoId"); + of.put("resourcesQuestionId", "teacherOpenCourseMergeResourcesQuestionId"); + CopyOptions copyOptions = CopyOptions.create().setFieldMapping(of); // 拷贝 to.addAll(BeanUtil.copyToList(from, TeacherOpenCourseMergeResourcesQuestion.class, copyOptions)); + // 主动更改Id,并记录映射关系 + for (TeacherOpenCourseMergeResourcesQuestion teacherOpenCourseMergeResourcesQuestion : to) { + long newId = snowflake.nextId(); + + // 记录映射关系 + resourcesQuestionIdPair.put(teacherOpenCourseMergeResourcesQuestion.getTeacherOpenCourseMergeResourcesQuestionId(), + newId); + teacherOpenCourseMergeResourcesQuestion.setTeacherOpenCourseMergeCourseInfoId(newId); + } + if (ObjectUtil.isAllEmpty(to, courseInfoIdPair)) { - return; + return new HashMap<>(); } // 重置开课课程ID resetNewId(to, courseInfoIdPair); + + return resourcesQuestionIdPair; } /** diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java index fb152062..db6fd2dd 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java @@ -466,8 +466,7 @@ public class TeacherOpenCourseMergeResourcesQuestionController extends BaseContr */ @PostMapping(API + "/copyFromQuestion.do") public JsonResult copyFromQuestion(Long[] resourcesQuestionIds, Long teacherOpenCourseId) { - teacherOpenCourseMergeResourcesQuestionService.copyFromSystemQuestion(CollectionUtil.newHashSet(resourcesQuestionIds), teacherOpenCourseId, null); - return JsonResult.success(); + return JsonResult.success(teacherOpenCourseMergeResourcesQuestionService.copyFromSystemQuestion(CollectionUtil.newHashSet(resourcesQuestionIds), teacherOpenCourseId, null)); } /**