| | |
| | | 3. **æ¯çåå²åè¦ä¸å¹¶è¦ç**ï¼æ¯çç± openpyxl ååºï¼åå¨é«å缩ï¼å·²ç¨ `ZipSecureFile.setMinInflateRatio` ç»è¿ï¼ä¸æ®ç `<is>` éæ³æ ¼ï¼`normalizeStaleInlineStrings` æ¸
çï¼ä¸¤ç±»é®é¢ï¼éåå
éæ¶éä¿æè¿ä¸¤å¤å¤çã |
| | | 4. **åå¸å®¢è¿é¡µåç
§ç»æ¯åç¼©ç»æ**ï¼åæ¯ + 1-X æç´¯è®¡ï¼ï¼ä¸å
¶å®é¿è¡¨é¡µä¸åï¼éåç¬è§åã |
| | | 5. **è·¨å¹´å¼æ°æ¬ï¼2027ï¼ä¸å¨ M0 èå´**ï¼éå¦å®"æ°å¹´å"è§åã |
| | | 6. **æªè¦ç页**ï¼ä¸å£å¾åæç 3 个éæé¡µä»æ²¿ç¨æ¯çéæå
å®¹ï¼æ¬é¶æ®µä¸æ¹ã |
| | | 6. **æªè¦ç页**ï¼ä¸å£å¾åæç 3 个éæé¡µä»æ²¿ç¨æ¯çéæå
å®¹ï¼æ¬é¶æ®µä¸æ¹ã |
| | | ## åä¸ãåç
§åäºãä¸é¡¹ç»è®¡ãç设计æ å°ä¸è½å°è·¯çº¿ï¼2026-10-08ï¼ |
| | | |
| | | ### 11.1 对é½è¡¨ï¼ä»ä¸ºä»ä¹è½ä¸ä¸ªæ¯çï¼æä»¬å¯¹åºæä¹å |
| | | |
| | | | åäºä¸é¡¹ç»è®¡çåæ³ | ä»ä¸ºä»ä¹è½æç« | æ±æ»å¤§è¡¨ç对åºåæ³ | |
| | | |---|---|---| |
| | | | ä¸ä»½æ¯çï¼`2026å¹´å䏿°æ®.xlsx`ï¼ï¼**天为è¡ã年为å** | å¢é¿ç»´åº¦æ¯ãå¹´ãï¼ä¸å¹´å ä¸ç»åï¼å¤©æ°åºå® 8 | å»ç»ãéè·¯è¿è¾éæ±æ»è¡¨_æ 忝ç.xlsxãï¼**12 ä¸ªææ»¡çå¼ä¸æ¬¡å°ä½**ï¼åªè¯» | |
| | | | æ¯çåæ¶æ¯æ°æ®å®¹å¨ï¼åå²å¹´ä»½çå¼å°±å¨å¹¶æå¹´åéï¼ | åå²å¼é模æ¿ä¸èµ·èµ° | **åè¿æ¥å**ï¼åå²åç
§å¼å
¥åºï¼æ¯çåªççå¼ï¼åç
§ç»ç± DB åå¡« | |
| | | | 表头/è¡æ ç¾è¯ä¹å®ä½ï¼`findYearColumn` / `parseDayIndex`ï¼ | ååºåäºä¹è½å¯¼ | æ°å¢é¡µè§å表 `SummarySheetRule`ï¼æè¡¨å¤´è®¤æä»½ç»ãæè¡æ ç¾è®¤å¸å·/ææ ï¼ä¸ç¨ç¡¬ç¼ç åéç¹ | |
| | | | ææ¼ç§»å£å¾å¤ç½®æè¡¨ï¼`holiday_calendar` / `passenger_coefficient` / `vehicle_adjustment`ï¼ | è§å䏿£å¨ä»£ç ä¸åå
æ ¼é | åç
§å¹´ä¿çç»æ°ãæåå£å¾ï¼å
¨ç䏿åï¼ãå¨è½¬éç³»æ° B=G+L/2+Q/10ã缺æ°ç½®ç©ºè§å å¤ç½® | |
| | | | `DECIMAL(30,15)` + `BigDecimal` + æ Excel æ¾ç¤ºç²¾åº¦åå¼ | 精度å£å¾ç»ä¸ï¼æ æµ®ç¹å°¾å·® | æ¿æ¥é¿æå¾
åã16 å¼ è¡¨ 228 个 double åæ¹ DECIMAL + BigDecimalã | |
| | | | 导å
¥ä¸¤é¶æ®µç¡®è®¤ + å
¨ç¨åªè¯»æ ¸å¯¹ | å岿°æ®ä¸è¢«è¯¯è¦ç | çæåå
åºç¼ºæ°/差弿¸
åï¼äººå·¥ç¡®è®¤åååºè¡¨ï¼ç°æ B4 åºæ°ä½æ£è¡¥é½ï¼ | |
| | | | è¾åºèµ°æ¨¡æ¿æä»¶ï¼docx / PNGï¼ | ç弿¥æºåä¸ | ä¿çç°æåæ³ï¼å¿«æ¥æ¹ `word/document.xml`ãJFreeChart åº PNGï¼ | |
| | | |
| | | ### 11.2 è½å°è·¯çº¿ï¼åé¶æ®µï¼ |
| | | |
| | | - **é¶æ®µ 1ï¼= M0ï¼3.5â5 天ï¼**ï¼æ 忝çå»ç» + 满çå¼ + 跨年é建 + 页è§å表ã |
| | | æ°å¢ `SummaryLayoutRebuilder` / `SummarySheetRule` / åæµã |
| | | åºå£ï¼7 æåå½ diff=0ï¼9 æå¯¹ç
§æå·¥ç diff=0ï¼10 æèµ·å¯ç´æ¥åºè¡¨ã |
| | | - **é¶æ®µ 2ï¼+1â2 天ï¼**ï¼æç°æä¸ä»½æä»¶ä¾èµå并为ä¸ä»½ã |
| | | ç°ç¶ä¾èµï¼æåº¦æ¯çï¼`resolveSummaryMother`ï¼+ `_å¤ä»½_` donorï¼`resolveSummaryDonor` / `restoreSummaryMonthlyBlocks`ï¼+ çå¼åç
§ä»¶ï¼`resolveSummaryLayoutRef`ï¼ã |
| | | ç®æ ï¼åªçãéè·¯è¿è¾éæ±æ»è¡¨_æ 忝ç.xlsxãï¼åç
§å¼ä»åºåå¡«ï¼åç¨ donor ä¸è¿åæºå¶ã |
| | | åºå£ï¼`docs/çææ±æ»å¤§è¡¨/` ä¸åªå© 1 ä¸ªæ¨¡æ¿æä»¶ + è¾åºç®å½ï¼`_bak_*` çæ¬å°çåãä¸å
¥åºï¼ã |
| | | - **é¶æ®µ 3ï¼å¯éï¼+2â3 天ï¼**ï¼æ¯çå
ç¨å½ååºå/å ä½ç¬¦æ 注éå¡«æ ¼ï¼ç¨åºæåå¡«åï¼æ¯ç被æªå/æè¡æ¶æç¡®æ¥éã |
| | | - **é¶æ®µ 4ï¼å¯éï¼+5â10 天ï¼**ï¼æ 10 个é¿è¡¨é¡µççå¼åæ°åï¼åç»è§å + åå¹¶åº + å宽 + æ°åæ ¼å¼ + æå°åºï¼ï¼ç¨åºä»çå¼å®ä¹æ¸²æï¼æ¯çæä»¶éçº§ä¸ºä¸æ¬¡æ§æ ·å¼æåæºï¼ |
| | | 3 个éèå
¬å¼é¡µï¼ä¸å£å¾è®¡ç®è¿ç¨ / 2025å¹´åå¸å®¢è¿é / ä¸å£å¾åæï¼ä¿çæä»¶å½¢æã |
| | | |
| | | ### 11.3 两æ¡ä¸ç
§æ¬ |
| | | |
| | | 1. **䏿 Excel 彿°æ®æº**ï¼åäºé£è¾¹ä¸å¡æ¯å¤©å¡«åä¸å½¢ç¶ç Excel æä»¶ï¼æ±æ»å¤§è¡¨æ°æ®å¿
须走 DB 导å
¥ + 䏤鶿®µç¡®è®¤ï¼ä¸è½éå"æå·¥å¡«æ¯ç"ã |
| | | 2. **å¿
é¡»æãæ°å¹´ç»ãé»è¾**ï¼ä»çå¤©æ°æ¯å¸¸æ°ï¼8 天ï¼ï¼è·¨å¹´åªæ¯å ä¸ç»å¹´åï¼æä»¬è·¨å¹´è¦æ°å¢ä¸ä¸å¹´åº¦åç»å¹¶æå½å¹´ç»é级为åç
§ç»ï¼è¿ä¸æ¥ä»æ²¡æå¯¹åºå®ç°ã |
| | | |
| | | ### 11.4 åºçº¿ä¸é£é© |
| | | |
| | | - 3 个éèå
¬å¼é¡µä¾èµæ¯çç°æå
¬å¼ï¼é¶æ®µ 1â2 å¿
é¡»åæ ·ä¿çï¼é¶æ®µ 4 æè°é建ã |
| | | - æå°åºã页ç页èãæ¡ä»¶æ ¼å¼ãå宽å¿
é¡»éé¡µæ ¸å¯¹ï¼æ¯"èç¼çå¼"æææ¼çç¹ã |
| | | - ä¸å¡æ¹ææ è¡/页ç¾/è¾¹æ¡å±äºéæ±åæ´ï¼ä»»ä½æ¹æ¡é½è¦ä¸æ¬¡éé
ï¼æ¬æ¹æ¡æé¢çä»ãæ¯æä¸æ¬¡ãéå°ãå¶å°ä¸æ¬¡ãã |
| | | - æ¯çæ¹ä¸ºåªè¯»ï¼å¯é¡ºå¸¦è§é¿ WPS/openpyxl éå带æ¥çé«åç¼©ä¸æ®ç `<is>` éæ³æ ¼ä¸¤ç±»åå²åã |
| | | ## åäºãåå¨å±/å±ç¤ºå±çº¦å®ï¼åç
§åäºãäºç»´è¡¨ã模å¼ï¼2026-10-09ï¼ |
| | | |
| | | ### 12.1 ä¸å±èè´£ |
| | | |
| | | - **åå¨å±ï¼DBï¼**ï¼ä¸å¼ å¼ äºç»´è¡¨ï¼é®ä¸å¼æç¡®ï¼åä¸ç±»å
容ââåå§å¼ãé
ç½®å¼ãäººå·¥è°æ´å¼ã |
| | | - **计ç®å±**ï¼å¯¼åºæ¶æå£å¾è®¡ç®ï¼ç´¯è®¡ã忝ãç¯æ¯ãå æ¯ãæåï¼ã |
| | | - **å±ç¤ºå±ï¼Excelï¼**ï¼åªæå¼åå
¬å¼æçå¼æåºæ¥ï¼ä¸æ¿æ
åå¨èè´£ã |
| | | |
| | | ### 12.2 ãä¸è¡¨ä¸ç²åº¦ã约å®ï¼ç¤ºä¾åèªåäºçä¸é¡¹ç»è®¡ï¼ |
| | | |
| | | | 表 | 主é®ï¼ç²åº¦ï¼ | å¼ | ç±»å« | |
| | | |---|---|---|---| |
| | | | holiday_passenger_flow | å¹´ + æ¥æ + è¿è¾æ¹å¼ | 客è¿é | åå§å¼ | |
| | | | holiday_vehicle_flow | å¹´ + æ¥æ + éè·¯ç±»å« + 车å | 车æµéãç¯æ¯åºæ | åå§å¼ | |
| | | | holiday_calendar | å¹´ + èåæ¥ç±»å + ç¬¬å æ¥ | æ¥æ | é
ç½®å¼ | |
| | | | holiday_passenger_coefficient | å¹´ + æ¥æç±»å« | 客è¿ç³»æ° | é
ç½®å¼ | |
| | | | holiday_vehicle_adjustment | å¹´ + æ¥æ | è°æ´åå¼ + åå | äººå·¥è°æ´å¼ | |
| | | |
| | | æä»¬ç°æå¯¼å
¥è¡¨åæ ·æ»¡è¶³è¯¥çº¦å®ï¼`city_bus_monthly`ï¼æ¥è¡¨æ + å°åº + ä¼ä¸ï¼ã`city_taxi_monthly`ï¼æ¥è¡¨æ + å°åºï¼ã`freight_turnover_import`ï¼æ¥è¡¨æ + å°åºï¼ã`scale_split_transport`ï¼æ¥è¡¨æ + å°åº + æ/累计ï¼ã`h2031_enterprise_monthly`ï¼æ¥è¡¨æ + ä¼ä¸ï¼ã`h2032_enterprise_monthly`ã`wyc_order_monthly` / `wyc_total_monthly`ã`passenger_individual_monthly`ãåå¨å±å½¢ææ¯å¯¹çã |
| | | |
| | | ### 12.3 äººå·¥è°æ´å¼ä¸å¾åç¬å»ºè¡¨ï¼è¦çå±ï¼ |
| | | |
| | | - 模å¼ï¼**åå§è®°å½ä¸å¨**ï¼å¦è¡¨åãè¦çå¼ + åå + æ¶é´ãï¼å¯ä¸é®ä¸æè¦ç对象ä¸è´ï¼åç
§åäºç `holiday_vehicle_adjustment`ï¼ã |
| | | - æä»¬çéç¨å¯¹è±¡ï¼2025 åç
§å¼ä¿®æ£ãå¼å¸¸ç«åé¤ãä¸å¡ä¸´æ¶æ¹æ°çã |
| | | |
| | | ### 12.4 ç°ç¶æ ¸éªï¼2026-10-09 宿µï¼ä¿®æ£æ©æå¤æï¼ |
| | | |
| | | 宿µåº `127.0.0.1:3308 / traffic_audit`ï¼MySQL 8.0.29ï¼ï¼ |
| | | |
| | | | 表 | 2025 æä»½æ° | ç»è®º | |
| | | |---|---|---| |
| | | | city_bus_monthly | 12/12 | é½å
¨ | |
| | | | city_taxi_monthly | 12/12 | é½å
¨ | |
| | | | wyc_order_monthly / wyc_total_monthly | 12/12 | é½å
¨ | |
| | | | h2031_enterprise_monthly / h2032_enterprise_monthly | 12/12 | é½å
¨ | |
| | | | passenger_individual_monthly | 12/12 | é½å
¨ | |
| | | | freight_turnover_import | 1/12ï¼ä»
2025-12ï¼ | **䏿æç¼ºå£**ï¼è¡¨å¸¦ `last_freight_m01..m12` / `last_turnover_m01..m12`ï¼2026 åææä»¶èªå¸¦å»å¹´åæå¼ | |
| | | | scale_split_transport | 0/12 | **䏿æç¼ºå£**ï¼è¡¨å¸¦ `above/below/total_yoy`ï¼åæ¯å·²é 2026 åæå
¥åº | |
| | | |
| | | - æ©æ"åºé没æ 2025 å¹´åå¸å®¢è¿æ°æ®"çæ³¨éä¸æç¤ºææ¡ï¼`ReportExportService.java:499 / 558 / 561`ï¼**å·²è¿æ**ï¼è§¦åæ¡ä»¶ä¸åæç«ï¼åæ¯åæ°èµ°çæ¯åºå
å»å¹´åæï¼`aggOf(data, year-1, m, "æ¹åç")`ï¼çº¦ 540 è¡ï¼ã |
| | | - **çæ£éççæ¯å£å¾é®é¢ï¼ä¸æ¯ç¼ºæ°æ®**ï¼ä¸å£å¾æå/æç»ç 2025 åä»ä»¥**æ¯çéæå®ç¨¿å¼**为åï¼`readMidDetailLastYearCumulative`ï¼`ReportExportService.java:2745` èµ·ï¼ï¼ä»£ç 注éï¼2686-2689 è¡ï¼è¯´æåå ââ"æå页åå
æ¥åºç°ç®ï¼ä¸¤è
å¨ **2025-03/04 ç½çº¦è½¦æå**ä¸ä¸å"ã |
| | | - å¤ç½®ï¼å
åãåºå
2025 vs æ¯ç 2025ãé项 diffï¼ä¸å£å¾ 4 ç»ä»¶ à 17 å¸å· à 12 æ + 累计ï¼ï¼äº¤ä¸å¡ç¡®è®¤ä»¥åªè¾¹ä¸ºåï¼åå³å®æ¯å¦åæ¢è¯»åºã |
| | | |
| | | ### 12.5 ç»æå±ï¼æ¯åäºæ´è¿ä¸æ¥ï¼å¯éï¼ |
| | | |
| | | - åäºåºé**ä¸å计ç®ç»æ**ï¼ç´¯è®¡ã忝ãå æ¯ãç¯æ¯åå¯¼åºæ¶ç®ï¼Excel å
表ç°ä¸ºå
¬å¼ã |
| | | - æä»¬å¯éå¢å ä¸å¼ ç»æè¡¨ï¼ç²åº¦ = æé´ + 页 + ææ + å¸å· + 彿/累计ï¼Calc åå
¥ãFiller 读åã |
| | | - æ¶çï¼å°è¡¨ä¸è·¨é¡µåæé¡µå
±ç¨ä¸å¥ç»æï¼éæ ¼ diff æ¶è½ç´æ¥åºåãç®éãè¿æ¯ãå¡«éãã |
| | | - 约å®ï¼ææé´**å¹çéç®**ï¼å
å 该æé´åæï¼ï¼æ¾ç¤ºåæ´ä¸ä¸æ²å°åºï¼åªå¨å±ç¤ºå±èå
¥ã |
| | | |
| | | ### 12.6 èªæ£çºªå¾ï¼çº¢çº¿ï¼ |
| | | |
| | | > **æ¯çéä¸å
许åå¨ãåªæå®ææçæ°æ®ãã** |
| | | |
| | | å¤å®æ¹æ³ï¼ææ¯çææå¼æ¸
空åï¼ç¨åºè½å¦éæ°çæä¸å¼ å®å
¨ä¸è´ç表ï¼è½ â æ°æ®é½å¨åºï¼ä¸è½ â è¿ææ°æ®èå¨ Excel éï¼ç»§ç»å¾åºéæ¬ã |
| | | |
| | | ### 12.7 ä¸ M0 çå
³ç³»ï¼ä¾èµé¡ºåºï¼ |
| | | |
| | | - 12.4 çå£å¾æ ¸å¯¹ä¸é»å¡ M0 é¶æ®µ 1ï¼çå¼é建ï¼ã |
| | | - M0 é¶æ®µ 2ãåç¨ `_å¤ä»½_` donor è¿åãçæ°æ®åæ**å·²åºæ¬æ»¡è¶³**ï¼2025 å·²å¨åºï¼ï¼ä½ä»éå
å
³é 12.4 çå·®å¼ï¼å¦ååæ¢åæ°æ¥æºä¼è®©æ°ååå¨ãæ æ³éè¿ diff=0 åå½ã |