diff --git a/web/filesystem/template/批量题库导入模板.xlsx b/web/filesystem/template/批量题库导入模板.xlsx new file mode 100644 index 00000000..087f2fbb Binary files /dev/null and b/web/filesystem/template/批量题库导入模板.xlsx differ diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java index 6522dd25..bd91f522 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java @@ -8,6 +8,7 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.EnumUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -18,17 +19,17 @@ import com.ibeetl.admin.core.util.user.CacheUserUtil; import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.jlw.dao.ResourcesQuestionDao; +import com.ibeetl.jlw.dao.TeacherOpenCourseDao; import com.ibeetl.jlw.dao.TeacherOpenCourseMergeCourseInfoDao; import com.ibeetl.jlw.dao.TeacherOpenCourseMergeResourcesQuestionDao; import com.ibeetl.jlw.entity.*; import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.entity.vo.QuestionTypeCountVO; +import com.ibeetl.jlw.entity.vo.ResourcesCourseInfoAuthDetailsVO; import com.ibeetl.jlw.enums.CopyFromEnum; import com.ibeetl.jlw.enums.GlobalUpStatusEnum; import com.ibeetl.jlw.enums.ResourcesQuestionTypeEnum; -import com.ibeetl.jlw.web.query.ResourcesQuestionQuery; -import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesQuestionQuery; -import com.ibeetl.jlw.web.query.TeacherOpenCourseQuestionSettingQuery; +import com.ibeetl.jlw.web.query.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -51,12 +52,19 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.io.*; import java.math.BigDecimal; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; +import java.util.stream.Collectors; import static cn.hutool.core.util.ArrayUtil.join; import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue; +import static com.ibeetl.admin.core.util.StreamUtils.listJoin; +import static com.ibeetl.jlw.enums.AddTypeEnum.ADMIN_ADD; +import static com.ibeetl.jlw.enums.AddTypeEnum.FACULTY_ADD; +import static com.ibeetl.jlw.enums.CourseLabelTypeEnum.THEORY; import static java.util.stream.Collectors.*; /** @@ -84,6 +92,9 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ @Autowired private ResourcesQuestionSnapshotService resourcesQuestionSnapshotService; + @Autowired + private TeacherOpenCourseDao teacherOpenCourseDao; + private static final Snowflake snowflake = new Snowflake(); diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java index db6fd2dd..405fd072 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java @@ -23,6 +23,7 @@ import com.ibeetl.jlw.entity.TeacherOpenCourseMergeResourcesQuestion; import com.ibeetl.jlw.entity.TeacherOpenCourseMergeResourcesQuestionImport; import com.ibeetl.jlw.service.TeacherOpenCourseMergeResourcesQuestionService; import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesQuestionQuery; +import com.ibeetl.jlw.web.query.TeacherOpenCourseQuery; import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -50,10 +51,7 @@ import javax.validation.constraints.NotNull; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static cn.jlw.util.CacheUserUtil.getStudent; @@ -491,12 +489,50 @@ public class TeacherOpenCourseMergeResourcesQuestionController extends BaseContr Assert.notNull(getUser(), "请登录后再操作"); - // 这里不给文件名后缀,write里面自动加 - String filename = StrUtil.format("批量题库导入模板{}", System.currentTimeMillis()); - // 输出 Excel - ExcelUtil.writeExcel(response, filename, Collections.emptyList(), TeacherOpenCourseMergeResourcesQuestion.class); +// // 这里不给文件名后缀,write里面自动加 +// String filename = StrUtil.format("批量题库导入模板{}", System.currentTimeMillis()); +// // 输出 Excel +// ExcelUtil.writeExcel(response, filename, Collections.emptyList(), TeacherOpenCourseMergeResourcesQuestion.class); - } + XSSFWorkbook workbook = null; + InputStream is = null; + try { + is = new FileInputStream(GetFile.p + File.separator +"filesystem"+ File.separator +"template"+ File.separator+ "批量题库导入模板.xlsx"); + + workbook = new XSSFWorkbook(is); + + // 查询特定的课程名称及其章的名称 + List courseInfoArr = new ArrayList(); + Map> map = new HashMap>(); + + //准备将Excel的输出流通过response输出到页面下载 + //八进制输出流 + response.setContentType("application/octet-stream"); + + //这后面可以设置导出Excel的名称,此例中名为template.xls + response.setHeader("Content-disposition", "attachment;filename=resourcesQuestionTemplate(" + TimeTool.getNowTime("YMD") + ").xlsx"); + + //刷新缓冲 + response.flushBuffer(); + + //workbook将Excel写入到response的输出流中,供页面下载 + workbook.write(response.getOutputStream()); + }catch (Exception e){ + e.printStackTrace(); + } finally { + try { + if (null != workbook) { + workbook.close(); + } + if (null != response && null != response.getOutputStream()) { + response.getOutputStream().close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + } /** * 功能描述:
@@ -509,7 +545,7 @@ public class TeacherOpenCourseMergeResourcesQuestionController extends BaseContr */ @SneakyThrows @PostMapping(API + "/importBatchTemplate.do") - public JsonResult importBatchTemplate(@NotNull(message = "导入的文件不能为空!") MultipartFile file, @SCoreUser CoreUser coreUser) { + public JsonResult importBatchTemplate(@NotNull(message = "导入的文件不能为空!") MultipartFile file, TeacherOpenCourseQuery teacherOpenCourseQuery, @SCoreUser CoreUser coreUser) { try { Assert.isNull(getStudent(), "学生无法访问该接口"); diff --git a/web/src/main/resources/sql/jlw/resourcesInfo.md b/web/src/main/resources/sql/jlw/resourcesInfo.md index ceea0b7d..a061c75e 100644 --- a/web/src/main/resources/sql/jlw/resourcesInfo.md +++ b/web/src/main/resources/sql/jlw/resourcesInfo.md @@ -247,7 +247,7 @@ getCurriculumResourceManagementList AND tt.resources_info_name LIKE #'%'+resourcesInfoName+'%'# @} @if(!isEmpty(courseInfoId_1)) { - AND tt.course_info_parent_parent_id = #courseInfoId_1)# + AND tt.course_info_parent_parent_id = #courseInfoId_1# @} @if(!isEmpty(courseInfoId_2)) { AND tt.course_info_parent_id = #courseInfoId_2#