From 8b26ddc890916d904df1ff8d56ae94e2a4634367 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期五, 04 九月 2026 09:45:04 +0800
Subject: [PATCH] fix: 汇总表整数不再显示 .00(公式整数格同跳过)+ 导出列宽按内容自适应 + 09-04 测试报告与母版数据体检清单
---
traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java | 65 ++++++++++++++++++++++++++++++++
docs/功能测试报告/功能测试报告_汇总表整数不显示0.00与列宽自适应_2026-09-04.md | 26 +++++++++++++
docs/生成汇总大表/汇总表母版数据体检与待决策清单_2026-09-04.md | 26 +++++++++++++
3 files changed, 116 insertions(+), 1 deletions(-)
diff --git "a/docs/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212_\346\261\207\346\200\273\350\241\250\346\225\264\346\225\260\344\270\215\346\230\276\347\244\2720.00\344\270\216\345\210\227\345\256\275\350\207\252\351\200\202\345\272\224_2026-09-04.md" "b/docs/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212_\346\261\207\346\200\273\350\241\250\346\225\264\346\225\260\344\270\215\346\230\276\347\244\2720.00\344\270\216\345\210\227\345\256\275\350\207\252\351\200\202\345\272\224_2026-09-04.md"
new file mode 100644
index 0000000..420a90c
--- /dev/null
+++ "b/docs/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212_\346\261\207\346\200\273\350\241\250\346\225\264\346\225\260\344\270\215\346\230\276\347\244\2720.00\344\270\216\345\210\227\345\256\275\350\207\252\351\200\202\345\272\224_2026-09-04.md"
@@ -0,0 +1,26 @@
+# 鍔熻兘娴嬭瘯鎶ュ憡锛氭眹鎬昏〃鏁存暟涓嶆樉绀� .00 涓庡垪瀹借嚜閫傚簲锛�2026-09-04锛�
+
+## 鍔熻兘璇存槑
+閽堝銆婄敓鎴恄閬撹矾杩愯緭閲忔眹鎬昏〃銆嬩袱涓綋楠岄棶棰樹慨鏀癸紙浠呭姩 ReportExportService.java锛夛細
+1. 鏁板瓧鏄剧ず锛氫繚鐣欌�滄樉绀轰袱浣嶅皬鏁般�佸瓨鍌ㄥ叏绮惧害鈥濈殑鎬诲師鍒欙紝浣嗘暣鏁板�间笉鍐嶆樉绀� `.00`锛堝師瀹炵幇瀵光�滃叕寮忕粨鏋滀负鏁存暟鈥濈殑鏍间篃浼氬 0.00锛屾湰娆¤ˉ榻愯烦杩囬�昏緫锛夈��
+2. 鍒楀锛氭眹鎬昏〃鏁存湰瀵煎嚭鍚庢寜鍗曞厓鏍煎唴瀹硅嚜鍔ㄥ姞瀹斤紙鍙姞瀹戒笉缂╃獎锛涜烦杩囧悎骞跺崟鍏冩牸鏍囬锛涗腑鏂囨寜 2 鍊嶅浼扮畻锛涘崟鏍艰秴瀹芥枃鏈皝椤� 34锛屽垪瀹戒笂闄� 46锛岄槻姝㈤暱璇存槑鎶婂垪鎾戠垎锛夈��
+
+## 娴嬭瘯鐜
+- 鍚庣 8090锛堥噸鏂扮紪璇戝苟閲嶅惎锛屾柊浠g爜鐢熸晥锛夛紱MySQL 127.0.0.1:3308銆�
+- 姣嶇増锛歞ocs/鐢熸垚姹囨�诲ぇ琛�/2026骞�7鏈堥亾璺繍杈撻噺姹囨�昏〃.xlsx锛涘熀绾挎枃浠讹細docs/鐢熸垚姹囨�诲ぇ琛�/鐢熸垚_閬撹矾杩愯緭閲忔眹鎬昏〃.xlsx锛堟棫浠g爜瀵煎嚭锛夈��
+
+## 鐢ㄤ緥涓庣粨鏋�
+| # | 鐢ㄤ緥 | 杈撳叆/棰勬湡 | 瀹為檯 | 缁撹 |
+|---|---|---|---|---|
+| 1 | 姹囨�昏〃鏁存暟鏍间笉甯� .00锛堟鍚戯級 | 2026-07 鏁存湰瀵煎嚭锛屾暣鏁版牸涓嶅啀琚 0.00 鏍峰紡 | 鏁存暟涓� 0.00 鏍峰紡鐨勬牸鐢辨棫鏂囦欢 972 澶勯檷鑷� 34 澶勶紙鍓╀綑 34 澶勪负姣嶇増鏈韩棰勮 0.00 鏍峰紡锛岄潪鏈瀵煎嚭鏂板锛夛紱0.00 鏍峰紡鎬绘暟 10588鈫�9650 | PASS |
+| 2 | 姹囨�昏〃灏忔暟鏍间粛涓や綅鏄剧ず銆佷繚鐣欏叏绮惧害锛堟鍚戯級 | 闈炴暣鏁版牸鏄剧ず 0.00銆佹暟鍊肩簿搴︿笉鍙� | 鎶芥煡涓彛寰勫垎鏋� B4=11204.5406 绛変粛鎸� 0.00 鏄剧ず涓斿瓨鍌ㄥ叏绮惧害锛涢潪鏁存暟绾暟鍊兼牸鏃犻仐婕忥紙nonint-plain=0锛� | PASS |
+| 3 | 鍒楀鎸夊唴瀹瑰姞瀹斤紙姝e悜锛� | 鍚勯〉绛惧垪瀹藉彧澧炰笉鍑� | 涓彛寰勫垎鏋� B/D/H銆佸煄甯傛眹鎬汇�佽揣杩愰噺鎺掑悕銆佸煄甯傚垎甯傚窞銆佺彮绾垮寘杞︾瓑鎶芥煡鍒楀鍧囧姞瀹斤紙濡傝揣杩愰噺鎺掑悕 Q 鍘熸湭璁惧搴︹啋21銆丅鈫�21锛夛紱max 瀹� 36 浠ュ唴 | PASS |
+| 4 | 鐙珛鎶ヨ〃鍥炲綊锛坵ycSplit 2026-07锛� | 鏁存暟涓嶅甫 .00銆侀潪鏁存暟鍏ㄩ儴 0.00 | 鏁存暟涓� .00 鏍�=0锛�188 涓潪鏁存暟鏍煎叏閮� 0.00 鏄剧ず | PASS |
+| 5 | 缂栬瘧涓庡惎鍔ㄥ洖褰� | mvn compile EXIT=0銆佸悗绔噸鍚氨缁� | 缂栬瘧 EXIT=0锛�8090 鍚姩 OK | PASS |
+
+## 鍙戠幇鐨勯棶棰樹笌澶勭疆
+1. 姣嶇増鑷韩浠嶆湁 34 涓�滄暣鏁版牸棰勮 0.00 鏍峰紡鈥濓紙灞炵増寮忚璁¤�岄潪瀵煎嚭浜х敓锛夛紝濡傞渶褰诲簳鍘绘帀闇�鏀规瘝鐗堟牱寮忥紝鏈涓嶅姩銆�
+2. 姹囨�昏〃姣嶇増瀛樺湪鏁版嵁闂锛�7鏈堝綋鏈堝潡閿欑敤绱鍊硷紝娑夊強 5 涓〉绛撅級锛屽睘鏁版嵁灞傞棶棰樸�侀潪鏈鏍煎紡淇敼鑼冨洿锛屽彟瑙併�婃眹鎬昏〃姣嶇増鏁版嵁浣撴涓庡緟鍐崇瓥娓呭崟_2026-09-04.md銆嬨��
+
+## 缁撹
+涓ら」淇敼閫氳繃娴嬭瘯锛氭暣鏁颁笉鍐嶆樉绀� .00锛涙眹鎬昏〃瀵煎嚭鍚庡垪瀹芥寜鍐呭鑷�傚簲鍔犲锛涢潪鏁存暟鏍间粛鏄剧ず涓や綅灏忔暟骞朵繚鐣欏叏绮惧害銆�
diff --git "a/docs/\347\224\237\346\210\220\346\261\207\346\200\273\345\244\247\350\241\250/\346\261\207\346\200\273\350\241\250\346\257\215\347\211\210\346\225\260\346\215\256\344\275\223\346\243\200\344\270\216\345\276\205\345\206\263\347\255\226\346\270\205\345\215\225_2026-09-04.md" "b/docs/\347\224\237\346\210\220\346\261\207\346\200\273\345\244\247\350\241\250/\346\261\207\346\200\273\350\241\250\346\257\215\347\211\210\346\225\260\346\215\256\344\275\223\346\243\200\344\270\216\345\276\205\345\206\263\347\255\226\346\270\205\345\215\225_2026-09-04.md"
new file mode 100644
index 0000000..0abbdcb
--- /dev/null
+++ "b/docs/\347\224\237\346\210\220\346\261\207\346\200\273\345\244\247\350\241\250/\346\261\207\346\200\273\350\241\250\346\257\215\347\211\210\346\225\260\346\215\256\344\275\223\346\243\200\344\270\216\345\276\205\345\206\263\347\255\226\346\270\205\345\215\225_2026-09-04.md"
@@ -0,0 +1,26 @@
+# 姹囨�昏〃姣嶇増鏁版嵁浣撴涓庡緟鍐崇瓥娓呭崟锛�2026-09-04锛�
+
+> 缁撹鍏堣锛氬綋鍓嶁�滅敓鎴恄閬撹矾杩愯緭閲忔眹鎬昏〃 = 鏁存湰澶嶅埗姣嶇増鈥濄�傛湰娆′綋妫�鍙戠幇鐨勯棶棰樼粷澶у鏁�**瀛樺湪浜庢瘝鐗堟枃浠舵湰韬紙鏁版嵁灞傦級**锛屼笉鏄鍑虹▼搴忔妸瀹冪畻閿欍�傛瘝鐗堟枃浠讹細docs/鐢熸垚姹囨�诲ぇ琛�/2026骞�7鏈堥亾璺繍杈撻噺姹囨�昏〃.xlsx銆�
+
+## 涓�銆佸凡纭闂锛堝綋鏈堝潡閿欑敤绱鍊硷級
+姣嶇増涓互涓� 5 涓垚鍝侀〉鐨勨��7鏈堝綋鏈堚�濇暟鎹潡锛岃澶嶅埗鎴愪簡鈥�1-7鏈堢疮璁♀�濇暟鎹潡锛堟暟鍊笺�佸悓姣斿叏閮ㄧ浉鍚岋級锛�
+
+| 椤电 | 绱鍧� | 褰撴湀鍧�(閿欒) | 绀轰緥 | 7鏈堝綋鏈堝簲绾︿负 |
+|---|---|---|---|---|
+| 涓彛寰勫垎鏋� | r3-r7 | r12-r16 | 鎬诲杩愰噺 27524.49 | 鈮�4028锛堢彮绾� 1631.20锛嬪叕浜ゅ煄涔� 1466.66锛嬪嚭绉熷煄涔� 509.00锛嬬綉绾﹁溅鍩庝埂 421.46锛屽潎鍙� 2026-07 搴撳唴/鎷嗗垎鍊硷級 |
+| 鍩庡競姹囨�� | r3-r9 | r14-r20 | 鎬诲杩愰噺 237412.33 | 鈮�35465锛堝叕浜� 12974.73锛嬪贰娓稿嚭绉� 5860.24锛嬬綉绾﹁溅 4852.30锛嬭建閬� 11731.83锛嬭疆娓� 46.05锛� |
+| 鍩庡競鍒嗗競宸� | r5 璧� | r50 璧� | 鍏ㄧ渷鎬诲杩愰噺 237412.33 | 鍚屽煄甯傛眹鎬诲崟鏈堝彛寰� |
+| 璐ц繍閲忔帓鍚� | r4-r21 | r25-鈥� | 鍏ㄧ渷瑙勪笂 27734.461 | 7鏈堝崟鏈堬紙杩滃皬浜� 1-7 绱锛� |
+| 璐ц繍鍛ㄨ浆閲忔帓鍚� | r5 璧� | r27 璧� | 鍏ㄧ渷瑙勪笂鍛ㄨ浆閲� 4357157.34 | 7鏈堝崟鏈� |
+
+杩炲甫褰卞搷锛氬綋鏈堝潡鐨勨�滃悓姣斺�濃�滄帓鍚嶁�濃�滃崰姣斺�濅篃闅忛敊璇�间竴骞堕敊锛堝涓彛寰勫垎鏋� C12/G12 鍚� C3/G3锛岀敤鐨勯兘鏄疮璁″悓姣旓級銆�
+
+## 浜屻�佸叾浠栭渶瑕佷綘鎷嶆澘/鐣欐剰鐨勯棶棰�
+1. 鏁版嵁婧愮己鍙o紙褰卞搷鈥滅▼搴忚嚜鍔ㄧ敓鎴� 1-7 绱鈥濓級锛氬簱鍐� h2031 浼佷笟鏈堟姤鍙湁 2026-03銆�2026-07锛涘煄甯傚叕浜�/宸℃父鍑虹鍙湁 2026-06銆�2026-07锛涗釜浣撳杩愬彧鏈� 2026-07銆傚綋鍓嶅敮涓�瀹屾暣鐨� 1-7 鍚勬湀鍙e緞渚濇嵁鏄瘝鐗堝彴璐﹂〉鏈韩銆�
+2. 缃戠害杞︽湀搴︽媶鍒嗚緭鍏ャ�婄綉绾﹁溅璁㈠崟鍙婂叏鐪佹�婚噺.xlsx銆嬬洰鍓嶅彧鏈� 2026-07 涓�琛岋紝1-6 鏈堢綉绾﹁溅鍚勬湀鏃犳硶鐢辩▼搴忚嚜鍔ㄨ绠椼��
+3. 姣嶇増鍏跺畠閬楃暀锛氬彸渚уぇ閲� 2024/鏇存棭鍙傝�冨垪涓� `#REF!` 鏂摼锛堝凡鐭ュ鐞嗛」锛夛紱椤电闂村叕寮忓紩鐢ㄤ笌鈥滅┖姣嶇増濉�尖�濇柟妗堜粛鎸� P2 钀藉湴鏂规鎺ㄨ繘锛堣鍒楄竟鐣屻�佹湀浠芥墿灞曘��2024 鍒楀鐞嗐�佽建閬撹疆娓″叆搴撱�佽緭鍑虹洰褰曚簲椤瑰緟鎷嶆澘锛夈��
+
+## 涓夈�佷慨澶嶆柟鍚戝缓璁紙璇烽�夋嫨/纭锛�
+- 鏂规 A锛堢煭骞冲揩锛屼粎鏈湀姝g‘锛夛細鎸変笂琛ㄦ妸姣嶇増 5 涓〉绛剧殑鈥�7鏈堝綋鏈堝潡鈥濈敤 7 鏈堝綋鏈堝簱鍊�/鎷嗗垎缁撴灉鏀规纭紝鏈鐢熸垚鍗虫纭紱浠ュ悗姣忔湀姣嶇増浠嶉渶浜哄伐淇濊瘉褰撴湀鍧楁纭��
+- 鏂规 B锛堟牴娌伙紝鎺ㄨ崘鍚庣画 P2 瀹炵幇锛夛細瀵煎嚭鏃朵笉鍐嶄俊浠绘瘝鐗堝綋鏈堝潡锛屾敼涓衡�滃彴璐﹂〉锛堜繚鐣� 1-7 鍚勬湀锛夛紜褰撴湀搴撳�硷紜缃戠害杞︽媶鍒嗚緭鍏モ�濊嚜鍔ㄩ噸绠楁垚鍝侀〉褰撴湀鍧楋紱绱鍧椾笌鍙拌处椤典竴鑷存�т篃鍙姞鍏ョ敓鎴愬悗鑷姩鏍¢獙銆�
+- 鍏堝仛 A 椤朵綇鏈湀娴嬭瘯锛屽啀鎺掓湡鍋� B銆�
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 b52289d..b1b1566 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
@@ -3208,6 +3208,8 @@
try (InputStream in = new FileInputStream(template);
XSSFWorkbook wb = new XSSFWorkbook(in)) {
dynamicSummaryYear(wb, year);
+ applyTwoDecimalFormat(wb);
+ autoFitContentColumns(wb); // 姹囨�昏〃瀵煎嚭鍚庢寜鍐呭鍔犲鍒楀锛堝彧鍔犲涓嶇缉绐勶級
return toBytes(wb);
}
}
@@ -4574,7 +4576,13 @@
CellType ct = cell.getCellType();
if (ct != CellType.NUMERIC && ct != CellType.FORMULA) continue;
if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) continue;
- if (ct == CellType.NUMERIC && Math.rint(cell.getNumericCellValue()) == cell.getNumericCellValue()) continue;
+ boolean integral = false;
+ if (ct == CellType.NUMERIC) {
+ integral = Math.rint(cell.getNumericCellValue()) == cell.getNumericCellValue();
+ } else if (cell.getCachedFormulaResultType() == CellType.NUMERIC) {
+ integral = Math.rint(cell.getNumericCellValue()) == cell.getNumericCellValue();
+ }
+ if (integral) continue; // 鏁存暟涓嶆樉绀� .00锛堝惈鍏紡缁撴灉涓烘暣鏁扮殑鏍硷級
org.apache.poi.ss.usermodel.CellStyle cs = cell.getCellStyle();
if (cs == null) continue;
String f = cs.getDataFormatString();
@@ -4595,6 +4603,61 @@
}
}
+ /** 姹囨�昏〃瀵煎嚭鍚庢寜鍐呭鑷姩鍔犲鍒楀锛堝彧鍔犲涓嶇缉绐勶紱璺宠繃鍚堝苟鍗曞厓鏍兼爣棰橈紝闃查暱鏍囬鎶婂崟鍒楁拺鐖嗭級 */
+ private void autoFitContentColumns(org.apache.poi.ss.usermodel.Workbook wb) {
+ if (wb == null) return;
+ org.apache.poi.ss.usermodel.DataFormatter dfmt = new org.apache.poi.ss.usermodel.DataFormatter();
+ for (int s = 0; s < wb.getNumberOfSheets(); s++) {
+ org.apache.poi.ss.usermodel.Sheet sh = wb.getSheetAt(s);
+ if (sh == null) continue;
+ java.util.Set<String> merged = new java.util.HashSet<>();
+ for (org.apache.poi.ss.util.CellRangeAddress ra : sh.getMergedRegions()) {
+ for (int r = ra.getFirstRow(); r <= ra.getLastRow(); r++) {
+ for (int c = ra.getFirstColumn(); c <= ra.getLastColumn(); c++) {
+ merged.add(r + ":" + c);
+ }
+ }
+ }
+ int maxCol = -1;
+ for (org.apache.poi.ss.usermodel.Row row : sh) {
+ if (row == null) continue;
+ maxCol = Math.max(maxCol, (int) row.getLastCellNum() - 1);
+ }
+ if (maxCol < 0) continue;
+ int[] need = new int[maxCol + 1];
+ for (org.apache.poi.ss.usermodel.Row row : sh) {
+ if (row == null) continue;
+ for (org.apache.poi.ss.usermodel.Cell cell : row) {
+ int c = cell.getColumnIndex();
+ if (c > maxCol || merged.contains(row.getRowNum() + ":" + c)) continue;
+ String txt;
+ try {
+ txt = dfmt.formatCellValue(cell);
+ } catch (Exception ignore) {
+ continue;
+ }
+ if (txt == null || txt.isEmpty()) continue;
+ int units = 0;
+ for (int i = 0; i < txt.length(); i++) {
+ units += isWideChar(txt.charAt(i)) ? 2 : 1;
+ }
+ if (units > need[c]) need[c] = Math.min(units, 34); // 闀挎枃鏈笉鎶婂崟鍒楁拺鐖�
+ }
+ }
+ for (int c = 0; c <= maxCol; c++) {
+ if (need[c] <= 0) continue;
+ int target = Math.min(need[c] + 2, 46) * 256;
+ if (target > sh.getColumnWidth(c)) sh.setColumnWidth(c, target);
+ }
+ }
+ }
+
+ /** CJK / 鍏ㄨ瀛楃鎸変袱鍊嶅搴﹁锛堣繎浼� Excel 鏄剧ず鍒楀锛� */
+ private boolean isWideChar(char ch) {
+ return (ch >= 0x2E80 && ch <= 0x9FFF) || (ch >= 0xF900 && ch <= 0xFAFF)
+ || (ch >= 0xFF00 && ch <= 0xFFEF);
+ }
+
private byte[] toBytes(XSSFWorkbook wb) throws Exception {
applyTwoDecimalFormat(wb);
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
--
Gitblit v1.9.1