修复拷贝开课实训问题

beetlsql3-dev
yaodan 2 years ago
parent 779a20e9c4
commit f518949014

@ -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<TeacherOpen
@Override
public void resetOperationByTeacherOpenCourseId(Long teacherOpenCourseId) {
log.info("可能需要实现重置操作!");
log.info("重置开课课程");
TeacherOpenCourseHandsOnQuery courseHandsOnQuery = new TeacherOpenCourseHandsOnQuery();
courseHandsOnQuery.setTeacherOpenCourseId(teacherOpenCourseId);
List<TeacherOpenCourseHandsOn> values = getValuesByQuery(courseHandsOnQuery);
// 根据ID删除数据
Set<Long> 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<TeacherOpen
return JsonResult.success(studentHandsOnVOS);
}
/**
*
*
* @param teacherOpenCourseId id
* @param courseInfoId id
* @param courseInfoIdPair id
* @author zhouzhao
* @date 2023/04/28 03:59:44
*/
public void copyOpenCourseHandsToOpenCourse(@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId,
@NotNull(message = "课程ID不能为空") Long courseInfoId,
@Nullable Map<Long, Long> courseInfoIdPair,
@Nullable Map<Long, Long> 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<TeacherOpenCourseHandsOn> handsOnList = getValuesByQuery(handsOnQuery);
if (CollectionUtils.isEmpty(handsOnList)) {
return;
}
Map<Long, Long> 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<TeacherOpenCourseHandsOnSimulationTasks> handsOnSimulationTasksList = teacherOpenCourseHandsOnSimulationTasksService.getValuesByQuery(handsOnSimulationTasksQuery);
Map<Long, Long> 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<Long> 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<TeacherOpenCourseHandsOnSimulationTasksAssessment> 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<TeacherOpenCourseHandsOnSimulationTasksFile> 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<TeacherOpen
@NotNull(message = "课程ID不能为空") Long courseInfoId,
@Nullable Map<Long, Long> courseInfoIdPair,
@Nullable Map<Long, Long> resourcesQuestionIdPair
) {
) {
Date now = new Date();
CoreUser currentUser = getUser();

@ -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<TeacherOpenCourseHandsOnSimulationTasksFile> values = getValuesByQuery(query);
// 根据ID删除数据
Set<Long> delIdList = values.stream().map(TeacherOpenCourseHandsOnSimulationTasksFile::getTaskId).collect(toSet());
if (ObjectUtil.isNotEmpty(delIdList)) {
deleteTeacherOpenCourseHandsOnSimulationTasksFile(join(delIdList.toArray(), ","));
}
}
@Override

@ -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<TeacherOpenCourseHandsOnSimulationTasks> values = getValuesByQuery(teacherOpenCourseHandsOnSimulationTasksQuery);
// 根据ID删除数据
Set<Long> delIdList = values.stream().map(TeacherOpenCourseHandsOnSimulationTasks::getTaskId).collect(toSet());
if (ObjectUtil.isNotEmpty(delIdList)) {
deleteTeacherOpenCourseHandsOnSimulationTasks(join(delIdList.toArray(), ","));
}
}
@Override

@ -1386,13 +1386,17 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
// 如果课程章节没查到记录,则下面的资源也没必要执行,资源依赖课程章节
if (ObjectUtil.isNotEmpty(courseInfos)) {
// 拷贝系统题目库到教师开课
teacherOpenCourseMergeResourcesQuestionService.copyOpenCourseQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
Map<Long, Long> 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);
}
}

@ -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<TeacherOpenCourseMergeResourcesQuestion> queryByCondition(PageQuery query) {
@ -489,7 +489,6 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ
}
/**
* resources_question
* <p>
@ -505,7 +504,7 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ
@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId, Map<Long, Long> 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<TeacherOpenCourseMergeCourseInfo> allTeacherOpenCourseMergeCourseInfo, @NotNull Map<Long, Long> courseInfoIdPair) {
public Map<Long, Long> copyOpenCourseQuestionToOpenCourse(@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId,
Collection<TeacherOpenCourseMergeCourseInfo> allTeacherOpenCourseMergeCourseInfo, @NotNull Map<Long, Long> courseInfoIdPair) {
// 待拷贝的开课课程课程ID不能为空.才会执行
if (ObjectUtil.isNotEmpty(allTeacherOpenCourseMergeCourseInfo)) {
// 取出所有的课程章节ID
@ -706,8 +705,9 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ
List<TeacherOpenCourseMergeResourcesQuestion> 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<TeacherOpenCourseMergeResourcesQuestion> questionList,
@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId, Map<Long, Long> courseInfoIdPair) {
public Map<Long, Long> copyFromOpenCourseQuestion(List<TeacherOpenCourseMergeResourcesQuestion> questionList,
@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId, Map<Long, Long> courseInfoIdPair) {
HashMap<Long, Long> questionIdMapOldAndNew = new HashMap<>();
if (ObjectUtil.isEmpty(questionList)) {
return;
return new HashMap<>();
}
// 转换后的数据暂存
List<TeacherOpenCourseMergeResourcesQuestion> 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;
}

Loading…
Cancel
Save