From 3a8e1524dcf0eeb610d38123d5f0a3ef838379cd Mon Sep 17 00:00:00 2001
From: linzhijie <19970921lzj>
Date: 星期一, 12 四月 2021 15:44:53 +0800
Subject: [PATCH] Merge branch '20210406-maqv2' into 20210412-youhua

---
 src/main/java/com/ots/project/exam/controller/TExamReportController.java |  149 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 147 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ots/project/exam/controller/TExamReportController.java b/src/main/java/com/ots/project/exam/controller/TExamReportController.java
index 320f3df..764dafe 100644
--- a/src/main/java/com/ots/project/exam/controller/TExamReportController.java
+++ b/src/main/java/com/ots/project/exam/controller/TExamReportController.java
@@ -40,6 +40,7 @@
 import com.ots.project.exam.dto.QuestionObject;
 import com.ots.project.exam.dto.QuestionReport;
 import com.ots.project.exam.dto.RelatedParty;
+import com.ots.project.exam.mapper.TExamPaperQuestionMapper;
 import com.ots.project.exam.service.IEntDemographyInfoService;
 import com.ots.project.exam.service.IEntTestPackageService;
 import com.ots.project.exam.service.ISysUserExtendService;
@@ -64,6 +65,7 @@
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.poi.ss.usermodel.BorderStyle;
 import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
@@ -198,6 +200,19 @@
     }
 
     /**
+     * 娴嬭瘎鍒楄〃
+     * @return
+     */
+    @RequiresPermissions("exam:evaluation_report:view")
+    @GetMapping("/reportView/evaluationReport")
+    public String evaluationReport(ModelMap mmap) {
+        //杩斿洖鎵�鏈変骇鍝�
+        List<TExamPaper> dictList = itExamPaperService.getUserPapers();
+        mmap.put("dictList",dictList);
+        return prefix + "/evaluationReport";
+    }
+
+    /**
      * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃(澶撮儴)
      */
     @RequiresPermissions("exam:hrEmailReport:view")
@@ -252,6 +267,45 @@
         List<Map<String, String>> filedList = new ArrayList<>();
         filedList.add(title);
         return getDataTable(filedList);
