|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.ibeetl.jlw.service;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.jlw.util.ToolUtils;
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
@ -9,6 +10,7 @@ import com.ibeetl.admin.core.util.PlatformException;
|
|
|
|
|
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.CourseInfo;
|
|
|
|
|
import com.ibeetl.jlw.entity.FileEntity;
|
|
|
|
|
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeCourseInfo;
|
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeCourseInfoQuery;
|
|
|
|
@ -25,10 +27,14 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
|
|
import javax.validation.constraints.NotEmpty;
|
|
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
|
|
import java.io.*;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
|
|
|
|
|
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
|
|
|
|
|
import static java.util.stream.Collectors.toSet;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 开课课程拉取 Service
|
|
|
|
@ -41,6 +47,8 @@ import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
|
|
|
|
|
public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<TeacherOpenCourseMergeCourseInfo>{
|
|
|
|
|
|
|
|
|
|
@Autowired private TeacherOpenCourseMergeCourseInfoDao teacherOpenCourseMergeCourseInfoDao;
|
|
|
|
|
@Autowired private CourseInfoService courseInfoService;
|
|
|
|
|
@Autowired private TeacherOpenCourseMergeResourcesQuestionService teacherOpenCourseMergeResourcesQuestionService;
|
|
|
|
|
|
|
|
|
|
public PageQuery<TeacherOpenCourseMergeCourseInfo>queryByCondition(PageQuery query){
|
|
|
|
|
PageQuery ret = teacherOpenCourseMergeCourseInfoDao.queryByCondition(query);
|
|
|
|
@ -188,8 +196,8 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
if(null != is){
|
|
|
|
|
is.close();
|
|
|
|
|
}
|
|
|
|
|
is.close();
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
@ -204,21 +212,21 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
int colNum = firstRow.getPhysicalNumberOfCells();
|
|
|
|
|
|
|
|
|
|
String columns[] = {
|
|
|
|
|
"开课",
|
|
|
|
|
"名称",
|
|
|
|
|
"课程缩略图",
|
|
|
|
|
"课程标签",
|
|
|
|
|
"课程学习人数基数",
|
|
|
|
|
"课程简介",
|
|
|
|
|
"状态",
|
|
|
|
|
"类型",
|
|
|
|
|
"父节点",
|
|
|
|
|
"视频",
|
|
|
|
|
"课件",
|
|
|
|
|
"附件IDs",
|
|
|
|
|
"客观题IDs",
|
|
|
|
|
"竞赛题IDs",
|
|
|
|
|
"实训题IDs",
|
|
|
|
|
"开课",
|
|
|
|
|
"名称",
|
|
|
|
|
"课程缩略图",
|
|
|
|
|
"课程标签",
|
|
|
|
|
"课程学习人数基数",
|
|
|
|
|
"课程简介",
|
|
|
|
|
"状态",
|
|
|
|
|
"类型",
|
|
|
|
|
"父节点",
|
|
|
|
|
"视频",
|
|
|
|
|
"课件",
|
|
|
|
|
"附件IDs",
|
|
|
|
|
"客观题IDs",
|
|
|
|
|
"竞赛题IDs",
|
|
|
|
|
"实训题IDs",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Map<String,Integer> map = new HashMap<>();//获取需要的表头的列
|
|
|
|
@ -332,27 +340,27 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
continue;
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
//TODO 保存
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = new TeacherOpenCourseMergeCourseInfo();
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setTeacherOpenCourseId(Long.parseLong(teacherOpenCourseId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoName(courseInfoName);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoThumbnail(courseInfoThumbnail);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseLabelId(Long.parseLong(courseLabelId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoBasicsCount(Integer.parseInt(courseInfoBasicsCount));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoContent(courseInfoContent);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoStatus(Integer.parseInt(courseInfoStatus));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoType(Integer.parseInt(courseInfoType));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoParentId(Long.parseLong(courseInfoParentId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseVideoId(Long.parseLong(courseVideoId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseCoursewareId(Long.parseLong(courseCoursewareId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseEnclosureIds(courseEnclosureIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setResourcesQuestionIds(resourcesQuestionIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setResourcesCompetitionIds(resourcesCompetitionIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setResourcesTrainingIds(resourcesTrainingIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setOrgId(coreUser.getOrgId());
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setUserId(coreUser.getId());
|
|
|
|
|
|
|
|
|
|
count++;
|
|
|
|
|
//TODO 保存
|
|
|
|
|
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = new TeacherOpenCourseMergeCourseInfo();
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setTeacherOpenCourseId(Long.parseLong(teacherOpenCourseId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoName(courseInfoName);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoThumbnail(courseInfoThumbnail);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseLabelId(Long.parseLong(courseLabelId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoBasicsCount(Integer.parseInt(courseInfoBasicsCount));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoContent(courseInfoContent);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoStatus(Integer.parseInt(courseInfoStatus));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoType(Integer.parseInt(courseInfoType));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseInfoParentId(Long.parseLong(courseInfoParentId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseVideoId(Long.parseLong(courseVideoId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseCoursewareId(Long.parseLong(courseCoursewareId));
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setCourseEnclosureIds(courseEnclosureIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setResourcesQuestionIds(resourcesQuestionIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setResourcesCompetitionIds(resourcesCompetitionIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setResourcesTrainingIds(resourcesTrainingIds);
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setOrgId(coreUser.getOrgId());
|
|
|
|
|
teacherOpenCourseMergeCourseInfo.setUserId(coreUser.getId());
|
|
|
|
|
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -371,4 +379,68 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 教师端-导入课程章节操作,逻辑拆分
|
|
|
|
|
*
|
|
|
|
|
* 从系统章节库拉取章节到教师开课的课程章节中。
|
|
|
|
|
* @param courseInfoIds 超管端的章节ID
|
|
|
|
|
* @param teacherOpenCourseId 开课iD
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public void copyFromCourseInfo(@NotEmpty(message = "系统课程ID不能为空!") Set<Long> courseInfoIds,
|
|
|
|
|
@NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) {
|
|
|
|
|
|
|
|
|
|
// 开启并行处理
|
|
|
|
|
courseInfoIds.stream().parallel().forEach(courseInfoId -> {
|
|
|
|
|
List<CourseInfo> chapterList = courseInfoService.getChapterList(courseInfoId);
|
|
|
|
|
|
|
|
|
|
// 拷贝
|
|
|
|
|
List<TeacherOpenCourseMergeCourseInfo> copyToList =
|
|
|
|
|
BeanUtil.copyToList(chapterList, TeacherOpenCourseMergeCourseInfo.class);
|
|
|
|
|
// 设置开课ID
|
|
|
|
|
copyToList.forEach(item -> item.setTeacherOpenCourseId(teacherOpenCourseId));
|
|
|
|
|
// 批量插入
|
|
|
|
|
teacherOpenCourseMergeCourseInfoDao.insertBatch(copyToList);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 教师端-导入课程。
|
|
|
|
|
*
|
|
|
|
|
* 导入超管端管理的课程,该接口导入包含课程章节信息,课程题目信息。
|
|
|
|
|
*
|
|
|
|
|
* @param courseInfoIds 超管端的章节ID
|
|
|
|
|
* @param teacherOpenCourseId 开课iD
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public void importCourseInfo(@NotEmpty(message = "系统课程ID不能为空!") Set<Long> courseInfoIds,
|
|
|
|
|
@NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) {
|
|
|
|
|
|
|
|
|
|
// 拷贝课程章节
|
|
|
|
|
copyFromCourseInfo(courseInfoIds, teacherOpenCourseId);
|
|
|
|
|
|
|
|
|
|
// 开启并行处理
|
|
|
|
|
courseInfoIds.stream().parallel().forEach(courseInfoId -> {
|
|
|
|
|
// 获取这个课程章节下的所有的子章节信息
|
|
|
|
|
List<CourseInfo> chapterList = courseInfoService.getChapterList(Long.valueOf(courseInfoId));
|
|
|
|
|
// 取出来所有的课程章节ID
|
|
|
|
|
Set<Long> cids = chapterList.stream().map(CourseInfo::getCourseInfoId).collect(toSet());
|
|
|
|
|
// 拷贝所有的题目关联到指定的开课下
|
|
|
|
|
teacherOpenCourseMergeResourcesQuestionService.copyFromQuestion(cids, teacherOpenCourseId);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 教师端-学生端
|
|
|
|
|
* 根据登录用户-获取专业下的课程列表
|
|
|
|
|
*
|
|
|
|
|
* 根据当前登录用户的专业ID,获取系统课程(超管或学校管理员管理的课程信息)
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public Object systemCourseInfoByUniversitySystem() {
|
|
|
|
|
CoreUser user = getUser();
|
|
|
|
|
// TODO 接着搞
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|