From 1264070023a61d4bc95d202953ae004b3f8daea4 Mon Sep 17 00:00:00 2001 From: wzy-warehouse <18135009705@163.com> Date: Sun, 28 Jun 2026 16:31:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=A1=A8=E6=A0=BC=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=BB=A5=E5=8F=8A=E9=A3=8E=E9=99=A9=E7=82=B9=E9=9A=90?= =?UTF-8?q?=E6=82=A3=E7=82=B9=E8=AE=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IReportOutputServiceImpl.java | 6 ++++- .../gis/xian/utils/ReportTableBuilder.java | 25 ++++++++++++++++--- .../mapper/XianHiddenDangerSpotsMapper.xml | 2 +- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gis/xian/service/impl/IReportOutputServiceImpl.java b/src/main/java/com/gis/xian/service/impl/IReportOutputServiceImpl.java index dd4906a..2ac4203 100644 --- a/src/main/java/com/gis/xian/service/impl/IReportOutputServiceImpl.java +++ b/src/main/java/com/gis/xian/service/impl/IReportOutputServiceImpl.java @@ -147,11 +147,15 @@ public class IReportOutputServiceImpl implements ReportOutputService { } /** - * 全部行政区名称 + * 全部行政区名称(按降雨量降序) */ private List allDistrictNames(List rainData) { return rainData.stream() .filter(d -> d.getDistrictName() != null && !d.getDistrictName().isEmpty()) + .filter(d -> d.getRainfall() != null && !d.getRainfall().isEmpty()) + .sorted((a, b) -> Double.compare( + Double.parseDouble(b.getRainfall()), + Double.parseDouble(a.getRainfall()))) .map(RainfallDistrictSummaryResponseDTO::getDistrictName) .collect(Collectors.toList()); } diff --git a/src/main/java/com/gis/xian/utils/ReportTableBuilder.java b/src/main/java/com/gis/xian/utils/ReportTableBuilder.java index 27bdc3c..60dca4b 100644 --- a/src/main/java/com/gis/xian/utils/ReportTableBuilder.java +++ b/src/main/java/com/gis/xian/utils/ReportTableBuilder.java @@ -4,6 +4,7 @@ import com.deepoove.poi.data.RowRenderData; import com.deepoove.poi.data.Rows; import com.deepoove.poi.data.TableRenderData; import com.deepoove.poi.data.Tables; +import com.deepoove.poi.data.style.TableStyle; import com.gis.xian.dto.DisasterRiskData; import java.text.DecimalFormat; @@ -16,6 +17,18 @@ import java.util.concurrent.atomic.AtomicInteger; public class ReportTableBuilder { private static final DecimalFormat PCT_FMT = new DecimalFormat("0.00"); + /** + * 小四号 = 12pt = 24 half-pts + */ + private static final int XIAO_SI_FONT = 10; + /** + * 列宽(twips):序号窄 / 位置最宽 / 概率中等 / 等级中等 + */ + private static final int[] COL_WIDTHS = {700, 5000, 1500, 1500}; + /** + * 表格总宽 = 列宽之和 + */ + private static final String TABLE_WIDTH = "8700"; /** * 构建灾害风险表(四列:序号、位置、发生概率、灾害等级) @@ -26,7 +39,7 @@ public class ReportTableBuilder { "位置", disasterType + "发生概率", "灾害等级" - ).textBold().center().create(); + ).textFontFamily("黑体").textFontSize(XIAO_SI_FONT).textBold().center().create(); Tables.TableBuilder builder = Tables.of(header); AtomicInteger idx = new AtomicInteger(1); @@ -36,8 +49,14 @@ public class ReportTableBuilder { spot.getPosition(), PCT_FMT.format(spot.getProbability()) + "%", spot.getRiskLevel() - ).center().create()); + ).textFontFamily("仿宋_GB2312").textFontSize(XIAO_SI_FONT).center().create()); } - return builder.create(); + + TableRenderData table = builder.create(); + TableStyle style = new TableStyle(); + style.setWidth(TABLE_WIDTH); + style.setColWidths(COL_WIDTHS); + table.setTableStyle(style); + return table; } } diff --git a/src/main/resources/com/gis/xian/mapper/XianHiddenDangerSpotsMapper.xml b/src/main/resources/com/gis/xian/mapper/XianHiddenDangerSpotsMapper.xml index 3532452..0268ad3 100644 --- a/src/main/resources/com/gis/xian/mapper/XianHiddenDangerSpotsMapper.xml +++ b/src/main/resources/com/gis/xian/mapper/XianHiddenDangerSpotsMapper.xml @@ -69,7 +69,7 @@