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 8aa5585b..977e8824 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java @@ -1,9 +1,11 @@ package com.ibeetl.jlw.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -34,7 +36,9 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.util.ArrayUtil.join; import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; +import static java.util.stream.Collectors.toSet; /** * 教师开课-课程实操 Service @@ -336,7 +340,16 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService values = getValuesByQuery(courseHandsOnQuery); + + // 根据ID删除数据 + Set delIdList = values.stream().map(TeacherOpenCourseHandsOn::getHandsOnId).collect(toSet()); + if (ObjectUtil.isNotEmpty(delIdList)) { + deleteTeacherOpenCourseHandsOn(join(delIdList.toArray(), ",")); + } } @Override @@ -474,6 +487,144 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService courseInfoIdPair, + @Nullable Map resourcesQuestionIdPair + ) { + if (CollUtil.isEmpty(courseInfoIdPair)){ + return; + } + + if (resourcesQuestionIdPair==null){ + resourcesQuestionIdPair = new HashMap<>(); + } + Date now = new Date(); + CoreUser currentUser = getUser(); + if (currentUser==null){ + throw new PlatformException("请先登录"); + } + TeacherOpenCourseHandsOnQuery handsOnQuery = new TeacherOpenCourseHandsOnQuery(); + //归属课程 + handsOnQuery.setCourseInfoId(courseInfoId); + // 已上架的 + List handsOnList = getValuesByQuery(handsOnQuery); + + if (CollectionUtils.isEmpty(handsOnList)) { + return; + } + + + Map handsOnIdOldToNewMap = new HashMap<>(); + + for (TeacherOpenCourseHandsOn teacherOpenCourseHandsOn : handsOnList) { + Long handsOnIdTemp = teacherOpenCourseHandsOn.getHandsOnId(); + String courseChildNodeTemp = teacherOpenCourseHandsOn.getCourseChildNode(); + + Long newHandsOnId = snowflake.nextId(); + handsOnIdOldToNewMap.put(handsOnIdTemp, newHandsOnId); + teacherOpenCourseHandsOn.setCourseChildNode(courseInfoIdPair.get(Long.parseLong(courseChildNodeTemp)).toString()); + teacherOpenCourseHandsOn.setHandsOnId(newHandsOnId); + teacherOpenCourseHandsOn.setTeacherOpenCourseId(teacherOpenCourseId); + //别问我这里为什么放这个,他们自己的代码就是这样的 + teacherOpenCourseHandsOn.setCourseInfoId(teacherOpenCourseId); + teacherOpenCourseHandsOn.setOrgId(currentUser.getOrgId()); + teacherOpenCourseHandsOn.setUserId(currentUser.getId()); + teacherOpenCourseHandsOn.setAddTime(now); + + } + // 批量插入 + insertBatch(handsOnList); + + String handsOnIds = handsOnIdOldToNewMap.keySet().stream().map(String::valueOf).collect(Collectors.joining(",")); + TeacherOpenCourseHandsOnSimulationTasksQuery handsOnSimulationTasksQuery = new TeacherOpenCourseHandsOnSimulationTasksQuery(); + handsOnSimulationTasksQuery.setHandsOnIdPlural(handsOnIds); + List handsOnSimulationTasksList = teacherOpenCourseHandsOnSimulationTasksService.getValuesByQuery(handsOnSimulationTasksQuery); + + + + + Map simulationTaskOldToNewMap = new HashMap<>(); + for (TeacherOpenCourseHandsOnSimulationTasks teacherOpenCourseHandsOnSimulationTasks : handsOnSimulationTasksList) { + Long newHandsOnId = handsOnIdOldToNewMap.get(teacherOpenCourseHandsOnSimulationTasks.getHandsOnId()); + teacherOpenCourseHandsOnSimulationTasks.setHandsOnId(newHandsOnId); + teacherOpenCourseHandsOnSimulationTasks.setTeacherOpenCourseId(teacherOpenCourseId); + teacherOpenCourseHandsOnSimulationTasks.setOrgId(currentUser.getOrgId()); + teacherOpenCourseHandsOnSimulationTasks.setUserId(currentUser.getId()); + teacherOpenCourseHandsOnSimulationTasks.setAddTime(now); + + Long oldTaskId = teacherOpenCourseHandsOnSimulationTasks.getTaskId(); + Long newTaskId = snowflake.nextId(); + simulationTaskOldToNewMap.put(oldTaskId, newTaskId); + teacherOpenCourseHandsOnSimulationTasks.setTaskId(newTaskId); + + if (StringUtils.isNotBlank(teacherOpenCourseHandsOnSimulationTasks.getTaskList())){ + List newIdList = new ArrayList<>(); + String[] split = teacherOpenCourseHandsOnSimulationTasks.getTaskList().split(","); + for (String s : split) { + Long oldQuestionId = Long.parseLong(s); + Long newQuestionId = resourcesQuestionIdPair.get(oldQuestionId); + newIdList.add(newQuestionId!=null ? newQuestionId : oldQuestionId); + } + String collect = newIdList.stream().map(String::valueOf).collect(Collectors.joining(",")); + teacherOpenCourseHandsOnSimulationTasks.setTaskList(collect); + } + } + + // 批量插入 + teacherOpenCourseHandsOnSimulationTasksService.insertBatch(handsOnSimulationTasksList); + + + TeacherOpenCourseHandsOnSimulationTasksAssessmentQuery handsOnSimulationTasksAssessmentQuery = new TeacherOpenCourseHandsOnSimulationTasksAssessmentQuery(); + handsOnSimulationTasksAssessmentQuery.setHandsOnIdPlural(handsOnIds); + List handsOnSimulationTasksAssessmentList = teacherOpenCourseHandsOnSimulationTasksAssessmentService.getValuesByQuery(handsOnSimulationTasksAssessmentQuery); + + + handsOnSimulationTasksAssessmentList.forEach(teacherOpenCourseHandsOnSimulationTasksAssessment -> { + teacherOpenCourseHandsOnSimulationTasksAssessment.setHandsOnTaskId(simulationTaskOldToNewMap.get(teacherOpenCourseHandsOnSimulationTasksAssessment.getHandsOnTaskId())); + teacherOpenCourseHandsOnSimulationTasksAssessment.setHandsOnId(handsOnIdOldToNewMap.get(teacherOpenCourseHandsOnSimulationTasksAssessment.getHandsOnId())); + + teacherOpenCourseHandsOnSimulationTasksAssessment.setOrgId(currentUser.getOrgId()); + teacherOpenCourseHandsOnSimulationTasksAssessment.setUserId(currentUser.getId()); + teacherOpenCourseHandsOnSimulationTasksAssessment.setHandsOnSimulationTasksAssessmentId(snowflake.nextId()); + teacherOpenCourseHandsOnSimulationTasksAssessment.setAddTime(now); + }); + + // 批量插入 + teacherOpenCourseHandsOnSimulationTasksAssessmentService.insertBatch(handsOnSimulationTasksAssessmentList); + + + TeacherOpenCourseHandsOnSimulationTasksFileQuery handsOnSimulationTasksFileQuery = new TeacherOpenCourseHandsOnSimulationTasksFileQuery(); + handsOnSimulationTasksFileQuery.setHandsOnIdPlural(handsOnIds); + + List handsOnSimulationTasksFileList = teacherOpenCourseHandsOnSimulationTasksFileService.getValuesByQuery(handsOnSimulationTasksFileQuery); + + handsOnSimulationTasksFileList.forEach(item -> { + item.setTaskId(simulationTaskOldToNewMap.get(item.getTaskId())); + item.setHandsOnId(handsOnIdOldToNewMap.get(item.getHandsOnId())); + item.setTeacherOpenCourseId(teacherOpenCourseId); + item.setOrgId(currentUser.getOrgId()); + item.setUserId(currentUser.getId()); + item.setTaskFileId(snowflake.nextId()); + item.setAddTime(now); + }); + + // 批量插入 + teacherOpenCourseHandsOnSimulationTasksFileService.insertBatch(handsOnSimulationTasksFileList); + + + + } + /** * 复制系统授权课实训到开课 * @@ -487,7 +638,7 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService courseInfoIdPair, @Nullable Map resourcesQuestionIdPair - ) { + ) { Date now = new Date(); CoreUser currentUser = getUser(); diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksFileService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksFileService.java index 02f07380..17e297fd 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksFileService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksFileService.java @@ -1,5 +1,6 @@ package com.ibeetl.jlw.service; +import cn.hutool.core.util.ObjectUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -22,6 +23,10 @@ import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.Set; + +import static cn.hutool.core.util.ArrayUtil.join; +import static java.util.stream.Collectors.toSet; /** * 教师开课-课程实操任务附件 Service @@ -155,7 +160,16 @@ public class TeacherOpenCourseHandsOnSimulationTasksFileService extends CoreBase @Override public void resetOperationByTeacherOpenCourseId(Long teacherOpenCourseId) { - log.info("可能需要实现重置操作!"); + log.info("重置开课课程"); + TeacherOpenCourseHandsOnSimulationTasksFileQuery query = new TeacherOpenCourseHandsOnSimulationTasksFileQuery(); + query.setTeacherOpenCourseId(teacherOpenCourseId); + List values = getValuesByQuery(query); + + // 根据ID删除数据 + Set delIdList = values.stream().map(TeacherOpenCourseHandsOnSimulationTasksFile::getTaskId).collect(toSet()); + if (ObjectUtil.isNotEmpty(delIdList)) { + deleteTeacherOpenCourseHandsOnSimulationTasksFile(join(delIdList.toArray(), ",")); + } } @Override diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksService.java index 74ce6ae6..894f91c9 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnSimulationTasksService.java @@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; -import cn.jlw.Interceptor.SCoreUser; +import cn.hutool.core.util.ObjectUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -36,12 +36,12 @@ import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotNull; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.util.ArrayUtil.join; +import static java.util.stream.Collectors.toSet; + /** * 教师开课-课程实操任务 Service * 当分布式ID开启后请勿使用insert(*,true) @@ -507,7 +507,16 @@ public class TeacherOpenCourseHandsOnSimulationTasksService extends CoreBaseServ @Override public void resetOperationByTeacherOpenCourseId(Long teacherOpenCourseId) { - log.info("可能需要实现重置操作!"); + log.info("重置开课课程"); + TeacherOpenCourseHandsOnSimulationTasksQuery teacherOpenCourseHandsOnSimulationTasksQuery = new TeacherOpenCourseHandsOnSimulationTasksQuery(); + teacherOpenCourseHandsOnSimulationTasksQuery.setTeacherOpenCourseId(teacherOpenCourseId); + List values = getValuesByQuery(teacherOpenCourseHandsOnSimulationTasksQuery); + + // 根据ID删除数据 + Set delIdList = values.stream().map(TeacherOpenCourseHandsOnSimulationTasks::getTaskId).collect(toSet()); + if (ObjectUtil.isNotEmpty(delIdList)) { + deleteTeacherOpenCourseHandsOnSimulationTasks(join(delIdList.toArray(), ",")); + } } @Override 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 b0458a0e..c77eb8d8 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java @@ -1386,13 +1386,17 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService resourcesQuestionIdPair =teacherOpenCourseMergeResourcesQuestionService.copyOpenCourseQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); // 取出来所有的课程章、节的ID。大于等于2,就是章和他的子节点.从系统题目表抽取 // teacherOpenCourseQuestionSettingService.copySystemQuestionChapterTestQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); // 从开课题库中抽取章节练习题 teacherOpenCourseQuestionSettingService.copyOpenQuestionChapterTestQuestionToOpenCourse(teacherOpenCourseId, courseInfoIdPair); // 拷贝开课资源库到教师开课 teacherOpenCourseMergeResourcesInfoService.copyOpenCourseResourcesInfoToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); + + teacherOpenCourseHandsOnService.copyOpenCourseHandsToOpenCourse(teacherOpenCourseId, oldTeacherOpenCourseId, courseInfoIdPair,resourcesQuestionIdPair); + + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java index f73c7c12..510639b3 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java @@ -82,7 +82,7 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ @Autowired private ResourcesQuestionSnapshotService resourcesQuestionSnapshotService; - private static final Snowflake snowflake = new Snowflake(); + private static final Snowflake snowflake = new Snowflake(); public PageQuery queryByCondition(PageQuery query) { @@ -489,7 +489,6 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ } - /** * 从resources_question 表,拷贝数据。类似从模板中,拉取数据 *

@@ -505,7 +504,7 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ @NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, Map courseInfoIdPair) { if (ObjectUtil.isEmpty(systemResourcesQuestionIds)) { - return courseInfoIdPair; + return new HashMap<>(); } // 题目ID集合 String ids = join(systemResourcesQuestionIds.toArray(), ","); @@ -554,7 +553,7 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ // 记录映射关系 resourcesQuestionIdPair.put(teacherOpenCourseMergeResourcesQuestion.getTeacherOpenCourseMergeResourcesQuestionId(), newId); - teacherOpenCourseMergeResourcesQuestion.setTeacherOpenCourseMergeCourseInfoId(newId); + teacherOpenCourseMergeResourcesQuestion.setTeacherOpenCourseMergeResourcesQuestionId(newId); } if (ObjectUtil.isAllEmpty(to, courseInfoIdPair)) { @@ -693,8 +692,8 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ return result; } - public void copyOpenCourseQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, - Collection allTeacherOpenCourseMergeCourseInfo, @NotNull Map courseInfoIdPair) { + public Map copyOpenCourseQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, + Collection allTeacherOpenCourseMergeCourseInfo, @NotNull Map courseInfoIdPair) { // 待拷贝的开课课程课程ID不能为空.才会执行 if (ObjectUtil.isNotEmpty(allTeacherOpenCourseMergeCourseInfo)) { // 取出所有的课程章节ID @@ -706,8 +705,9 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ List questionList = getValuesByQuery(teacherOpenCourseMergeResourcesQuestionQuery); // 拷贝其他开课题目目库到教师开课 - copyFromOpenCourseQuestion(questionList, teacherOpenCourseId, courseInfoIdPair); + return copyFromOpenCourseQuestion(questionList, teacherOpenCourseId, courseInfoIdPair); } + return new HashMap<>(); } /** @@ -721,17 +721,16 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param courseInfoIdPair * @return */ - public void copyFromOpenCourseQuestion(List questionList, - @NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, Map courseInfoIdPair) { + public Map copyFromOpenCourseQuestion(List questionList, + @NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, Map courseInfoIdPair) { + HashMap questionIdMapOldAndNew = new HashMap<>(); if (ObjectUtil.isEmpty(questionList)) { - return; + return new HashMap<>(); } // 转换后的数据暂存 List convertedList = new ArrayList<>(); - //// 类转换方法 - //resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion(resourcesQuestions, convertedList, courseInfoIdPair); // 重置开课课程ID resetNewId(questionList, courseInfoIdPair); @@ -739,11 +738,16 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ // 设置开课ID questionList.forEach(item -> { item.setTeacherOpenCourseId(teacherOpenCourseId); - item.setTeacherOpenCourseMergeResourcesQuestionId(null); + Long oldId = item.getTeacherOpenCourseMergeResourcesQuestionId(); + long newId = snowflake.nextId(); + questionIdMapOldAndNew.put(oldId, newId); + item.setTeacherOpenCourseMergeResourcesQuestionId(newId); } ); // 批量插入 teacherOpenCourseMergeResourcesQuestionDao.insertBatch(questionList); + + return questionIdMapOldAndNew; }