From ad05e6468505895d32a34ae8ca17d3a9934c2ed0 Mon Sep 17 00:00:00 2001 From: wzy-warehouse <18135009705@163.com> Date: Sun, 28 Jun 2026 17:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B1=B1=E6=B4=AA=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E6=98=BE=E7=A4=BA=E4=BB=A5=E5=8F=8A=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E7=AE=80=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gis/xian/dto/DisasterRiskData.java | 2 ++ .../impl/IReportOutputServiceImpl.java | 3 ++- .../gis/xian/utils/ReportTableBuilder.java | 13 +++++++++---- .../template/rainfall/rainfall-template.docx | Bin 19874 -> 20244 bytes 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gis/xian/dto/DisasterRiskData.java b/src/main/java/com/gis/xian/dto/DisasterRiskData.java index bd46e08..9c408f5 100644 --- a/src/main/java/com/gis/xian/dto/DisasterRiskData.java +++ b/src/main/java/com/gis/xian/dto/DisasterRiskData.java @@ -48,6 +48,8 @@ public class DisasterRiskData { private int index; /** 位置 */ private String position; + /** 灾害点名称 */ + private String disasterName; /** 乡镇/街道 */ private String village; /** 发生概率(小数 0-1) */ 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 ecc0ee5..31bc11b 100644 --- a/src/main/java/com/gis/xian/service/impl/IReportOutputServiceImpl.java +++ b/src/main/java/com/gis/xian/service/impl/IReportOutputServiceImpl.java @@ -130,7 +130,7 @@ public class IReportOutputServiceImpl implements ReportOutputService { inferenceResultFileMapper.upsert(id, relativePath, baseName); log.info("文件记录已写入: inference_id={}, file_name={}, file_path={}", id, baseName, relativePath); - return fileServerPath.replaceAll("/+$", "") + "/" + relativePath; + return relativePath; } /** @@ -223,6 +223,7 @@ public class IReportOutputServiceImpl implements ReportOutputService { String level = prob >= 70 ? "高" : "中"; return new DisasterRiskData.SpotRisk() .setPosition(spot.getPosition()) + .setDisasterName(spot.getDisasterName()) .setVillage(spot.getVillage()) .setProbability(prob) .setRiskLevel(level); diff --git a/src/main/java/com/gis/xian/utils/ReportTableBuilder.java b/src/main/java/com/gis/xian/utils/ReportTableBuilder.java index 60dca4b..a2ec7ba 100644 --- a/src/main/java/com/gis/xian/utils/ReportTableBuilder.java +++ b/src/main/java/com/gis/xian/utils/ReportTableBuilder.java @@ -34,22 +34,27 @@ public class ReportTableBuilder { * 构建灾害风险表(四列:序号、位置、发生概率、灾害等级) */ public static TableRenderData buildRiskTable(String disasterType, List spots) { + // 山洪第二列用灾害点名称,其他用位置 + boolean useDisasterName = "山洪".equals(disasterType); + String col2Header = useDisasterName ? "灾害名称" : "位置"; + RowRenderData header = Rows.of( "序号", - "位置", + col2Header, disasterType + "发生概率", "灾害等级" - ).textFontFamily("黑体").textFontSize(XIAO_SI_FONT).textBold().center().create(); + ).textFontFamily("黑体").textFontSize(XIAO_SI_FONT).textBold().center().verticalCenter().create(); Tables.TableBuilder builder = Tables.of(header); AtomicInteger idx = new AtomicInteger(1); for (DisasterRiskData.SpotRisk spot : spots) { + String col2 = useDisasterName ? spot.getDisasterName() : spot.getPosition(); builder.addRow(Rows.of( String.valueOf(idx.getAndIncrement()), - spot.getPosition(), + col2, PCT_FMT.format(spot.getProbability()) + "%", spot.getRiskLevel() - ).textFontFamily("仿宋_GB2312").textFontSize(XIAO_SI_FONT).center().create()); + ).textFontFamily("仿宋_GB2312").textFontSize(XIAO_SI_FONT).center().verticalCenter().create()); } TableRenderData table = builder.create(); diff --git a/src/main/resources/template/rainfall/rainfall-template.docx b/src/main/resources/template/rainfall/rainfall-template.docx index 17d3649bd98d1a2bed4b06647768f7fd22b4d8c8..d02fcfce1def3ef6c8ea46c53d5bcee80bcd6acb 100644 GIT binary patch delta 10112 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 delta 9769 zcmZ9SWl$VYldcDM*Wf<5yF0<%g9Qlgu0wE#!QCaeTX1)G2r@u`;BG-S-`=XbdvE_d z=k2Qgak~5IQ=O6rRg?`?zXXp02hTOZPXGWk+yat!;0ZuRhMJptt$||NM`CJSUUNpC zwhJOjmiO+;GXfQVL>Ch@NBDOaN6PGvc(p1iAW6n#8$3u%9Kd>pNaE9=4P6 zU)XX2z;X5=U}XwU7P5L48#b1j`*V-2r1zVx`wP9v<AvM{NYllv^+Bkbe6rr_==2i07 z9?3}??7G^aq2Y*>wUzWyaq5D*dnF_EF3TwgBlOqHDgJTlmBE@`JbgGKVEzps0q_}m z>HMsPm7y2?^JHqC6DA~2O>l!OPG*r0Q(2ZV2}x$Zm%9&(NV{lm+G|N!!tqqaUHYrP z92lgqCwZD`@!G}np1t5b_2MJA{X!oXIh2!&pF6XI-;ozzx-i@z4{R(RCh4SSj2PC368Itdcw7L|eif(OMw;&RL!&FzmL*LwASHsW4{ zUak#BUq&v&*&<**orBlmG^d_(DP_ebF*$$%?Lv4BD&pPcbOR2e1#Jh-rT(bt(ragN zr|elqgcp2PuU9Vt#Ly1V`i0xbp5SEZQF#|{mJR03>?*H)YhH8wOACA_lVKg3WL2kv|M{vf~{7_v&%bZZMzOzWfJc&VbzEhY`ua0}h zlAligCVXFTDTT`(T5(dxT+2Id|1Rb?hYs;qrT_E-HBCwPW4sGH#c*8bKyuN$%Koje z=19G7{TjoaVu7aoGP+$%o9!fnaBk+8rlgvDW{VpAa&h=Ds8bp_H(F19;b z+zD=BVdq8!j_e*#ZG+1?89J94)Afz;XbYiIb?sKmCMHg6(@vo@Xb6Iirk}M`>0|G9 zl4DD##;d?9PKG33qQ_j`DXLDbb~X5U3J|2D#83>7tf5Db_oCKuH}B80qu8TKsK>KB zp+z@>olJu6<)7>ctK*5P0zf7!_Mtcpu)L_D|78d{N=! zZ4?2k0Ds1qyIf&0#f@ZDh-7&mj;N5x1f4~`p7V!%tdE&iPq`Mhjk3~V_u|@c1WSg4 z6A#FdO8D_VV#BIU{tCfFt))7CiDJ57bEJqE!U1VYxsaI7n|ze?t_6@O^gWAyI`1

d&>!)FJg&;42qsp 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