+    }
+
+    /**
+     * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃(鏁版嵁鍒�)
+     * 鏍规嵁鐢ㄦ埛瑙掕壊鏄剧ず涓嶅悓鍒楄〃
+     * @param tExamReport
+     * @return
+     */
+    @RequiresPermissions("exam:report:list")
+    @PostMapping("/newListData")
+    @ResponseBody
+    public TableDataInfo newListData(TExamReport tExamReport) {
+        startPage();
+        List<TExamReport> list = new ArrayList<>();
+        // 瀹屾垚鐨�
+        tExamReport.setFinish(1);
+        //鏍规嵁鏉冮檺杩斿洖涓嶅悓娴嬭瘎浜哄憳鍒楄〃
+        User sysUser = ShiroUtils.getSysUser();
+        String userType = sysUser.getUserType();
+        if (UserTypeEnum.ENT_USER.getUserType().equals(userType)) {
+            tExamReport.setUserId(sysUser.getUserId());
+        }
+        //鍒嗛攢鍟嗗彲浠ョ湅鍒板垎閿�鍟嗕笅鐨勪紒涓氫俊鎭�
+        if (UserTypeEnum.DIS_USER.getUserType().equals(userType)) {
+            SysUserExtend sysUserExtend = new SysUserExtend();
+            sysUserExtend.setParentUserId(sysUser.getUserId());
+            List<SysUserExtend> sysUserExtends = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
+            List<Long> collect = sysUserExtends.stream().map(extend -> extend.getUserId()).collect(Collectors.toList());
+            collect.add(sysUser.getUserId());
+            tExamReport.setUserIds(collect);
+        }
+
+        list = tExamReportService.selectViewReportList(tExamReport);
+        // 澶氳瑷�缈昏瘧
+        for (TExamReport tExamReportTemp : list) {
+            tExamReportTemp.setProductName(examUtilService.getLangOrLocalLangString("", tExamReportTemp.getProductName()));
+        }
+
+        return getDataTable(list);
     }
 
     /**
@@ -420,6 +474,75 @@
         return AjaxResult.success(examUtilService.getLangOrLocalLangString("", tExamReportList.get(0).getProductName()) + "_DateReport.xlsx");
     }
 
+    // 瀵煎嚭鏁版嵁鎶ュ憡
+    @RequiresPermissions("exam:report:export")
+    @PostMapping("/exportEvaluationReport")
+    @ResponseBody
+    public AjaxResult exportReport(TExamReport tExamReport) throws IOException {
+        // 瀹屾垚鐨�
+        tExamReport.setFinish(1);
+        //鏍规嵁鏉冮檺杩斿洖涓嶅悓娴嬭瘎浜哄憳鍒楄〃
+        User sysUser = ShiroUtils.getSysUser();
+        String userType = sysUser.getUserType();
+        if (UserTypeEnum.ENT_USER.getUserType().equals(userType)) {
+            tExamReport.setUserId(sysUser.getUserId());
+        }
+        //鍒嗛攢鍟嗗彲浠ョ湅鍒板垎閿�鍟嗕笅鐨勪紒涓氫俊鎭�
+        if (UserTypeEnum.DIS_USER.getUserType().equals(userType)) {
+            SysUserExtend sysUserExtend = new SysUserExtend();
+            sysUserExtend.setParentUserId(sysUser.getUserId());
+            List<SysUserExtend> sysUserExtends = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
+            List<Long> collect = sysUserExtends.stream().map(extend -> extend.getUserId()).collect(Collectors.toList());
+            collect.add(sysUser.getUserId());
+            tExamReport.setUserIds(collect);
+        }
+        //鏌ヨ褰撳墠绛涢�夌粨鏋滈泦
+        List<TExamReport> tExamReportList = tExamReportService.selectViewReportList(tExamReport);
+        //List<Long> getIds = tExamReportList.stream().map(TExamReport::getId).collect(Collectors.toList());
+        List<String> getIds = tExamReportList.stream().map(t -> t.getId().toString()).collect(Collectors.toList());
+        String[] ids = getIds.stream().toArray(String[]::new);
+
+        // 鎷兼帴鐢熸垚report鐨勯敭鍊煎
+        //User sysUser = ShiroUtils.getSysUser();
+        boolean isRight = Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType());
+        // 浜哄彛瀛﹀彉閲�
+        // 涓夎
+        DataReportHead dataReportHead = new DataReportHead();
+        String fileNameResult = EssConfig.getDownloadPath() + examUtilService.getLangOrLocalLangString("", tExamReportList.get(0).getProductName()) + "_DateReport.xlsx";
+
+        // 鎶妔heet鏀惧湪map閲岄潰
+        Map<String, List<List<Object>>> reportResultMap = new HashMap<>();
+
+        Map<String, Map<String, String>> demograpyMap = new HashMap<>();
+
+        // 浜哄彛瀛�
+        setDemograyMap(tExamReportList, dataReportHead, demograpyMap);
+
+        // 鎶ュ憡绫诲瀷
+        String reportType = getReportType(tExamReport);
+
+        // 妯$増鐨勫唴瀹�
+        setDataReportHeader(dataReportHead, reportResultMap, reportType, isRight);
+
+        // Map<sheet鍚�, Map<濮撳悕, Map<key, value>>> 鏁版嵁
+        Map<String, Map<String, Map<String, String>>> sheetExcelMap = new HashMap<>();
+
+        // 濡傛灉鏄疛AQ瑕佽皟鐢ㄦ嘲鍥藉洟闃熺殑鎺ュ彛锛屽鏋滀笉鏄紝鍘昏〃閲岄潰鎵�
+        setDealTaiData(ids, tExamReportList, reportType, sheetExcelMap);
+
+        // 鏋勯�犲��
+        setRportListValue(reportResultMap, demograpyMap, sheetExcelMap, reportType);
+
+        // 寮勬垚鍜屼粬浠師鏉ヤ竴鏍�
+        setSysHeadToEnglish(tExamReportList, reportResultMap, reportType);
+
+        // 鍐欐枃浠�
+        writeMutiFile(fileNameResult, reportResultMap);
+
+        // 杩斿洖涓嬭浇
+        return AjaxResult.success(examUtilService.getLangOrLocalLangString("", tExamReportList.get(0).getProductName()) + "_DateReport.xlsx");
+    }
+
     private void setDealTaiData(@PathVariable("ids") String[] ids, List<TExamReport> tExamReportList, String reportType, Map<String, Map<String, Map<String, String>>> sheetExcelMap) throws IOException {
         if (Objects.equals(reportType, ReportTypeEnum.JAQ.getCode())) {
             // 瑕佸垹闄ょ殑鏂囦欢
@@ -514,13 +637,31 @@
 
     private void writeFile(String fileNameResult, Map<String, List<List<Object>>> reportResultMap) {
         for (Map.Entry<String, List<List<Object>>> entryReport : reportResultMap.entrySet()) {
-            ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(fileNameResult, entryReport.getKey());
+            ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getBigWriter(fileNameResult, entryReport.getKey());
             StyleSet styleSet = writer.getStyleSet();
             styleSet.setBorder(BorderStyle.NONE, IndexedColors.OLIVE_GREEN);
             writer.write(entryReport.getValue(), true);
+            SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
+            sheet.trackAllColumnsForAutoSizing();
+            writer.autoSizeColumnAll();
             writer.close();
         }
-
+    }
+    private void writeMutiFile(String fileNameResult, Map<String, List<List<Object>>> reportResultMap) {
+        FileUtil.del(fileNameResult);
+        ExcelWriter writer = null;
+        for (Map.Entry<String, List<List<Object>>> entryReport : reportResultMap.entrySet()) {
+            if (Objects.isNull(writer)) {
+                writer = new ExcelWriter(fileNameResult,entryReport.getKey());
+            }
+            writer.setSheet(entryReport.getKey());
+            StyleSet styleSet = writer.getStyleSet();
+            styleSet.setBorder(BorderStyle.NONE, IndexedColors.OLIVE_GREEN);
+            writer.write(entryReport.getValue(), true);
+            writer.autoSizeColumnAll();
+            writer.setSheet(entryReport.getKey());
+        }
+        writer.close();
     }
 
     private void setReportResultList(List<Object> demographyHeadSystem, List<List<Object>> reportResultList, Map<String, Object> textMap) {
@@ -556,6 +697,10 @@
     private String getReportType(TExamReport tExamReport) {
         String reportType = ReportTypeEnum.RuiLin.getCode();
         TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(tExamReport.getProductId());
+        tExamPaper.getName();
+        if (tExamPaper.getName().indexOf("鐫块偦")>0 || tExamPaper.getName().indexOf("RuiLin")>0 ) {
+            return reportType;
+        }
         List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(tExamPaper.getReportTemplateId());
         for (TReportTemplate tReportTemplate : tReportTemplateList) {
             if (Objects.isNull(tReportTemplate.getReportType())) {

--
Gitblit v1.9.1