| HANDOFF.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/生成汇总大表/2026年9月道路运输量汇总表.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| traffic-audit-server/src/main/java/com/trafficaudit/reportexport/layout/SummaryLayoutExpander.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HANDOFF.md
@@ -4,6 +4,14 @@ > **æ¯å¤©ç»ææ¶**ï¼æå½å¤©è¿å±ã踩è¿çåãæ°éæ±ãæªå®æäºé¡¹æ´æ°å°æ¬æä»¶ï¼ç¶åå¯ä»¥æ¾å¿å¼æ°å¯¹è¯ã > **åä½çº¦å®ï¼2026-08-31ï¼**ï¼è¯´ãæäº¤ã= æ¬å° commit + æ¨éå°è¿ç«¯ gitï¼origin mainï¼Gitblitï¼ï¼ä¸ååªåæ¬å° commitã ### 10-12ï¼11ï¼ï¼æ©å表头è¡äºæ¬¡ä¿®æ£ + 9 ææ¯ç被æ©ååææ¥æç 13 æ ¼æ¸ çãå¾ éªæ¶ã - **ç°è±¡ï¼ç¨æ·æ¥åï¼**ï¼çæè¡¨é"å¾å¤æ°æ®æ¯ 8 æç"ãææ¥åç° **9 ææ¯çéæ 13 ä¸ªæ°æ®æ ¼è¢«åæäº 9 ææä»½æ¥æåºå `46266`ï¼= 2026-09-01ï¼**ï¼` è´§è¿!S11/T11`ã`ç线å 车!S9/T9`ã`å ¬äº¤!S8/T8`ã`åºç§!S6/T6`ã`ä¸å£å¾æç»!S5/T5`ï¼ä¸æ¸¸ç¼å被带åï¼`ç线å 车!S5`ã`ä¸å£å¾æç»!S99/S100/S104/S105` ç乿¯ 46266ï¼ã - **æ ¹å **ï¼æ©åå¨ `headerRowsOf` é¦çåªè¦æ±"æ´è¡ â¥2 个æä»½æ ¼"ï¼èåºç§ç¬¬ 6 è¡ãç线å 车第 3 è¡è¿ç±»**æ°æ®è¡**鿰好æ 2 ä¸ªåæ¥æåºåçæ°å¼ â è¢«è¯¯å¤æè¡¨å¤´è¡ â æ©åæ¶æ"æä»½æ¥æ"åè¿äºæ°æ®è¡ï¼`cloneHeaderCell` 对æ°å¼æ ¼å `targetMonth` çæ¥æï¼ã - **ä¿®æ³**ï¼æ¹ä¸º**å å"æä»½è¡¨å¤´æ ¼æå¤çé£ä¸è¡"ä½åºåï¼æå®çæä»½å彿 åå**ï¼åªæè¿äºåä¸å¤§åæ¯æä»½æ ¼çè¡æç®è¡¨å¤´è¡ã轨éã轮渡ä¸é¡µä¸¤ä¸ªåç `[1,10]` ä¿æ âï¼` è´§è¿/å ¬äº¤/ç½çº¦è½¦/ä¸å£å¾æç»` ä»ä¸ºåè¡è¡¨å¤´ âã - **æ¯çä¿®å¤ï¼ç¨ Excel COMï¼æªæ´æ¬éåï¼**ï¼13 æ ¼ææ©åè§å精修ï¼è¯¥çç©ºçæ¸ 空ãå ¬å¼æè§åè¡¥å `=S12+S13` / `=S11/AN11-1` / `=S10+S14+â¦`ï¼+ `CalculateFull` æ´æ¬éç®å·æ°ç¼åï¼ä¿®å¤åå¤ä»½ `_bak_2026å¹´9ææ¯ç_æ¸ çèæ ¼å_20261012.xlsx`ãä¿®å¤åå ¨ç°¿åªå© 3 个 `46266` ç**åæ³è¡¨å¤´æä»½æ ¼**ï¼åå¸å®¢è¿ S2ãå ¬äº¤ S3ãåºç§ S3ï¼ã - **éªè¯**ï¼éè· 2026-08â9 ææ©åï¼æ¥å¿è¡¨å¤´è¡ ` è´§è¿[2] ç线å 车[1] åå¸å®¢è¿[1] å ¬äº¤[2] åºç§[2] ç½çº¦è½¦[2] 轨éã轮渡[1,10] ä¸å£å¾æç»[2]`ï¼ï¼æ°æ¨ä»¶å¨è¿ 13 æ ¼ä¸å ¨é¨æ£ç¡®ï¼éè· 2026-09 çæï¼äº§ç© `docs\çææ±æ»å¤§è¡¨\è¾åº\çæ_éè·¯è¿è¾éæ±æ»è¡¨_2026-09.xlsx` ä¸ 13 æ ¼æ¢å¤ä¸ºçå® 9 æå¼ï¼`ç线å 车!S9=20647.5363`ã`å ¬äº¤!S8=61618.09`ã`åºç§!S6=32787.72`ï¼ï¼**æ 46266 æ®ç**ã - **æ¥åï¼æ¬å°ãä¸å ¥åºï¼**ï¼`docs/åè½æµè¯æ¥å/åè½æµè¯æ¥å_æ©å表头è¡åºååä¿®æ£ä¸æ¯çèæ ¼æ¸ ç_2026-10-12.md`ãç¶æï¼**ãå¾ éªæ¶ã**ã ### 10-12ï¼3ï¼ï¼ä¿®ã9 æäº§ç©ä¸¢ 8 æå / ç´¯è®¡æ¼æãââæ©åæ¹ä¸º**ä»¥å½æäº§ç©ä¸ºåº**ãå¾ éªæ¶ã - **ç°è±¡ï¼ç¨æ·æ¥åï¼**ï¼çæç 9 ææ±æ»å¤§è¡¨é **8 æåå ¨ç©º**ï¼ç´¯è®¡æ¼æ 8 æï¼è§ä¸è´§è¿é累计æ¾ç¤º 31309.58ï¼æ£ç¡®åºä¸º 1-7æ 27734.46 + 8æ 3665.36 + 9æ 3575.12 = **34974.95**ï¼ã docs/Éú³É»ã×Ü´ó±í/2026Äê9ÔµÀ·ÔËÊäÁ¿»ã×ܱí.xlsxBinary files differ
traffic-audit-server/src/main/java/com/trafficaudit/reportexport/layout/SummaryLayoutExpander.java
@@ -264,23 +264,48 @@ return insertCol; } /** 表头è¡ï¼0 åºï¼ï¼å«ãå¹´+æã表头åå æ ¼çè¡ï¼è½¨éã轮渡æä¸¤ä¸ªå â 两è¡ã */ /** * 表头è¡ï¼0 åºï¼ï¼è½¨éã轮渡è¿ç±»ä¸é¡µä¸¤ä¸ªåçæä¸¤è¡ã * * <p>2026-10-12 äºæ¬¡ä¿®æ£ï¼å åãæä»½è¡¨å¤´æ ¼æå¤çé£ä¸è¡ãä½åºåï¼æå®çæä»½åå½ä½æ ååï¼ * åªæè¿äºåä¸å¤§åæ¯æä»½æ ¼çè¡æç®è¡¨å¤´è¡ãåçåªè¦æ±ãæ´è¡ â¥2 个æä»½æ ¼ãï¼ * ä¼ææ°æ®è¡éæ°å¥½è½ææ¥æåºåçæ°å¼å½æè¡¨å¤´ â æ©åæ¶ææä»½æ¥æåè¿æ°æ®è¡ * ï¼2026-09 æ¯ç ` è´§è¿!S11`ã`åºç§!S6` ç 13 æ ¼è¢«åæ 46266ï¼ã */ private List<Integer> headerRowsOf(Sheet sh) { List<Integer> rows = new ArrayList<>(); int lastRow = Math.min(sh.getLastRowNum(), sh.getFirstRowNum() + HEADER_SCAN_ROWS); for (int r = sh.getFirstRowNum(); r <= lastRow; r++) { int first = sh.getFirstRowNum(); int lastRow = Math.min(sh.getLastRowNum(), first + HEADER_SCAN_ROWS); List<Integer> base = new ArrayList<>(); for (int r = first; r <= lastRow; r++) { Row row = sh.getRow(r); if (row == null) continue; for (int c = row.getFirstCellNum(); c >= 0 && c < row.getLastCellNum(); c++) { if (yearMonthOf(row.getCell(c)) != null) { rows.add(r); break; List<Integer> cols = monthColsOf(row); if (cols.size() > base.size()) base = cols; } List<Integer> rows = new ArrayList<>(); if (base.size() < 2) return rows; int need = Math.max(2, (base.size() + 1) / 2); for (int r = first; r <= lastRow; r++) { Row row = sh.getRow(r); if (row == null) continue; int hit = 0; for (int c : base) { if (yearMonthOf(row.getCell(c)) != null) hit++; } if (hit >= need) rows.add(r); } return rows; } /** è¡å ææãå¹´+æãè¡¨å¤´æ ¼çåå·ï¼0 åºï¼ */ private List<Integer> monthColsOf(Row row) { List<Integer> cols = new ArrayList<>(); for (int c = row.getFirstCellNum(); c >= 0 && c < row.getLastCellNum(); c++) { if (yearMonthOf(row.getCell(c)) != null) cols.add(c); } return cols; } private Map<Integer, Integer> monthCols(Sheet sh, int year) { Map<Integer, Integer> cols = new LinkedHashMap<>(); int lastRow = Math.min(sh.getLastRowNum(), sh.getFirstRowNum() + HEADER_SCAN_ROWS);