| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 测评列表 |
| | | * @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") |
| | |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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"; |
| | | |
| | | // 把sheet放在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<>(); |
| | | |
| | | // 如果是JAQ要调用泰国团队的接口,如果不是,去表里面找 |
| | | 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())) { |
| | | // 要删除的文件 |
| | |
| | | |
| | | 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) { |
| | |
| | | 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())) { |