|
|
|
@ -37,7 +37,9 @@ import org.apache.poi.ss.usermodel.Workbook;
|
|
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
|
|
import org.beetl.sql.core.SqlId;
|
|
|
|
|
import org.beetl.sql.core.engine.PageQuery;
|
|
|
|
|
import org.beetl.sql.core.query.LambdaQuery;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
@ -57,6 +59,7 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static cn.hutool.core.util.ArrayUtil.join;
|
|
|
|
|
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
|
|
|
|
|
import static com.ibeetl.admin.core.service.CorePlatformService.CACHE_CORE_GET_COURSE_TARGET_INFO_BY_TEACHER_OPEN_COURSE_ID;
|
|
|
|
|
import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
|
|
|
|
|
import static com.ibeetl.jlw.enums.CopyFromEnum.FROM_OPEN_COURSE;
|
|
|
|
|
import static com.ibeetl.jlw.enums.GlobalUpStatusEnum.UP;
|
|
|
|
@ -168,14 +171,14 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
public void deleteTeacherOpenCourseMergeCourseInfo(@NotBlank(message = "ID不能为空!") String ids){
|
|
|
|
|
try {
|
|
|
|
|
for (String id : ids.split(",")) {
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> courseResources = getCourseResources(Long.valueOf(id));
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> courseInfoList = getCourseResources(Long.valueOf(id));
|
|
|
|
|
// TODO 这里要优化
|
|
|
|
|
// List<TeacherOpenCourseMergeCourseInfo> courseResources2 = getCourseResourcesByList(Long.valueOf(id));
|
|
|
|
|
//
|
|
|
|
|
// int a = 1/0;
|
|
|
|
|
|
|
|
|
|
// 只匹配章节
|
|
|
|
|
Set<Long> idSet = courseResources.stream().filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType()))
|
|
|
|
|
Set<Long> idSet = courseInfoList.stream().filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType()))
|
|
|
|
|
.map(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId).collect(toSet());
|
|
|
|
|
|
|
|
|
|
if(ObjectUtil.isNotEmpty(idSet)) {
|
|
|
|
@ -219,12 +222,12 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
/**
|
|
|
|
|
* 开课题目配置单表新增
|
|
|
|
|
* 更新缓存
|
|
|
|
|
* @param teacherOpenCourseMergeCourseInfoQuery
|
|
|
|
|
* @param query
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public JsonResult add(TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery){
|
|
|
|
|
public JsonResult add(TeacherOpenCourseMergeCourseInfoQuery query){
|
|
|
|
|
String msg = "";
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = teacherOpenCourseMergeCourseInfoQuery.pojo();
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = query.pojo();
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoStatus(1);
|
|
|
|
|
|
|
|
|
|
// 获取新的排序值
|
|
|
|
@ -238,7 +241,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insert(teacherOpenCourseMergeCourseInfo);
|
|
|
|
|
|
|
|
|
|
// teacherOpenCourseMergeCourseInfoService.invalidateCourseInfoTreeLocalCache(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseId());
|
|
|
|
|
teacherOpenCourseMergeCourseInfoQuery.setTeacherOpenCourseMergeCourseInfoId(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
|
query.setTeacherOpenCourseMergeCourseInfoId(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
|
JsonResult jsonResult = new JsonResult();
|
|
|
|
|
jsonResult.setData(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseMergeCourseInfoId());//自增的ID丢进去
|
|
|
|
|
jsonResult.setCode(JsonReturnCode.SUCCESS.getCode());
|
|
|
|
@ -253,25 +256,75 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
* 任务二:如果是章节节点,则根据开课课程的章节名称来添加到开课题目配置表;
|
|
|
|
|
* 任务三:添加开课题目快照表
|
|
|
|
|
*
|
|
|
|
|
* @param teacherOpenCourseMergeCourseInfoQuery
|
|
|
|
|
* @param mergeCourseInfoQuery
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public JsonResult addCourseAndQuestionWithQuestionSnap(@Validated(ValidateConfig.ADD.class) @NotNull(message = "开课题目信息不能为空!")
|
|
|
|
|
TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery,
|
|
|
|
|
TeacherOpenCourseMergeCourseInfoQuery mergeCourseInfoQuery,
|
|
|
|
|
@Nullable List<QuestionSettingDTO> questionSettingOptions, Map<Long, Long> courseInfoIdPair) {
|
|
|
|
|
|
|
|
|
|
getParentCourseIdIfTypeEquals2(mergeCourseInfoQuery);
|
|
|
|
|
// 添加开课课程表
|
|
|
|
|
JsonResult jsonResult = add(teacherOpenCourseMergeCourseInfoQuery);
|
|
|
|
|
JsonResult jsonResult = add(mergeCourseInfoQuery);
|
|
|
|
|
|
|
|
|
|
// 开课课程:2 章节节点
|
|
|
|
|
if(Integer.valueOf(2).equals(teacherOpenCourseMergeCourseInfoQuery.getCourseInfoType())) {
|
|
|
|
|
if(Integer.valueOf(2).equals(mergeCourseInfoQuery.getCourseInfoType())) {
|
|
|
|
|
// 添加到题目配置和开课题目快照表,这里null 不拷贝题目
|
|
|
|
|
teacherOpenCourseQuestionSettingService.addFrom(teacherOpenCourseMergeCourseInfoQuery, questionSettingOptions, FROM_OPEN_COURSE, courseInfoIdPair);
|
|
|
|
|
teacherOpenCourseQuestionSettingService.addFrom(mergeCourseInfoQuery, questionSettingOptions, FROM_OPEN_COURSE, courseInfoIdPair);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return jsonResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 添加的对象如果是章节节点的话,那么查询他的上一级
|
|
|
|
|
* @param mergeCourseInfoQuery
|
|
|
|
|
*/
|
|
|
|
|
public void getParentCourseIdIfTypeEquals2(TeacherOpenCourseMergeCourseInfoQuery mergeCourseInfoQuery) {
|
|
|
|
|
|
|
|
|
|
if (mergeCourseInfoQuery != null) {
|
|
|
|
|
final Integer courseInfoType = mergeCourseInfoQuery.getCourseInfoType();
|
|
|
|
|
final Long teacherOpenCourseId = mergeCourseInfoQuery.getTeacherOpenCourseId();
|
|
|
|
|
|
|
|
|
|
// 开课ID不为空,且课程类型 = 章节类型的,则查询归属的课程ID
|
|
|
|
|
if (ObjectUtil.isAllNotEmpty(courseInfoType, teacherOpenCourseId) && courseInfoType.equals(2)) {
|
|
|
|
|
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo courseTargetInfo = getCourseTargetInfoByTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
|
|
|
|
|
if (courseTargetInfo != null) {
|
|
|
|
|
mergeCourseInfoQuery.setCourseInfoParentId(courseTargetInfo.getTeacherOpenCourseMergeCourseInfoId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过开课ID获取课程节点的信息
|
|
|
|
|
*
|
|
|
|
|
* @param teacherOpenCourseId
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Cacheable(value = CACHE_CORE_GET_COURSE_TARGET_INFO_BY_TEACHER_OPEN_COURSE_ID, key = "#root.args[0]", unless = "#result == null")
|
|
|
|
|
public TeacherOpenCourseMergeCourseInfo getCourseTargetInfoByTeacherOpenCourseId(Long teacherOpenCourseId) {
|
|
|
|
|
|
|
|
|
|
if (teacherOpenCourseId == null) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LambdaQuery<TeacherOpenCourseMergeCourseInfo> lambdaQuery = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery();
|
|
|
|
|
LambdaQuery.Property<TeacherOpenCourseMergeCourseInfo, Object> pIdpt = TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId;
|
|
|
|
|
|
|
|
|
|
// 课程节点的信息
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo courseTargetInfo = lambdaQuery
|
|
|
|
|
.andEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseId, teacherOpenCourseId)
|
|
|
|
|
.andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1)
|
|
|
|
|
.andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, 1)
|
|
|
|
|
.and(lambdaQuery.condition().andEq(pIdpt, "").orIsNull(pIdpt))
|
|
|
|
|
.single();
|
|
|
|
|
return courseTargetInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String edit(TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery){
|
|
|
|
|
String msg = "";
|
|
|
|
|