From d35aed30c9b5920065774eeaaeefafcc05c49761 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期二, 01 九月 2026 17:32:14 +0800
Subject: [PATCH] docs: 关机快照补充——发布后又拉取到同事 2 个新提交(fbc1c15/91d7eee),已发布版本落后 HEAD
---
traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java | 18 +++++++++++++-----
1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java b/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
index 9415269..945a762 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
@@ -3221,11 +3221,11 @@
}
/** 琛�1 椤圭洰琛屽~鍏咃紙妯℃澘琛�/鎻掑叆琛屽叡鐢紱cityText 涓庢ā鏉� B 鍒楁牸寮忎竴鑷达級 */
- private void fillInvestPlanProjectRow(HSSFRow row, InvestmentProject p, InvestmentMonthly m, int seq, String cityText) {
+ private void fillInvestPlanProjectRow(HSSFRow row, InvestmentProject p, InvestmentMonthly m, int seq, String cityText, String displayName) {
hssfNum(row, 0, (double) seq);
hssfText(row, 1, cityText);
hssfText(row, 2, valueOf(p.getCounty()));
- hssfText(row, 3, p.getProjectName());
+ hssfText(row, 3, displayName != null && !displayName.trim().isEmpty() ? displayName.trim() : p.getProjectName());
hssfText(row, 4, valueOf(p.getConstructNature()));
hssfNum(row, 5, parseYearNum(p.getStartTime()));
hssfNum(row, 6, parseYearNum(p.getEndTime()));
@@ -3332,6 +3332,7 @@
// 鍘熶綅閫愯鏇挎崲锛氬悎璁�/鍧楁爣棰�/甯傚窞灏忚妭/鍒嗙粍/椤圭洰琛岋紱鏈尮閰嶇殑妯℃澘琛屾竻绌烘牱渚嬫暟鎹紙缁撴瀯/鍚堝苟/鍒楀涓嶅彉锛�
int seq = 0;
int si = -1;
+ java.util.Set<Long> usedProjectIds = new HashSet<>();
for (int r = 5; r <= lastRow; r++) {
HSSFRow row = sheet.getRow(r);
if (row == null) continue;
@@ -3391,11 +3392,12 @@
// 椤圭洰琛岋細鎸� 妯℃澘鍚嶇О+甯傚窞+鍧楃被鍒� 鍖归厤 DB 椤圭洰锛屾湭鍖归厤鏁磋娓呯┖
blankInvestRow(row, 25);
if (blockCategory == null) continue; // 鑰佹棫璐ц溅娈垫棤鏁版嵁婧�
- InvestmentProject p = matchInvest(projects, d, b, blockCategory);
+ InvestmentProject p = matchInvest(projects, d, b, blockCategory, usedProjectIds);
if (p == null) continue;
+ usedProjectIds.add(p.getId());
if (sec != null) sec.matched.add(p.getId());
InvestmentMonthly m = mByProject.get(p.getId());
- fillInvestPlanProjectRow(row, p, m, ++seq, b);
+ fillInvestPlanProjectRow(row, p, m, ++seq, b, d);
}
// 鍔ㄦ�佹彃琛岋細DB 椤圭洰鏁� > 妯℃澘棰勭暀琛屾暟鏃讹紝鍦ㄥ競宸炲皬鑺傛湯灏捐ˉ榻愶紙鑷簳鍚戜笂鎻掕锛岄伩鍏嶈鍙烽敊浣嶏級
for (int i = sections.size() - 1; i >= 0; i--) {
@@ -3415,7 +3417,7 @@
HSSFRow row = sheet.getRow(first + j);
if (row == null) continue;
InvestmentProject p = extra.get(j);
- fillInvestPlanProjectRow(row, p, mByProject.get(p.getId()), 0, p.getCity());
+ fillInvestPlanProjectRow(row, p, mByProject.get(p.getId()), 0, p.getCity(), p.getProjectName());
}
}
renumberInvestSeq(sheet, "investPlan");
@@ -3725,6 +3727,11 @@
/** 鍦ㄥ�欓�夐」鐩睜涓寜鍚嶇О鍖归厤 DB 椤圭洰锛堝彲閫� 甯傚窞/绫诲埆 杩囨护 + 鍘垮尯鍓嶇紑娑堟锛夛紝鏈懡涓繑鍥� null */
private InvestmentProject matchInvest(List<InvestmentProject> pool, String name, String cityFull, String category) {
+ return matchInvest(pool, name, cityFull, category, null);
+ }
+
+ /** 甯﹀凡鍗犵敤鎺掗櫎鐨勫尮閰嶏細鍚屼竴 DB 椤圭洰鍙厑璁稿~鍏呬竴琛岋紙閬垮厤妯℃澘涓�鏈�/浜屾湡鍚屽悕琛岄噸澶嶈緭鍑猴級 */
+ private InvestmentProject matchInvest(List<InvestmentProject> pool, String name, String cityFull, String category, Set<Long> excludeIds) {
if (name == null || name.trim().isEmpty()) return null;
String norm = normInvestName(name);
if (norm.isEmpty()) return null;
@@ -3732,6 +3739,7 @@
String county = extractInvestCounty(name);
List<InvestmentProject> cands = new java.util.ArrayList<>();
for (InvestmentProject p : pool) {
+ if (excludeIds != null && excludeIds.contains(p.getId())) continue;
if (category != null && !category.equals(p.getCategory())) continue;
if (cityCanon != null && !cityCanon.equals(RegionUtil.normalizeCityName(p.getCity()))) continue;
cands.add(p);
--
Gitblit v1.9.1