|
|
@ -20,11 +20,13 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.ibeetl.admin.core.entity.CoreUser;
|
|
|
|
import com.ibeetl.admin.core.entity.CoreUser;
|
|
|
|
import com.ibeetl.admin.core.service.CoreBaseService;
|
|
|
|
import com.ibeetl.admin.core.service.CoreBaseService;
|
|
|
|
import com.ibeetl.admin.core.util.PlatformException;
|
|
|
|
import com.ibeetl.admin.core.util.PlatformException;
|
|
|
|
|
|
|
|
import com.ibeetl.admin.core.util.user.CacheUserUtil;
|
|
|
|
import com.ibeetl.admin.core.web.JsonResult;
|
|
|
|
import com.ibeetl.admin.core.web.JsonResult;
|
|
|
|
import com.ibeetl.admin.core.web.JsonReturnCode;
|
|
|
|
import com.ibeetl.admin.core.web.JsonReturnCode;
|
|
|
|
import com.ibeetl.jlw.dao.TeacherOpenCourseMergeCourseInfoDao;
|
|
|
|
import com.ibeetl.jlw.dao.TeacherOpenCourseMergeCourseInfoDao;
|
|
|
|
import com.ibeetl.jlw.entity.*;
|
|
|
|
import com.ibeetl.jlw.entity.*;
|
|
|
|
import com.ibeetl.jlw.entity.dto.QuestionSettingDTO;
|
|
|
|
import com.ibeetl.jlw.entity.dto.QuestionSettingDTO;
|
|
|
|
|
|
|
|
import com.ibeetl.jlw.enums.CopyFromEnum;
|
|
|
|
import com.ibeetl.jlw.enums.MoveEnum;
|
|
|
|
import com.ibeetl.jlw.enums.MoveEnum;
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeCourseInfoQuery;
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeCourseInfoQuery;
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesInfoQuery;
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesInfoQuery;
|
|
|
@ -739,8 +741,9 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
Assert.isTrue(notExists, "已绑定过章节,请先重置!");
|
|
|
|
Assert.isTrue(notExists, "已绑定过章节,请先重置!");
|
|
|
|
Assert.notNull(openCourseTargetInfo, "未查询到开课的课程!");
|
|
|
|
Assert.notNull(openCourseTargetInfo, "未查询到开课的课程!");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CoreUser currentUser = CacheUserUtil.getUser();
|
|
|
|
// 开启并行处理
|
|
|
|
// 开启并行处理
|
|
|
|
courseInfoIds.stream().parallel().forEach(courseInfoId -> {
|
|
|
|
for (Long courseInfoId : courseInfoIds) {
|
|
|
|
// 当前的课程信息
|
|
|
|
// 当前的课程信息
|
|
|
|
CourseInfo currentCourseInfo = courseInfoService.getById(courseInfoId);
|
|
|
|
CourseInfo currentCourseInfo = courseInfoService.getById(courseInfoId);
|
|
|
|
// 查询当前课程信息下的,章节或者小节信息,返回一维集合
|
|
|
|
// 查询当前课程信息下的,章节或者小节信息,返回一维集合
|
|
|
@ -748,11 +751,11 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
|
|
|
|
|
|
|
// 全部归类到教师开课时候,创建的开课课程ID下。支持一对多个系统课程的拷贝
|
|
|
|
// 全部归类到教师开课时候,创建的开课课程ID下。支持一对多个系统课程的拷贝
|
|
|
|
courseInfoIdPair.put(currentCourseInfo.getCourseInfoId(), openCourseTargetInfo.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
courseInfoIdPair.put(currentCourseInfo.getCourseInfoId(), openCourseTargetInfo.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
// 先根据ID清楚现有的课程章节小节这个表
|
|
|
|
// 先根据ID清除现有的课程章节小节这个表
|
|
|
|
resetOperationByTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
resetOperationByTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
|
|
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> copyToList = new ArrayList<>();
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> copyToList = new ArrayList<>();
|
|
|
|
// 类转换
|
|
|
|
// 类转换,并记录来源的课程ID
|
|
|
|
courseInfoListConvertTeacherOpenCourseMergeCourseInfoList(chapterList, copyToList);
|
|
|
|
courseInfoListConvertTeacherOpenCourseMergeCourseInfoList(chapterList, copyToList);
|
|
|
|
|
|
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(copyToList)) {
|
|
|
|
if (ObjectUtil.isNotEmpty(copyToList)) {
|
|
|
@ -760,6 +763,8 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
copyToList.forEach(item -> {
|
|
|
|
copyToList.forEach(item -> {
|
|
|
|
item.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
item.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
item.setCourseInfoName(item.getCourseInfoName().replaceAll(" ", ""));
|
|
|
|
item.setCourseInfoName(item.getCourseInfoName().replaceAll(" ", ""));
|
|
|
|
|
|
|
|
item.setOrgId(currentUser.getOrgId());
|
|
|
|
|
|
|
|
item.setUserId(currentUser.getId());
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 最右侧的courseInfoIdPair 可以理解成是初始化的Map。Map特性Key是唯一的。
|
|
|
|
// 最右侧的courseInfoIdPair 可以理解成是初始化的Map。Map特性Key是唯一的。
|
|
|
@ -768,7 +773,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
// 批量插入
|
|
|
|
// 批量插入
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insertBatch(copyToList);
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insertBatch(copyToList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return Collections.unmodifiableMap(courseInfoIdPair);
|
|
|
|
return Collections.unmodifiableMap(courseInfoIdPair);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -783,7 +788,8 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
copyToList.forEach(item -> {
|
|
|
|
copyToList.forEach(item -> {
|
|
|
|
// 这里系统课程ID再拷贝一份 用于记录是从哪个课程拷贝来的。
|
|
|
|
// 这里系统课程ID再拷贝一份 用于记录是从哪个课程拷贝来的。
|
|
|
|
// 这里的teacherOpenCourseMergeCourseInfoId 暂存的还是系统课程ID
|
|
|
|
// 这里的teacherOpenCourseMergeCourseInfoId 暂存的还是系统课程ID
|
|
|
|
item.setSystemCourseInfoId(item.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
item.setFromType(CopyFromEnum.FROM_SYSTEM);
|
|
|
|
|
|
|
|
item.setSourceFromId(item.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
result.addAll(copyToList);
|
|
|
|
result.addAll(copyToList);
|
|
|
@ -823,7 +829,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
// 拷贝系统资源库到教师开课
|
|
|
|
// 拷贝系统资源库到教师开课
|
|
|
|
teacherOpenCourseMergeResourcesInfoService.copySystemResourcesInfoToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
teacherOpenCourseMergeResourcesInfoService.copySystemResourcesInfoToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
// 导入课程实训案例
|
|
|
|
// 导入课程实训案例
|
|
|
|
teacherOpenCourseHandsOnService.copySystemHandsToOpenCourse(teacherOpenCourseId, courseInfoId, courseInfoIdPair,resourcesQuestionIdPair);
|
|
|
|
teacherOpenCourseHandsOnService.copySystemHandsToOpenCourse(teacherOpenCourseId, courseInfoId, courseInfoIdPair, resourcesQuestionIdPair);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -1393,7 +1399,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
// 如果课程章节没查到记录,则下面的资源也没必要执行,资源依赖课程章节
|
|
|
|
// 如果课程章节没查到记录,则下面的资源也没必要执行,资源依赖课程章节
|
|
|
|
if (ObjectUtil.isNotEmpty(courseInfos)) {
|
|
|
|
if (ObjectUtil.isNotEmpty(courseInfos)) {
|
|
|
|
// 拷贝系统题目库到教师开课
|
|
|
|
// 拷贝系统题目库到教师开课
|
|
|
|
Map<Long, Long> resourcesQuestionIdPair =teacherOpenCourseMergeResourcesQuestionService.copyOpenCourseQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
Map<Long, Long> resourcesQuestionIdPair = teacherOpenCourseMergeResourcesQuestionService.copyOpenCourseQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
// 取出来所有的课程章、节的ID。大于等于2,就是章和他的子节点.从系统题目表抽取
|
|
|
|
// 取出来所有的课程章、节的ID。大于等于2,就是章和他的子节点.从系统题目表抽取
|
|
|
|
// teacherOpenCourseQuestionSettingService.copySystemQuestionChapterTestQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
// teacherOpenCourseQuestionSettingService.copySystemQuestionChapterTestQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
// 从开课题库中抽取章节练习题
|
|
|
|
// 从开课题库中抽取章节练习题
|
|
|
@ -1401,8 +1407,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
// 拷贝开课资源库到教师开课
|
|
|
|
// 拷贝开课资源库到教师开课
|
|
|
|
teacherOpenCourseMergeResourcesInfoService.copyOpenCourseResourcesInfoToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
teacherOpenCourseMergeResourcesInfoService.copyOpenCourseResourcesInfoToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair);
|
|
|
|
// 导入课程实训案例
|
|
|
|
// 导入课程实训案例
|
|
|
|
teacherOpenCourseHandsOnService.copyOpenCourseHandsToOpenCourse(teacherOpenCourseId, courseInfoIdPair,resourcesQuestionIdPair);
|
|
|
|
teacherOpenCourseHandsOnService.copyOpenCourseHandsToOpenCourse(teacherOpenCourseId, courseInfoIdPair, resourcesQuestionIdPair);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1422,8 +1427,9 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
Assert.isTrue(notExists, "已绑定过章节,请先重置!");
|
|
|
|
Assert.isTrue(notExists, "已绑定过章节,请先重置!");
|
|
|
|
Assert.notNull(newOpenCourseTargetInfo, "未查询到开课的课程!");
|
|
|
|
Assert.notNull(newOpenCourseTargetInfo, "未查询到开课的课程!");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CoreUser currentUser = CacheUserUtil.getUser();
|
|
|
|
// 开启并行处理
|
|
|
|
// 开启并行处理
|
|
|
|
courseInfoIds.stream().parallel().forEach(oldOpenCourseInfoId -> {
|
|
|
|
for (Long oldOpenCourseInfoId : courseInfoIds) {
|
|
|
|
// 源数据开课信息
|
|
|
|
// 源数据开课信息
|
|
|
|
TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery = new TeacherOpenCourseMergeCourseInfoQuery();
|
|
|
|
TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery = new TeacherOpenCourseMergeCourseInfoQuery();
|
|
|
|
teacherOpenCourseMergeCourseInfoQuery.setTeacherOpenCourseId(oldOpenCourseInfoId);
|
|
|
|
teacherOpenCourseMergeCourseInfoQuery.setTeacherOpenCourseId(oldOpenCourseInfoId);
|
|
|
@ -1445,6 +1451,8 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
chapterList.forEach(item -> {
|
|
|
|
chapterList.forEach(item -> {
|
|
|
|
item.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
item.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
item.setCourseInfoName(item.getCourseInfoName().replaceAll(" ", ""));
|
|
|
|
item.setCourseInfoName(item.getCourseInfoName().replaceAll(" ", ""));
|
|
|
|
|
|
|
|
item.setOrgId(currentUser.getOrgId());
|
|
|
|
|
|
|
|
item.setUserId(currentUser.getId());
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 最右侧的courseInfoIdPair 可以理解成是初始化的Map。Map特性Key是唯一的。
|
|
|
|
// 最右侧的courseInfoIdPair 可以理解成是初始化的Map。Map特性Key是唯一的。
|
|
|
@ -1453,7 +1461,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
// 批量插入
|
|
|
|
// 批量插入
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insertBatch(chapterList);
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insertBatch(chapterList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return Collections.unmodifiableMap(courseInfoIdPair);
|
|
|
|
return Collections.unmodifiableMap(courseInfoIdPair);
|
|
|
|
}
|
|
|
|
}
|
|
|
|