完善表格显示以及风险点隐患点计数

This commit is contained in:
wzy-warehouse
2026-06-28 16:31:10 +08:00
parent 30acf435ee
commit 1264070023
3 changed files with 28 additions and 5 deletions
@@ -147,11 +147,15 @@ public class IReportOutputServiceImpl implements ReportOutputService {
} }
/** /**
* 全部行政区名称 * 全部行政区名称(按降雨量降序)
*/ */
private List<String> allDistrictNames(List<RainfallDistrictSummaryResponseDTO> rainData) { private List<String> allDistrictNames(List<RainfallDistrictSummaryResponseDTO> rainData) {
return rainData.stream() return rainData.stream()
.filter(d -> d.getDistrictName() != null && !d.getDistrictName().isEmpty()) .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) .map(RainfallDistrictSummaryResponseDTO::getDistrictName)
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@@ -4,6 +4,7 @@ import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.data.Rows; import com.deepoove.poi.data.Rows;
import com.deepoove.poi.data.TableRenderData; import com.deepoove.poi.data.TableRenderData;
import com.deepoove.poi.data.Tables; import com.deepoove.poi.data.Tables;
import com.deepoove.poi.data.style.TableStyle;
import com.gis.xian.dto.DisasterRiskData; import com.gis.xian.dto.DisasterRiskData;
import java.text.DecimalFormat; import java.text.DecimalFormat;
@@ -16,6 +17,18 @@ import java.util.concurrent.atomic.AtomicInteger;
public class ReportTableBuilder { public class ReportTableBuilder {
private static final DecimalFormat PCT_FMT = new DecimalFormat("0.00"); 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 + "发生概率", disasterType + "发生概率",
"灾害等级" "灾害等级"
).textBold().center().create(); ).textFontFamily("黑体").textFontSize(XIAO_SI_FONT).textBold().center().create();
Tables.TableBuilder builder = Tables.of(header); Tables.TableBuilder builder = Tables.of(header);
AtomicInteger idx = new AtomicInteger(1); AtomicInteger idx = new AtomicInteger(1);
@@ -36,8 +49,14 @@ public class ReportTableBuilder {
spot.getPosition(), spot.getPosition(),
PCT_FMT.format(spot.getProbability()) + "%", PCT_FMT.format(spot.getProbability()) + "%",
spot.getRiskLevel() 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;
} }
} }
@@ -69,7 +69,7 @@
</select> </select>
<select id="queryHiddenDangerNumberByDistrictName" resultMap="RiskAndHiddenSpotDTOMap"> <select id="queryHiddenDangerNumberByDistrictName" resultMap="RiskAndHiddenSpotDTOMap">
SELECT county, COUNT(*) AS number FROM xian_risk_spots SELECT county, COUNT(*) AS number FROM xian_hidden_danger_spots
<where> <where>
is_delete = 0 is_delete = 0
<if test="districtNames != null and districtNames.size() > 0"> <if test="districtNames != null and districtNames.size() > 0">