linzhijie
2021-04-06 8728733ad60e1698bb6cf0fa2e428c28a6bffbe7
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;
@@ -122,7 +123,6 @@
    private IExamUtilService iExamUtilService;
    @Autowired
    private IEntTestPackageService entTestPackageService;
    @Autowired
    private ITExamPaperService itExamPaperService;
@@ -198,6 +198,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 +265,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);
    }
    /**
@@ -381,6 +433,75 @@
        // 拼接生成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);
        // 写文件
        writeFile(fileNameResult, reportResultMap);
        // 返回下载
        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());
        // 人口学变量
        // 三行
@@ -577,6 +698,10 @@
    }
    private void setDataReportHeader(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap, String reportType, boolean isRight) {
        //如果为空重新获取
        if(Objects.isNull(reportType)){
        }
        if (Objects.equals(reportType, ReportTypeEnum.RuiLin.getCode())) {
            setDataReportHeaderRuilin(dataReportHead, reportResultMap, isRight);
        } else if (Objects.equals(reportType, ReportTypeEnum.CAQ.getCode())) {