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