From 13a68df58b3f937db5ba6437c814bafdcd8d37f8 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 27 五月 2024 16:09:41 +0800
Subject: [PATCH] 登录时如果不是部门管理员则deptIds填充为用户所在部门

---
 src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java |   77 ++++++++++++++++++++++++++++++++------
 1 files changed, 64 insertions(+), 13 deletions(-)

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 3614c69..c116a5d 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
@@ -18,10 +18,10 @@
 import com.mindskip.xzs.domain.enums.QuestionTypeEnum;
 import com.mindskip.xzs.domain.question.QuestionItemObject;
 import com.mindskip.xzs.domain.question.QuestionObject;
-import com.mindskip.xzs.excel.CurrencyDataListener;
-import com.mindskip.xzs.excel.FixedMergeCellStrategy;
-import com.mindskip.xzs.excel.SelectExcel;
+import com.mindskip.xzs.domain.vo.DeptQuestionVO;
+import com.mindskip.xzs.excel.*;
 import com.mindskip.xzs.repository.DepartmentMapper;
+import com.mindskip.xzs.repository.DeptQuestionMapper;
 import com.mindskip.xzs.repository.SubjectMapper;
 import com.mindskip.xzs.service.*;
 import com.mindskip.xzs.utility.*;
@@ -30,6 +30,7 @@
 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.QuestionExportVO;
 import com.mindskip.xzs.vo.QuestionImportVO;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.DataValidationHelper;
@@ -44,6 +45,7 @@
 import javax.validation.Valid;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.util.*;
 import java.util.function.Consumer;
@@ -55,22 +57,20 @@
 
     private final QuestionService questionService;
     private final TextContentService textContentService;
-
     private final SubjectMapper subjectMapper;
-
     private final DepartmentMapper departmentMapper;
-
     private final QuestionSubjectService questionSubjectService;
+    private final DeptQuestionMapper deptQuestionMapper;
 
     private static final String SPLIT = "銆�";
 
-    @Autowired
-    public QuestionController(QuestionService questionService, TextContentService textContentService, SubjectMapper subjectMapper, DepartmentMapper departmentMapper, QuestionSubjectService questionSubjectService) {
+    public QuestionController(QuestionService questionService, TextContentService textContentService, SubjectMapper subjectMapper, DepartmentMapper departmentMapper, QuestionSubjectService questionSubjectService, DeptQuestionMapper deptQuestionMapper) {
         this.questionService = questionService;
         this.textContentService = textContentService;
         this.subjectMapper = subjectMapper;
         this.departmentMapper = departmentMapper;
         this.questionSubjectService = questionSubjectService;
+        this.deptQuestionMapper = deptQuestionMapper;
     }
 
     @RequestMapping(value = "/page", method = RequestMethod.POST)
@@ -90,6 +90,9 @@
                 e.setSubName(subjectMapper.page(subjectPageRequestVM).get(0).getName());
                 return e;
             }).collect(Collectors.toList()));
+            // 鏌ヨ棰樼洰鎵�灞為儴闂�
+            String deptNames = deptQuestionMapper.deptByQuestionId(q.getId()).stream().map(DeptQuestionVO::getDeptName).collect(Collectors.joining("銆�"));
+            vm.setDeptNames(deptNames);
             return vm;
         });
         return RestResponse.ok(page);
@@ -184,26 +187,74 @@
         data.add(questionImportVO3);
 
         // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛�
-        List<Subject> subjects = subjectMapper.allSubject();
+        List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>());
         List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList());
 
         EasyExcel.write(response.getOutputStream(), QuestionImportVO.class)
                 .sheet("妯℃澘")
                 .registerWriteHandler(new SelectExcel(subjectNameList))
-                .registerWriteHandler(new FixedMergeCellStrategy(2, 4, Arrays.asList(1, 2, 3, 6, 7, 8, 9)))
+                .registerWriteHandler(new FixedMergeCellStrategy(2, 4, Arrays.asList(0, 1, 2, 5, 6, 7, 8)))
                 .doWrite(data);
     }
 
     @PostMapping("/question/export")
