101captain
2022-02-22 617f53ab8de1e68136c6fe3bd42c5c3edb2b8251
预约登记导出无图片
2个文件已修改
320 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/AssemblyUtils.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/AssemblyUtils.java
@@ -220,4 +220,198 @@
        }
        return resultList;
    }
    public static List<List<Object>> ReserveDataNoImage(List<ComActQuestnaireAnswerContentVO> answerContentVOList) {
        //结果数据集合
        List<List<Object>> resultList = new ArrayList<>();
        //构建单个用户数据
        List<Object> userData = new ArrayList<>();
        String noExport = "以上信息仅用于";
        //遍历答案列表
        Long reserveRecordId = 0L;
        Long reserveSubId = 0L;
        Boolean isOldDuo = false;
        StringBuffer sb = new StringBuffer();
        if (answerContentVOList != null && answerContentVOList.size() > 0) {
            int a=0;
            for (ComActQuestnaireAnswerContentVO userAnswers : answerContentVOList) {
                a++;
                if(answerContentVOList.size()==26&&a==9){
                    userData.add(" ");
                }
                //判断是文字描述直接跳过
                if (userAnswers.getOptionType().equals(5) ||userAnswers.getOptionType().equals(11)
                        || (StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport))) {
                    continue;
                }
                //判断reserveRecordId为空则为第一条记录,默认加上昵称和灯谜是
                if (reserveRecordId.equals(0L)) {
                    reserveRecordId = userAnswers.getReserveRecordId();
                    userData.add(userAnswers.getNickName());
                    userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format));
                }
                //根据reserveRecordId判断是否是第二条填报记录
                if (!reserveRecordId.equals(userAnswers.getReserveRecordId())) {
                    reserveSubId = 0L;
                    if(isOldDuo){
                        String answer = sb.toString();
                        userData.add(answer.substring(0, answer.length() - 1));
                        sb = new StringBuffer();
                        isOldDuo = false;
                    }
                    resultList.add(userData);
                    userData = new ArrayList<>();
                    reserveRecordId = userAnswers.getReserveRecordId();
                    userData.add(userAnswers.getNickName());
                    userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format));
                    if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){
                        userData.add(userAnswers.getAnswerContent());
                    }else{
                        userData.add(" ");
                    }
                }else{
                    if(reserveSubId.equals(0L)){
                        reserveSubId = userAnswers.getReserveSubId();
                    }
                    if(!reserveSubId.equals(userAnswers.getReserveSubId())){
                        reserveSubId = userAnswers.getReserveSubId();
                        //如果是承诺字段则不导出
                        if(StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport)){
                            continue;
                        }
                        //判断当前的组件类型是否是图片上传,导出时需要导出图片
                        if(userAnswers.getOptionType().equals(11)){
                            reserveSubId = userAnswers.getReserveSubId();
                            try {
                                if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){
                                    if(userAnswers.getAnswerContent().contains("_compress")){
                                        userData.add(new URL(userAnswers.getAnswerContent()));
                                    }
                                    else {
                                        URL url=new URL(userAnswers.getAnswerContent().substring(0,userAnswers.getAnswerContent().lastIndexOf("."))+"_compress.jpg");
                                        if(url.getContent()!=null){
                                            userData.add(url);
                                        }
                                        else {
                                            userData.add(userAnswers.getAnswerContent());
                                        }
                                    }
                                    //userData.add(new File("/workspace/minio/data/files/"+userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf("files/")+6)));
                                }
                                else {
                                    userData.add(" ");
                                }
                            }catch (Exception e){
                                userData.add(" ");
                                e.printStackTrace();
                                log.error("导出转换图片失败!");
                            }
                            continue;
                        }
                        //判断当前组件类型是否签名
                        if(userAnswers.getOptionType().equals(12)){
                            reserveSubId = userAnswers.getReserveSubId();
                            try {
                                userData.add(DatatypeConverter.parseBase64Binary(userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf(",") + 1)));
                            }catch (Exception e){
                                userData.add(" ");
                                log.error("导出转换图片失败!");
                            }
                            continue;
                        }
                        if(userAnswers.getOptionType().equals(1)){
                            isOldDuo = true;
                            sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ",");
                            continue;
                        }else{
                            if(isOldDuo){
                                String answer = sb.toString();
                                userData.add(answer.substring(0, answer.length() - 1));
                                sb = new StringBuffer();
                            }
                            isOldDuo = false;
                        }
                        sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ",");
                        String answer = sb.toString();
                        userData.add(answer.substring(0, answer.length() - 1));
                        sb = new StringBuffer();
                    }else{
                        //如果是承诺字段则不导出
                        if(StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport)){
                            continue;
                        }
                        //判断当前的组件类型是否是图片上传,导出时需要导出图片
                        if(userAnswers.getOptionType().equals(11)){
                            reserveSubId = userAnswers.getReserveSubId();
                            try {
                                if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){
                                    if(userAnswers.getAnswerContent().contains("_compress")){
                                        userData.add(new URL(userAnswers.getAnswerContent()));
                                    }
                                    else {
                                        URL url=new URL(userAnswers.getAnswerContent().substring(0,userAnswers.getAnswerContent().lastIndexOf("."))+"_compress.jpg");
                                        if(url.getContent()!=null){
                                            userData.add(url);
                                        }
                                        else {
                                            userData.add(userAnswers.getAnswerContent());
                                        }
                                    }
                                    //userData.add(new File("/workspace/minio/data/files/"+userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf("files/")+6)));
                                }
                                else {
                                    userData.add(" ");
                                }
                            }catch (Exception e){
                                userData.add(" ");
                                log.error("导出转换图片失败!");
                            }
                            continue;
                        }
                        //判断当前组件类型是否签名
                        if(userAnswers.getOptionType().equals(12)){
                            reserveSubId = userAnswers.getReserveSubId();
                            try {
                                //userData.add(new URL("http://image.panzhihua.nhys.cdnhxx.com//idcard/967dbdef3ef3465a9169fbea204f9aa7.jpg"));
                                userData.add(DatatypeConverter.parseBase64Binary(userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf(",") + 1)));
                            }catch (Exception e){
                                userData.add(" ");
                                log.error("导出转换图片失败!");
                            }
                            continue;
                        }
                        if(userAnswers.getOptionType().equals(1)){
                            isOldDuo = true;
                            sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ",");
                            continue;
                        }else{
                            if(isOldDuo){
                                String answer = sb.toString();
                                userData.add(answer.substring(0, answer.length() - 1));
                                sb = new StringBuffer();
                            }
                            isOldDuo = false;
                        }
                        sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ",");
                        String answer = sb.toString();
                        userData.add(answer.substring(0, answer.length() - 1));
                        sb = new StringBuffer();
                    }
                }
            }
            if(isOldDuo){
                String answer = sb.toString();
                userData.add(answer.substring(0, answer.length() - 1));
            }
            resultList.add(userData);
        }
        return resultList;
    }
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java
@@ -618,6 +618,132 @@
        }
    }
    @ApiOperation(value = "导出登记明细不带图片")
    @PostMapping("/register/list/exportNoImage")
    public R exportRegisterNoImage(@RequestBody PageReserveRegisterDetailedAdminDTO pageReserveRegisterDetailedAdminDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if (loginUserInfo == null) {
            return R.fail("请先登录");
        }
        String regionCode = communityService.getActBelongRegionCode(loginUserInfo.getCommunityId());
        if (regionCode.equals("510411")) {
            ComActReserveDetailAdminVO reserverRecord =
                    communityService.detailReserveAdmin(pageReserveRegisterDetailedAdminDTO.getReserveId()).getData();
            if (reserverRecord.getTitle().equals("返攀登记")) {
                return renheExportRegister(pageReserveRegisterDetailedAdminDTO);
            }
        }
        String ftpUrl = "/mnt/data/web/excel/";
        String name = "登记明细导出数据.xlsx";
        String noHaed = "承诺";
        try {
            SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
            sftp.login();
            boolean existDir = sftp.isExistDir(ftpUrl + name);
            if (!existDir) {
                String property = System.getProperty("user.dir");
                String fileName = property + File.separator + name;
                ExcelWriter excelWriter = null;
                InputStream inputStream = null;
                try {
                    /**
                     * 组合导出数据
                     * 用户问卷答案
                     */
                    R QuestnaireAnswersDTOR = communityService.exportRegisterAdmin(pageReserveRegisterDetailedAdminDTO);
                    QuestnaireAnswersDTO questnaireAnswersDTOS = JSON.parseObject(JSON.toJSONString(QuestnaireAnswersDTOR.getData()), QuestnaireAnswersDTO.class);
                    List<ComActQuestnaireSubVO> subVOList = questnaireAnswersDTOS.getSubs();
                    //构造表头
                    List<List<String>> headList = new ArrayList<List<String>>();
                    String firstRowContent = "登记明细";
                    List<String> head0 = new ArrayList<>();
                    head0.add(firstRowContent);
                    head0.add("登记人昵称");
                    headList.add(head0);
                    List<String> head1 = new ArrayList<>();
                    head1.add(firstRowContent);
                    head1.add("登记时间");
                    headList.add(head1);
                    subVOList.forEach(sub -> {
                        if (sub.getType() != 5&&sub.getType() != 11) {
                            List<String> headn = new ArrayList<>();
                            headn.add(firstRowContent);
                            if(!sub.getContent().equals(noHaed)&& StringUtils.isNotEmpty(sub.getContent())){
                                if(sub.getType() == 11){
                                    if(sub.getContent().contains("(")){
                                        headn.add(sub.getContent().substring(0, sub.getContent().indexOf("(")));
                                    }
                                    else {
                                        headn.add(sub.getContent());
                                    }
                                }else{
                                    headn.add(sub.getContent());
                                }
                                headList.add(headn);
                            }
                        }
                    });
                    //数据转换
                    List<List<Object>> datalist = AssemblyUtils.ReserveDataNoImage(questnaireAnswersDTOS.getAnswers());
                    WriteCellStyle headWriteCellStyle = new WriteCellStyle();
                    //设置头居中
                    headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
                    //设置头字体
                    WriteFont headWriteFont = new WriteFont();
                    headWriteFont.setFontHeightInPoints((short)6);
                    headWriteFont.setBold(true);
                    headWriteCellStyle.setWriteFont(headWriteFont);
                    WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
                    //设置表格内容字体
                    WriteFont writeFont = new WriteFont();
                    writeFont.setFontHeightInPoints((short)6);
                    //设置 水平居中
                    contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
                    //设置 垂直居中
                    contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
                    contentWriteCellStyle.setWriteFont(writeFont);
                    contentWriteCellStyle.setWrapped(true);
                    HorizontalCellStyleStrategy horizontalCellStyleStrategy =
                            new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
                    excelWriter = EasyExcel.write(fileName)
                            .registerWriteHandler(horizontalCellStyleStrategy).registerWriteHandler(new Custemhandler())
                            .registerWriteHandler(new CustomSheetWriteHandler()).build();
                    WriteSheet writeSheet = EasyExcel.writerSheet("登记明细导出数据").head(headList).build();
                    excelWriter.write(datalist, writeSheet);
                    excelWriter.finish();
                    File file = new File(fileName);
                    inputStream = new FileInputStream(file);
                    sftp.uploadMore(ftpUrl, name, inputStream);
                    sftp.logout();
                    inputStream.close();
                    String absolutePath = file.getAbsolutePath();
                    boolean delete = file.delete();
                    log.info("删除excel【{}】结果【{}】", absolutePath, delete);
                } finally {
                    // 千万别忘记finish 会帮忙关闭流
                    if (inputStream != null) {
                        inputStream.close();
                    }
                    if (excelWriter != null) {
                        excelWriter.finish();
                    }
                }
            }
            return R.ok(sftpConfig.getExcelUrl() + name);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("文件传输失败【{}】", e.getMessage());
            return R.fail();
        }
    }
    /**
     * 仁和区离攀返攀特别定制excel方法。对于其他区不适用。
     *