From f7196dff53805c9d5e6c945e5334ce4e4423d779 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 15 三月 2024 18:02:23 +0800
Subject: [PATCH] 题目导入模板,待完善
---
src/main/java/com/mindskip/xzs/excel/SelectExcel.java | 53 +++++++++++++++++
src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java | 2
src/main/java/com/mindskip/xzs/vo/QuestionImportVO.java | 60 ++++++++++++++++++++
src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 16 +++++
pom.xml | 10 +++
5 files changed, 140 insertions(+), 1 deletions(-)
diff --git a/pom.xml b/pom.xml
index e2408eb..74a97c3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,6 +21,7 @@
<mysql.version>8.0.17</mysql.version>
<spring.boot.version>2.1.6.RELEASE</spring.boot.version>
<mapstruct.version>1.4.1.Final</mapstruct.version>
+ <easyExcel.version>3.3.2</easyExcel.version>
</properties>
@@ -69,6 +70,15 @@
<dependencies>
+
+ <!-- easy excel -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>easyexcel</artifactId>
+ <version>${easyExcel.version}</version>
+ </dependency>
+
+
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java b/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java
index 62b472d..97e109b 100644
--- a/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java
@@ -79,7 +79,7 @@
.and().authenticationProvider(restAuthenticationProvider)
.authorizeRequests()
.antMatchers(securityIgnoreUrls.toArray(ignores)).permitAll()
- .antMatchers("/api/admin/department/list", "/api/admin/video/getList","/api/admin/user/conversion","/api/admin/examPaperGrade/updates").permitAll()
+ .antMatchers("/api/admin/department/list", "/api/admin/video/getList","/api/admin/user/conversion","/api/admin/examPaperGrade/updates","/api/admin/question/download/question/import/temp").permitAll()
// todo 璁剧疆閮ㄩ棬绠$悊鍛樺彲浠ョ湅鐨勮姹�
.antMatchers("/api/admin/**").hasAnyRole(RoleEnum.ADMIN.getName(), RoleEnum.DEPT_ADMIN.getName())
.antMatchers("/api/student/**").hasRole(RoleEnum.STUDENT.getName())
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
index dec03bc..1cdabdb 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
@@ -1,5 +1,7 @@
package com.mindskip.xzs.controller.admin;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.metadata.data.HyperlinkData;
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.base.SystemCode;
@@ -9,6 +11,7 @@
import com.mindskip.xzs.domain.enums.QuestionSourceEnum;
import com.mindskip.xzs.domain.enums.QuestionTypeEnum;
import com.mindskip.xzs.domain.question.QuestionObject;
+import com.mindskip.xzs.excel.SelectExcel;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.SubjectMapper;
import com.mindskip.xzs.service.*;
@@ -18,12 +21,18 @@
import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM;
import com.mindskip.xzs.viewmodel.admin.question.*;
import com.github.pagehelper.PageInfo;
+import com.mindskip.xzs.vo.QuestionImportVO;
import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -121,6 +130,13 @@
return RestResponse.ok();
}
+ @GetMapping("/download/question/import/temp")
+ public void getImportTemp(HttpServletResponse response) throws IOException {
+ String fileName = URLEncoder.encode("棰樼洰瀵煎叆妯℃澘", "UTF-8").replaceAll("\\+", "%20");
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+ EasyExcel.write(response.getOutputStream(), QuestionImportVO.class).registerWriteHandler(new SelectExcel()).sheet("妯℃澘").doWrite(new ArrayList());
+ }
+
@PostMapping("/import")
public RestResponse importUser(@RequestPart("file") MultipartFile file) throws Exception {
List<QuestionEditVO> questionEditVOS = ExcelUtils.readMultipartFile(file, QuestionEditVO.class)
diff --git a/src/main/java/com/mindskip/xzs/excel/SelectExcel.java b/src/main/java/com/mindskip/xzs/excel/SelectExcel.java
new file mode 100644
index 0000000..4ad8e22
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/excel/SelectExcel.java
@@ -0,0 +1,53 @@
+package com.mindskip.xzs.excel;
+
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.write.handler.AbstractCellWriteHandler;
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellRangeAddressList;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 璁剧疆easy-excel涓嬫媺澶勭悊鍣�
+ *
+ * @author锛歺p
+ * @date锛�2024/3/15 17:27
+ */
+public class SelectExcel implements CellWriteHandler {
+
+ private String[] questionTypeList = {"鍗曢��", "澶氶��", "鍒ゆ柇"};
+ private String[] subjectTypeList = {"a","b"};
+
+ @Override
+ public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
+ // 鑾峰彇sheet瀵硅薄
+ Sheet sheet = writeSheetHolder.getSheet();
+
+
+ // 鑾峰彇鏁版嵁鏍¢獙helper
+ DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper();
+
+ // 璁剧疆棰樼洰涓嬫媺鑼冨洿锛岀涓�鍒楋紝500琛屽唴
+ CellRangeAddressList questionTypeRange = new CellRangeAddressList(0, 500, 0, 0);
+ // 娣诲姞棰樼洰涓嬫媺
+ DataValidationConstraint questionConstraint = dataValidationHelper.createExplicitListConstraint(questionTypeList);
+ DataValidation questionValidation = dataValidationHelper.createValidation(questionConstraint, questionTypeRange);
+ sheet.addValidationData(questionValidation);
+
+
+ // 璁剧疆璇剧洰涓嬫媺鑼冨洿锛岀2鍒楋紝500琛屽唴
+ CellRangeAddressList subjectTypeRange = new CellRangeAddressList(0, 500, 1, 1);
+ // 娣诲姞璇剧洰涓嬫媺
+ DataValidationConstraint subjectConstraint = dataValidationHelper.createExplicitListConstraint(subjectTypeList);
+ DataValidation subjectValidation = dataValidationHelper.createValidation(subjectConstraint, subjectTypeRange);
+ sheet.addValidationData(subjectValidation);
+
+ }
+}
diff --git a/src/main/java/com/mindskip/xzs/vo/QuestionImportVO.java b/src/main/java/com/mindskip/xzs/vo/QuestionImportVO.java
new file mode 100644
index 0000000..3894850
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/vo/QuestionImportVO.java
@@ -0,0 +1,60 @@
+package com.mindskip.xzs.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.mindskip.xzs.viewmodel.admin.question.QuestionEditItemVM;
+import lombok.Data;
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/3/15 17:06
+ */
+@Data
+@ColumnWidth(20)
+public class QuestionImportVO {
+
+ @ExcelProperty("棰樼洰绫诲瀷")
+ private Integer questionType;
+
+ @ExcelProperty("璇剧洰")
+ private String subjectName;
+
+ @ColumnWidth(80)
+ @ExcelProperty("棰樺共")
+ private String title;
+
+ // 閫夐」鍐呭
+ @ColumnWidth(60)
+ @ExcelProperty("閫夐」鍜岀瓟妗�")
+ private List<QuestionEditItemVM> items;
+
+ // 瑙f瀽
+ @ColumnWidth(30)
+ @ExcelProperty("瑙f瀽")
+ private String analyze;
+
+ @ExcelProperty("绛旀")
+ private String correct;
+
+ // 棰樼洰鍒嗘暟
+ @ExcelProperty("棰樼洰鍒嗘暟")
+ private String score;
+
+ // 棰樼洰闅惧害
+ @ExcelProperty("棰樼洰闅惧害")
+ private Integer difficult;
+
+ @ExcelProperty("閫夐」A")
+ private String a;
+
+ @ExcelProperty("閫夐」B")
+ private String b;
+
+ @ExcelProperty("閫夐」C")
+ private String c;
+
+ @ExcelProperty("閫夐」D")
+ private String d;
+
+}
--
Gitblit v1.8.0