-    public void importQuestion(QuestionPageRequestVM query, HttpServletResponse response) throws IOException {
+    public void exportQuestion(@RequestBody QuestionExportVO query, HttpServletResponse response) throws IOException {
         // 鏌ヨ瀵煎嚭鏁版嵁
         List<QuestionImportVO> exportData = questionService.export(query);
+        // 鏋勫缓鏁版嵁
+        List<QuestionImportVO> exportList = new ArrayList<>(exportData.size() * 4);
+        // 琛屽悎骞惰鍒�
+        List<RowItem> mergeRowList = new ArrayList<>(exportData.size());
+        int j = 2;
+        for (QuestionImportVO data : exportData) {
+            QuestionObject questionContent = JSON.parseObject(data.getQuestionContent(), QuestionObject.class);
+
+            RowItem rowItem = new RowItem();
+            rowItem.setStart(j);
+            int end = j + questionContent.getQuestionItemObjects().size() - 1;
+            rowItem.setEnd(end);
+            mergeRowList.add(rowItem);
+            j = end + 1;
+            int i = 0;
+            for (QuestionItemObject option : questionContent.getQuestionItemObjects()) {
+                if (i == 0) {
+                    QuestionImportVO master = new QuestionImportVO();
+                    BeanUtils.copyProperties(data, master);
+                    if (org.springframework.util.StringUtils.hasText(data.getQuestionType())) {
+                        master.setQuestionType(QuestionTypeEnum.fromCode(Integer.valueOf(data.getQuestionType())).getName());
+                    }
+                    master.setOptionName(option.getPrefix());
+                    master.setOptionValue(option.getContent());
+                    master.setTitle(questionContent.getTitleContent());
+                    master.setAnalyze(questionContent.getAnalyze());
+                    master.setSubjectName(data.getSubjectList().stream().collect(Collectors.joining("銆�")));
+                    master.setCorrect(data.getCorrect().replaceAll(",", "銆�"));
+                    BigDecimal score = BigDecimal.valueOf(master.getScore());
+                    master.setScore(score.divide(BigDecimal.TEN).intValue());
+                    exportList.add(master);
+                } else {
+                    QuestionImportVO optionItem = new QuestionImportVO();
+                    optionItem.setOptionName(option.getPrefix());
+                    optionItem.setOptionValue(option.getContent());
+                    exportList.add(optionItem);
+                }
+                i++;
+            }
+        }
         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
         response.setCharacterEncoding("utf-8");
         // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
         String fileName = URLEncoder.encode("棰樼洰瀵煎嚭鏁版嵁", "UTF-8").replaceAll("\\+", "%20");
         response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
-        EasyExcel.write(response.getOutputStream(), QuestionImportVO.class).sheet("棰樼洰瀵煎嚭鏁版嵁").doWrite(exportData);
+
+        // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛�
+        List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>());
+        List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList());
+        EasyExcel.write(response.getOutputStream(), QuestionImportVO.class)
+                .sheet("棰樼洰瀵煎嚭鏁版嵁")
+                .registerWriteHandler(new SelectExcel(subjectNameList))
+                .registerWriteHandler(new DynamicMergeCellStrategy(mergeRowList, Arrays.asList(0, 1, 2, 5, 6, 7, 8)))
+                .doWrite(exportList);
     }
 
     /**
@@ -290,7 +341,7 @@
 
 
                     // 鏌ュ嚭鎵�鏈夌殑璇剧洰
-                    List<Subject> subjects = subjectMapper.allSubject();
+                    List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>());
                     List<String> subjectNames = Arrays.asList(excelQuestion.getSubjectName().split(SPLIT));
                     List<Subject> targetSubject = subjects.stream()
                             .filter(subject -> subjectNames.contains(subject.getName()))

--
Gitblit v1.8.0