zhanghl
2025-05-23 dec8951aae400e54f6ee83a8f95867dba9da8af1
[钣金计划大表] 优化:焊缝统计导出Excel样式
已修改3个文件
106 ■■■■■ 文件已修改
aps-common/aps-common-core/src/main/java/com/aps/common/core/utils/poi/ExcelUtil.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsWeldSeamStatisticsV2Controller.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-common/aps-common-core/src/main/java/com/aps/common/core/utils/poi/ExcelUtil.java
@@ -692,33 +692,10 @@
    {
        // 写入各条记录,每条记录对应excel表中的一行
        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
        CellStyle style = wb.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        Font titleFont = wb.createFont();
        titleFont.setFontName("Arial");
        titleFont.setFontHeightInPoints((short) 16);
        titleFont.setBold(true);
        style.setFont(titleFont);
        DataFormat dataFormat = wb.createDataFormat();
        style.setDataFormat(dataFormat.getFormat("@"));
        CellStyle style = getTitleCellStyle(wb);
        styles.put("title", style);
        style = wb.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        style.setBorderRight(BorderStyle.THIN);
        style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderLeft(BorderStyle.THIN);
        style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderTop(BorderStyle.THIN);
        style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderBottom(BorderStyle.THIN);
        style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        Font dataFont = wb.createFont();
        dataFont.setFontName("Arial");
        dataFont.setFontHeightInPoints((short) 10);
        style.setFont(dataFont);
        style = getDataCellStyle(wb);
        styles.put("data", style);
        style = wb.createCellStyle();
@@ -737,6 +714,40 @@
        return styles;
    }
    public static CellStyle getTitleCellStyle(Workbook wb) {
        CellStyle style = wb.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        Font titleFont = wb.createFont();
        titleFont.setFontName("Arial");
        titleFont.setFontHeightInPoints((short) 16);
        titleFont.setBold(true);
        style.setFont(titleFont);
        DataFormat dataFormat = wb.createDataFormat();
        style.setDataFormat(dataFormat.getFormat("@"));
        return style;
    }
    public static CellStyle getDataCellStyle(Workbook wb) {
        CellStyle style;
        style = wb.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        style.setBorderRight(BorderStyle.THIN);
        style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderLeft(BorderStyle.THIN);
        style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderTop(BorderStyle.THIN);
        style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderBottom(BorderStyle.THIN);
        style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        Font dataFont = wb.createFont();
        dataFont.setFontName("Arial");
        dataFont.setFontHeightInPoints((short) 10);
        style.setFont(dataFont);
        return style;
    }
    /**
     * 根据Excel注解创建表格头样式
     * 
@@ -752,8 +763,16 @@
            String key = StringUtils.format("header_{}_{}", excel.headerColor(), excel.headerBackgroundColor());
            if (!headerStyles.containsKey(key))
            {
                CellStyle style = getHeaderStyle(wb, excel);
                headerStyles.put(key, style);
            }
        }
        return headerStyles;
    }
    private static CellStyle getHeaderStyle(Workbook wb, Excel excel) {
                CellStyle style = wb.createCellStyle();
                style.cloneStyleFrom(styles.get("data"));
        style.cloneStyleFrom(getDataCellStyle(wb));
                style.setAlignment(HorizontalAlignment.CENTER);
                style.setVerticalAlignment(VerticalAlignment.CENTER);
                style.setFillForegroundColor(excel.headerBackgroundColor().index);
@@ -767,12 +786,26 @@
                // 设置表格头单元格文本形式
                DataFormat dataFormat = wb.createDataFormat();
                style.setDataFormat(dataFormat.getFormat("@"));
                headerStyles.put(key, style);
        return style;
            }
    public static CellStyle getCommonHeaderStyle(Workbook wb) {
        CellStyle style = wb.createCellStyle();
        style.cloneStyleFrom(getDataCellStyle(wb));
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        style.setFillForegroundColor( IndexedColors.GREY_50_PERCENT.getIndex());
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        Font headerFont = wb.createFont();
        headerFont.setFontName("Arial");
        headerFont.setFontHeightInPoints((short) 10);
        headerFont.setBold(true);
        headerFont.setColor(IndexedColors.WHITE.getIndex());
        style.setFont(headerFont);
        // 设置表格头单元格文本形式
        DataFormat dataFormat = wb.createDataFormat();
        style.setDataFormat(dataFormat.getFormat("@"));
        return style;
        }
        return headerStyles;
    }
    /**
     * 根据Excel注解创建表格列样式
     * 
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsWeldSeamStatisticsV2Controller.java
@@ -46,7 +46,7 @@
    /**
     * 导出焊缝统计表V2列表
     */
    @RequiresPermissions("weldSeamStatistics:weldSeamStatisticsV2:export")
    //@RequiresPermissions("weldSeamStatistics:weldSeamStatisticsV2:export")
    @Log(title = "焊缝统计表V2", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ApsWeldSeamStatisticsV2 apsWeldSeamStatisticsV2) throws IOException {
aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java
@@ -229,14 +229,8 @@
        //2. 创建Excel工作簿
        SXSSFWorkbook wb = new SXSSFWorkbook(500);
        ExcelUtil<ApsWeldSeamStatisticsV2> excelUtil = new ExcelUtil<>(ApsWeldSeamStatisticsV2.class);
        excelUtil.init(list, "焊缝统计表", "焊缝统计表", Excel.Type.EXPORT);
        excelUtil.createWorkbook();
        excelUtil.createExcelField();
        Map<String, CellStyle> cellStyleMap = excelUtil.createStyles(wb);
        CellStyle titleStyle = cellStyleMap.get("header_WHITE_GREY_50_PERCENT");
        CellStyle dataStyle = cellStyleMap.get("data_CENTER_BLACK_WHITE_STRING_false");
        CellStyle titleStyle = ExcelUtil.getCommonHeaderStyle(wb);
        CellStyle dataStyle =ExcelUtil.getDataCellStyle(wb);
        SXSSFSheet sheet = wb.createSheet("焊缝统计表");
        List<LinkedHashMap<String,String>> titleList=  initRowTitle();
@@ -255,7 +249,6 @@
        //5. 构建数据行
        LinkedHashMap<String, String> first = titleList.get(0);
        ArrayList<Map.Entry<String, String>> titles = new ArrayList<>(first.entrySet());
        List<String> stringFiledKeys=Arrays.asList("productionBase","isSatisfy");
        for (int rowInx = 0; rowInx < list.size(); rowInx++) {
            SXSSFRow dataRow = sheet.createRow(rowInx + 2);
            ApsWeldSeamStatisticsV2 statistics = list.get(rowInx);