| docs/功能测试报告/功能测试报告_中口径四维口径统一_2026-09-18.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/工作日结/工作日结_2026-09-18.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Öпھ¶ËÄά¿Ú¾¶Í³Ò»_2026-09-18.md
@@ -16,19 +16,27 @@ - æ»å®¢è¿é/æ»å¨è½¬é = 维度 1+2+3+4ï¼`loadMidClassMap` ç维度 0ï¼ï¼ - **å ¨çè¡ä¸å¾ = Σ17 å¸å·**ï¼ä¸éç¨åºå `region_code='420000'` çå ¨çè¡ï¼è¯¥å£å¾ 1-8 ææ¯ Σå¸å·å¤ 3042.75ï¼å±ä¸å¡å¾ æ ¸é¡¹ï¼ï¼ - 忝 = (æ¬æ â å»å¹´åæ) / å»å¹´åæï¼æ å»å¹´æ°æ®ç空ã - **ç¼ºæ°æ®å¤çè§åï¼æ¬æ¬¡æ°å¢ï¼éè¦ï¼**ï¼åºå 该æè¯¥ç»´æ²¡ææºæ°æ®æ¶ï¼**ä¿çæ¯ç/模æ¿åå¼**ï¼ç»ä¸å空ãä¹ä¸å 0ã ä¸å£å¾æç»çåå¸çº§ãåé å乡巡游åºç§/ç½çº¦è½¦ãè¡æ¬æ¥å°±æ¯ãå°è´¦é¡µ æ»é â åå¸å ãçå¼ç¨å¹¶å·²ä¸å¡å®ç¨¿ï¼ ç¨åºå 缺失å¼è¦çï¼ä¼æå®ç¨¿æ°æ¸ æï¼2026-01~06 ç½çº¦è½¦è®¢å缺失æ¶ï¼å ¨ç 333.39 ä¸åå¸å·å¼è¢«æ¸ 空è¿ï¼ã **æ¬æ¬¡æ¹å¨æä»¶**ï¼`traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java` - `loadMidClassMap()`ï¼è¡¥ç»´åº¦ 3ï¼å·¡æ¸¸åºç§å乡ï¼ã维度 4ï¼ç½çº¦è½¦å乡ï¼ï¼æ°å¢ `midPeriodKey()`ï¼ - `fillMidCell()`ï¼å»æãåºç§/ç½çº¦è½¦åæ» 0ãæè·¯ï¼åç»´ç»ä¸ååºå å¼ï¼ - `fillMidYoyCell()` / `fillMidCumYoyColumn()`ï¼åæ¯ç±ãåªç®åä¸¤ç»´ãæ¹ä¸ºåç»´é½å ¨ï¼ - `exportPassengerMidDetail()`ï¼ç±ãåªå¤çå ¬å¼æ ¼ãæ¹ä¸ºãæåéåãï¼æ©ååºæ¥ç 7~12 æç©ºæ ¼æå¡«å¾ä¸ï¼æ©åæä»½çæ»è¡å¼åç±åºå åç»´åè®¡ç´æ¥åå ¥ï¼éç®æ¹ç¨éæ ¼å®¹éç `recalcWorkbookFormulas()`ï¼å `evaluateAll()` ä¼å¨è·¨ç°¿å ¬å¼å¤æ´æ¬ä¸æï¼ç´¯è®¡åæ¿ä¸å°æ°ç¼åå¼ï¼ã - `exportPassengerMidDetail()`ï¼ç±ãåªå¤çå ¬å¼æ ¼ãæ¹ä¸ºãæåéåãï¼æ©ååºæ¥ç 7~12 æç©ºæ ¼æå¡«å¾ä¸ï¼ - æ»è¡å¼å**ä¸å¾ä¿ç模æ¿å ¬å¼**ï¼1~6 æåå ¬å¼ + æ©åå éåºæ¥çå ¬å¼ï¼ï¼ç±æ¶å°¾éç®å¡«å¼ï¼ä¸å `keepCached` æ¸ å ¬å¼ãä¹ä¸åæåå计ï¼ï¼ - `fillMidCell()`ï¼åºå åå¼ä¸º 0ï¼è¯¥æè¯¥ç»´æ æºï¼æ¶ç´æ¥è¿åï¼ä¿çæ¯ç/å®ç¨¿åå¼ï¼ - éç®æ¹ç¨éæ ¼å®¹éç `recalcWorkbookFormulas()`ï¼å¹¶ `setIgnoreMissingWorkbooks(true)`ï¼è·¨ç°¿å ¬å¼ï¼`[1]åºç§!C13`ï¼å¨å¤é¨å·¥ä½ç°¿ç¼ºå¤±æ¶æ¹ç¨è¯¥æ ¼èªèº«ç¼åå¼åä¸è®¡ç®ï¼å¦åå¼ç¨å®çæ»è¡/累计ä¼è¿é失败ï¼è¡¨ç°ä¸º"å ¬å¼å¨ã使²¡æç¼åå¼"ï¼ï¼ - æ°å¢ `blankFutureMonthColumns()`ï¼æ¥è¡¨æä¹åçæä»½åï¼å¦ 8 ææ¥è¡¨éç 9~12 æï¼æ¸ ç©ºæ°æ®æ ¼ãä¿ç表头ï¼é¿å åºç°"9~12 æå ¨æ¯ 0"çåæ°æ®ã ## äºãæµè¯ç¯å¢ - å端 8090ï¼`start-dev.ps1` éå¯ï¼PID 11772ï¼ãå端 8080ï¼å¤ç¨å·²å¨è¿è¡å®ä¾ï¼ï¼æ°æ®åº `traffic_audit`ï¼127.0.0.1:3308ï¼ï¼æ¥è¡¨æ 2026-08ï¼mode=monthã - å端 8090ï¼`start-dev.ps1` éå¯ï¼ç¬¬äºè½® PID 18516ï¼ãå端 8080ï¼å¤ç¨å·²å¨è¿è¡å®ä¾ï¼ï¼æ°æ®åº `traffic_audit`ï¼127.0.0.1:3308ï¼ï¼æ¥è¡¨æ 2026-08ï¼mode=monthã - å¯¼åºæ¥å£ï¼`/api/report/export/summaryWorkbook`ã`/api/report/export/passengerMidDetail`ã`/api/report/export/passengerMidRank`ã - è¯æ®æä»¶ï¼`_tmp/_qa_out/step3c_summary.xlsx`ã`step3c_midDetail.xlsx`ã`step3c_midRank.xlsx`ã`chk_step3c2.txt`ã`chk_step3c3.txt`ã`cmp_step3bc.txt`ï¼æ¬è½®ï¼ï¼`step3b_*.xlsx`ï¼æ¹å¨ååºçº¿ï¼ã - è¯æ®æä»¶ï¼ç¬¬ä¸è½®ï¼ï¼`_tmp/_qa_out/step3c_summary.xlsx`ã`step3c_midDetail.xlsx`ã`step3c_midRank.xlsx`ã`chk_step3c2.txt`ã`chk_step3c3.txt`ã`cmp_step3bc.txt`ï¼`step3b_*.xlsx`ï¼æ¹å¨ååºçº¿ï¼ã - è¯æ®æä»¶ï¼ç¬¬äºè½®/æç»ï¼ï¼`_tmp/_qa_out/step3g_summary.xlsx`ã`step3g_midDetail.xlsx`ã`step3g_midRank.xlsx`ã`export_step3g.txt`ã`chk_step3g.txt`ã`cmp_md_vs_summary.txt`ï¼å¯¼åºèæ¬ `export_step3g.py`ã ## ä¸ãç¨ä¾è¡¨ @@ -46,6 +54,11 @@ | 10 | è´å/è¾¹ç | `wyc_order_monthly` 2026-01~06 订ååå ¨ä¸º NULLãæ¨¡æ¿ãç½çº¦è½¦è®¢ååå ¨çæ»é.xlsxãåªæ 2026-07 ä¸è¡ææ°æ® | 维度 4 è¯¥ææ æº â è¡ç空ï¼ä¸ç¼é ï¼ | ç¬ç«ä»¶ãåé å乡ç½çº¦è½¦ã1-6 æä¸ºç©ºï¼æ±æ»è¡¨è¯¥å£å¾ç±æ¯çå®ç¨¿æ¿è½½ | éè¿ï¼æé¢æç空并记å½ï¼ | | 11 | è´å/è¾¹ç | å»å¹´åææ æ°æ®ï¼å¦ 2025-01 ç½çº¦è½¦è®¢åç¼ºå¤±ï¼ | 忝ç空 | çç©ºï¼æªå 0 / #DIV/0! | éè¿ | | 12 | è´å/è¾¹ç | ç¼ºæ¨¡æ¿æä»¶ | æãæªæ¾å°æ¨¡æ¿æä»¶ãå¹¶åå ¥å端æ¥å¿ | æªè§¦åï¼æ¨¡æ¿é½å ¨ï¼ | ä¸éç¨ | | 13 | æ£å | ç¬ç«ä»¶åå¸çº§ãåé å乡ç½çº¦è½¦ãï¼R14 æ¦æ± / R19 é»ç³ â¦ï¼1~6 æ | æå¼ï¼æ²¿ç¨å®ç¨¿ï¼0 / 13.5998 / 10.668 / â¦ï¼ï¼ä¸è¢«æ¸ 空 | 0 / 13.599765541547697 / 10.668042925780014 ⦠| éè¿ | | 14 | æ£å | ç¬ç«ä»¶ 18 å°åº à 12 个æï¼æ»è¡ = Σ 该å 4 ç»´è¡ã累计 = Σ1-8 æ | å ¨é¨ç¸ç | ä¸ä¸è´æ° 0 | éè¿ | | 15 | æ£å | ç¬ç«ä»¶ä¸æ±æ»å¤§è¡¨ãä¸å£å¾æç»ã页 1~8 æéæ ¼å¯¹ç §ï¼18 å°åº à 5 è¡ Ã 8 æï¼ | å®å ¨ä¸è´ | 704 å¯¹æ ¼ 0 å·®å¼ | éè¿ | | 16 | è´å/è¾¹ç | æ¥è¡¨æä¹åçæä»½åï¼9~12 æï¼ | æ°æ®æ ¼ä¸ºç©ºã表头ä¿ç | æ°æ®æ ¼å ¨ç©ºã表头 `2026å¹´9æâ¦12æ` ä¿ç | éè¿ | | 17 | åå½ | æ¬è½®æ¹å¨ååï¼æ±æ»å¤§è¡¨ 17 页ãç¬ç«ãçæ_ä¸å£å¾æåã | 0 å·®å¼ | å 0 å·®å¼ï¼ç¬ç«ãçæ_ä¸å£å¾æç»ãå·®å¼ä» è½å¨ æ»è¡/åºç§å乡/ç½çº¦è½¦å乡 ä¸ç±»è¡çæä»½åä¸ç´¯è®¡å | éè¿ | **å ¥åºæ½æ¥**ï¼æ¥è¡¨æ 2026-08ï¼ä¸æºè¡¨é项对é½ï¼ @@ -64,9 +77,14 @@ - ç°è±¡ï¼æåä»¶å ¨ç累计 = 29464.6108ãç´¯è®¡åæ¯ = 0.638ï¼ä¸å£å¾æç»å ¨ç累计 = 31528.0607ãç´¯è®¡åæ¯ = 0.0581ï¼å·®å¼ 2063.45 = 2026 å¹´ 1-6 æç»´åº¦ 4ï¼333.39+294.49+347.23+335.39+369.27+383.68ï¼ã - æ ¹å ï¼æåä»¶ç± Java ç¨ `loadMidClassMap()` ç°ç®ï¼1-6 æç½çº¦è½¦æ æº â å°ä¸åï¼ä¸ 2025 å¹´åºçº¿ä¹åªæåºå å£å¾ï¼ï¼ä¸å£å¾æç»é¡µèµ°çæ¯æ¯çå ¬å¼é¾ + å®ç¨¿ç¼åå¼ã - 建议ï¼è§ãæ±æ»è¡¨ä¸æ¡ä¸»çº¿ä¿®å¤æ¹æ¡_2026-09-18ã第 3 æ¥ââç»ä¸ç±ãæ¯çå ¬å¼é¾ + å°è´¦é¡µãåºæ°ï¼Java ä¸åå¦ç®ä¸å¥ï¼è¯¦è§æ¬è½®çå¤ï¼ã 3. **ï¼å±æ¯ç缺é·ï¼ä¸å£å¾æç»åå¸çº§ãåé å乡巡游åºç§/ç½çº¦è½¦ãè¡å ¬å¼å¼é页** - ç°è±¡ï¼æ¦æ± R13/R14 å ¬å¼ä¸º `=å ¬äº¤!C13-å ¬äº¤!C15`ï¼åºå嫿å `åºç§!`ã`ç½çº¦è½¦!`ï¼ï¼åå¸çº§æä¸º 0ï¼èå ¨çè¡ R8/R9 é æ¯çç¼åå¼ç»åºç宿°ï¼535.83 / 333.39ï¼ï¼äºè ä¸èªæ´½ã - å¤ç½®ï¼éä¿®æ¯çè¿ä¸¤è¡çå ¬å¼å¼ç¨ï¼ä¸æ¬¡æ§ï¼ï¼ä¹åç±éç®èªå¨åºå¼ãæ¬æ¬¡æªæ¹æ¯çã 3. **ï¼å·²çº æ£ç误å¤ï¼"æ¯çå ¬å¼å¼é页"䏿ç«** - ä¸ä¸è½®ç»è®ºè¯¯å¤çç»è¿ï¼æ§å¶å°é䏿乱ç ï¼`����!`ï¼ï¼æ `=åºç§!C13-åºç§!C15` 彿 `=å ¬äº¤!C13-å ¬äº¤!C15`ã - 夿 ¸ç»è®ºï¼åå ¥æä»¶åæå读åï¼é¿å¼ä¹±ç ï¼ï¼æ¯çãä¸å£å¾æç»ãä¸ç¬ç«æ¨¡æ¿é½æ¯**æ£ç¡®çå ¬å¼é¾**ââ åå¸çº§åä¹¡è¡ = `=[1]åºç§!C13-[1]åºç§!C15` / `=[1]ç½çº¦è½¦!C13-[1]ç½çº¦è½¦!C15`ï¼å°è´¦é¡µ æ»é â åå¸å ï¼ï¼ å ¨çè¡ = `=C13+C18+â¦`ï¼Î£17 å¸å·ï¼ï¼æ»è¡ = `=C6+C7+C8+C9`ã - ååéªè¯ï¼å°è´¦é¡µãæ»é â åå¸å ãæ 17 å¸å·æ±å = **535.83 / 333.39**ï¼ä¸æ¯çå ¨çè¡å®ç¨¿å¼å®å ¨ä¸è´ï¼ æ¦æ± åºç§/ç½çº¦è½¦å乡 = 0ï¼è¯¥å¸å ¨é¨ä¸ºåå¸å ï¼ï¼é»ç³ = 26.01 / 13.5998ï¼ä¸æ¯çé项ä¸è´ã - çæ£çæ ¹å 卿们èªå·±ç代ç ï¼åºå æ æºæ¶ææ¨¡æ¿å ¬å¼/ç¼å弿¸ 空ï¼è§é®é¢ 1 ä¸"ç¼ºæ°æ®å¤çè§å"ï¼ã 4. **ï¼æ°æ®ç¼ºå£ï¼2026 å¹´ 1-6 æç½çº¦è½¦è®¢åæªå ¥åº** - `wyc_order_monthly` 2026-01~06 ä» æ `pin_*`ï¼`order_*` å ¨ NULLï¼æ¨¡æ¿æä»¶ä¹åªæ 2026-07 ä¸è¡ææ°æ® â 维度 4 ç 1-6 ææ æºã @@ -74,4 +92,8 @@ æ¬æ¬¡æ¹å¨æãä¸å£å¾ãä» 2 ç»´ï¼ç线+å ¬äº¤ï¼ç»ä¸ä¸º 4 ç»´ï¼å¹¶ä¿®æäºç¬ç«ãçæ_ä¸å£å¾æç»ãæ©åæä»½æ»è¡ä¸ºç©ºã累计åå¨ä¸ä¸æçé®é¢ï¼å·²éªè¯ 12 æ¡ç¨ä¾ï¼6 æ£å / 3 åå½ / 3 è´åè¾¹çï¼å ¨é¨éè¿ï¼æ±æ»å¤§è¡¨ 17 页ä¸ãçæ_ä¸å£å¾æåãé¶åå½ã ä»å¾ å¤çï¼æå件䏿ç»ä»¶çå£å¾å½ä¸ï¼é®é¢ 2ï¼éä¸å¡/æ¹æ¡ç¡®è®¤ï¼ãæ¯çä¸å£å¾æç»åå¸çº§å ¬å¼å¼é页ï¼é®é¢ 3ï¼ãç½çº¦è½¦ 1-6 æè®¢åæ°æ®ç¼ºå£ï¼é®é¢ 4ï¼ã ä»å¾ å¤çï¼æå件䏿ç»ä»¶çå£å¾å½ä¸ï¼é®é¢ 2ï¼éä¸å¡/æ¹æ¡ç¡®è®¤ï¼ãç½çº¦è½¦ 2026-01~06 ä¸ 2025-01/09/10 è®¢åæ°æ®ç¼ºå£ï¼é®é¢ 4ï¼ã **补记ï¼åæ¥ç¬¬äºè½®ï¼**ï¼æ¬è½®æ"ç¼ºæ°æ®ä¿çå®ç¨¿å¼ + æ»è¡ä¿çå ¬å¼ + 跨簿容ééç® + æ¥è¡¨æä¹åæä»½æ¸ 空"忡并è¿ï¼ ç¬ç«ãçæ_ä¸å£å¾æç»ãç°å¨**æ´è¡¨èªæ´½**ï¼18 å°åº à 12 个æï¼æ»è¡ = Σ4 ç»´ã累计 = Σ1-8 æï¼ä¸ä¸è´æ° 0ï¼ï¼ ä¸ä¸æ±æ»å¤§è¡¨ãä¸å£å¾æç»ã页 1~8 æéæ ¼ä¸è´ï¼704 æ ¼ 0 å·®å¼ï¼ï¼æ±æ»å¤§è¡¨ 17 页䏿åä»¶é¶åå½ã docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-18.md
@@ -38,6 +38,28 @@ - ãçæ_ä¸å£å¾æåãå ¨ç累计 29464.6108 / 忝 0.638ï¼æ¯ä¸å£å¾æç»å° 2063.45ï¼å·®å¼æ£å¥½æ¯ 2026 å¹´ 1-6 æç»´åº¦ 4ï¼ç½çº¦è½¦ï¼â æåä»¶æ¯ Java ç°ç®ãæç»é¡µèµ°æ¯çå ¬å¼é¾ï¼ä¸¤å¥å£å¾ææ¶ï¼ç¬¬ 3 æ¥ççæ£æ¶å£ç¹ï¼ã - æ¯çãä¸å£å¾æç»ãåå¸çº§ãåé å乡巡游åºç§/ç½çº¦è½¦ãè¡å ¬å¼å¼é页ï¼`=å ¬äº¤!C13-å ¬äº¤!C15`ï¼åºæå `åºç§!`/`ç½çº¦è½¦!`ï¼ï¼åå¸çº§æ 0ãå ¨çè¡é ç¼åå¼ â éä¿®æ¯çå ¬å¼ä¸æ¬¡ã ### 4. 第 3 æ¥æ¶å°¾ï¼ç¼ºæ°æ®ä¸åè¦çå®ç¨¿å¼ï¼13:30ï¼ ç¨æ·åé¦ãç¬ç«ãçæ_ä¸å£å¾æç»ã8 ææ²¡é®é¢äºï¼ä½ 1~6 æåèè¢«æ¸ ç©ºãåï¼è¿½åº**çæ£æ ¹å **ï¼ - `exportPassengerMidDetail()` 对æ©åæä»½ï¼>6 æï¼çæ»è¡å¼åæ¯ãç´æ¥ååºå åç»´å计ãå 0 å°± setBlankãï¼ è 1~6 æèµ° `keepCached()` æå ¬å¼æ¸ æç©ºæ ¼ â 表é¢ä¸ 7/8 æä¿®å¥½äºï¼å®é 䏿æ¯ççå®ç¨¿é¾è·¯ææäºã - `fillMidCell()` åæ ·ãåºå åå¼ä¸º 0 â setBlankãï¼äºæ¯ 2026-01~06 ç½çº¦è½¦å乡ï¼åºå 该 6 ä¸ªææ è®¢åã维度 4 æ æºï¼è¢«æ´çæ¸ ç©ºï¼ è¿å¸¦æ»è¡ã累计ãåæ¯å ¨éã **æ¹å¨ï¼`ReportExportService.java`ï¼4 å¤ï¼**ï¼ 1. `exportPassengerMidDetail()` æ»è¡å¼åï¼å æãæ©åæä»½æååºå å计ãä¸ `keepCached` æ¸ å ¬å¼ä¸¤æ¡æè·¯ï¼**ä¸å¾ä¿ç模æ¿å ¬å¼**ï¼ç±æ¶å°¾éç®ååç¼åå¼ã 2. `fillMidCell()`ï¼åºå åå¼ä¸º 0ï¼è¯¥æè¯¥ç»´æ æºï¼æ¶**ç´æ¥ returnï¼ä¿çæ¯ç/å®ç¨¿åå¼**ââç»ä¸å空ãä¹ç»ä¸å 0ã 3. `recalcWorkbookFormulas()`ï¼æ°å¢ `ev.setIgnoreMissingWorkbooks(true)`ãè·¨ç°¿å ¬å¼ï¼`[1]åºç§!C13`ï¼å¨å¤é¨å·¥ä½ç°¿ç¼ºå¤±æ¶é»è®¤æå¼å¸¸ï¼ ä¼è®©å¼ç¨å®çæ»è¡/累计è¿é失败ï¼è¡¨ç°ä¸ºãå ¬å¼å¨ã没æç¼åå¼ãï¼ï¼ç½® true åæ¹ç¨è¯¥æ ¼èªèº«ç¼åå¼åä¸è®¡ç®ã 4. æ°å¢ `blankFutureMonthColumns()`ï¼æ¥è¡¨æä¹åçæä»½åï¼8 ææ¥è¡¨éç 9~12 æï¼**æ¸ æ°æ®æ ¼ãç表头**ï¼é¿å å éå ¬å¼ç®åºã9~12 æå ¨æ¯ 0ãçåæ°æ®ã **éè¦çº æ£ï¼åè¿æµè¯æ¥åï¼ä¹å¨æ¤ççï¼**ï¼æ©åå¤æãæ¯çä¸å£å¾æç»åå¸çº§å ¬å¼å¼é页ï¼`=å ¬äº¤!C13-å ¬äº¤!C15`ï¼ãæ¯**误å¤**ââ 飿¯æ§å¶å°ä¸æä¹±ç é æçè¯¯è¯»ï¼æ¯ç/模æ¿çå®å ¬å¼æ¯æ£ç¡®ç `=[1]åºç§!C13-[1]åºç§!C15` / `=[1]ç½çº¦è½¦!C13-[1]ç½çº¦è½¦!C15`ï¼ å°è´¦é¡µãæ»éâåå¸å ãΣ17 å¸å· = 535.83 / 333.39ï¼ä¸æ¯çå®ç¨¿å ¨çè¡å®å ¨ä¸è´ã**æ¯çå ¬å¼ä¸éè¦ä¿®ï¼ä¹å"å¾ ä¿®æ¯ç"çç»è®ºä½åºã** ## äºãæµè¯ç»ææè¦ è§ `docs/åè½æµè¯æ¥å/åè½æµè¯æ¥å_æ±æ»è¡¨å ¬å¼æ©é¡µä¸éç®_2026-09-18.md`ï¼8 æ¡æ£å + 4 æ¡è´å/è¾¹ç + 4 é¡¹å ¥åºæ½æ¥ï¼å ¨é¨éè¿ã @@ -55,12 +77,26 @@ - 18 个å°åº Ãï¼7ã8 æï¼æ»è¡ = Σ 该å 4 ç»´è¡ï¼ç´¯è®¡åç¼åå¼ = Σ1-8 æï¼å ¨ç 31528.0607ï¼ï¼ - åå½ï¼æ±æ»å¤§è¡¨ 17 页 0 æ ¼ååããçæ_ä¸å£å¾æåã0 æ ¼ååããçæ_ä¸å£å¾æç»ãä» 36 æ ¼ååï¼å ¨é¨æ¯ç®æ æ ¼ï¼ã ### 第 3 æ¥æ¶å°¾ï¼13:30ï¼éªè¯ - ç¬ç«ãçæ_ä¸å£å¾æç»ãï¼18 å°åº à 12 个æï¼**æ»è¡ = Σ4 ç»´ã累计 = Σ1-8 æï¼ä¸ä¸è´æ° 0**ï¼9~12 ææ°æ®æ ¼å ¨ç©ºã表头ä¿çã - 䏿±æ»å¤§è¡¨ãä¸å£å¾æç»ã页 1~8 æ **704 å¯¹æ ¼ 0 å·®å¼**ã - å ¨ç 1-8 ææ»å®¢è¿éï¼3733.79 / 3777.83 / 3874.44 / 3959.25 / 4115.87 / 4034.99 / 4028.32 / 4003.57ï¼ ç½çº¦è½¦å乡ï¼333.39 / 294.49 / 347.23 / 335.39 / 369.27 / 383.68 / 421.46 / 426.56ï¼ç´¯è®¡ AA5 = 31528.0607ãAA9 = 2911.47ã - åå¸çº§ç½çº¦è½¦åä¹¡ï¼æ¦æ± 0ãé»ç³ 13.599765541547697ï¼æ²¿ç¨å®ç¨¿ï¼æªè¢«æ¸ 空ï¼ã - åå½ï¼æ±æ»å¤§è¡¨ 17 页 **0 æ ¼å·®å¼**ããçæ_ä¸å£å¾æåã**0 æ ¼å·®å¼**ï¼ æç»ä»¶å·®å¼ä» è½å¨ æ»è¡ / åºç§å乡 / ç½çº¦è½¦å乡 è¡çæä»½åä¸ AA 累计åï¼å±é¢æï¼ã ## ä¸ãéçé®é¢ä¸å¾ å 1. ~~ä¸å£å¾æå忝仿¯åæ»å¼~~ â **å·²ææ°å£å¾åå¼**ï¼M3=0.638 / Q3=0.2247ï¼ï¼ä½ä»ä¸ä¸å£å¾æç»ç 0.0581 ä¸èªæ´½ï¼å·®å¼ 2063.45 = ç½çº¦è½¦ 1-6 ææ æºï¼**æ¶å£åæ³è§ä¸æ¹"第 3 æ¥æ¶å£å»ºè®®"**ã 2. ~~`loadMidClassMap()` 缺巡游åºç§ + ç½çº¦è½¦ä¸¤ç»´~~ â **已补**ï¼ç»´åº¦ 3ã4ï¼ï¼ç¬ç«ä¸å£å¾æç»åç»´é½å ¨ã 3. **æ¯ç缺é·å¾ ä¿®**ï¼ä¸å£å¾æç»åå¸çº§ãåé å乡巡游åºç§/ç½çº¦è½¦ãè¡å ¬å¼å¼éé¡µï¼æå `å ¬äº¤!`ï¼ï¼åå¸çº§æ 0ãå ¨çè¡é ç¼åå¼ã 4. **æ°æ®ç¼ºå£**ï¼2026-01~06 ç½çº¦è½¦è®¢åæªå ¥åºï¼`order_*` å ¨ NULLï¼ï¼æ¨¡æ¿ãç½çº¦è½¦è®¢ååå ¨çæ»é.xlsxãåªæ 2026-07 ä¸è¡ â 维度 4 该 6 ä¸ªææ æºï¼éä¸å¡è¡¥æ°æç¡®è®¤ä¸éç¨ã 3. ~~**æ¯ç缺é·å¾ ä¿®**ï¼ä¸å£å¾æç»åå¸çº§å ¬å¼å¼é页~~ â **误å¤ï¼å·²ä½åº**ï¼çå®å ¬å¼æ¯æ£ç¡®ç跨簿å¼ç¨ï¼æ¯çæ éä¿®æ¹ï¼å½æ¶ç"å¼é页"æ¯æ§å¶å°ä¸æä¹±ç 误读ã 4. **æ°æ®ç¼ºå£ï¼å·²æ ¸å®ï¼å±æºå¤´å°±æ²¡æï¼**ï¼2026-01~06 ç½çº¦è½¦è®¢åå¨**æºæä»¶**ãæ¨¡æ¿_ç½çº¦è½¦è®¢ååå ¨çæ»é.xlsxãéå°±æ¯ç©ºçï¼åªæå ¨ç pinãæ è®¢ååï¼ï¼ 䏿¯å¯¼å ¥å¤±è´¥ââ`wyc_order_monthly` 该 6 æ `order_*` å ¨ NULL ä¸ä¹å»åï¼å¯¼å ¥æ¹æ¬¡ `WYC_ORDER`ï¼09-04ï¼ã å½±åé¢åªæä¸ä¸ªï¼`WycSplitCalc.calc()` å `orderSum<=0` ç®ä¸åºç½çº¦è½¦æå â 维度 4 该 6 ä¸ªææ æºï¼ç°å·²ç±ç¬¬ 4 æ¡æ¹å¨ä¿çæ¯çå®ç¨¿å¼å ä½ï¼ã **建议**ï¼ç»ç½çº¦è½¦è®¢åå¯¼å ¥å 䏿¡ã订ååå ¨ç©ºãçæ¾å¼æç¤ºï¼ç°å¨ä¼é黿åï¼ï¼å¹¶è¯·ä¸å¡ç¡®è®¤è¿ 6 个æè®¢åæ¯å¦å¯è¡¥ã 5. åºå h2031ãå ¨çãè¡ â Σ17 å¸å·ï¼1-8 æ 27524.49 vs 24481.74ï¼å·® 3042.75ï¼ï¼ä¸å¡å£å¾é®é¢ï¼å»ºè®®ä¸å¡ä¾§æ ¸å¯¹ã 6. æèµï¼æ¨¡æ¿é没æçæ°é¡¹ç®ä¸ä¼èªå¨æè¡ï¼æç»è¡¨èµéæ¸ éåç»è¡æªå ¥åºï¼éå `fund_channel`ï¼ï¼ååä¸åé¡¹ç®æªå¼¹çªã 7. æèµä¸¤å¼ æç»è¡¨ï¼`Xæå®¢è¿ç«æèµæç»è¡¨` / `Xæç©æµç«åºæèµæç»`ï¼çæå¨æªåã @@ -73,12 +109,13 @@ 2. æ´¾ç页ï¼åå¸å®¢è¿ / ä¸å£å¾æç» / å ¬è·¯æ»å®¢è¿ / ä¸å£å¾å®¢è¿é / æåï¼**åªè¡¥å ¬å¼ + éç®ï¼ä¸åç¬åæ°**ï¼ 3. åªææ¯ç鿬就æ¯ç¡¬ç¼ç æ°å¼çè¡ï¼ä¸å£å¾æç»çåå¸çº§"åé å乡åºç§/ç½çº¦è½¦"ãå ¨çè¡ï¼æåç»´å£å¾åå¡«ï¼ 4. ç¬ç«å¯¼åºä»¶ï¼çæ_ä¸å£å¾æç» / æå / å ¬è·¯æ 客åå¸å·ï¼æ¹ä¸ºç´æ¥åæ±æ»è¡¨å¯¹åºé¡µçå¼ï¼æå ±ç¨åä¸å£å¾å½æ°ï¼ 5. æ¯çéå¼é页çåå¸çº§å ¬å¼ä¿®ä¸æ¬¡ï¼ç¬¬ 3 æ¡ï¼ï¼ 6. çæåè·"çæä»¶ vs æ¯çéç®"éæ ¼å彿¯å¯¹ï¼å·®å¼æ¸ åè½æ¥å¿ï¼ä½ä¸ºéªæ¶åºçº¿ã 5. ~~æ¯çéå¼é页çåå¸çº§å ¬å¼ä¿®ä¸æ¬¡~~ â **æ é**ï¼è¯¯å¤ï¼å·²ä½åºï¼ï¼ 6. çæåè·"çæä»¶ vs æ¯çéç®"éæ ¼å彿¯å¯¹ï¼å·®å¼æ¸ åè½æ¥å¿ï¼ä½ä¸ºéªæ¶åºçº¿ï¼ 7. åºå 缺失ï¼è¯¥æè¯¥ç»´æ æºï¼æ¶**ä¸å¾ä¿çæ¯çå®ç¨¿å¼ãä¸è¦ç**ââå·²å¨ç¬¬ 4 æ¡æ¹å¨ä¸è½å°ã ## åãæå¤©è®¡å 1. 第 3 æ¥æ¶å£ï¼æä¸é¢ 6 æ¡è½å°ï¼å ä¿®æ¯çå¼é页çåå¸çº§å ¬å¼ â æåä»¶æ¹ååæº â 建å彿¯å¯¹èæ¬ï¼ã 2. ç½çº¦è½¦ 2026-01~06 è®¢åæ°æ®ç¼ºå£ï¼åç¨æ·ç¡®è®¤æ¯è¡¥æ°è¿æ¯ç空ã 3. æèµ"æ°å¢é¡¹ç®æè¡ + åç»è¡å ¥åº"æ¹æ¡è½å°ï¼çç¨æ·å¯¹"模å"å£å¾çæå确认ï¼ã 4. æèµä¸¤å¼ æç»è¡¨çæå¨ã 1. 第 3 æ¥æ¶å£ï¼æå件䏿ç»ä»¶å£å¾å½ä¸ï¼å·®å¼ 2063.45 = 2026 å¹´ 1-6 æç½çº¦è½¦å乡ï¼â æåä»¶æ¹åæ±æ»è¡¨åæºå¼ â åºå"çæä»¶ vs æ¯çéç®"éæ ¼åå½èæ¬ã 2. ç½çº¦è½¦è®¢åå¯¼å ¥ç©ºåæç¤ºï¼é¡µé¢æç¡®æç¤º"该æè®¢ååä¸ºç©ºï¼æªåå ¥è®¢åæ°"ï¼+ åç¨æ·ç¡®è®¤ 2026-01~06 æ¯å¦è¡¥æ°ã 3. æèµ"æ°å¢é¡¹ç®æè¡ + åç»è¡å ¥åºï¼`fund_channel`ï¼"æ¹æ¡è½å°ï¼çç¨æ·å¯¹"模å"å£å¾çæå确认ï¼ã 4. æèµä¸¤å¼ æç»è¡¨çæå¨ï¼`Xæå®¢è¿ç«æèµæç»è¡¨` / `Xæç©æµç«åºæèµæç»`ï¼ã traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
@@ -2223,15 +2223,10 @@ if (blockOffset % 5 == 0) { if (isYoy) { fillMidYoyCell(c, mid, currentYear, monthOfCol(col), area, -1, volume); } else if (monthOfCol(col) > 6) { // æ©ååºæ¥ç 7~12 ææ»è¡å¼åï¼æ¨¡æ¿éæ¬æ æ¤åï¼å éåæ¢æ²¡æå ¬å¼ä¹æ²¡æç¼åå¼ï¼ // ç´æ¥ååºå åç»´å计ï¼ç»´åº¦0ï¼ã1~6 æä¿ç模æ¿ç¼åå¼ï¼é¿å ä¸¢ææ¨¡æ¿éçå®ç¨¿æ°ã double total = midClassVal(mid, currentYear, monthOfCol(col), area, 0, volume); c.setBlank(); if (total != 0.0) c.setCellValue(round(total, 4)); } else if (c.getCellType() == CellType.FORMULA) { keepCached(c); // 1~6 ææ»è¡å¼å = 模æ¿ç¼åå¼ï¼ä¿ç } // æ»è¡å¼åï¼ä¸å¾ä¿ç模æ¿å ¬å¼ï¼1~6 æåå ¬å¼ + æ©åå éåºæ¥çå ¬å¼ï¼ï¼ // ç±çææ¶å°¾ç recalcWorkbookFormulas æ±å¼ååç¼åãæ©æçæ¬è¿é keepCached // 伿åå éåºæ¥çå ¬å¼æ¸ æç©ºæ ¼ï¼å¯¼è´ 7 æåä»¥åæ»è¡æ°¸è¿ç©ºç½ã continue; } int k = blockOffset % 5; // 1=ç线 2=å ¬äº¤ 3=åºç§å乡 4=ç½çº¦è½¦å乡 @@ -2249,7 +2244,27 @@ int[] recalc = recalcWorkbookFormulas(wb); log.info("ä¸å£å¾æç»å ¬å¼éç®å®æï¼æå {} æ ¼ï¼å¤±è´¥ {} æ ¼", recalc[0], recalc[1]); clearFormulaErrorsAll(wb); // å»å¹´åææç»é¡µæ®ç #REF! åæ¯å ¬å¼ â æ¸ 空 blankFutureMonthColumns(sheet, fillMonths); // æ¥è¡¨æä¹åçæä»½åä¸ä¿çå éå ¬å¼/0 å¼ return toBytes(wb); } } /** * æ¸ ç©ºãæ¥è¡¨æä¹åãçæä»½åï¼æ©åå éåºæ¥ç 7~12 æéãå°æªå°æçæä»½ï¼ã * 䏿¸ çè¯ï¼å éåºæ¥çæ»è¡å ¬å¼ä¼ç®åº 0ï¼æ¥è¡¨ä¸ä¼åºç°"9~12 æå ¨æ¯ 0"çåæ°æ®ï¼ * 累计åï¼AAï¼çå ¬å¼/ç¼åå¼å·²å¨éç®é¶æ®µç®å¥½ï¼æ¸ ç©ºæ ¼åä¸å½±åå®ï¼ç©º = 0ï¼ã */ private void blankFutureMonthColumns(Sheet sheet, int filledMonths) { for (int m = filledMonths + 1; m <= 12; m++) { int col = 2 * m; // 0 åºï¼1 æ=2(C)ã7 æ=14(O)ã12 æ=24(Y) for (int r = 4; r <= sheet.getLastRowNum(); r++) { // 0 åºç¬¬ 4 è¡ = 第 5 è¡ï¼é¦ä¸ªæ°æ®è¡ï¼ï¼è¡¨å¤´ä¸å¨ Row row = sheet.getRow(r); if (row == null) continue; Cell val = row.getCell(col); if (val != null) val.setBlank(); Cell yoy = row.getCell(col + 1); if (yoy != null) yoy.setBlank(); } } } @@ -2274,12 +2289,19 @@ return (col - 1) / 2; } /** å¡«ä¸å£å¾æ°æ®åå æ ¼ï¼ç线/å ¬äº¤/åºç§å乡/ç½çº¦è½¦å乡 åç»´ç»ä¸ååºå å¼ï¼æ 弿¸ ç©ºï¼ */ /** * å¡«ä¸å£å¾æ°æ®åå æ ¼ï¼ç线/å ¬äº¤/åºç§å乡/ç½çº¦è½¦å乡 åç»´ç»ä¸ååºå å¼ã * åºå 该æè¯¥ç»´æ æºï¼åå¼ä¸º 0ï¼æ¶**ä¿çæ¯ç/模æ¿åå¼**ââç»ä¸å空ãä¹ä¸å 0ã * 便®ï¼æ¨¡æ¿çåå¸çº§åä¹¡è¡æ¯ãå°è´¦é¡µ æ»é â åå¸å ãçå¼ç¨ãå¹¶å·²ä¸å¡å®ç¨¿ï¼ * ç¨åºå 缺失å¼è¦ç伿å®ç¨¿æ°æ¸ æï¼å¦ 2026-01~06 ç½çº¦è½¦è®¢å缺失æ¶ï¼ * å ¨çç½çº¦è½¦å乡 333.39 ä¸åå¸å·å¼ä¼è¢«æ¸ 空ï¼ã */ private void fillMidCell(Cell c, Map<Integer, Map<String, double[][]>> mid, int year, int month, String area, int k, boolean volume) { double v = midClassVal(mid, year, month, area, k, volume); if (v == 0.0) return; // åºå æ æºï¼ä¿çæ¯ç/å®ç¨¿åå¼ï¼ç¼ºæ°æ®ä¸è¦ç // POI setCellValue(double) å¯¹å ¬å¼åå æ ¼åªæ´æ°ç¼åä¸ç§»é¤å ¬å¼ï¼å¿ é¡»å setBlank ååå¼ c.setBlank(); if (v != 0.0) c.setCellValue(round(v, 4)); c.setCellValue(round(v, 4)); } /** æ¾å¼åå ¥ 0ï¼POI setCellValue(0.0) ä¼è½¬ blankï¼éæä½åºå± XMLï¼ */ @@ -3445,6 +3467,14 @@ log.warn("æ±æ»å·¥ä½ç°¿å ¬å¼éç®ï¼å建æ±å¼å¨å¤±è´¥ï¼è·³è¿ï¼{}ï¼", e.getMessage()); return new int[]{0, 0}; } try { // è·¨ç°¿å ¬å¼ï¼[1]åºç§!C13 ä¹ç±»ï¼å¨å¤é¨å·¥ä½ç°¿ç¼ºå¤±æ¶é»è®¤æå¼å¸¸ï¼ä¼è®©å¼ç¨å®ç // æ»è¡/累计/æ´¾çå ¬å¼è¿é失败ï¼è¡¨ç°ä¸ºãå ¬å¼è¿å¨ä½æ²¡æç¼åå¼ãï¼ã // ç½® true åæ¹ç¨å ¬å¼æ ¼èªèº«çç¼åå¼ï¼å³å®ç¨¿å¼ï¼åä¸è®¡ç®ã ev.setIgnoreMissingWorkbooks(true); } catch (Exception ignore) { // 个å«å®ç°ä¸æ¯æè¯¥å¼å ³ï¼å¿½ç¥å³å¯ } int ok = 0, fail = 0; java.util.List<String> samples = new java.util.ArrayList<>(); for (int i = 0; i < wb.getNumberOfSheets(); i++) {