|
|
|
@ -6,10 +6,10 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.lang.Snowflake;
|
|
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
|
|
import cn.hutool.core.stream.CollectorUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
|
|
import cn.jlw.util.ToolUtils;
|
|
|
|
|
import cn.jlw.validate.ValidateConfig;
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.google.common.base.Optional;
|
|
|
|
@ -23,10 +23,10 @@ import com.ibeetl.admin.core.web.JsonResult;
|
|
|
|
|
import com.ibeetl.admin.core.web.JsonReturnCode;
|
|
|
|
|
import com.ibeetl.jlw.dao.TeacherOpenCourseMergeCourseInfoDao;
|
|
|
|
|
import com.ibeetl.jlw.entity.*;
|
|
|
|
|
import com.ibeetl.jlw.web.query.ResourcesInfoQuery;
|
|
|
|
|
import com.ibeetl.jlw.web.query.ResourcesQuestionQuery;
|
|
|
|
|
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO;
|
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeCourseInfoQuery;
|
|
|
|
|
import lombok.SneakyThrows;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
|
@ -41,6 +41,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Nullable;
|
|
|
|
|
import javax.validation.constraints.NotBlank;
|
|
|
|
|
import javax.validation.constraints.NotEmpty;
|
|
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
|
@ -53,7 +54,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|
|
|
|
import static cn.hutool.core.util.ArrayUtil.join;
|
|
|
|
|
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
|
|
|
|
|
import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
|
|
|
|
|
import static java.util.stream.Collectors.joining;
|
|
|
|
|
import static java.util.stream.Collectors.toSet;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -64,12 +64,14 @@ import static java.util.stream.Collectors.toSet;
|
|
|
|
|
@Service
|
|
|
|
|
@Transactional
|
|
|
|
|
@Validated
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<TeacherOpenCourseMergeCourseInfo> implements DeleteResourcesBy {
|
|
|
|
|
|
|
|
|
|
@Autowired private TeacherOpenCourseMergeCourseInfoDao teacherOpenCourseMergeCourseInfoDao;
|
|
|
|
|
@Autowired private CourseInfoService courseInfoService;
|
|
|
|
|
@Autowired private TeacherOpenCourseMergeResourcesQuestionService teacherOpenCourseMergeResourcesQuestionService;
|
|
|
|
|
@Autowired private StudentService studentService;
|
|
|
|
|
@Autowired @Lazy private TeacherOpenCourseQuestionSettingService teacherOpenCourseQuestionSettingService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private UniversitiesCollegesJurisdictionExperimentalSystemService universitiesCollegesJurisdictionExperimentalSystemService;
|
|
|
|
|
@Autowired
|
|
|
|
@ -189,6 +191,12 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
return msg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 开课题目配置单表新增
|
|
|
|
|
* 更新缓存
|
|
|
|
|
* @param teacherOpenCourseMergeCourseInfoQuery
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public JsonResult add(TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery){
|
|
|
|
|
String msg = "";
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = teacherOpenCourseMergeCourseInfoQuery.pojo();
|
|
|
|
@ -204,6 +212,33 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
return jsonResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 添加开课课程
|
|
|
|
|
*
|
|
|
|
|
* 任务一:添加开课课程主表
|
|
|
|
|
* 任务二:如果是章节节点,则根据开课课程的章节名称来添加到开课题目配置表;
|
|
|
|
|
* 任务三:添加开课题目快照表
|
|
|
|
|
*
|
|
|
|
|
* @param teacherOpenCourseMergeCourseInfoQuery
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public JsonResult addCourseAndQuestionWithQuestionSnap(@Validated(ValidateConfig.ADD.class) @NotNull(message = "开课题目信息不能为空!")
|
|
|
|
|
TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery,
|
|
|
|
|
@Nullable List<TeacherOpenCourseQuestionSettingDTO> questionSettingOptions, Map<Long, Long> courseInfoIdPair) {
|
|
|
|
|
// 添加开课课程表
|
|
|
|
|
JsonResult jsonResult = add(teacherOpenCourseMergeCourseInfoQuery);
|
|
|
|
|
|
|
|
|
|
// 开课课程:2 章节节点
|
|
|
|
|
if(Integer.valueOf(2).equals(teacherOpenCourseMergeCourseInfoQuery.getCourseInfoType())) {
|
|
|
|
|
// 添加到题目配置和开课题目快照表,这里null 不拷贝题目
|
|
|
|
|
teacherOpenCourseQuestionSettingService.addTeacherOpenCourseQuestionByCourseInfo(teacherOpenCourseMergeCourseInfoQuery, questionSettingOptions, courseInfoIdPair);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return jsonResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String edit(TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery){
|
|
|
|
|
String msg = "";
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = teacherOpenCourseMergeCourseInfoQuery.pojo();
|
|
|
|
@ -480,11 +515,11 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
*
|
|
|
|
|
* @param copyToList 带递归层级的开课课程列表
|
|
|
|
|
* @param parentId 开课课程 父辈ID
|
|
|
|
|
* @param idPair 转换之前的ID和转换之后的ID对(用于后面的题目、资源的ID替换)
|
|
|
|
|
* @param courseInfoIdPair 转换之前的ID和转换之后的ID对(用于后面的题目、资源的ID替换)
|
|
|
|
|
* @return 转换之前的ID和转换之后的ID对(用于后面的题目、资源的ID替换)
|
|
|
|
|
*/
|
|
|
|
|
public void batchUpdateSomeMergeId(List<TeacherOpenCourseMergeCourseInfoTree> copyToList,
|
|
|
|
|
final Long parentId, ConcurrentHashMap<Long, Long> idPair) {
|
|
|
|
|
final Long parentId, ConcurrentHashMap<Long, Long> courseInfoIdPair) {
|
|
|
|
|
|
|
|
|
|
// 转换成线程安全的集合,来并行操作。
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfoTree> safeList = new CopyOnWriteArrayList<>(copyToList);
|
|
|
|
@ -496,8 +531,8 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
Long newId = defaultIfNull(parentId, snowflake.nextId());
|
|
|
|
|
item.setTeacherOpenCourseMergeCourseInfoId(newId);
|
|
|
|
|
// 存储ID对
|
|
|
|
|
idPair.put(item.getTeacherOpenCourseMergeCourseInfoId(), newId);
|
|
|
|
|
batchUpdateSomeMergeId(item.getChildren(), snowflake.nextId(), idPair);
|
|
|
|
|
courseInfoIdPair.put(item.getTeacherOpenCourseMergeCourseInfoId(), newId);
|
|
|
|
|
batchUpdateSomeMergeId(item.getChildren(), snowflake.nextId(), courseInfoIdPair);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -506,13 +541,13 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
* 处理一维集合,更换ID和父辈ID的方法
|
|
|
|
|
*
|
|
|
|
|
* @param copyToList 开课课程列表
|
|
|
|
|
* @param initIdPair 初始化的ID对
|
|
|
|
|
* @param initcourseInfoIdPair 初始化的ID对
|
|
|
|
|
*/
|
|
|
|
|
public Map<Long, Long> batchUpdateArrayListSomeMergeId(List<TeacherOpenCourseMergeCourseInfo> copyToList,
|
|
|
|
|
// 不能为空,但是可以传递empty的Map
|
|
|
|
|
@NotNull(message = "初始化ID对不能为空!") Map<Long, Long> initIdPair) {
|
|
|
|
|
@NotNull(message = "初始化ID对不能为空!") Map<Long, Long> initcourseInfoIdPair) {
|
|
|
|
|
|
|
|
|
|
Map<Long, Long> idPair = new HashMap<>(initIdPair);
|
|
|
|
|
Map<Long, Long> courseInfoIdPair = new HashMap<>(initcourseInfoIdPair);
|
|
|
|
|
|
|
|
|
|
// 查找列表中所有的ID
|
|
|
|
|
Set<Long> mergeCourseInfoIdSet = copyToList.stream()
|
|
|
|
@ -520,15 +555,15 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
|
|
|
|
|
for (Long oldId : mergeCourseInfoIdSet) {
|
|
|
|
|
// 只取第一次ID对,后面加进来的丢弃
|
|
|
|
|
if (!idPair.containsKey(oldId)) {
|
|
|
|
|
idPair.put(oldId, snowflake.nextId());
|
|
|
|
|
if (!courseInfoIdPair.containsKey(oldId)) {
|
|
|
|
|
courseInfoIdPair.put(oldId, snowflake.nextId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 替换ID和父类ID
|
|
|
|
|
updateSpecifyMergeCourseInfoIdTargetList(copyToList, idPair);
|
|
|
|
|
updateSpecifyMergeCourseInfoIdTargetList(copyToList, courseInfoIdPair);
|
|
|
|
|
|
|
|
|
|
return idPair;
|
|
|
|
|
return courseInfoIdPair;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -606,12 +641,12 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
* 修改章节点的父类ID字段
|
|
|
|
|
*
|
|
|
|
|
* @param courseInfoList 系统课程列表
|
|
|
|
|
* @param someIdPair 一些修改前修改后的ID对(指定一些修改的ID对)
|
|
|
|
|
* @param somecourseInfoIdPair 一些修改前修改后的ID对(指定一些修改的ID对)
|
|
|
|
|
*/
|
|
|
|
|
public void updateSpecifyIdTargetList(List<CourseInfo> courseInfoList,
|
|
|
|
|
@NotEmpty(message = "ID对不能为空!") Map<Long, Long> someIdPair) {
|
|
|
|
|
@NotEmpty(message = "ID对不能为空!") Map<Long, Long> somecourseInfoIdPair) {
|
|
|
|
|
for (CourseInfo courseInfo : courseInfoList) {
|
|
|
|
|
someIdPair.forEach((oldId, newId) -> {
|
|
|
|
|
somecourseInfoIdPair.forEach((oldId, newId) -> {
|
|
|
|
|
if(courseInfo.getCourseInfoId().equals(oldId)) {
|
|
|
|
|
courseInfo.setCourseInfoId(newId);
|
|
|
|
|
}
|
|
|
|
@ -626,12 +661,12 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
* 修改章节点的父类ID字段
|
|
|
|
|
*
|
|
|
|
|
* @param courseInfoList 系统课程列表
|
|
|
|
|
* @param someIdPair 一些修改前修改后的ID对(指定一些修改的ID对)
|
|
|
|
|
* @param somecourseInfoIdPair 一些修改前修改后的ID对(指定一些修改的ID对)
|
|
|
|
|
*/
|
|
|
|
|
public void updateSpecifyMergeCourseInfoIdTargetList(List<TeacherOpenCourseMergeCourseInfo> courseInfoList,
|
|
|
|
|
@NotEmpty(message = "ID对不能为空!") Map<Long, Long> someIdPair) {
|
|
|
|
|
@NotEmpty(message = "ID对不能为空!") Map<Long, Long> somecourseInfoIdPair) {
|
|
|
|
|
for (TeacherOpenCourseMergeCourseInfo courseInfo : courseInfoList) {
|
|
|
|
|
someIdPair.forEach((oldId, newId) -> {
|
|
|
|
|
somecourseInfoIdPair.forEach((oldId, newId) -> {
|
|
|
|
|
if(courseInfo.getTeacherOpenCourseMergeCourseInfoId().equals(oldId)) {
|
|
|
|
|
courseInfo.setTeacherOpenCourseMergeCourseInfoId(newId);
|
|
|
|
|
}
|
|
|
|
@ -654,7 +689,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
public Map<Long, Long> copyFromCourseInfo(@NotEmpty(message = "系统课程ID不能为空!") Set<Long> courseInfoIds,
|
|
|
|
|
@NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) {
|
|
|
|
|
|
|
|
|
|
ConcurrentHashMap<Long, Long> idPair = new ConcurrentHashMap<>();
|
|
|
|
|
ConcurrentHashMap<Long, Long> courseInfoIdPair = new ConcurrentHashMap<>(16);
|
|
|
|
|
// 查询是否绑定过课程
|
|
|
|
|
boolean notExists = teacherOpenCourseMergeCourseInfoDao.isNotExistsByTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
|
|
|
|
@ -672,30 +707,39 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
List<CourseInfo> chapterList = courseInfoService.getCourseResources(courseInfoId);
|
|
|
|
|
|
|
|
|
|
// 全部归类到教师开课时候,创建的开课课程ID下。支持一对多个系统课程的拷贝
|
|
|
|
|
idPair.put(currentCourseInfo.getCourseInfoId(), openCourseTargetInfo.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
|
courseInfoIdPair.put(currentCourseInfo.getCourseInfoId(), openCourseTargetInfo.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
|
// 先根据ID清楚现有的课程章节小节这个表
|
|
|
|
|
String delCourseInfoIds = chapterList.stream().map(CourseInfo::getCourseInfoId).collect(CollectorUtil.joining(","));
|
|
|
|
|
deleteTeacherOpenCourseMergeCourseInfo(delCourseInfoIds);
|
|
|
|
|
|
|
|
|
|
// 拷贝部分字段映射
|
|
|
|
|
CopyOptions copyOptions = CopyOptions.create().setFieldMapping(MapUtil.of("courseInfoId", "teacherOpenCourseMergeCourseInfoId"));
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> copyToList =
|
|
|
|
|
BeanUtil.copyToList(chapterList, TeacherOpenCourseMergeCourseInfo.class, copyOptions);
|
|
|
|
|
if (ObjectUtil.isEmpty(copyToList)) { return; }
|
|
|
|
|
// 设置开课ID
|
|
|
|
|
copyToList.forEach(item -> {
|
|
|
|
|
item.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
item.setCourseInfoName(item.getCourseInfoName().replaceAll(" ", ""));
|
|
|
|
|
});
|
|
|
|
|
resetOperationByTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> copyToList = new ArrayList<>();
|
|
|
|
|
// 类转换
|
|
|
|
|
courseInfoListConvertTeacherOpenCourseMergeCourseInfoList(chapterList, copyToList);
|
|
|
|
|
|
|
|
|
|
// 最右侧的idPair 可以理解成是初始化的Map。Map特性Key是唯一的。
|
|
|
|
|
idPair.putAll(batchUpdateArrayListSomeMergeId(copyToList, idPair));
|
|
|
|
|
if (ObjectUtil.isNotEmpty(copyToList)) {
|
|
|
|
|
// 设置开课ID
|
|
|
|
|
copyToList.forEach(item -> {
|
|
|
|
|
item.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
item.setCourseInfoName(item.getCourseInfoName().replaceAll(" ", ""));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 批量插入
|
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insertBatch(copyToList);
|
|
|
|
|
// 最右侧的courseInfoIdPair 可以理解成是初始化的Map。Map特性Key是唯一的。
|
|
|
|
|
courseInfoIdPair.putAll(batchUpdateArrayListSomeMergeId(copyToList, courseInfoIdPair));
|
|
|
|
|
|
|
|
|
|
// 批量插入
|
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insertBatch(copyToList);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return idPair;
|
|
|
|
|
return Collections.unmodifiableMap(courseInfoIdPair);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void courseInfoListConvertTeacherOpenCourseMergeCourseInfoList(@NotNull List<CourseInfo> chapterList, @NotNull Collection<TeacherOpenCourseMergeCourseInfo> result) {
|
|
|
|
|
// 拷贝部分字段映射
|
|
|
|
|
CopyOptions copyOptions = CopyOptions.create().setFieldMapping(MapUtil.of("courseInfoId", "teacherOpenCourseMergeCourseInfoId"));
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> copyToList =
|
|
|
|
|
BeanUtil.copyToList(chapterList, TeacherOpenCourseMergeCourseInfo.class, copyOptions);
|
|
|
|
|
|
|
|
|
|
result.addAll(copyToList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -710,39 +754,28 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
public void importCourseInfo(@NotEmpty(message = "系统课程ID不能为空!") Set<Long> courseInfoIds,
|
|
|
|
|
@NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) {
|
|
|
|
|
|
|
|
|
|
// 拷贝课程章节
|
|
|
|
|
Map<Long, Long> idPair = copyFromCourseInfo(courseInfoIds, teacherOpenCourseId);
|
|
|
|
|
// 拷贝课程章节。返回的Map是不可修改的。
|
|
|
|
|
Map<Long, Long> courseInfoIdPair = copyFromCourseInfo(courseInfoIds, teacherOpenCourseId);
|
|
|
|
|
|
|
|
|
|
// 开启并行处理
|
|
|
|
|
courseInfoIds.stream().parallel().forEach(courseInfoId -> {
|
|
|
|
|
// 当前的课程节点信息
|
|
|
|
|
// CourseInfo currentCourseInfo = courseInfoService.getById(courseInfoId);
|
|
|
|
|
// 获取这个课程章节下的所有的子章节信息
|
|
|
|
|
// #courseInfoId 这里指的是课程节点的ID
|
|
|
|
|
List<CourseInfo> chapterList = courseInfoService.getCourseResources(courseInfoId);
|
|
|
|
|
// 去重后的章和节
|
|
|
|
|
HashSet<CourseInfo> courseInfos = CollectionUtil.newHashSet(chapterList);
|
|
|
|
|
|
|
|
|
|
// 如果课程章节没查到记录,则下面的资源也没必要执行,资源依赖课程章节
|
|
|
|
|
if (ObjectUtil.isEmpty(courseInfos)) { return; }
|
|
|
|
|
|
|
|
|
|
// 取出来所有的课程章节ID
|
|
|
|
|
String allCourseInfoIdsJoin = courseInfos.stream().map(item -> item.getCourseInfoId().toString()).collect(joining(","));
|
|
|
|
|
|
|
|
|
|
ResourcesQuestionQuery resourcesQuestionQuery = new ResourcesQuestionQuery();
|
|
|
|
|
resourcesQuestionQuery.setCourseInfoIds(allCourseInfoIdsJoin);
|
|
|
|
|
resourcesQuestionQuery.setQuestionStatus(1);
|
|
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValuesByQuery(resourcesQuestionQuery);
|
|
|
|
|
|
|
|
|
|
// 系统题目库ID集合
|
|
|
|
|
Set<Long> resourcesQuestionIds = resourcesQuestionList.stream().map(ResourcesQuestion::getResourcesQuestionId).collect(toSet());
|
|
|
|
|
// 拷贝系统题目库到教师开课
|
|
|
|
|
teacherOpenCourseMergeResourcesQuestionService.copyFromQuestion(resourcesQuestionIds, teacherOpenCourseId, idPair);
|
|
|
|
|
|
|
|
|
|
ResourcesInfoQuery resourcesInfoQuery = new ResourcesInfoQuery();
|
|
|
|
|
resourcesInfoQuery.setCourseInfoIds(allCourseInfoIdsJoin);
|
|
|
|
|
List<ResourcesInfo> resourcesInfoList = resourcesInfoService.getValuesByQuery(resourcesInfoQuery);
|
|
|
|
|
|
|
|
|
|
// 系统资源库ID集合
|
|
|
|
|
Set<Long> resourcesInfoIds = resourcesInfoList.stream().map(ResourcesInfo::getResourcesInfoId).collect(toSet());
|
|
|
|
|
// 拷贝系统资源库到教师开课
|
|
|
|
|
teacherOpenCourseMergeResourcesInfoService.copyFromResourcesInfo(resourcesInfoIds, teacherOpenCourseId, idPair);
|
|
|
|
|
if (ObjectUtil.isNotEmpty(courseInfos)) {
|
|
|
|
|
// 拷贝系统题目库到教师开课
|
|
|
|
|
teacherOpenCourseMergeResourcesQuestionService.copyFromQuestionByCourseChapterInfoIds(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
|
// 取出来所有的课程章、节的ID。大于等于2,就是章和他的子节点
|
|
|
|
|
teacherOpenCourseQuestionSettingService.processGroupChapterListToQuestionSetting(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
|
// 拷贝系统资源库到教师开课
|
|
|
|
|
teacherOpenCourseMergeResourcesInfoService.copyFromQuestionByCourseChapterInfoIds(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -772,6 +805,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void resetOperationByTeacherOpenCourseId(@NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) {
|
|
|
|
|
log.info("重置开课课程");
|
|
|
|
|
TeacherOpenCourseMergeCourseInfoQuery courseInfoQuery = new TeacherOpenCourseMergeCourseInfoQuery();
|
|
|
|
|
courseInfoQuery.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
// 考虑后期可能会有4的情况,暂时多加一个数字4。不查询课程节点的数据
|
|
|
|
@ -780,11 +814,18 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
|
|
|
|
|
// 根据ID删除数据
|
|
|
|
|
Set<Long> delIdList = values.stream().map(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId).collect(toSet());
|
|
|
|
|
deleteTeacherOpenCourseMergeCourseInfo(join(delIdList.toArray(), ","));
|
|
|
|
|
if(ObjectUtil.isNotEmpty(delIdList)) {
|
|
|
|
|
deleteTeacherOpenCourseMergeCourseInfo(join(delIdList.toArray(), ","));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 指定开课ID清空所有的章节信息
|
|
|
|
|
*
|
|
|
|
|
* @param teacherOpenCourseId
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void deleteTeacherOpenCourseAllRelatedByTeacherOpenCourseId(Long teacherOpenCourseId) {
|
|
|
|
|
public void deleteTeacherOpenCourseAllRelatedByTeacherOpenCourseId(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId) {
|
|
|
|
|
TeacherOpenCourseMergeCourseInfoQuery courseInfoQuery = new TeacherOpenCourseMergeCourseInfoQuery();
|
|
|
|
|
courseInfoQuery.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> values = getValuesByQueryNotWithPermission(courseInfoQuery);
|
|
|
|
|