k94314517
2024-04-02 11927cefa1347d192105c9b0bc08d1b91badf18c
server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -1139,13 +1139,13 @@
                sheet.setColumnWidth(i, ((i==3|| i== 4|| i== 5 )?16:8) * 2 * 256);
            }
            sheet.createFreezePane(0, 1);
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,6));
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,5));
            Row title = sheet.createRow(0);
            title.setHeight((short) 2000);
            Cell c = title.createCell(0);
            c.setCellValue(sheetName);
            configFirstCell(sxssfWorkbook,c);
            for (int i = 0; i < 8; i++) {
            for (int i = 0; i < 6; i++) {
                if(i>0){
                    title.createCell(i).setCellValue("");
                }
@@ -1154,7 +1154,7 @@
            Row header1 = sheet.createRow(1);
            header1.createCell(0).setCellValue("投保人");
            header1.createCell(1).setCellValue("报保险人");
            header1.createCell(2).setCellValue("投保人数");
            header1.createCell(2).setCellValue("");
            header1.createCell(3).setCellValue("保险方案");
            header1.createCell(4).setCellValue("保险生效起期");
            header1.createCell(5).setCellValue("保险生效止期");
@@ -1192,8 +1192,8 @@
                header5.createCell(1).setCellValue(StringUtils.defaultString(addModel.getMemberName(),""));
                header5.createCell(2).setCellValue(Constants.equalsInteger(addModel.getSex(),0)?"男":(Constants.equalsInteger(addModel.getSex(),1)?"女":"-"));
                header5.createCell(3).setCellValue(StringUtils.defaultString(addModel.getIdcardNo(),""));
                header5.createCell(6).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
                header5.createCell(7).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
                header5.createCell(4).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
                header5.createCell(5).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
                for (int i = 0; i < 6; i++) {
                    configDataCell(sxssfWorkbook,header5.getCell(i));
                }
@@ -1214,7 +1214,7 @@
                configInfoCell(sxssfWorkbook,header6.getCell(i),HorizontalAlignment.LEFT);
            }
            header6.setHeight((short) 2000);
            sheet.addMergedRegion(new CellRangeAddress(rowIndex ,rowIndex,0,7));
            sheet.addMergedRegion(new CellRangeAddress(rowIndex ,rowIndex,0,5));
            Row header7= sheet.createRow(rowIndex+1);
            header7.setHeight((short) 3000);
            header7.createCell(0).setCellValue("投保企业签章 :                            \n \n \n" +"日期:     年     月     日    ");
@@ -1224,7 +1224,7 @@
                }
                configInfoCell(sxssfWorkbook,header7.getCell(i),HorizontalAlignment.RIGHT);
            }
            sheet.addMergedRegion(new CellRangeAddress(rowIndex+1 ,rowIndex+1,0,7));
            sheet.addMergedRegion(new CellRangeAddress(rowIndex+1 ,rowIndex+1,0,5));
            //临时缓冲区
            ByteArrayOutputStream out = new ByteArrayOutputStream();
@@ -1267,6 +1267,103 @@
            return null;
    }
    public void exportUnionApplyDetail(UnionApply model, HttpServletResponse response) {
        try {
            String encodeFileName = URLEncoder.encode("投保详情单_"+model.getCompanyName()+"_"+model.getSolutionName(), Charset.forName("UTF-8").toString()) + ".xlsx";
            response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
            response.setContentType("application/octet-stream");
            response.setHeader("eva-opera-type", "download");
            response.setHeader("eva-download-filename", encodeFileName);
            this.exportUnionApplyDetailDo(model,"投保申请表", response.getOutputStream());
        } catch (IOException e) {
            throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
        }
    }
    public void exportUnionApplyDetailDo (UnionApply data, String sheetName, OutputStream os) {
        SXSSFWorkbook sxssfWorkbook;
        try {
            sxssfWorkbook = new SXSSFWorkbook();
            Sheet sheet = sxssfWorkbook.createSheet(sheetName);
            for (int i = 0; i <7; i++) {
                sheet.setColumnWidth(i, (i==5?20:15) * 2 * 256);
            }
            sheet.createFreezePane(0, 1);
            Row title = sheet.createRow(0);
            title.setHeight((short) 800);
            for (int i = 0; i < 7; i++) {
                title.createCell(i).setCellValue(i==0?sheetName:"");
                configTitleCell(sxssfWorkbook,title.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,6));
            Row header1 = sheet.createRow(1);
            header1.setHeight((short) 500);
            header1.createCell(0).setCellValue("投保人");
            header1.createCell(1).setCellValue("被保险人");
            header1.createCell(2).setCellValue("保险方案");
            header1.createCell(3).setCellValue("保险生效起期");
            header1.createCell(4).setCellValue("保险生效止期");
            header1.createCell(5).setCellValue("投保人数");
            header1.createCell(6).setCellValue("总费用(元)");
            for (int i = 0; i < 7; i++) {
                configFirstCell(sxssfWorkbook,header1.getCell(i));
            }
            Row header2 = sheet.createRow(2);
            header2.createCell(0).setCellValue(data.getCompanyName());
            header2.createCell(1).setCellValue(data.getCompanyNames());
            header2.createCell(2).setCellValue(data.getSolutionName());
            header2.createCell(3).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
            header2.createCell(4).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
            header2.createCell(5).setCellValue(data.getInsureNum());
            header2.createCell(6).setCellValue(Constants.formatBigdecimal2Float(data.getFee()).toString());
            for (int i = 0; i < 7; i++) {
                configDataCell(sxssfWorkbook,   header2.getCell(i));
            }
            Row header4 = sheet.createRow(3);
            header4.createCell(0).setCellValue("序号");
            header4.createCell(1).setCellValue("员工姓名");
            header4.createCell(2).setCellValue("性别");
            header4.createCell(3).setCellValue("身份证号");
            header4.createCell(4).setCellValue("被保险人");
            header4.createCell(5).setCellValue("派遣单位");
            header4.createCell(6).setCellValue("所属工种");
            header4.setHeight((short) 500);
            for (int i = 0; i < 7; i++) {
                configFirstCell(sxssfWorkbook,header4.getCell(i));
            }
            if(data.getApplyDetailList()!=null){
                // 创建数据记录
                for (int rowIndex = 0; rowIndex < data.getApplyDetailList().size(); rowIndex++) {
                    ApplyDetail d = data.getApplyDetailList().get(rowIndex);
                    Row header5 = sheet.createRow(rowIndex + 4);
//                    header5.setHeight((short) 300);
                    header5.createCell(0).setCellValue(rowIndex+1);
                    header5.createCell(1).setCellValue(StringUtils.defaultString(d.getMemberName(),""));
                    header5.createCell(2).setCellValue(Constants.equalsInteger(d.getSex(),0)?"男":(Constants.equalsInteger(d.getSex(),1)?"女":"-"));
                    header5.createCell(3).setCellValue(StringUtils.defaultString(d.getIdcardNo(),""));
                    header5.createCell(4).setCellValue(StringUtils.defaultString(d.getCompanyName(),""));
                    header5.createCell(5).setCellValue(StringUtils.defaultString(d.getDuName(),""));
                    header5.createCell(6).setCellValue(StringUtils.defaultString(d.getWorkTypeName(),""));
                    // 设置数据单元格
                    for (int i = 0; i < 7; i++) {
                        configDataCell(sxssfWorkbook,   header5.getCell(i));
                    }
                }
            }
            sxssfWorkbook.write(os);
            os.close();
        } catch (Exception e) {
            throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    @Data
    @AllArgsConstructor