| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
| 2026-09-16 | zhizhijie | ![]() |
.gitignore
@@ -38,6 +38,10 @@ Thumbs.db desktop.ini # ==== Office æå¼ææ¡£æ¶äº§ççéæä»¶ ==== ~$* _pylibs/ # ==== ??/?????????==== _shots/ *.nb3 docs/8Ô¹æÉÏ»õÎïÖÜתÁ¿ÓëÔ˾à·ÖÎö±¨¸æ_²Ý¸å_2026-09-10.md
New file @@ -0,0 +1,99 @@ # 2026å¹´8æè§ä¸è´§ç©å¨è½¬éä¸å¹³åè¿è·åææ¥åï¼èç¨¿ï¼ > æ°æ®æ¥æºï¼ãå ¨çè§ä¸è´§ç©å¨è½¬éå·®å¼ç.xlsxãçãå¸å·æ±æ»ããä¼ä¸æç»ã两个页ç¾ãä¼ä¸æç»ä¸º **8æå½æ** å£å¾ï¼ä» å«å½ä¸é®é¢çä¼ä¸ï¼ä¸ä»£è¡¨å¸å·å ¨é¨è§ä¸ä¼ä¸ã > èç¨¿æ¥æï¼2026-09-10 ## ä¸ãæ»ä½æ åµ 2026å¹´8æï¼å ¨çè§ä¸é路货ç©è¿è¾å®æè´§è¿é 3665.36 ä¸å¨ãè´§ç©å¨è½¬é 570004.44 ä¸å¨å ¬éï¼åæ¯åå«ä¸é 1.37%ãå¢é¿ 9.60%ï¼è´§è½¦å¹³åè¿è· 155.51 å ¬éï¼åæ¯å¢é¿ 11.11%ã䏿¥å¨è½¬éä¸è½¨è¿¹éç¨æµç®å¨è½¬éçå·®å¼çæ¬æä¸º 4.69%ï¼æ¯ä¸æï¼7æï¼ç 20.65% æ¶çª 15.96 个ç¾åç¹ã 1-8æç´¯è®¡ï¼å ¨çè§ä¸è´§è¿é 31399.82 ä¸å¨ãè´§ç©å¨è½¬é 4927161.77 ä¸å¨å ¬éï¼åæ¯åå«ä¸é 7.63% å 3.44%ï¼ç´¯è®¡å·®å¼ç 29.93%ï¼æ¯1-7æç 34.16% æ¶çª 4.23 个ç¾åç¹ã æ»ä½ç¹å¾ï¼å½æåç° **âè´§è¿éä¸éãå¨è½¬éå¢é¿ãå¹³åè¿è·æé¿â**ãå¨è½¬éå¢éï¼+9.6%ï¼ææ¾é«äºè´§è¿éï¼-1.4%ï¼ï¼å¢é¿ä¸»è¦æ¥èªå¹³åè¿è·æé¿ï¼+11.1%ï¼ï¼èéè¿è¾éå¢å ï¼å¨è½¬é = è´§è¿é à 平åè¿è·ï¼è´§è¿éä¸éæ¶ï¼å¨è½¬éè½å¦å¢é¿å®å ¨åå³äºè¿è·æé¿å¹ 度ï¼ï¼ä½ç´¯è®¡å£å¾å¨è½¬éä»ä¸ºè´å¢é¿ï¼-3.4%ï¼ï¼å½æååå°æªæè½¬ç´¯è®¡ä¸éè¶å¿ã ## äºãéç¹å¸å·çéå é忦æ±ãé»ç³ã宿ãè¥é³ãèå·ãé»åãå¸å® 7 个å¸å·ï¼è¡¨å é»è²æ 注ï¼ä½ä¸ºéç¹åæå¯¹è±¡ï¼çç±å¦ä¸ï¼ 1. **å ¨çè´§è¿ä¸»ä½**ï¼7 个å¸å· 8 æè´§è¿éå计 3142.32 ä¸å¨ï¼å å ¨ç **85.7%**ï¼1-8 æç´¯è®¡å 86.2%ï¼8 æå¨è½¬éå 85.2%ãè´§è¿ä¸»ä½å¨è¿éï¼å ¨çé®é¢çä¸»è¦æ¥æºä¹å¨è¿éã 2. **å¨è½¬éå¢é¿ä¸»è¦ç±è¿è·æå¨**ï¼ç±äº å¨è½¬é = è´§è¿é à 平åè¿è·ï¼å¨è´§è¿éä¸éæ¶ï¼å¨è½¬éè½å¦å¢é¿å®å ¨åå³äºè¿è·çæé¿å¹ 度ãé»ç³ï¼è´§è¿é -34.6%ãè¿è· +85.5%ãå¨è½¬é +21.3%ï¼ãè¥é³ï¼-22.8%ã+32.8%ã+2.5%ï¼çè¿è·æé¿å¹ åº¦ææ¾å¤§äºå ¨çï¼+11.1%ï¼ï¼èå·ï¼-6.4%ã+7.7%ã+0.8%ï¼éåèå¨è½¬éå¾®å¢ï¼åå±è´§éä¸å¨è½¬éä¸ååãä¸è¿°å¸å·éæ ¸å®ä»£è¡¨ä¼ä¸è¿è·æ¯å¦çå®ã 3. **çéè¿è¾ç¹å¾**ï¼å®æï¼87.29 å ¬éï¼ãå¸å®ï¼83.58 å ¬éï¼ãé»ç³ï¼121.73 å ¬éï¼ãé»åï¼132.00 å ¬éï¼å¹³åè¿è·ææ¾ä½äºå ¨ç 155.51 å ¬éï¼ä»¥çéè¿è¾ä¸ºä¸»ã | å¸å· | 8æè´§è¿é(ä¸å¨) | å å ¨ç | 8æå¹³åè¿è·(å ¬é) | 2025å¹´8æè¿è· | è¿è·åæ¯ | 8æè´§è¿é忝 | 8æå¨è½¬é忝 | 8æå·®å¼ç | |---|---|---|---|---|---|---|---|---| | æ¦æ± | 1167.83 | 31.9% | 164.68 | 136.62 | +20.5% | +10.6% | +33.3% | +0.6% | | é»ç³ | 131.00 | 3.6% | 121.73 | 65.62 | +85.5% | -34.6% | +21.3% | -11.0% | | 宿 | 761.88 | 20.8% | 87.29 | 77.01 | +13.4% | +5.5% | +19.6% | +77.0% | | è¥é³ | 326.61 | 8.9% | 287.54 | 216.51 | +32.8% | -22.8% | +2.5% | +1.7% | | èå· | 111.85 | 3.1% | 320.92 | 297.97 | +7.7% | -6.4% | +0.8% | -15.8% | | é»å | 560.89 | 15.3% | 132.00 | 126.09 | +4.7% | -10.7% | -6.5% | +120.2% | | å¸å® | 82.25 | 2.2% | 83.58 | 75.35 | +10.9% | +16.5% | +29.2% | -2.9% | | **å ¨ç** | 3665.36 | 100.0% | 155.51 | 139.96 | +11.1% | -1.4% | +9.6% | +4.7% | ## ä¸ã代表ä¼ä¸åæ > 代表ä¼ä¸æâå¨è½¬éè§æ¨¡å¤§ãå·®å¼çé«ãè¿è·åæ¯å¼å¸¸âä¸ä¸ªè§åº¦éåï¼æ¯å¸å· 3 å®¶ï¼è¡¨å æ°æ®å为 8 æå½æã ### æ¦æ± æç»å 101 å®¶ï¼å ¶ä¸å·®å¼çâ¥30% ç 76 å®¶ãâ¥100% ç 37 å®¶ï¼å¹³åè¿è·åæ¯>30% ç 44 å®¶ãæ¦æ± 8 æå·®å¼çä» +0.57%ï¼ä¼ä¸å±é¢å´é«åº¦éä¸ï¼å±å ¸åçâå¤§çæ£å¸¸ã个ä½å¼å¸¸âã | ä¼ä¸åç§° | 8æå¨è½¬é(ä¸å¨å ¬é) | 8æè´§è¿é(ä¸å¨) | å¹³åè¿è·(å ¬é) | è¿è·åæ¯ | å¨è½¬é忝 | å·®å¼ç | |---|---|---|---|---|---|---| | æ¹ååæ¶ç©æµæéå ¬å¸ | 9617.4 | 20.29 | 474.1 | +100.4% | +172.2% | -66.9% | | æ¦æ±è¥¿é©¬é¢éç©æµæéå ¬å¸ | 5085.6 | 81.72 | 62.2 | +100.0% | +130.8% | +169.0% | | æ¦æ±å®éè¿è´¸æéå ¬å¸ | 900.9 | 14.42 | 62.5 | +182.3% | +304.1% | +337.2% | ### é»ç³ æç»å ä» 3 å®¶ï¼å·®å¼çåæªè¶ è¿ 30%ï¼ä½ 3 å®¶ä¼ä¸å¹³åè¿è·åæ¯å ¨é¨è¶ è¿ 30%ãé»ç³ 8 æè´§è¿é忝 -34.6%ãå¨è½¬é忝 +21.3%ï¼éä»·èç¦»å¨ 7 个å¸å·ä¸æææ¾ã | ä¼ä¸åç§° | 8æå¨è½¬é(ä¸å¨å ¬é) | 8æè´§è¿é(ä¸å¨) | å¹³åè¿è·(å ¬é) | è¿è·åæ¯ | å¨è½¬é忝 | å·®å¼ç | |---|---|---|---|---|---|---| | æ¹å鸿èç©æµæéè´£ä»»å ¬å¸ | 1026.0 | 0.96 | 1073.7 | +56.1% | +119.6% | -11.9% | | 大嶿è²ç©æµæéå ¬å¸ | 107.1 | 2.83 | 37.8 | +67.2% | -81.6% | -0.3% | | æ¹å广è¿è¿éç©æµæéå ¬å¸ | 239.2 | 8.04 | 29.8 | +30.6% | -13.9% | -0.2% | ### 宿 æç»å 50 å®¶ï¼å·®å¼çå ¨é¨â¥30%ï¼å ¶ä¸ 29 å®¶â¥100%ï¼8 æå·®å¼ç +77.01%ï¼å± å ¨ç第äºï¼å±å·®å¼é¢æå¹¿çå¸å·ä¹ä¸ã | ä¼ä¸åç§° | 8æå¨è½¬é(ä¸å¨å ¬é) | 8æè´§è¿é(ä¸å¨) | å¹³åè¿è·(å ¬é) | è¿è·åæ¯ | å¨è½¬é忝 | å·®å¼ç | |---|---|---|---|---|---|---| | 宿åç¨ä¾åºé¾ç®¡çæéå ¬å¸ | 5791.9 | 6.96 | 831.6 | +5.5% | -10.4% | +256.8% | | å ´å±±å¿å ´åæ±½è¿æéå ¬å¸ | 4383.1 | 96.00 | 45.7 | +56.4% | +64.5% | +155.7% | | æ¹å訸è¿ç³åç©æµæéå ¬å¸ | 2518.2 | 5.71 | 441.2 | -26.1% | +99.1% | +111.8% | ### è¥é³ æç»å 34 å®¶ï¼å·®å¼çâ¥30% ç 21 å®¶ãè¥é³ 8 æè´§è¿é忝 -22.8%ãå¨è½¬é忝 +2.5%ãè¿è·åæ¯ +32.8%ï¼å±âè´§éä¸éãè¿è·æé¿âåã | ä¼ä¸åç§° | 8æå¨è½¬é(ä¸å¨å ¬é) | 8æè´§è¿é(ä¸å¨) | å¹³åè¿è·(å ¬é) | è¿è·åæ¯ | å¨è½¬é忝 | å·®å¼ç | |---|---|---|---|---|---|---| | è¥é³é¡ºåè¿è¾æéè´£ä»»å ¬å¸ | 5074.1 | 9.11 | 557.2 | +10.1% | -16.9% | +44.7% | | æ£é³å¸é«è·¯æºæ±½è½¦æå¡æéå ¬å¸ | 2498.5 | 6.56 | 380.7 | +72.8% | +61.0% | -7.8% | | è¥é³å¸éæµ·éç©æµæéå ¬å¸ | 1040.2 | 4.40 | 236.2 | +121.6% | +696.4% | -27.0% | ### èå· æç»å 22 å®¶ï¼å·®å¼çâ¥30% ç 18 å®¶ãâå·®å¼ç+è¿è·âåå½ä¸ 6 å®¶ãèå· 8 æè´§è¿é忝 -6.4%ãå¨è½¬é忝 +0.8%ã | ä¼ä¸åç§° | 8æå¨è½¬é(ä¸å¨å ¬é) | 8æè´§è¿é(ä¸å¨) | å¹³åè¿è·(å ¬é) | è¿è·åæ¯ | å¨è½¬é忝 | å·®å¼ç | |---|---|---|---|---|---|---| | å ¬å®å¿ä¸æºç©æµæéå ¬å¸ | 1888.9 | 7.05 | 267.8 | +126.2% | +192.5% | +494.7% | | èå·å¸å®è¾¾çç©æµè¡ä»½æéå ¬å¸ | 2017.2 | 3.11 | 649.2 | +133.9% | +27.8% | -57.7% | | å ¬å®å¿æºè¾¾æ±½è½¦è¿è¾æå¡æéå ¬å¸ | 1596.8 | 6.92 | 230.8 | +11.0% | +89.6% | +110.3% | ### é»å æç»å 52 å®¶ï¼å·®å¼çâ¥30% ç 49 å®¶ãâ¥100% ç 39 å®¶ï¼å¼å¸¸éä¸åº¦å ¨çæé«ï¼8 æå·®å¼ç +120.18%ï¼å± å ¨ç第ä¸ã | ä¼ä¸åç§° | 8æå¨è½¬é(ä¸å¨å ¬é) | 8æè´§è¿é(ä¸å¨) | å¹³åè¿è·(å ¬é) | è¿è·åæ¯ | å¨è½¬é忝 | å·®å¼ç | |---|---|---|---|---|---|---| | è²æ¥å¤ªå¹³æ´è½¦è¾è¿è¾æå¡æéå ¬å¸ | 6118.2 | 38.93 | 157.1 | +24.9% | +21.0% | +747.9% | | 黿¢ å¿å¹¿å汽车è¿è¾æéå ¬å¸ | 5009.4 | 6.04 | 829.9 | +0.6% | +11.2% | +321.5% | | ç½ç°å¿å ´è¾¾ç©æµè¿è¾æéå ¬å¸ | 2741.4 | 3.83 | 716.2 | -5.9% | -18.3% | +477.5% | ### å¸å® æç»å 8 å®¶ï¼è§æ¨¡è¾å°ï¼ä¸å·®å¼ç夿°ä¸ºè´ï¼ä¸æ¥ä½äºæµç®ï¼ãå¸å®æ¯ 7 个å¸å·ä¸å¯ä¸ 1-8 æç´¯è®¡âè´§è¿éå¢ãå¨è½¬ééâï¼+32.2% / -1.3%ï¼çå°åºï¼æ¹åä¸å ¶ä»å¸å·ç¸åï¼éåç¬è¯´æã | ä¼ä¸åç§° | 8æå¨è½¬é(ä¸å¨å ¬é) | 8æè´§è¿é(ä¸å¨) | å¹³åè¿è·(å ¬é) | è¿è·åæ¯ | å¨è½¬é忝 | å·®å¼ç | |---|---|---|---|---|---|---| | 赤å£å¸æµ·é建ææéå ¬å¸ | 876.9 | 10.87 | 80.7 | +39.4% | +75.1% | -21.4% | | æ¹åæ¬èªç©æµæéå ¬å¸ | 799.7 | 1.96 | 407.8 | +38.6% | +129.4% | +0.2% | | å鱼谦æºç§ææéå ¬å¸ | 520.3 | 6.94 | 75.0 | +90.5% | +285.4% | -14.8% | docs/database.md
@@ -222,6 +222,8 @@ | region_code | varchar(20) | æå±å°åºï¼è¡æ¿åºå代ç ï¼ | | enterprise_code | varchar(50) | ä¼ä¸ä»£ç | | enterprise_name | varchar(200) | ä¼ä¸åç§° | | unified_credit_code | varchar(50) | ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ï¼æ°çæ¨¡æ¿æ°å¢åï¼èæ¨¡æ¿æ æ¤åæ¶ä¸º NULLï¼ | | report_unit | varchar(200) | å¡«æ¥åä½ï¼æ°çæ¨¡æ¿æ°å¢åï¼èæ¨¡æ¿æ æ¤åæ¶ä¸º NULLï¼ | | vehicle_total | int | 客è¿è½¦è¾_æ»è®¡ | | seat_total | int | æ ¸å®è½½å®¢ä½_æ»è®¡ | | vehicle_schedule | int | è½¦è¾æ°_客è¿ç车ï¼å«å®çº¿æ æ¸¸ï¼ | docs/init.sql
@@ -399,6 +399,8 @@ region_code VARCHAR(20) COMMENT 'æå±å°åº', enterprise_code VARCHAR(50) COMMENT 'ä¼ä¸ä»£ç ', enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', unified_credit_code VARCHAR(50) COMMENT 'ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ', report_unit VARCHAR(200) COMMENT 'å¡«æ¥åä½', vehicle_total INT COMMENT '客è¿è½¦è¾_æ»è®¡', seat_total INT COMMENT 'æ ¸å®è½½å®¢ä½_æ»è®¡', vehicle_schedule INT COMMENT 'è½¦è¾æ°_客è¿ç车ï¼å«å®çº¿æ 游客è¿å®¢è½¦ï¼', docs/½»Í¨Í³¼Æ±¨±íÉóºËϵͳ_¹¦ÄÜÓëÍê³ÉÇé¿ö»ã±¨_2026-09-14.docxBinary files differ
docs/¹«Â·ÂÿÍ/Ä£°å_½»ÆóͳH203-1±í_¹«Â·ÂÿÍÔËÊäÔ¶ÈÉú²úÇé¿ö.xlsxBinary files differ
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_2026-07ĸ°æ²¹ÆëÓëµ¼³ö¼þ´ò²»¿ªÐÞ¸´_2026-09-16.md
New file @@ -0,0 +1,86 @@ # åè½æµè¯æ¥å â 2026-07 æ¯çè¡¥é½ & 导åºä»¶ãExcel æä¸å¼ãä¿®å¤ - æ¥æï¼2026-09-16 - èå´ï¼æ±æ»å¤§è¡¨ï¼`/api/report/export/summaryWorkbook`ï¼2026-07 / 2026-08 导åºï¼`docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsx` æ¯çè¡¥é½ - å ³èï¼`docs/é®é¢æ±æ»/é®é¢ä¸æ³¨æäºé¡¹æ±æ»_2026-09-16.md` 第åä¸è ## ä¸ãèæ¯ ã è´§è¿ã页ã累计ãåå£å¾å¨ 2026-09-16 å·²å¨ **8 ææ¯ç** è½å°ï¼è§ç¬¬åäºèï¼ãç¨æ·ç¡®è®¤ãå¯ä»¥è¡¥é½ãï¼è¦æ±æåä¸å£å¾è¡¥å° **7 ææ¯ç**ï¼å¹¶è§£å³ 7 æå¯¼åºä»¶æ æ³ç¨ Excel æå¼çé®é¢ã ## äºãæµè¯ç¯å¢ | 项 | å¼ | |---|---| | å端 | Spring Bootï¼8090ï¼ä¿®å¤åå·²éå¯ï¼ | | å端 | Vueï¼8080 | | æ°æ®åº | MySQL 127.0.0.1:3308 / traffic_audit | | Excel 夿® | Excel COM `Workbooks.Open`ï¼æ¯ä¾ç¬ç«å®ä¾ï¼æµå强æå¤å¿è¿ç¨ï¼ | | ç»æå¤æ® | Python `zipfile` + `xml.etree` éé¨ä»¶æ ¡éªãéæ ¼ `<c>` è§£æ | ## ä¸ãåç°çæ ¹å ï¼ä¸¤å¤ï¼åä¸ºæ¬æ¬¡ä¿®å¤å¯¹è±¡ï¼ ### 3.1 导åºä»¶æä¸å¼ï¼æ®ç `<is>` çéæ³åå æ ¼ åä»¶éåå¨ 19 个**模å¼éæ³**çæ ¼åï¼ ``` <c r="E15" s="111" t="n"><v>67.0</v><is><t>67.00</t></is></c> ``` `<is>`ï¼inlineStrï¼åªå 许åºç°å¨ `t="inlineStr"` çæ ¼éï¼`t="n"` å´å¸¦ `<is>` å±äºéæ³ï¼Excel ç´æ¥å¤å®ãæ æ³è¯»åçå 容ãæç»æå¼ï¼COM 表ç°ä¸ºãä¸è½åå¾ç±» Workbooks ç Open 屿§ãï¼è¿ä¿®å¤æ¨¡å¼ `CorruptLoad=1` 乿ä¸å¼ï¼ã **æå **ï¼7 ææ¯çç± **openpyxl** ååºï¼`docProps/app.xml` = `Microsoft Excel Compatible / Openpyxl 3.1.5`ï¼ææ¬ç¨ `<is>` åå¨ï¼ãå¯¼åºæ¶å«çåå ¥è·¯å¾åªæ¹ `t`/`<v>`ï¼**䏿¸ æ§ `<is>`**ï¼è 8 ææ¯çæ¯ Excel åçï¼ææ¬èµ° sharedStringsï¼ï¼æä»¥åæ ·ä»£ç ä¸ 8 æä»¶æ£å¸¸ã7 æä»¶åã **为ä»ä¹åªæ 7 æå**ï¼7 æåå¨åæå¤ä»½æ¯ç `_å¤ä»½_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_æ¸ çå_20260904.xlsx`ï¼`restoreSummaryMonthlyBlocks` 伿´æ ¼åå¡«ï¼åå¡«åå ¥ inlineStr æ¯çæ ¼æ¶ç䏿§ `<is>`ã8 ææ²¡æè¯¥ `_å¤ä»½_*` æä»¶ï¼ä¸èµ°åå¡«ï¼å æ¤ä¸è§¦åã **å®ä½æ¹æ³**ï¼å¯å¤ç¨ï¼ï¼åä»¶ä¸å¥½ä»¶é¤ worksheets/styles/sharedStrings å¤**å ¨é¨é¨ä»¶éåèç¸å** â ç¨ zip æäº¤ + Excel éä¸å¼æ¡£å leave-one-outï¼å®ä½å° **sheet9ãå ¬äº¤ã(17 æ ¼) + sheet12ã轨éã轮渡ã(2 æ ¼)**ã ### 3.2 æ¯çè¡¥é½è¢«å¤ä»½æ¯çãçæå夿´»ã 补好 7 ææ¯çå导åºï¼`è´§è¿` 页 2022/2021 累计**åå忧忻叏é** ââ å 为 `restoreSummaryMonthlyBlocks` æå¤ä»½æ¯çï¼æ¸ çåã仿¯æ§å¸¸éï¼æ´æ ¼åå¡«è¦çäºæ¯ççæ°å ¬å¼ã ## åãä¿®å¤å 容 | # | ä½ç½® | æ¹å¨ | |---|---|---| | 1 | `ReportExportService.exportSummaryWorkbook` | è½çåæ°å¢ `normalizeStaleInlineStrings(wb)`ï¼æææãé inlineStr å´æ®ç `<is>`ãçæ ¼åæ¸ æï¼å¹çï¼ï¼å¹¶æ warn æ¥å¿ | | 2 | `ReportExportService.restoreSummaryMonthlyBlocks` | æ°å¢ `skipFreightHistoryBlocks`ï¼ã è´§è¿ã页 **T åå以å**ï¼2025/2024/2023/2022/2021 年度å + å年累计/ç´¯è®¡åæ¯åï¼æ°¸ä¸ä»å¤ä»½æ¯çåå¡«ï¼é¿å âçæå夿´»âï¼ä¸æ¢æãä¸å£å¾æåãå·¦åä¿æ¤åä¸æè·¯ï¼ | | 3 | `docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsx` | Excel COM è¡¥é½ï¼2025/2024/2023/2022/2021 äºä¸ªå¹´åº¦åå ± **360** 个åå æ ¼ï¼`r7/r9/r8/r10 = SUM(17 å¸å·)`ã`r5=r7+r9`ã`r6=r8+r10`ï¼+ **324** ä¸ªç´¯è®¡æ ¼ï¼`DX=SUM(DK:DV)`ã`EM=SUM(EA:EL)`ã`DY=IFERROR(DX/SUM(EA:EL)-1,"")`ï¼ï¼`CalculateFullRebuild` åä¿å | > å¤ä»½ï¼`docs/çææ±æ»å¤§è¡¨/_bak_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_è¡¥é½å_20260916.xlsx`ï¼**æ æä¸ç¨ `_å¤ä»½_` åç¼**ï¼å¦åä¼è¢« `resolveSummaryDonor` 彿 donor åå¡«ï¼ã ## äºãç¨ä¾è¡¨ | # | ç¨ä¾ | è¾å ¥ | 颿 | å®é | ç»è®º | |---|---|---|---|---|---| | 1 | åä»¶å¤ç° | 2026-07 导åºï¼ä¿®å¤åï¼ | å¯æå¼ | Excel æ¥ãä¸è½åå¾ç±» Workbooks ç Open 屿§ãï¼éè¯ 2 次ä»å¤±è´¥ | å¤ç° | | 2 | ç¯å¢æé¤ | 10KB å°ä»¶ / 8 ææ¯ç / 7 ææ¯ç / 09-08 æ§ 7 æå¯¼åº | â | å ¨é¨å¯æå¼ï¼ä» æ° 7 æå¯¼åºå¤±è´¥ | 确认éç¯å¢é®é¢ | | 3 | è·¯å¾æé¤ | åä»¶å¤å¶å°å¦ä¸ç®å½æ¹å | ä»å¤±è´¥ | ä»å¤±è´¥ | ç¡®è®¤æ¯æä»¶å 容é®é¢ | | 4 | é¨ä»¶çº§æäº¤ | åä»¶ + 好件ç styles/sharedStrings/worksheets | å®ä½åé¨ä»¶ | åä»¶ styles + åä»¶ sst + **å¥½ä»¶å ¨é¨ sheets** â å¯æå¼ | å®ä½å° worksheets | | 5 | leave-one-out | 19 个 sheet éä¸ªæ¢æåä»¶ç | æ¾åºå sheet | ä» **sheet9ãå ¬äº¤ã/ sheet12ã轨éã轮渡ã** 失败 | å®ä½å° 2 页 | | 6 | è´åï¼éæ³æ ¼è®¡æ° | ä¿®å¤å导åºä»¶ | â | 19 个 `t="n"` 带 `<is>` | å½ä¸æ ¹å | | 7 | æ£åï¼ä¿®å¤å 2026-07 | éå¯å端åå¯¼åº | 坿å¼ã19 页ã累计对 | OK sheets=19ï¼`DX5=144979.2825`ï¼`=SUM(DK5:DV5)`ï¼ã`DY5=-0.101235487797891`ã`EM5=161309.53162`ã`CU5=173045.296428512` | éè¿ | | 8 | æ£åï¼ä¿®å¤å 2026-08 | åä¸ | 坿å¼ã累计ä¸å | OK sheets=19ï¼`DZ5=144979.2825`ã`EO5=161309.53162`ã`CW5=173045.296428512`ã`S5=130311.892698249` | éè¿ | | 9 | è·¨æä¸è´æ§ | 7 æ vs 8 æåå£å¾æ ¼å | å®å ¨ç¸ç | 2022 累计 / 2021 累计 / 2023 累计 ä¸ä¸ªæåº¦ â ä¸ä¸ªå¼**å®å ¨ç¸ç** | éè¿ | | 10 | éæ³æ ¼å¤æ« | ä¿®å¤å 7 æå¯¼åº | 0 个 | 0 个 | éè¿ | | 11 | æ¯çå¯æå¼ | è¡¥é½åç¨ Excel æå¼ 7 ææ¯ç | å¯æå¼ | å¯æå¼ | éè¿ | | 12 | æ®çæ°æ®å¤æ ¸ | `2026-09` äºå¼ è¡¨è®¡æ° | å ¨ 0 | å ¨ 0ï¼h204 / investment_monthly / h2032 / audit_result / import_batchï¼ | éè¿ | ## å ãåç°çé®é¢ä¸å¤ç½® 1. **7 æå¯¼åºä»¶æä¸å¼**ï¼P0ï¼ï¼`normalizeStaleInlineStrings` æ ¹æ²»ï¼å¯¼åºä»¶ä» 941,960 åèï¼åï¼â 1,310,693 åèï¼å¥½ï¼ã 2. **å¤ä»½æ¯çå填让补é½å¤±æ**ï¼P0ï¼ï¼`skipFreightHistoryBlocks` ä¿æ¤ `è´§è¿` T åå以åã 3. **Excel COM ä¼çå¤å¿è¿ç¨**ï¼æ¯ä¾æµå®å¿ é¡»å¼ºææ¬æ¬¡æ°å»ºç `EXCEL` è¿ç¨ï¼å¦ååç» `Workbooks.Open` ä¼**é´ææ§åæ¥**åæ ·çéï¼æ¬æ¬¡ææ¥åæè¢«æ¤å¹²æ°è¿ï¼ã屿æ¥å·¥å ·åï¼å·²è®°å ¥é®é¢æ±æ»ã 4. **注æ**ï¼æ¬æ¬¡**æª**æ¹å¨ 8 ææ¯çä¸ä»»ä½å ¥åºæ°æ®ã ## ä¸ãç»è®º - 2026-07 / 2026-08 两个导åºä»¶åå¯è¢« Excel æ£å¸¸æå¼ï¼å 19 页ï¼ï¼ä¸ã è´§è¿ã页 2021/2022/2023 累计åå£å¾**å®å ¨ä¸è´**ã - 7 ææ¯çå·²æ 8 ææ¯çå£å¾è¡¥é½ï¼å¹´åº¦å 360 æ ¼ + 累计 324 æ ¼ï¼ï¼å¹¶ä» openpyxl è¡ç¼è½¬ä¸º Excel åçã - ç¨æ·è¦æ±çãæ®çæ°æ®å ¨é¨æ¸ é¤ãç»å¤æ ¸ä¸º 0 æ®çã ## å «ãéç - 2026-06 / 2026-09 æ æ¯ç â é¢è§è¿å `ready=False`ãæªæ¾å°æ¨¡æ¿æä»¶ãï¼éæ°å»ºæ¯çæè½åºæ°ï¼ç¨æ·ç¬¬ 5 é®ç延伸ï¼ã - ä»åºæ ¹ç®å½ `_*.*` ä¸´æ¶ææ¥æä»¶ï¼å«æ¬æ¬¡ `_hyb_*` / `_loo_*` / `_v2_*` / `_final_*`ï¼æªå ï¼å¾ ç¨æ·åæã docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_H2031Ä£°åÐÂÔöÁÐÊÊÅä_2026-09-16.md
New file @@ -0,0 +1,53 @@ # åè½æµè¯æ¥åï¼H203-1 æ¨¡æ¿æ°å¢ãç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç / å¡«æ¥åä½ã两åéé - æ¥æï¼2026-09-16 - 模åï¼æ°æ®å¯¼å ¥ / æ°æ®æ¥ç / æ°æ®åºè¡¨ç»æ - ç»è®ºï¼**éè¿**ï¼æ£å 4 æ¡ãè´å 2 æ¡ãå ¼å®¹ 2 æ¡ãå ¥åºæ½æ¥ 814Ã2 é¡¹å ¨é¨å¯¹é½ï¼ ## ä¸ãåè½è¯´æ ç¨æ·ä¿®æ¹äºã模æ¿_交ä¼ç»H203-1表_å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµã模æ¿ï¼å¨ãä¼ä¸åç§°ãä¹å**æå ¥ä¸¤å**ï¼`ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç `ã`å¡«æ¥åä½`ï¼å ¶ä½ 48 åæ´ä½å³ç§»ï¼æ»åæ°ç± 50 â 52ãæ¬æ¬¡æ¹å¨è®©å端è½è¯»åå¹¶å ¥åºè¿ä¸¤åï¼åæ¶ä¿è¯èæ ¼å¼æä»¶å ¼å®¹ã æ¹å¨æ¸ åï¼ | å± | æä»¶ | æ¹å¨ | |----|------|------| | æ°æ®åº | `h2031_enterprise_monthly` | `ADD COLUMN unified_credit_code VARCHAR(50) NULL AFTER enterprise_name`ã`ADD COLUMN report_unit VARCHAR(200) NULL AFTER unified_credit_code` | | å»ºè¡¨èæ¬ | `docs/init.sql` | åæ¥è¡¥ä¸¤å | | æ°æ®åå ¸ | `docs/database.md` | åæ¥è¡¥ä¸¤å说æ | | å®ä½ | `PassengerEnterpriseMonthly.java` | æ°å¢ `unifiedCreditCode`ã`reportUnit` | | å¯¼å ¥è§£æ | `DataImportService.java` | `importPassengerMonthly` å æè¡¨å¤´ååå¼ | | å端åé ç½® | `DataViewController.java` | `H2031_COLUMNS` æ°å¢ä¸¤åï¼æ°æ®æ¥ç页å¯è§ï¼ | ## äºãæµè¯ç¯å¢ - å端ï¼`Started TrafficAuditApplication` / `Tomcat started on port(s): 8090`ï¼éå¯åæ°ç¼è¯ï¼13:30ï¼ - å端ï¼8080 å·²å°±ç»ªï¼æ¬æ¬¡æªæ¹åç«¯ï¼æªéå¯ï¼ - æ°æ®åºï¼`traffic_audit` @ 127.0.0.1:3308 - æ°æ¨¡æ¿ï¼`docs\å ¬è·¯æ 客\模æ¿_交ä¼ç»H203-1表_å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµ.xlsx`ï¼Sheet1ï¼816Ã52ï¼ - èæ ¼å¼ï¼`D:\æ¡é¢\æµè¯æ°æ®\å ¬è·¯æ 客\å «æ\å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµï¼2026ï¼_2026-09-09 09_18_45.xls`ï¼Sheet0ï¼769Ã52ï¼ ## ä¸ãç¨ä¾è¡¨ | # | åºæ¯ | è¾å ¥ | 颿 | å®é | ç»è®º | |---|------|------|------|------|------| | 1 | æ£å-æ°æ¨¡æ¿å¯¼å ¥ | æ°æ¨¡æ¿ â `POST /api/import/passengerMonthly?period=2099-07` | æå䏿¡æ°ä¸æºæä»¶ä¸è´ | `æå 814 æ¡ï¼å¤±è´¥ 0 æ¡` | éè¿ | | 2 | æ£å-æ°åå ¥åº | æ¥ `unified_credit_code` / `report_unit` | 814 è¡å ¨é¨æå¼ | `count=814, c1=814, c2=814` | éè¿ | | 3 | å ¥åºæ½æ¥-é¦è¡ | æºç¬¬ 1 è¡ vs åºç¬¬ 1 è¡ | éåæ®µä¸è´ | åºï¼`enterprise_code=91420105MA4F5Q3R68`ã`unified_credit_code=91420105MA4F5Q3R68`ã`report_unit=æ¦æ±å¸å®å¹²çº¿å ¬è·¯å®¢è¿æéå ¬å¸éå°åå ¬å¸`ã`vehicle_total=26`ã`passenger_total=12835`ï¼ä¸ Excel å®å ¨ä¸è´ | éè¿ | | 4 | å ¥åºæ½æ¥-æ±æ»å | æºæä»¶æ±æ» vs åºæ±æ» | ä¸è´ | 客è¿è½¦è¾ 24584ãæ ¸å®è½½å®¢ä½ 711018ã客è¿é 16371625ãå¨è½¬é 1023386179ï¼åé¡¹å ¨ç | éè¿ | | 5 | å ¼å®¹-èæ ¼å¼å¯¼å ¥ | è `.xls` â `period=2099-09` | æå䏿°åæå¼ï¼èæä»¶ä¹å«è¿ä¸¤åï¼ | `æå 767 æ¡ï¼å¤±è´¥ 0 æ¡`ï¼`c1=767, c2=767` | éè¿ | | 6 | å ¼å®¹-èæ ¼å¼æ°å¼ä¸å | 2099-09 vs æ¢æ 2026-08ï¼åæºåå å®¹ï¼ | å®å ¨ä¸è´ | n=767 / v=22091 / p=16286506 / t=1158473501ï¼åé¡¹å ¨ç | éè¿ | | 7 | å ¼å®¹-èæ ¼å¼é¦è¡æ½æ¥ | Excel COM 读 `.xls` 第 2 è¡ vs åº | ä¸è´ | æºï¼`914201005519761659 / 914201005519761659 / æ¦æ±æ·å®é¡ºè¾¾æ±½è½¦æå¡æéå ¬å¸ / 24 / 54330`ï¼åºå | éè¿ | | 8 | è´å-ééæ°æ®ç±»å | `H203_1_2026-å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµï¼2026ï¼.xlsx` â passengerMonthly | æç¡®æ¥éãä¸ååº | `å¯¼å ¥å¤±è´¥: æéæ°æ®ç±»åãå ¬è·¯æ 客è¿è¾æåº¦ç产æ åµã䏿件å 容ä¸ç¬¦ï¼è¡¨å¤´ç¼ºå°å¿ éåãä¼ä¸åç§°ãã客è¿é_æ»è®¡ã` | éè¿ | | 9 | è´å-åå³ç§»ä¸å½±åæ§å段 | æ°æ¨¡æ¿ï¼æ´ä½å³ç§» 2 åï¼ | ä¼ä¸ä»£ç /ä¼ä¸åç§°/车è¾/客è¿éçæ§åæ®µåå¼ä¸å | è§£ææè¡¨å¤´å `buildHeaderMap` åå¼ï¼814 æ¡ 0 å¤±è´¥ï¼æ±æ»å项䏿ºæä»¶ä¸è´ï¼è§ç¨ä¾ 4ï¼ | éè¿ | ## åãåç°çé®é¢ä¸å¤ç½® 1. **èæ ¼å¼æä»¶å ¶å®ä¹å¸¦è¿ä¸¤å**ï¼`ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç `ã`å¡«æ¥åä½`ï¼ï¼æ¤åä»£ç æªè¯»å â æ¬æä¸å¹¶å¼å§å ¥åºãè¿ä¹æå³ç 2026-01 ~ 2026-08 çåéæ°æ®è¿ä¸¤å为空ï¼**éè¦éå¯¼å¯¹åºæä»¶æè½åå¡«**ï¼å·²åå ¥å¾ åï¼çç¨æ·ç¡®è®¤ï¼ã 2. **è¡¨ç»æåæ´å¿ é¡»åæ¥ä¸å¤**ï¼æ¬æ¬¡é¦æ¬¡åªæ¹äºåºä¸å®ä½ï¼æ¼äº `docs/init.sql` / `docs/database.md`ï¼å·²è¡¥é½ã 3. **æ¿æ¢éç¹ä¸å¯ä¸å¯¼è´æ¹éææ¡£**ï¼`docs/database.md` ä¸ `| enterprise_name | varchar(200) | ä¼ä¸åç§° |` åºç° 4 次ï¼é¦æ¬¡æ¹éæ¿æ¢è¯¯æ¹äº H203-2 ç 3 å¼ è¡¨ï¼å·² `git checkout` åéå¹¶æ¹ä¸ºãå æªå h2031 ç« èåæ¿æ¢ãã ## äºãç»è®º - æ°æ¨¡æ¿ä¸èæ ¼å¼**ååå ¼å®¹**ï¼å¯¼å ¥ 0 å¤±è´¥ï¼æ½æ¥åé项对é½ï¼æ§å段æªååå³ç§»å½±åã - æ°æ®åºãå»ºè¡¨èæ¬ãæ°æ®åå ¸ãå®ä½ãå¯¼å ¥è§£æãå端åé ç½®**å å¤ä¸è´**ã - éçï¼åéæä»½ï¼2026-01 ~ 2026-08ï¼ç两åå¾ åå¡«ï¼çç¨æ·ç¡®è®¤åé导ã docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_µÇ¼ÑéÖ¤ÂëÈÝ´íÓ뱨±íÔ¤ÀÀÕû¸Ä_2026-09-16.md
New file @@ -0,0 +1,62 @@ # åè½æµè¯æ¥åï¼ç»å½éªè¯ç 容é + æ¥è¡¨é¢è§æ´æ¹ï¼ææ éä½ / å¼¹çªæå¨åè§ / 失败æç¤ºï¼ - æ¥æï¼2026-09-16 - 模åï¼ç»å½é¡µãæ¥è¡¨çæ-æ±æ»å¤§è¡¨é¢è§ - ç»è®ºï¼**éè¿**ï¼4 个é®é¢å ¨é¨ä¿®å¤ï¼æµè§å¨å®æµåè¯ï¼ ## ä¸ãåè½è¯´æ ç¨æ·åé¦ 3 个é®é¢ï¼ | # | ç¨æ·æè¿° | æ ¹å | ä¿®å¤ | |---|----------|------|------| | 1 | æ¢ WiFi åç»å½é¡µåºç°éªè¯ç ç½è²æ¹æ¡ãæç¤ºãéªè¯ç å 载失败ï¼è¯·æ£æ¥ç½ç»ã | å端 `app.captcha.required=false` å·²ç¦ç¨éªè¯ç ï¼ä½å端 `Login.vue` ç `captchaRequired` é»è®¤å¼æ¯ `true`ï¼ä¸ `/api/auth/captcha-config` 请æ±å¤±è´¥æ¶ `.catch(() => {})` **éé»å¿½ç¥**ï¼é¡µé¢æ®çä¸ä¸ªå è½½ä¸åºæ¥çéªè¯ç æ¡ | é»è®¤å¼æ¹ `false`ï¼æ¹ä¸º fail-safeï¼ä» å½å端æç¡®è¿å `code===200 && data.required===true` ææ¾ç¤ºéªè¯ç ï¼è¯·æ±å¼å¸¸ä¸å¾æãä¸éè¦éªè¯ç ãå¤ç | | 2 | æ¥è¡¨çæ-æ±æ»å¤§è¡¨é¢è§ï¼ç¹å»åå¼¹ã导åºå¤±è´¥ï¼è¯·ç¡®è®¤å¯¼å ¥æ°æ®ï¼ææ¥çå端æ¥å¿ã | å端 `failWith(err, action)` æ**ææ**å¼å¸¸ï¼å«ç½ç»/代çå±å¤±è´¥ï¼é½æ¸²ææåä¸å¥ç¬¼ç»ææ¡ï¼é»è®¤ action è¿æ¯ã导åºãï¼è¯¯å¯¼è¯»ææ°æ®é®é¢ | éå `failWith` + æ°å¢ `errReason(raw)`ï¼åºåãè¿ä¸ä¸æå¡å¨ãä¸ãå端çå®åå ãï¼é¢è§è°ç¨ä¼ `action='é¢è§'`ï¼Blob é误ååºå `text()` åè§£æ | | 3 | é¢è§å¼¹çªææ éä½ï¼ææ åå¨ãå½æè´§è¿éãä¸ï¼ï¼å¼¹çªä¸å¯æå¨ãæ åè§ | è¡¨å¤´æ¯ 3 åï¼ææ /æ°æ®/忝ï¼ï¼ä¸ 4 åæ°æ®è¡ï¼åç±»/ææ /æ°æ®/忝ï¼ä¸å¹é ï¼Element UI 2.15.14 **没æ** `draggable` 屿§ï¼é£æ¯ Element Plusï¼ | 表头补为 4 å `åç±»/ææ /æ°æ®/忝`ï¼æ°å¢ `v-dialog-drag` æä»¤å®ç°æå¨ï¼åªæ¹ `.el-dialog` ç `transform`ï¼å ³éæ¶å¤ä½ï¼ï¼å `border-radius:10px` | æ¹å¨æä»¶ï¼`traffic-audit-web/src/views/Login.vue`ã`traffic-audit-web/src/views/ReportExport.vue`ãæ°å¢ `traffic-audit-web/src/directives/dialogDrag.js`ã`traffic-audit-web/src/main.js`ï¼æ³¨åæä»¤ï¼ã ## äºãæµè¯ç¯å¢ - å端ï¼`http://localhost:8080`ï¼vue-cli-service serveï¼dev æå»ºï¼ - å端ï¼8090ï¼`Started TrafficAuditApplication`ï¼éå¯åæ°ç¼è¯ï¼ - æµè§å¨ï¼Codex å 嵿µè§å¨ï¼è§å£çº¦ 319Ã790ï¼ï¼åè¯æ¹å¼ `tab.playwright.evaluate()` ç´è¯» DOM + æªå¾ ## ä¸ãç¨ä¾è¡¨ | # | åºæ¯ | è¾å ¥/æä½ | 颿 | å®é | ç»è®º | |---|------|-----------|------|------|------| | 1 | éªè¯ç -åç«¯å·²å ³é | æ°å¼æ ç¾è®¿é® `#/login`ï¼å端ä¸å¯ç¨æ¶åæ ·éªè¯ï¼ | ä¸åºç°éªè¯ç æ¹æ¡ï¼ä¸åºç°ãéªè¯ç å 载失败ã | 页颿 `.captcha-box`ï¼æç¤ºãæµè¯æ¨¡å¼ï¼è¡ä¸ºéªè¯ç 已跳è¿ã | éè¿ | | 2 | éªè¯ç -æ¥å£æ£å¸¸ | `GET /api/auth/captcha-config` | `required=false` | `{"code":200,"message":"success","data":{"required":false}}` | éè¿ | | 3 | é¢è§-è¡¨å¤´åæ° | æå¼é¢è§å¼¹çªè¯» `thead th` | 4 åä¸é¡ºåºä¸º åç±»/ææ /æ°æ®/忝 | `['åç±»','ææ ','æ°æ®','忝']` | éè¿ | | 4 | é¢è§-ææ å¯¹é½ | 读é¦è¡ååå æ ¼ x åæ | å类对é½ãé路货è¿ããææ 对é½ãå½æè´§è¿é(ä¸å¨)ããæ°æ®å¯¹é½ 16888.76ã忝卿°æ®å³ä¾§ | åç±» x=35ãææ x=118ãæ°æ® x=394ã忝 x=587ï¼`16888.76` å¨ x=394ï¼ | éè¿ | | 5 | é¢è§-å¼¹çªåè§ | 读 `.el-dialog` è®¡ç®æ ·å¼ | æåè§ | `borderRadius=10px`ã`overflow=hidden` | éè¿ | | 6 | é¢è§-å¼¹çªæå¨ | `tab.drag([150,60],[270,220])` ææ é¢æ | å¼¹çªè·éç§»å¨ | ç± `(0,40)` â `(120,200)`ï¼`transform=matrix(1,0,0,1,120,160)`ï¼ä½ç§»éçäºææ½å¢é | éè¿ | | 7 | é¢è§-å ³éå¤ä½ | å ³éå¼¹çªå读 transform | å¤ä½ä¸º none | `transform=none`ã`visible=false` | éè¿ | | 8 | é¢è§-ä¸å£å¾ä¹åæ è¡¨æ ¼ | 读弹çªå `table` æ°éä¸å 容 | æä¸ä» æ 1 å¼ ææ è¡¨ | å¼¹çªå 1 å¼ è¡¨ï¼12 è¡ææ ï¼å«ä¸å£å¾ 4 è¡ï¼ï¼è¡¨ä¸ä» 两æ¡åæ¯ç¼ºå¤±æç¤ºä¸ãå ³éãæé® | éè¿ | | 9 | 失败æç¤º-ç½ç»å¼å¸¸ | åç«¯åææ¶ç¹é¢è§ | æç¡®æç¤ºç½ç»/æå¡æªå¯å¨ï¼èéã导åºå¤±è´¥ï¼è¯·ç¡®è®¤å¯¼å ¥æ°æ®ã | `é¢è§å¤±è´¥ï¼æ æ³è¿æ¥æå¡å¨ï¼è¯·æ£æ¥ç½ç»è¿æ¥ï¼æç¡®è®¤å端æå¡æ¯å¦å·²å¯å¨` | éè¿ | | 10 | 导åº-æ£å¸¸è·¯å¾ | ç¹ã导åºã | ä¸è½½æåæç¤º | `æ¥è¡¨å¯¼åºæå` | éè¿ | ## åãåç°çé®é¢ä¸å¤ç½® 1. **ã导åºå¤±è´¥ï¼è¯·ç¡®è®¤å¯¼å ¥æ°æ®ï¼ææ¥çå端æ¥å¿ã䏿¯æ°æ®é®é¢**ï¼ç¨ API éæç´è¿ `/api/report/preview` ä¸ `/api/report/export/summaryWorkbook` å ¨é¨è¿å 200ï¼2026-08 å¯¼åº 950747 åèï¼ãè¯¥ææ¡åªå¨**ç½ç»/代çå±å¤±è´¥**æ¶åºç°ï¼æ¢ WiFi åè¯·æ±æä¸å°å端ï¼ï¼å±äºæç¤ºè¯¯å¯¼ãç°å·²æ¹ä¸ºåºåå ·ä½åå ã 2. **Element UI 2.15.14 䏿¯æ `draggable`**ï¼å¼¹çªæå¨åªè½èªå·±å®ç°ï¼å·²ç¨ `v-dialog-drag` æä»¤ï¼`<style>` å¿ é¡»**é scoped**ï¼el-dialog é»è®¤ append-to-bodyï¼ã 3. **æµè§å¨èªå¨ååè¯çå**ï¼`tab.click(index)` çç´¢å¼å¨é¡µé¢å·æ°åä¼å¤±æï¼æ¾è¯¯ç¹å°ãæèµæ¥è¡¨ãTabï¼Playwright locator ç¹ Element UI è¡¨æ ¼å æé®ä¼è¶ æ¶ï¼`tab.drag` åæ å¿ é¡»å¨è§å£å ã以ä¸åå·²è®°å ¥ãé®é¢ä¸æ³¨æäºé¡¹æ±æ»ãã 4. é¢è§å¼¹çªæ é¢å¨æªæå¼æ¶æ¾ç¤ºä¸ºãé¢è§æ°æ® - ï¼ï¼ãï¼å±æªèµå¼ç¶æï¼ä¸å½±å使ç¨ã ## äºãç»è®º - 4 个é®é¢å ¨é¨ä¿®å¤å¹¶ææµè§å¨å®æµè¯æ®ï¼è¡¨å¤´ 4 åä¸ x åæ å¯¹é½ãåè§ 10pxãæå¨ä½ç§» 120/160ãå ³éå¤ä½ãæ 第äºå¼ 表ã失败æç¤ºå·²ç»åï¼ã - ãä¸å£å¾ä¹åä¸å渲æè¡¨æ ¼ãçä¸é¡¹éªè¯è§ãåè½æµè¯æ¥å_æ±æ»å¤§è¡¨é¢è§å é¤ä¸å£å¾åæç»è¡¨_2026-09-16.mdãã - éçï¼é¢è§å¼¹çªå ãå ± 0 è¡ãä¸ãæåº¦è¦çï¼1~8æåææ°æ®ã两个å£å¾ææ¡ä¸åï¼æè¯¯è§£ï¼çç¨æ·ç¡®è®¤åè°æ´ã ## å ãç¨æ·ç¡®è®¤åç追å ä¿®æ¹ï¼2026-09-16 åæï¼ ç¨æ·ç¡®è®¤ãé¢è§å¼¹çªçè¡æ°ææ¡å¯ä»¥æ¹ãï¼å·²å®æ½ï¼ - **æ¹å¨**ï¼`ReportExport.vue` ä¸ `å ± {{ it.rowCount || 0 }} è¡` æ¹ä¸ºææ¥è¡¨ç±»ååºåââ - æ±æ»å¤§è¡¨ï¼`summaryWorkbook`ï¼ææ åï¼ï¼æ¾ç¤º `ææ {{ (it.summary || []).length }} 项`ï¼ - å ¶å®æç»æ¥è¡¨ï¼æ¾ç¤º `å ± {{ it.rowCount || 0 }} è¡æç»`ã - **åå **ï¼æ±æ»å¤§è¡¨æ²¡ææç»è¡ï¼`rowCount` æä¸º 0ï¼ä¸ä¸æ¹ãæåº¦è¦çï¼1~8æåææ°æ®ãèªç¸çç¾ï¼å®¹æè¯¯å¤ä¸ºæ²¡æ°æ®ã - **éªè¯**ï¼æµè§å¨å®æµï¼2026-08 æ±æ»å¤§è¡¨ï¼ï¼å¼¹çªå¤´é¨ç±ãå ± 0 è¡ãå为 **ãéè·¯è¿è¾éæ±æ»è¡¨ï¼æ´æ¬ï¼ ææ 20 项ã**ï¼ä¸æ¹ä»ä¸ºãæåº¦è¦çï¼1~8æåææ°æ®ãï¼è¡¨å¤´ä»ä¸º `åç±»/ææ /æ°æ®/忝`ï¼å¼¹çªå ä»åªæ 1 å¼ è¡¨ï¼12 è¡ï¼ãæªå¾ï¼`_shot_preview_after_wording_20260916.png`ã - **ç»è®º**ï¼éè¿ã docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»õÔËÁ¿ÖÜתÁ¿2023ÄêÊý¾Ý²¹Â¼_2026-09-16.md
New file @@ -0,0 +1,49 @@ # åè½æµè¯æ¥åï¼è´§è¿é/å¨è½¬é 2023 å¹´æ°æ®è¡¥å½å ¥åº - æ¥æï¼2026-09-16 - 模åï¼æ°æ®å¯¼å ¥ / è´§è¿éå¨è½¬é - ç»è®ºï¼**éè¿**ï¼æ£å 1 æ¡ãå ¥åºæ½æ¥ 216 é¡¹å ¨å¯¹é½ãä¸å¹´åæ 1 æ¡ãå¹ç/åå½ 2 æ¡ï¼ ## ä¸ãåè½è¯´æ ç¨æ·åé¦ã2023 å¹´æ 12 æçæ°æ®ãï¼èä¸è½®å ¥åºä½¿ç¨ç 8 ææºæä»¶**缺 2023 å¹´ Sheet**ï¼åªæ `2026å¹´/2025å¹´/2024å¹´/2022å¹´/2021å¹´`ï¼ï¼å æ¤åºé没æ `2023-12`ã ææ¥åå¨ 7 ææºæä»¶ä¸æ¾å° 2023 å¹´æ°æ®ï¼å°å ¶è¡¥å½å ¥åºï¼ | 项 | å 容 | |----|------| | æ°æ®æ¥æº | `D:\05_æ°æ®åç±»\è´§è¿\7æ\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-7æï¼.xlsx` ç `2023` Sheet | | è¡¥å½æ¹å¼ | å¦å临æ¶å·¥ä½ç°¿ `_2023_import_tmp.xlsx`ï¼ä» ä¿ç `2023` + `2022å¹´` 两个 Sheetï¼æ»¡è¶³å¤å¹´åº¦å·¥ä½ç°¿ãè³å° 2 个 Sheetãè§åï¼ï¼èµ° `POST /api/import/freightTurnover?period=2023-12` | | ç»æ | `è´§è¿éå¨è½¬éå¯¼å ¥æå, å ± 36 æ¡è®°å½`ï¼18 å°å¸ à 2 个æ¥è¡¨æï¼2022-12 éå + 2023-12 æ°å¢ï¼ | **为ä»ä¹å¸¦ä¸ 2022 å¹´ Sheet**ï¼`2023` çä¸å¹´åæåèªãä¸ä¸å¹´åº¦ Sheetãï¼åªæ¾ 2023 ä¼å¯¼è´ 2023 ç `last_*` 为空ï¼åæ¶é¿å æ´æ¬å¯¼å ¥ 7 ææä»¶èå¤åºæ ç¨ç `2026-07` æ¥è¡¨æã ## äºãæµè¯ç¯å¢ - å端ï¼éå¯åæ°ç¼è¯ï¼`Tomcat started on port(s): 8090`ï¼PID 31384 - æ°æ®åºï¼`traffic_audit.freight_turnover_import` - æºæä»¶ï¼7 ææä»¶ `2023` Sheetï¼A1:N48ï¼`è´§è¿é(ä¸å¨)` å + `å¨è½¬é(ä¸å¨å ¬é)` åï¼1â12 æ + 累计åï¼ ## ä¸ãç¨ä¾è¡¨ | # | åºæ¯ | è¾å ¥ | 颿 | å®é | ç»è®º | |---|------|------|------|------|------| | 1 | æ£å-2023 å ¥åº | `_2023_import_tmp.xlsx` â freightTurnover | çæ `2023-12`ï¼18 è¡ | `å ± 36 æ¡è®°å½`ï¼`SELECT report_period,COUNT(*)` åºç° `2023-12 = 18` | éè¿ | | 2 | å ¥åºæ½æ¥-éæ ¼æ¯å¯¹ | 2023 Sheet è´§è¿éå + å¨è½¬éåï¼18 å°å¸ à 12 æ à 2 ææ = 432 é¡¹ï¼ | ä¸åºä¸ `freight_m01..m12` / `turnover_m01..m12` å®å ¨ä¸è´ | **mismatches = 0**ï¼18 个å°åºå ¨é¨å¹é ï¼ | éè¿ | | 3 | ä¸å¹´åæ | æ¥ 2023-12 ç `last_freight_*` / `last_turnover_*` | çäº 2022 å¹´åæå¼ | æ¦æ± `last_freight_m01=3527.89407360113`ã`last_freight_m12=4334.42636773157`ã`last_turnover_m12=608823.495390257`ï¼ä¸ `2022-12` è¡éå¼ç¸å | éè¿ | | 4 | æ¥è¡¨ææ¸ ååå½ | æ¥å ¨é¨æ¥è¡¨æ | æ éå¤ãæ 2099 æ®ç | 2021-12 / 2022-12 / **2023-12** / 2024-12 / 2025-12 / 2026-01â¦2026-08ï¼æ¯æ 18 è¡ | éè¿ | | 5 | å岿æªè¢«æ±¡æ | 2022-12 éååä¸å弿¯è¾ | å®å ¨ä¸è´ | 䏿¹å¨å 2022-12 éå¼ç¸å | éè¿ | ## åãåç°çé®é¢ä¸å¤ç½® | # | é®é¢ | å¤ç½® | |---|------|------| | 1 | 8 ææºæä»¶æ 2023 å¹´ Sheetï¼å¯¼è´åºéé¿æç¼º `2023-12`ãä¸ `2024-12` æ ä¸å¹´åæ | ä» 7 ææºæä»¶è¡¥å½ `2023-12`ï¼`2024-12` çä¸å¹´åææ¬æ¬¡**æªéç®**ï¼éé导 2024 æä¼çæï¼ï¼å¦éå¯å¦è¡è¡¥å¯¼ | | 2 | 7 ææä»¶ä¸ 8 ææä»¶ç 2021/2022/2024 ä¸å¹´æ°æ®æ¯å¦ä¸è´æ æ³ç¡®å® | éæ ¼æ¯å¯¹ï¼`onlyJuly/onlyAug/differ` å ¨é¨ä¸ºç©ºï¼**ä¸å¹´ 0 å¤å·®å¼**ï¼å æ¤è¡¥å¯¼ 2022 ä¸ä¼å¼å ¥åå·® | | 3 | è¥æ´æ¬å¯¼å ¥ 7 ææä»¶ä¼å¤åº `2026-07` æ¥è¡¨æ | æ¹ä¸ºåªä¿ç `2023 + 2022å¹´` 两个 Sheet ç临æ¶å·¥ä½ç°¿ï¼é¿å äº§çæ ç¨ææ¬¡ | | 4 | å Sheet æä»¶ä¸ä¼è¢«è¯å«ä¸ºå¤å¹´åº¦å·¥ä½ç°¿ | 已卿¬æ¥åä¸ãé®é¢ä¸æ³¨æäºé¡¹æ±æ»ãä¸è®°å½è¯¥è§åï¼ä¾åç»è¡¥æ°åè | ## äºãç»è®º - 2023 å¹´è´§è¿é/å¨è½¬é已宿´å ¥åºï¼18 å°å¸ à 12 æï¼ï¼**432 é¡¹éæ ¼æ¯å¯¹é¶å·®å¼**ï¼ä¸å¹´åææ£ç¡®åèª 2022 å¹´ã - æ¥è¡¨ææ¸ åè¿è´¯ï¼2021-12 â 2026-08 å ± 13 æï¼æ¯æ 18 è¡ã - éçï¼`2024-12` çä¸å¹´åæï¼2023 å¹´å¼ï¼æªåå¡«ï¼å¦éè¦å¯é导 2024 å¹´æ°æ®ã docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»õÔËҳǩÀÛ¼ÆÁÐÐÞ¸´ÓëÔàÆÚÇåÀí_2026-09-16.md
New file @@ -0,0 +1,176 @@ # åè½æµè¯æ¥å â è´§è¿é¡µç¾ã累计ãåä¿®å¤ + H2032 èææ¸ ç - **åè½å**ï¼æ±æ»å¤§è¡¨ã è´§è¿ã页ç¾ç´¯è®¡åä¿®å¤ï¼`h2032_enterprise_monthly` 2026-09 èææ¸ ç - **æ¥æ**ï¼2026-09-16 - **ç»è®º**ï¼**éè¿**ï¼6/6 累计å䏿ºæä»¶äººå·¥æ ¸ç®ä¸è´ï¼èæå·²æ¸ é¤ä¸çæå¯è¿åå¤ä»½ï¼ ## ä¸ãåè½è¯´æä¸èæ¯ ç¨æ·åé¦ï¼æ±æ»å¤§è¡¨ã è´§è¿ã页ç¾çãç´¯è®¡ãæ°æ®ï¼äººå·¥æ ¸å¯¹å**åªæåé¢å个è½å¯¹ä¸**ã ` è´§è¿` 页ç¾å ± 6 个累计åï¼å ¨çè¡ï¼ï¼ | å | 年度 | ä¿®å¤å | æºæä»¶æ ¸ç® | å·®å¼ | |---|---|---|---|---| | S | 2026(1-8æ) | 130311.8927 | 130311.8927 | 0 | | AT | 2025 | 195433.2232 | 195433.2232 | 0 | | BV | 2024 | 184938.5780 | 184938.5780 | 0 | | CW | 2023 | 173045.2932 | 173045.2964 | -0.0033 | | DZ | 2022 | 144979.2854 | 144979.2825 | +0.0029 | | EO | 2021 | 空 | 161309.5316 | æ´å缺失 | å¨è½¬éè¡åçï¼2023 -0.0017ã2022 +0.0025ã2021 空ï¼ã ## äºãæ ¹å å®ä½ ### 2.1 ç»æä¸æä»¶èè´£ æ¯çï¼`docs/çææ±æ»å¤§è¡¨/2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨.xlsx` â ` è´§è¿` 页ï¼118x147ï¼ã - `çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx` ä» ä½**å宽çå¼åç §**ï¼`applySummaryReferenceLayout` åªè¯»å宽ä¸éèæ è®°ï¼ä¸è¯»æ°å¼ï¼ï¼ - `2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨_çå¼åå.xlsx` è¿è¡æ¶**æªè¢«ä»»ä½ä»£ç å¼ç¨**ã å ¨çå 6 è¡ï¼r5 è´§è¿éãr6 å¨è½¬éãr7 å ¶ä¸è§ä¸è´§è¿éãr8 å ¶ä¸è§ä¸å¨è½¬éãr9 å ¶ä¸è§ä¸è´§è¿éãr10 å ¶ä¸è§ä¸å¨è½¬éã 17 个å¸å·åæ¯å 6 è¡ï¼åé¦è¡ 11,17,...,107ï¼æ¦æ±å¸...æåºï¼ã å ³é®ï¼å ¨ç r5 = `=<m>7+<m>9`ï¼è§ä¸+è§ä¸ï¼ï¼r7 = 17 å¸å·è§ä¸ä¹åï¼å ¬å¼ï¼ï¼è **r9ï¼å ¨çè§ä¸ï¼æ¯åæ»ç常é**ã ### 2.2 å³å®æ§æµéï¼Excel COM éç®åéææ¯è¾ãå ¨çè¡ãä¸ã17 å¸å·è¡ä¹åãï¼ | 年度 | å计差 | è§ä¸å·® | è§ä¸å·® | |---|---|---|---| | 2026(1-8) | 2.8e-5 | 1.8e-12 | 2.8e-5 | | 2025 | 3.3e-11 | 9.1e-13 | 3.5e-11 | | 2024 | 1.5e-11 | 9.1e-13 | 1.3e-11 | | 2023 | **4.6e-3** | 4.5e-13 | **4.6e-3** | | 2022 | **3.1e-3** | 2.3e-13 | **3.1e-3** | | 2021 | 4.0e-5 | 4.0e-5 | 1.5e-4 | **ç»è®ºï¼è§ä¸æ°¸è¿å¯¹å¾ä¸ï¼å·®å¼å ¨é¨æ¥èªãå ¨çè§ä¸ãè¿ä¸è¡ç忻叏éä¸ 17 å¸å·è§ä¸ä¹åä¸çã** 忶宿µã17 å¸å·è¡ä¹åãçäºæºæä»¶æ¹åçè¡ï¼2022 累计 144979.2825ã2023 累计 173045.2964ï¼ä¸äººå·¥æ ¸ç®**å®å ¨ä¸è´**ã ### 2.3 å ¶ä½åå - **DZï¼2022 累计ï¼åæ»å¸¸é**ï¼ä¸éæ°æ®å·æ°ï¼å ¶å¼æ°å¥½çäºèªèº« 12 个æä¹åï¼æ æ¹æå ¬å¼å±ç弿¹å¨ï¼ï¼ - **EOï¼2021 ç´¯è®¡ï¼æ´å为空**ï¼æ¯ç仿ªå¡«è¿ç´¯è®¡å ¬å¼ï¼2021 å¹´ `EC:EN` åäºä¸ªæé½æå¼ï¼ï¼ - **EAï¼2022 ç´¯è®¡åæ¯ï¼ä¹æ¯åæ»å¸¸é**ï¼ - 导åºä»£ç åªåå¡«ãç®æ 彿ãä¸åï¼`SummaryWorkbookFiller.fillFreightSheet`ï¼ï¼å岿份ä¸å¾æ²¿ç¨æ¯ç â æ¯ç对ä¸ä¸å°±æ´ä½å¯¹ä¸ä¸ã ## ä¸ãä¿®æ¹å 容 ### 3.1 æ¯çã2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨.xlsxãâ ` è´§è¿` 页 | # | ä½ç½® | æ¹å | æ¹å | |---|---|---|---| | 1 | r7 å ¶ä¸è§ä¸è´§è¿éï¼2021-2025 åæï¼ | 常é/é¨åå ¬å¼ | `=SUM(<17 å¸å·è§ä¸è´§è¿éè¡>)` | | 2 | r9 å ¶ä¸è§ä¸è´§è¿éï¼2021-2025 åæï¼ | **忻叏é** | `=SUM(<17 å¸å·è§ä¸è´§è¿éè¡>)` | | 3 | r8 å ¶ä¸è§ä¸å¨è½¬éï¼2021-2025 åæï¼ | 常é/é¨åå ¬å¼ | `=SUM(<17 å¸å·è§ä¸å¨è½¬éè¡>)` | | 4 | r10 å ¶ä¸è§ä¸å¨è½¬éï¼2021-2025 åæï¼ | **忻叏é** | `=SUM(<17 å¸å·è§ä¸å¨è½¬éè¡>)` | | 5 | r5 è´§è¿éï¼2021-2025 åæï¼ | 常é/å ¬å¼ | `=<m>7+<m>9` | | 6 | r6 å¨è½¬éï¼2021-2025 åæï¼ | 常é/å ¬å¼ | `=<m>8+<m>10` | | 7 | DZ åï¼2022 累计ï¼è¡ 5-112ï¼ | 忻叏é | `=SUM(DM<r>:DX<r>)` | | 8 | EO åï¼2021 累计ï¼è¡ 5-112ï¼ | **空** | `=SUM(EC<r>:EN<r>)` | | 9 | EA åï¼2022 ç´¯è®¡åæ¯ï¼è¡ 5-112ï¼ | 忻叏é | `=IFERROR(DZ<r>/SUM(EC<r>:EN<r>)-1,"")` | å ±æ¹åæååå 360 个ã累计åå 324 个ã - 2026 å¹´åï¼C..Qï¼**ä¸å¨**ï¼å½æå¼ç±å¯¼åºä»£ç åå¡«ï¼ä¸å ¶ç´¯è®¡å·²ä¸æºæä»¶ä¸è´ï¼ - EPï¼2021 ç´¯è®¡åæ¯ï¼**ä¿æä¸ºç©º**ï¼é¡µå 没æ 2020 年度åï¼æ åæ¯åºæå¯å¼ç¨ï¼ - åªæ¹æ¯çè¿ä¸ä¸ªæä»¶ã`çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx` æ¯å宽åç §ä»¶ï¼æ¹å®åèæå宽被 Excel éå带åçé£é©ï¼ï¼`_çå¼åå.xlsx` è¿è¡æ¶æªè¢«å¼ç¨ï¼ä¸¤è åä¸å¨ï¼ - åæå¤ä»½æ¯çè¿åæºå¶**ä¸ä¼**å²ææ¬æ¬¡æ¹å¨ï¼`resolveSummaryDonor(2026,8)` è¦æ±æä»¶å以 `_å¤ä»½_` å¼å¤´ä¸å«ã2026å¹´8æãï¼ç®å½ä¸æ å¹é æä»¶ï¼å¯¼åºæ¥å¿äº¦ç¡®è®¤ãæªæ¾å°åæå¤ä»½æ¯çãã æ¹å¨åå¤ä»½ï¼`docs/çææ±æ»å¤§è¡¨/_bak_202608æ¯çä¿®æ¹å_20260916/`ï¼3 个åæä»¶ï¼ã > å®ç°æ¹å¼ç¨ **Excel COM** æå¼æ¯çæ¹å ¬å¼å¹¶ `CalculateFullRebuild` åä¿åã**ä¸å¯ç¨ openpyxl å¦å**ï¼ä¼æ¸ ç©ºå ¨æ¬å ¬å¼ç¼åå¼ï¼2026-09-16 æ¾å æ¤è®© 2021 å¹´æ¹åçè¡åæ 0ï¼è§å·¥ä½æ¥ç»ç¬¬åå «èï¼ã ### 3.2 æ°æ®åº | æä½ | 对象 | å½±åè¡æ° | |---|---|---| | DELETE | `h2032_enterprise_monthly` WHERE `report_period='2026-09'` | 636 | | DELETE | `import_batch` WHERE `id=302` | 1 | 便®ï¼batch 302 çæä»¶åæ¯ãé路货ç©è¿è¾æåº¦ç产æ åµï¼2026å¹´8æï¼.xlsãï¼å´è¢«åæ `2026-09`ï¼2026-09-10 09:03:29 å¯¼å ¥ï¼ï¼2026-09-11 17:48 å·²ç¨æ£ç¡®ç 8 ææä»¶é导为 `2026-08`ï¼batch 320ï¼å为 636 è¡ / 90 åºåï¼ã å¤ä»½ï¼å¯è¿åï¼ï¼`_backup_h2032_2026-09_rows_20260916.sql`ï¼636 个å ç»ï¼ã`_backup_h2032_2026-09_batch302_20260916.sql`ã ## åãæµè¯ç¯å¢ | 项 | å¼ | |---|---| | å端 | Spring Bootï¼`http://127.0.0.1:8090`ï¼è¿è¡ä¸ï¼ | | æ°æ®åº | MySQL 8.0ï¼`127.0.0.1:3308`ï¼åº `traffic_audit` | | å¯¼åºæ¥å£ | `GET /api/report/export/summaryWorkbook?period=2026-08&mode=month` | | é¢è§æ¥å£ | `GET /api/report/preview?period=2026-08&mode=month&types=summaryWorkbook` | | å ¬å¼æ±å¼ | Excel COMï¼`CalculateFullRebuild`ï¼ââ导åºä»¶å ¬å¼**æ ç¼åå¼**ï¼openpyxl è¯»åºæ¥å ¨æ¯ Noneï¼å¿ é¡»ç¨ Excel éç® | | æºæä»¶ | `D:\05_æ°æ®åç±»\é«é\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-8æï¼.xlsx`ï¼2021/2022/2024/2025/2026 页ï¼+ `D:\05_æ°æ®åç±»\è´§è¿\7æ\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-7æï¼.xlsx`ï¼2023 é¡µï¼ | ## äºãç¨ä¾è¡¨ ### 5.1 æ£åç¨ä¾ | # | è¾å ¥/æä½ | 颿 | å®é | ç»è®º | |---|---|---|---|---| | P1 | éå¯¼åº 2026-08 æ±æ»å¤§è¡¨ï¼Excel éç®å读 ` è´§è¿` å ¨çè¡ 6 个累计å | 2021/2022/2023 䏿ºæä»¶ä¸è´ | 2026 å·® -1.8e-6ã2025 +4.1e-5ã2024 -2.1e-5ã2023 +2.9e-5ã2022 -2.9e-11ã2021 +2.0e-5ï¼å¨è½¬éåéçº§ï¼ | éè¿ | | P2 | åä¸ï¼è¯» 2021 累计å EO | æå¼ä¸çäº 161309.5316 | 161309.5316 | éè¿ | | P3 | 导åºä»¶ãå ¨çè¡ãéæ vsã17 å¸å·è¡ä¹åã | 差约çäº 0 | 2021<=5.5e-12ã2022<=5.5e-12ã2023<=3.6e-12ã2025<=5.5e-12ï¼å¨è½¬é <=9.3e-10ï¼ | éè¿ | | P4 | æ¯çéç®ååä¸ | 差约çäº 0 | 2021-2025 å ¨é¨ <=9.3e-10 | éè¿ | | P5 | 导åºä»¶ 2026 å¹´ 8 æå½æå¼ | å ¨çè´§è¿é 16888.76 | Q5=16888.7615ï¼Q11(æ¦æ±å¸)=5173.1802 | éè¿ | | P6 | é¢è§æ¥å£ `types=summaryWorkbook` | è¿åæ±æ»ææ | `ready=true`ã`rows=159`ã20 é¡¹ææ ï¼å½æè´§è¿é 16888.76ã累计 130311.89ï¼ | éè¿ | | P7 | 2021 ç´¯è®¡åæ¯ EA æ½æ¥ | åæ¯ä¸º 0 çè¡ä¸æ¾ç¤ºé误 | EA5=-0.1012355ãEA11=-0.0886607ãEA90 空ãEA111 空 | éè¿ | ### 5.2 è´åç¨ä¾ / åå½ç¨ä¾ | # | è¾å ¥/æä½ | 颿 | å®é | ç»è®º | |---|---|---|---|---| | N1 | ç¨ openpyxl å¦åæ¯çå导åºï¼åå²è¸©åå¤ç°ï¼ | ä¼ä¸¢å ¬å¼ç¼åå¼ï¼æ **ä¸éç¨**该å®ç° | æªéç¨ï¼æ¹ç¨ Excel COMï¼ç¼åå¼ä¿ç | è§é¿ | | N2 | æ¹æ¯çæ¶æå ¬å¼åæ `SUM(DM5)` ä¹ç±»æ®ç¼ºå¼ç¨ï¼é¦æ¬¡èæ¬ `"$m7"` 被 PowerShell å½åéåï¼ | åºåç°å¹¶åæ» | å·²åç°ï¼ä» `_bak` å¤ä»½è¿ååï¼æ¹ç¨ `${r}`/`${m}` å®çéè· | éè¿ | | N3 | 2026-07 æå¯¼åºï¼åå½ï¼æ¯çæªæ¹ï¼ | ä»è½æ£å¸¸å¯¼åº | `_regress_summary_2026-07.xlsx` 941,969 åèï¼` è´§è¿` 页 118x145 | éè¿ | | N4 | 导åºåæ¥è¯¢ `h2032_enterprise_monthly` æ¯å¦è¿æ 2026-09 | æ | 2026-01...2026-08 å 636 è¡ï¼æ 2026-09 | éè¿ | | N5 | `import_batch` æ¯å¦è¿æ id=302 | æ | å·²å é¤ | éè¿ | | N6 | å¤ä»½ SQL å¯è¿åæ§ | å ç»æ°åºä¸º 636 | 宿µ 636 个å ç» | éè¿ | ### 5.3 å ¥åºæ½æ¥ | # | æ½æ¥é¡¹ | ç»æ | |---|---|---| | D1 | `h2032_enterprise_monthly` 2026 å¹´åæè¡æ° / åºåæ° | 2026-01 636/91ï¼2026-02...08 å 636/90 | | D2 | å é¤åå rowcount | å 636 è¡ï¼`ROW_COUNT()` 宿µ 636ï¼ãå batch 1 è¡ | | D3 | å¤ä»½æä»¶åèæ° | rows 725,989 åè / batch 1,624 åè | ## å ãä¿®å¤åå对æ¯ï¼å¯¼åºä»¶å®æµï¼ | 年度 | å | ä¿®å¤å | ä¿®å¤å | æºæä»¶æ ¸ç® | ä¿®å¤åå·®å¼ | |---|---|---|---|---|---| | 2026(1-8æ) | S | 130311.8927 | 130311.8927 | 130311.8927 | -1.8e-6 | | 2025 | AT | 195433.2232 | 195433.2232 | 195433.2232 | +4.1e-5 | | 2024 | BV | 184938.5780 | 184938.5780 | 184938.5780 | -2.1e-5 | | 2023 | CW | 173045.2932 | **173045.2964** | 173045.2964 | +2.9e-5 | | 2022 | DZ | 144979.2854 | **144979.2825** | 144979.2825 | -2.9e-11 | | 2021 | EO | 空 | **161309.5316** | 161309.5316 | +2.0e-5 | å¨è½¬éè¡ï¼2021 `21961780.4134`ã2022 `20587594.6295`ã2023 `24243256.5443`ã2024 `25071499.8353`ã2025 `26403562.8772`ã2026 `17492129.0479`ï¼ä¸æºæä»¶å·®å¼å <=2.1e-4ã **6/6 累计åå¨ 4 ä½å°æ°æ¾ç¤ºå£å¾ä¸ä¸æºæä»¶äººå·¥æ ¸ç®å®å ¨ä¸è´ã** ## ä¸ãåç°çé®é¢ä¸å¤ç½® | # | 严é度 | é®é¢ | å¤ç½® | |---|---|---|---| | 1 | é« | `h2032_enterprise_monthly` å¤åº 2026-09 æï¼å®ä¸º 8 ææä»¶ï¼ | **å·²å é¤**ï¼å« batch 302ï¼ï¼çå¯è¿åå¤ä»½ | | 2 | é« | æ¯çãå ¨çè§ä¸ãè¡åæ»å¸¸éï¼å¯¼è´ 2022/2023 累计å差约 0.003 | **å·²æ¹ä¸º 17 å¸å·æ±åå ¬å¼** | | 3 | ä¸ | æ¯ç 2021 累计å EO æ´å为空 | **已补 `=SUM(EC:EN)`** | | 4 | ä¸ | æ¯ç 2022 累计å DZãç´¯è®¡åæ¯ EA ä¸ºåæ»å¸¸é | **å·²æ¹ä¸ºå ¬å¼** | | 5 | ä½ | æ¯ç Excel éåå导åºä»¶ä½ç§¯ç± 950,186 -> 1,331,599 åèï¼Excel èªèº«æ ¼å¼å¼éï¼`_çå¼åå.xlsx` å为 1.48MB éçº§ï¼ | è®°å½ï¼ä¸å½±åæ°æ® | | 6 | ä½ | 导åºä»¶ ` è´§è¿` 页åå¨ <=2.1e-4 çæµ®ç¹ç´¯å åªå£° | è®°å½ï¼4 ä½å°æ°æ¾ç¤ºä¸è´ | | 7 | æç¤º | å¦åç° 2026-09 æè¿æï¼`h204_vehicle_quarterly` 1284 è¡ï¼batch 142ï¼ä¸ 2026-08 ç batch 144 åæä»¶ï¼ã`investment_monthly` 31 è¡ï¼batch 107ï¼ä¸ batch 108 åæºï¼ã`audit_result` 2061 è¡ã`audit_run` 3 è¡ | **æ¬æ¬¡æªå¨**ï¼ä¸å¨ææèå´ï¼ï¼å¾ ç¨æ·ç¡®è®¤æ¯å¦ä¸å¹¶æ¸ ç | | 8 | æç¤º | 2026-07 æå¯¼åºä»¶ç ` è´§è¿` 页为 118x145ï¼æ¯ 8 æå° 2 åï¼ï¼å 7 ææ¯çæ¯ã1-4 æéª¨æ¶ã | åç¬è®®é¢ï¼å¾ 7 ææ¯çå®ç¨¿ | ## å «ãç»è®º 1. ç¨æ·é®é¢ãç´¯è®¡åªæåé¢å个对å¾ä¸ã**å·²å®ä½å¹¶è§£å³**ï¼æ ¹å ä¸å¨ç´¯è®¡å ¬å¼æ¬èº«ï¼è卿¯çãå ¨çè§ä¸ãè¡æ¯ä¸ 17 å¸å·ä¸ç¬¦ç忻叏éï¼å å 2021 ç´¯è®¡åæ¼å¡«ã2022 累计å忻叏éã 2. ä¿®å¤å 6 个累计åï¼S/AT/BV/CW/DZ/EOï¼å¨ 4 ä½å°æ°å£å¾ä¸ä¸æºæä»¶äººå·¥æ ¸ç®**å ¨é¨ä¸è´**ã 3. `h2032_enterprise_monthly` 2026-09 èæå·²æ¸ é¤ï¼å¤ä»½å¯è¿åã 4. 2026-07 导åºåå½éè¿ï¼é¢è§æ¥å£æ£å¸¸ã 5. éçï¼2026-09 å¨ `h204_vehicle_quarterly` / `investment_monthly` / `audit_result` / `audit_run` ä¸ä»ææ°æ®ï¼å¾ ç¨æ·ç¡®è®¤æ¯å¦æ¸ çã docs/¹¦ÄܲâÊÔ±¨¸æ/»ã×Ü´ó±íÓ붨¸å±È¶Ô_2026-09-16.md
New file @@ -0,0 +1,251 @@ # æ±æ»å¤§è¡¨é表æ¯å¯¹æ¥å_2026-09-16 ## é¶ãç»è®ºæè¦ï¼å çè¿éï¼ | # | ç»è®º | 说æ | |---|---|---| | 1 | **导åºç«¯åçæ¯å ¬å¼ï¼å®ç¨¿æ¯ç®å¥½çæ°å¼** | å¯¼åºæä»¶é 39,939 个åå æ ¼æ¯å ¬å¼ï¼å¦ `=C7+C9`ã`=C5/V5-1`ï¼ï¼ç¨ Excel æå¼ä¼èªå¨ç®åºæ¥ãæä»¥ã导åºç«¯å¤§ç空ç½ãæ¯å象ï¼ä¸æ¯ç¼ºæ°æ®ã | | 2 | **å ¬å¼ææ¬å°æ±å¼åï¼28,567 个ãå°åº+ææ +åãè¯ä¹é®ä¸å®ç¨¿ä¸è´** | åªæ 4,742 个é®ä¸ä¸è´ï¼å ¶ä¸å¤§é¨åéä¸å¨ä¸é¢ç¬¬ 3ã4 æ¡ã | | 3 | **` è´§è¿` 表ï¼å¯¼åºæ¯å®ç¨¿æ¯å¸å·å¤ä¸¤è¡ææ ** | å¯¼åº 6 è¡ï¼è§ä¸+è§ä¸è´§è¿é/è§ä¸è´§è¿é/è§ä¸è´§è¿é/è§ä¸+è§ä¸å¨è½¬é/è§ä¸è´§ç©å¨è½¬é/è§ä¸è´§ç©å¨è½¬éï¼ï¼å®ç¨¿ 4 è¡ï¼æ ãè§ä¸+è§ä¸è´§è¿éããè§ä¸è´§è¿éãï¼ã**åææ æ°å¼æ¬èº«ä¸è´ï¼0 夿°å¼å·®å¼ï¼**ã | | 4 | **2025 å¹´ãåå¸å®¢è¿ç±»ãæ°æ®æ²¡å ¥åºï¼æ¯æå¤§å·®å¼æ¥æº** | `city_bus_monthly / city_taxi_monthly / wyc_order_monthly / wyc_total_monthly` é½åªæ **2026-01~08**ï¼æ²¡æ 2025 å¹´ã导è´è¿äºè¡¨ãä¸å»å¹´åæ¯ãåç®æ `0` æ `-1`ã2025 年累计åå°ã | | 5 | **H203-1ï¼å ¬è·¯æ 客ï¼ç¼º 2025-01** | åºéæ¯ 2025-02~2025-12ï¼ç¨æ·å¯¼å ¥ç `.xls` æ¬èº«æ²¡æ 1 æã | | 6 | **导åºç«¯ãä¸å£å¾åæãå¤ä¸æ®µå½æå** | 导åºå¤åºã8æä¸å£å¾å®¢è¿éåå¨è½¬éãï¼ç¬¬ 10~16 è¡ï¼ï¼å®ç¨¿åªæ 1-8 æç´¯è®¡åï¼ä¸å¯¼åºç¼º 4 è¡ãå æ¯ãã | > ä¸å¥è¯ï¼**è¡¨æ ¼è½å¯¹ä¸ï¼çæ£è¦è¡¥çæ¯ 2025 å¹´åå¸å®¢è¿ï¼å ¬äº¤/åºç§/ç½çº¦è½¦ï¼æ°æ®**ï¼è¡¥ä¸ä»¥å忝忿å¼ã --- ## ä¸ãæ¯å¯¹å¯¹è±¡ä¸æ¹æ³ - 导åºç«¯ 19 个 Sheetãå®ç¨¿ç«¯ 19 个 Sheetï¼é¡µç¾åç§°å®å ¨ä¸è´ï¼æ å¤é¡µç¾/å°é¡µç¾ï¼ã - 导åºç«¯ç»æï¼æ¯å¸å· 6 è¡ææ åï¼å®ç¨¿ 4 è¡ï¼ãå¯¼åº 118 è¡ vs å®ç¨¿ 84 è¡çå·®å¼ï¼å æ¤**ä¸è½æåå æ ¼åæ æ¯**ï¼æ¹ç¨è¯ä¹é®ã - æ±å¼ï¼å¯¼åºç«¯ 39,939 ä¸ªå ¬å¼æ ¼æ¬å°æ±å¼ â 61,972 个æ°å¼æ ¼ã ## äºãæ»ä½ç»æ | Sheet | ä¸è´ | ä¸ä¸è´ | æ¡æ°/ç»æä¸å | 导åºç¼ºä¸å¹´åæ | æ°å¼ä¸å | |---|---|---|---|---|---| | è´§è¿ | 5430 | 268 | 267 | 1 | 0 | | 2025å¹´åå¸å®¢è¿é | 28 | 0 | 0 | 0 | 0 | | ä¸å£å¾å®¢è¿é | 3758 | 1194 | 0 | 486 | 708 | | ä¸å£å¾æç» | 3217 | 1400 | 94 | 291 | 1015 | | ä¸å£å¾è®¡ç®è¿ç¨ | 933 | 0 | 0 | 0 | 0 | | å ¬äº¤ | 2988 | 365 | 144 | 5 | 216 | | å ¬è·¯æ»å®¢è¿ | 828 | 145 | 0 | 1 | 144 | | åºç§ | 2304 | 145 | 72 | 1 | 72 | | åå¸åå¸å· | 28 | 0 | 0 | 0 | 0 | | åå¸å®¢è¿ | 1008 | 217 | 36 | 1 | 180 | | å叿±æ» | 7 | 2 | 1 | 0 | 1 | | ç线å 车 | 3950 | 740 | 596 | 97 | 47 | | ç½çº¦è½¦ | 3504 | 144 | 0 | 0 | 144 | | è´§è¿å¨è½¬éæå | 61 | 28 | 0 | 0 | 28 | | è´§è¿éæå | 78 | 60 | 0 | 0 | 60 | | 轨éã轮渡 | 436 | 34 | 23 | 1 | 10 | | éè·¯è¿è¾å¨è½¬é | 9 | 0 | 0 | 0 | 0 | | **å计** | **28567** | **4742** | **1233** | **884** | **2625** | ## ä¸ãå·®å¼åç±»æ ·ä¾ ### è´§è¿ - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =è§ä¸+è§ä¸å¨è½¬é(ä¸å¨å ¬é) å=10æä¸å»å¹´åæ¯ - 导åº=[-0.024796658657952775, 0.03874697951695838, 0.15669270257186785] - å®ç¨¿=[-0.0247966586579526, 0.0387469795169586] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =è§ä¸+è§ä¸å¨è½¬é(ä¸å¨å ¬é) å=11æä¸å»å¹´åæ¯ - 导åº=[-0.01622232738005569, -0.019037012371566964, 0.07433934902579198] - å®ç¨¿=[-0.0162223273800557, -0.019037012371567] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =è§ä¸+è§ä¸å¨è½¬é(ä¸å¨å ¬é) å=12æä¸å»å¹´åæ¯ - 导åº=[-0.03222870597621563, 0.04520985447367809, 0.11176470288481033] - å®ç¨¿=[-0.0322287059762133, 0.0452098544736756] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =è§ä¸+è§ä¸å¨è½¬é(ä¸å¨å ¬é) å=1æä¸å»å¹´åæ¯ - 导åº=[0.18714531209236318, -0.10994255805562458, 0.4721261008370825] - å®ç¨¿=[0.187145312092363, -0.109942558055625, 0.472126100837083] ### ä¸å£å¾å®¢è¿é - ã导åºç¼ºä¸å¹´åæ(ç®æ0/-1)ãå°åº=仿¡å¸ ææ =åé åä¹¡å ¬äº¤å®¢è¿éï¼ä¸äººæ¬¡ï¼ å=10æä¸å»å¹´åæ¯ - 导åº=[-1.0] - å®ç¨¿=[-0.222741433021807] - ã导åºç¼ºä¸å¹´åæ(ç®æ0/-1)ãå°åº=仿¡å¸ ææ =åé åä¹¡å ¬äº¤å®¢è¿éï¼ä¸äººæ¬¡ï¼ å=11æä¸å»å¹´åæ¯ - 导åº=[-1.0] - å®ç¨¿=[-0.085603112840467] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =åé åä¹¡å ¬äº¤å®¢è¿éï¼ä¸äººæ¬¡ï¼ å=2025年累计 - 导åº=[53.3] - å®ç¨¿=[260.95] - ã导åºç¼ºä¸å¹´åæ(ç®æ0/-1)ãå°åº=仿¡å¸ ææ =åé åä¹¡å ¬äº¤å®¢è¿éï¼ä¸äººæ¬¡ï¼ å=3æä¸å»å¹´åæ¯ - 导åº=[-1.0] - å®ç¨¿=[-0.173913043478261] ### ä¸å£å¾æç» - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¬è·¯ç线客è¿éï¼ä¸äººæ¬¡ï¼ å=累计 - 导åº=[65.9545, 97.11030000000002] - å®ç¨¿=[76.2534, 97.1103] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =å ¬è·¯ç线æ 客å¨è½¬éï¼ä¸äººå ¬éï¼ å=None - 导åº=[2552.6529, 4069.7147000000004] - å®ç¨¿=[3033.9412] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¬è·¯ç线æ 客å¨è½¬éï¼ä¸äººå ¬éï¼ å=累计 - 导åº=[3343.7725, 4474.9138] - å®ç¨¿=[3888.4326, 4474.9138] - ã导åºç¼ºä¸å¹´åæ(ç®æ0/-1)ãå°åº=仿¡å¸ ææ =åé åä¹¡å ¬äº¤å®¢è¿éï¼ä¸äººæ¬¡ï¼ å=2025年累计 - 导åº=[0.0] - å®ç¨¿=[306.05] ### å ¬äº¤ - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=6æä¸å»å¹´åæ¯ - 导åº=[-1.0] - å®ç¨¿=[-0.451242009524218, -0.267657408571069] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=None - 导åº=[1109.2] - å®ç¨¿=[134.49, 142.61, 115.16] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=累计 - 导åº=[1680.22, 3687.98, 1710.0900000000001] - å®ç¨¿=[1913.31, 3687.98, 1710.09] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=累计ä¸å»å¹´åæ¯ - 导åº=[3.532187201528175] - å®ç¨¿=[-0.387609454550148] ### å ¬è·¯æ»å®¢è¿ - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=2025å¹´6æ - 导åº=[749.5794793494696] - å®ç¨¿=[2758.65947934947] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=忝 - 导åº=[-0.09741856370872848, -0.23580927957669318, -0.2044540674016434] - å®ç¨¿=[-0.0974185637087299, -0.235809279576693, -0.204454067401643] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=累计 - 导åº=[22177.14801567051, 36108.164028367806] - å®ç¨¿=[24186.2280156705, 36108.1640283678] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=ç´¯è®¡åæ¯ - 导åº=[-0.3340605811417364] - å®ç¨¿=[-0.273731562879588] ### åºç§ - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=None - 导åº=[336.0] - å®ç¨¿=[64.67, 65.76, 64.39] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=累计ä¸å»å¹´åæ¯ - 导åº=[7.4782758620689656] - å®ç¨¿=[0.0942145082331998] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å æ 客å¨è½¬é(ä¸äººå ¬é) å=None - 导åº=[1142.3999999999999] - å®ç¨¿=[261.27, 361.68, 347.06] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å æ 客å¨è½¬é(ä¸äººå ¬é) å=累计ä¸å»å¹´åæ¯ - 导åº=[12.03843813387424] - å®ç¨¿=[0.682753475221865] ### åå¸å®¢è¿ - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=2025å¹´1-7æç´¯è®¡ - 导åº=[8816.138448722153] - å®ç¨¿=[10139.2184487222] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=6æåæ¯ - 导åº=[6.255892181315063, -0.8966228676621759] - å®ç¨¿=[-0.00386729718753609, -0.246994577992483] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=8æåæ¯ - 导åº=[-1.0, -0.6067523598726108] - å®ç¨¿=[0.534128007747653, -0.606752359872611] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =å¨è½¬éï¼ä¸äººå ¬éï¼ å=None - 导åº=[7768.398509034526] - å®ç¨¿=[1501.17761338372, 1549.99252838425, 1646.32707505095] ### å叿±æ» - ãæ¡æ°/ç»æä¸åãå°åº=轮渡 ææ =401.49 å=忝 - 导åº=[-0.004808764841484267, -0.004818943331851048, -0.0778759013031685] - å®ç¨¿=[-0.00480876484148429, -0.00481894333185107, -0.0778759013031685] - ãæ°å¼ä¸åãå°åº=轮渡 ææ =401.49 å=累计客è¿éï¼ä¸äººæ¬¡ï¼ - 导åº=[401.49, 557.59, 604.68] - å®ç¨¿=[401.49, 557.59, -0.107293274289419] ### ç线å 车 - ã导åºç¼ºä¸å¹´åæ(ç®æ0/-1)ãå°åº=仿¡å¸ ææ =客è¿éï¼ä¸äººï¼ å=10æä¸å»å¹´åææ¯ - 导åº=[-1.0] - å®ç¨¿=[-0.0555555555555556] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =客è¿éï¼ä¸äººï¼ å=10æä¸å»å¹´åæ¯ - 导åº=[0.19738596294496547, -0.1137869352060421, 0.11167849164068455] - å®ç¨¿=[0.197385962944965, -0.113786935206042] - ãæ¡æ°/ç»æä¸åãå°åº=仿¡å¸ ææ =客è¿éï¼ä¸äººï¼ å=11æ - 导åº=[143.0, 146.0, 145.0] - å®ç¨¿=[143, 146] - ã导åºç¼ºä¸å¹´åæ(ç®æ0/-1)ãå°åº=仿¡å¸ ææ =客è¿éï¼ä¸äººï¼ å=11æä¸å»å¹´åææ¯ - 导åº=[-1.0] - å®ç¨¿=[-0.0629370629370629] ### ç½çº¦è½¦ - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=None - 导åº=[68.3882807969825] - å®ç¨¿=[100.83443064512] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼ å=累计ä¸å»å¹´åæ¯ - 导åº=[75.12915230414589] - å®ç¨¿=[4.63647104214023] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å æ 客å¨è½¬é(ä¸äººå ¬é) å=None - 导åº=[158.2985090345263] - å®ç¨¿=[235.879860920795] - ãæ°å¼ä¸åãå°åº=仿¡å¸ ææ =å ¶ä¸åå¸å æ 客å¨è½¬é(ä¸äººå ¬é) å=累计ä¸å»å¹´åæ¯ - 导åº=[134.88943592662713] - å®ç¨¿=[9.10009426490351] ### è´§è¿å¨è½¬éæå - ãæ°å¼ä¸åãå°åº=仿¡ ææ =10269.9152 å=None - 导åº=[-10259.9] - å®ç¨¿=[9.3] - ãæ°å¼ä¸åãå°åº=仿¡ ææ =10269.9152 å=åå¸å·è§ä¸è§ä¸å æ¯ - 导åº=[10269.9] - å®ç¨¿=[0.7] - ãæ°å¼ä¸åãå°åº=å ¨ç ææ =4927161.7743 å=None - 导åº=[-4927151.8] - å®ç¨¿=[7.2] - ãæ°å¼ä¸åãå°åº=å ¨ç ææ =4927161.7743 å=åå¸å·è§ä¸è§ä¸å æ¯ - 导åº=[4927161.8] - å®ç¨¿=[2.8] ### è´§è¿éæå - ãæ°å¼ä¸åãå°åº=仿¡ ææ =156.5243 å=None - 导åº=[-146.5] - å®ç¨¿=[8.5] - ãæ°å¼ä¸åãå°åº=仿¡ ææ =156.5243 å=åå¸å·è§ä¸è§ä¸å æ¯ - 导åº=[156.5] - å®ç¨¿=[1.5] - ãæ°å¼ä¸åãå°åº=仿¡ ææ =156.5243 å=忝 - 导åº=[5.842293233082707, -0.0671, 0.07055908161393112] - å®ç¨¿=[5.84229323308271, -0.0670692068904155, 0.0705590816139312] - ãæ°å¼ä¸åãå°åº=å ¨ç ææ =31399.8248 å=None - 导åº=[-31389.8] - å®ç¨¿=[7.6] ### 轨éã轮渡 - ãæ¡æ°/ç»æä¸åãå°åº=å ¨ç ææ =轨é客è¿éï¼ä¸äººæ¬¡ï¼ å=8æä¸å»å¹´åæ¯ - 导åº=[0.017262201006441602, -0.03770383321016857] - å®ç¨¿=[-0.0377038332101686] - ãæ¡æ°/ç»æä¸åãå°åº=å ¨ç ææ =轨é客è¿éï¼ä¸äººæ¬¡ï¼ å=忝 - 导åº=[0.11922334580043414, -0.1488617459638799, -0.02133363151813339] - å®ç¨¿=[0.119223345800434, -0.14886174596388, -0.0213336315181334] - ãæ°å¼ä¸åãå°åº=å ¨ç ææ =轨é客è¿éï¼ä¸äººæ¬¡ï¼ å=ç´¯è®¡åæ¯ - 导åº=[7.79099782980099, -0.016560980913004952] - å®ç¨¿=[-0.0025188167282626, -0.016560980913005] - ãæ¡æ°/ç»æä¸åãå°åº=å ¨ç ææ =è½¨éæ å®¢å¨è½¬éï¼ä¸äººå ¬éï¼ å=8æä¸å»å¹´åæ¯ - 导åº=[0.030026968528849673, -0.05840192416196366] - å®ç¨¿=[-0.0584019241619637] ## åãæ°æ®å ¥åºç°ç¶ï¼å·®å¼æ ¹å ï¼ | æ°æ®è¡¨ | å·²ææ¥è¡¨æ | |---|---| | `freight_turnover_import`ï¼è´§è¿éå¨è½¬éï¼ | 2021-12 / 2022-12 / 2023-12 / 2024-12 / 2025-12 / 2026-01~08ï¼å ± 13 æ à 18 è¡ï¼ | | `h2031_enterprise_monthly`ï¼å ¬è·¯æ å®¢ï¼ | 2025-02~2025-12ã2026-01~08ï¼**缺 2025-01**ï¼ | | `passenger_individual_monthly`ï¼ä¸ªä½æ·ï¼ | 2025-01~12ã2026-01~08 | | `city_bus_monthly`ï¼å ¬äº¤ï¼ | **åªæ 2026-01~08** | | `city_taxi_monthly`ï¼åºç§ï¼ | **åªæ 2026-01~08** | | `wyc_order_monthly`ï¼ç½çº¦è½¦è®¢åï¼ | **åªæ 2026-01~08** | | `wyc_total_monthly`ï¼ç½çº¦è½¦æ»éï¼ | **åªæ 2026-01~08** | ç»è®ºï¼**åå¸å®¢è¿ç±»ï¼å ¬äº¤/åºç§/ç½çº¦è½¦ï¼2025 å¹´æ´å¹´æ°æ®æ²¡æå¯¼å ¥**ï¼è¿æ¯æ±æ»å¤§è¡¨éè¿å å¼ è¡¨ä¸å®ç¨¿å·®å¼ç主å ã ## äºãæ¬æ¬¡åæ¶å®æçä¸¤ä»¶äº 1. **`2024-12` ä¸å¹´åæåå¡«**ï¼ç¨ 7 ææä»¶ï¼å« `2023` Sheetï¼é导ï¼`2024-12` ç `last_*` ç°å·²çäº `2023-12`ã - ä¸é踩åï¼å ç¨ openpyxl å¦åä¸´æ¶æä»¶ï¼**å ¬å¼ç¼åå¼ä¸¢å¤±**ï¼å¯¼è´ `æ¹åç`ï¼`=SUM()` è¡ï¼è¢«åæ 0ï¼æ¹ç¨åå§ 7 ææä»¶é导åä¿®å¤ã - 夿 ¸ï¼7 æ/8 æä¸¤ä¸ªæä»¶ç 11 个年度 Sheet ä¸åºéæ ¼æ¯å¯¹ï¼**432 æ ¼ à 11 = 4,752 æ ¼å ¨é¨ 0 ä¸ä¸è´**ï¼ä¸å¹´åæé¾æ¡ 2022â2021ã2023â2022ã2024â2023ã2025â2024ã2026-07/08â2025 å ¨é¨ 0 ä¸ä¸è´ã 2. **H203-1 两å**ï¼æè¦æ±ä¸é导ï¼2026-01~08 ç `ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ` / `å¡«æ¥åä½` ä¿æç©ºã ## å ãå¾ ç¨æ·ç¡®è®¤çå¤ç½® 1. æ¯å¦å¯¼å ¥ **2025 å¹´å ¬äº¤/åºç§/ç½çº¦è½¦ææ¥**ï¼1-12 æï¼ï¼å¯¼å ¥åè¿å å¼ è¡¨çåæ¯ä¸ 2025 年累计å³å¯ä¸å®ç¨¿å¯¹é½ã 2. ` è´§è¿` 表çè¡åç»æï¼å¯¼åº 6 è¡ / å®ç¨¿ 4 è¡ï¼ä»¥åªè¾¹ä¸ºåï¼ 3. 导åºç«¯ãä¸å£å¾åæãç彿忝å¦ä¿çï¼ docs/¹¦ÄܲâÊÔ±¨¸æ/»õÔËÀÛ¼ÆÁк˶ÔÓëµ¼ÈëÊý¾ÝÌå¼ì_2026-09-16.md
New file @@ -0,0 +1,82 @@ # åè½æµè¯æ¥å_è´§è¿é¡µç¾ç´¯è®¡åæ ¸å¯¹ä¸ 9/16 å¯¼å ¥æ°æ®ä½æ£_2026-09-16 ## ä¸ãåè½/ä»»å¡è¯´æ é对两个ä¸å¡é®é¢åæ ¸å¯¹ï¼ 1. 9/16 æ°å¯¼å ¥çãé路客è¿ï¼H2031/ä¸ªä½æ·ï¼ãä¸ãé路货è¿ï¼H2032/è´§è¿éå¨è½¬éï¼ãæ°æ®æ¯å¦åå¨éè¯¯ï¼ 2. æ±æ»å¤§è¡¨ã è´§è¿ã页ç¾çã累计ãåï¼ä¸ºä»ä¹åªæåå 个è½åäººå·¥æ ¸ç®å¯¹ä¸ã ## äºãæµè¯ç¯å¢ - å端ï¼Spring Boot 8090ï¼`/api/report/export/summaryWorkbook`ï¼ãMySQL 127.0.0.1:3308/traffic_audit - 导åºä»¶ï¼`_fresh_summary_2026-08.xlsx`ï¼period=2026-08&mode=monthï¼SHA 尺寸 950,186 åèï¼ - åç §ä»¶ï¼ - `D:\05_æ°æ®åç±»\é«é\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-8æï¼.xlsx`ï¼å« 2026å¹´/2025å¹´/2024å¹´/2022å¹´/2021å¹´ 页ï¼**æ 2023 页**ï¼ - `D:\05_æ°æ®åç±»\è´§è¿\7æ\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-7æï¼.xlsx`ï¼å« 2023 é¡µï¼ - `D:\05_æ°æ®åç±»\æ±æ»è¡¨\8ææ±æ»å®ç¨¿\2026å¹´8æå®¢è¿éãè´§è¿éå®ç¨¿.xlsx` - æ¯çï¼`docs/çææ±æ»å¤§è¡¨/çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx`ï¼Sheetã è´§è¿ãï¼ - æ¹æ³ï¼å æè¯ä¹é®ï¼å°åº+ææ +åæ é¢ï¼å¯¹é½ï¼åéæ ¼æ¯å¯¹ï¼å¯¼åºç«¯å ¬å¼ç¨æ¬å°æ±å¼å¨ `_hy*.py` è¿åï¼openpyxl data_only 读ä¸å°å ¬å¼ç¼åï¼ã ## ä¸ãç»è®ºä¸ï¼æ±æ»è¡¨ã è´§è¿ãé¡µç¾ 6 个ã累计ãåæ ¸å¯¹ 页ç¾ä¸å ±æ 6 个累计åï¼åå«ä¸º S(2026 å¹´ 1-8 æ)ãAT(2025 å¹´)ãBV(2024 å¹´)ãCW(2023 å¹´)ãDZ(2022 å¹´)ãEO(2021 å¹´)ã ä»¥å ¨çè¡ãè´§è¿éã为ä¾ï¼åä½ï¼ä¸å¨ï¼ï¼ | 年度 | å | æ±æ»è¡¨æ¾ç¤º | æºæä»¶æ ¸ç®å¼ | å·®å¼ | ç»è®º | |---|---|---|---|---|---| | 2026(1-8æ) | S | 130311.8927 | 130311.8927 | 0.0000 | ä¸è´ | | 2025 | AT | 195433.2232 | 195433.2232 | 0.0000 | ä¸è´ | | 2024 | BV | 184938.5780 | 184938.5780 | 0.0000 | ä¸è´ | | 2023 | CW | 173045.2932 | 173045.2964 | **-0.0033** | ä¸ä¸è´ | | 2022 | DZ | 144979.2854 | 144979.2825 | **+0.0029** | ä¸ä¸è´ | | 2021 | EO | **空** | 161309.5316 | **-161309.5316** | **æ´å缺失** | ãè´§ç©å¨è½¬éãè¡ç»è®ºç¸åï¼2026/2025/2024 ä¸è´ï¼2023 å·® -0.0017ã2022 å·® +0.0025ã2021 æ´å为空ã å¸å·è¡ï¼17 å¸å·ï¼2026/2025/2024/2023/2022 ä¸åºå æ°æ®éæ ¼ä¸è´ï¼å·®å¼åªåºç°å¨ãå ¨çãè¡ä¸ 2021 åã ### åå ï¼å·²å®ä½å°æ¯çï¼ 1. **2021 å¹´åï¼EOï¼å¨æ¯çéæ ¹æ¬æ²¡æå¼**ï¼`çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx` ç ` è´§è¿` 页 `EO5` = 空ã`EP5`ï¼ç´¯è®¡åæ¯ï¼= 空ï¼è `EC5:EN5`ï¼2021 å¹´ 1-12 æï¼é½æå¼ï¼å计 161309.5316ãå³**æ¯çæ¼å¡«äº 2021 å¹´çç´¯è®¡å ¬å¼**ã8 æå®ç¨¿åæ ·ä¸ºç©ºï¼`EP` 为空ï¼ï¼è¯´ææ¯åå²éçãéæ¬æ¬¡å¯¼åºé æã 2. **2022 å¹´åï¼DZï¼å¨æ¯ç鿝忻ç常é**ï¼`DZ5 = 144979.285376043`ï¼ç±»åæ¯æ°å¼ï¼ä¸æ¯å ¬å¼ï¼ï¼`EA5`ï¼ç´¯è®¡åæ¯ï¼= -0.101235470414284 乿¯å¸¸éãå®çäºæ¯çèªèº« 2022 å¹´åæå¼ä¹åï¼ä½ä¸ç°æºæä»¶ `2022å¹´` 页æ¹åçè¡ï¼144979.2825ï¼å·® 0.0029 ââ æ¯ç 2022 å¹´åææ¯å½å¹´æå·¥å½å ¥çæ§ç²¾åº¦æ°æ®ï¼å¦ 1 æ 10709.5265 vs æºæä»¶ 10709.5234ï¼ï¼**ä¸ä¼åéæ°æ®å·æ°**ã 3. **2023 å¹´åï¼CWï¼è½æ¯å ¬å¼ï¼ä½è¾å ¥æ¥èªæ¯ç**ï¼æ¯ç 2023 å¹´å ¨çè¡æ¯ãè§ä¸+è§ä¸ã两è¡ç¸å ï¼ç²¾åº¦ä¸æºæä»¶ `2023` 页æ¹åçè¡ä¸åï¼å计差 0.0033ï¼å ¨çè¡ï¼ãå¸å·è¡ä¸è´ã 4. 2026/2025/2024 ä¸å¹´ä¹æä»¥è½å¯¹ä¸ï¼æ¯å 为æ¯çè¿ä¸åçåæå¼ä¸ç°æºæä»¶å®å ¨ä¸è´ï¼éæ ¼ 0 å·®å¼ï¼ï¼ä¸ä»£ç `SummaryWorkbookFiller.fillFreightSheet` æ¯æ¬¡å¯¼åºåªåå¡«âç®æ 彿âä¸åï¼å岿份ä¸å¾æ²¿ç¨æ¯çï¼æä»¥æ¯ç对ä¸ä¸å°±æ´ä½å¯¹ä¸ä¸ã ### ä¿®å¤å»ºè®®ï¼å¾ ç¡®è®¤åæ§è¡ï¼ - æ¯ç ` è´§è¿` 页 EO åæåæå ¬å¼è¡¥é½ï¼`EO5 = EC5+EE5+EG5+EI5+EK5+EM5+EO5`⦠å®é åºä¸º 12 个æåï¼EC/ED/â¦/ENï¼ä¹åï¼EP è¡¥ç´¯è®¡åæ¯ã - DZ åæ¹ä¸ºå ¬å¼ï¼DM+DN+â¦+DX ä¹åï¼ï¼ä½¿å ¶éæ°æ®å·æ°ï¼é¿å ç»§ç»æ²¿ç¨ 2 使°åçæ§å¼ã - 2023/2022 ç 0.003 级差å¼å±æ¯çåå²å½å ¥ç²¾åº¦é®é¢ï¼å¦é䏿ºæä»¶å®å ¨å¯¹é½ï¼éææºæä»¶éå¡«è¿ä¸¤ä¸ªå¹´åº¦åã ## åãç»è®ºäºï¼9/16 æ°å¯¼å ¥æ°æ®ä½æ£ ### 4.1 æ¬æ¬¡å¯¼å ¥æ¸ åï¼import_batchï¼ | ç±»å | ææ¬¡ | è¡æ° | æ¥æºæä»¶ | |---|---|---|---| | FREIGHT_TURNOVER | 2021-12 / 2022-12 / 2023-12 / 2024-12 / 2025-12 / 2026-07 / 2026-08 | å 18 | å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-8æ / 1-7æï¼.xlsx | | H2031ï¼å ¬è·¯æ å®¢ï¼ | 2025-02 ~ 2025-12ï¼11 æï¼ | 814/809/798/795/791/806/800/796/796/798/792 | å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµï¼2025ï¼*.xls | | PASSENGER_AUTH | 2025-02 ~ 2025-12 | **0** | åä¸ | | PASSENGER_INDIVIDUAL | 2025-01 ~ 2025-12 | å 7 | æ¹åçå ¬è·¯æ 客è¿è¾ä¸ªä½æ·æåº¦ç产æ åµï¼2025.*ï¼.xlsx | | H2032ï¼é路货è¿ï¼ | 2025-04 | 664 | é路货ç©è¿è¾æåº¦ç产æ åµï¼2025å¹´4æï¼.xls | ### 4.2 åç°çé®é¢ | # | 严é度 | é®é¢ | è¯æ® | å½±å | |---|---|---|---|---| | 1 | é« | `h2032_enterprise_monthly` å¤åºä¸ä¸ª **2026-09 æ**ï¼å ¶æºæä»¶åå´æ¯ãé路货ç©è¿è¾æåº¦ç产æ åµï¼2026å¹´8æï¼.xlsãï¼2026-09-10 å¯¼å ¥ï¼batch id 302ï¼ | ä¸ 2026-08 æéä¼ä¸æ¯å¯¹ï¼å为 636 æ¡ã90 个åºåã**ä¼ä¸éåå®å ¨ç¸å**ï¼ä» 38 å®¶ä¼ä¸æ°å¼ä¸åï¼å ¨çå计 08=3665.3638 / 09=3690.5636 | 8 ææ¥è¡¨ä¸åå½±åï¼ç´¯è®¡åªå 1-8 æï¼ï¼ä½çæ 9 ææ¥è¡¨æ¶ä¼æè¿ä»½ã8 æå¯æ¬ã彿 9 ææ°æ® | | 2 | é« | `h2031_enterprise_monthly` **缺 2025-01** | 2025 å¹´åªæ 2025-02~2025-12 å ± 11 æï¼`import_batch` æ 2025-01 ç H2031 è®°å½ | å ¬è·¯æ 客 2025 å¹´ç´¯è®¡å° 1 个æï¼ãä¸å»å¹´åæ¯ãæ´ä½åç§» | | 3 | ä¸ | `passenger_individual_monthly` 2026-08 **缺é»åå¸**ï¼åªæ 6 æ¡ï¼å ¶ä½æä»½ 7 æ¡ï¼ | 2026-07 æ é»å/é»ç³/èé¨/éå·/è¥é³/åæÃ2ï¼2026-08 æ é»å | 2026-08 ç线å 车/å ¬è·¯æ»å®¢è¿çãå ¶ä¸ä¸ªä½ãå°é»åä¸å®¶ | | 4 | ä½ | PASSENGER_AUTH æ¯æ 0 è¡ | 11 ä¸ªæ¹æ¬¡ success_rows å为 0 | ææ å½±åï¼è¯¥å°è´¦æ¬ææ æææ°æ®ï¼ï¼ä½é确认æ¯å¦åºææ°æ® | | 5 | æç¤º | 2025-04 ç H2032 æ¤åç¼ºå¤±ï¼æ¬æ¬¡å·²è¡¥é½ | batch id 382ï¼664 è¡å ¨æå | å·²ä¿®å¤ | | 6 | æç¤º | h2032 åºåéåå¹´åº¦é´æåå¨ | 2025-12 æ 87 个åºåã2026-08 æ 90 个ï¼2026 æ°å¢ 420822/420921/420922/420982ï¼2025 ç¬æ 420161 | å±ä¼ä¸è¿éè§çæ£å¸¸åå¨ï¼ä» æç¤º | ### 4.3 å ¥åºæ½æ¥ï¼ä¸æºæä»¶é项对é½ï¼ - H2032 2025 å ¨å¹´è§ä¸è´§è¿é = 50117.0940 ä¸å¨ãè§ä¸å¨è½¬é = 7435040.9971 ä¸å¨å ¬é â 䏿±æ»è¡¨ 2025 累计å **å®å ¨ä¸è´**ã - H2032 2026 å¹´ 1-8 æè§ä¸è´§è¿é = 31399.8248 ä¸å¨ï¼éå¸å·ï¼æ¦æ± 10072.9811ãé»ç³ 1141.0468ãåå ° 97.1046ã宿 5925.3101ãè¥é³ 2528.7835ãéå· 861.4684ãèé¨ 632.9213ãåæ 1384.5256ãèå· 1278.1560ãé»å 5397.3567ãå¸å® 730.5726ãéå· 453.8854ãæ©æ½å· 46.4794ã仿¡ 156.5243ãæ½æ± 304.9884ãå¤©é¨ 347.0714ãæåº 40.6492ï¼â ä¸å¯¼åºä»¶ãè´§è¿éæåã累计表 **17/17 å ¨é¨ä¸è´**ã - FREIGHT_TURNOVER 2021~2026 åæåè®¡ä¸æºæä»¶å年度页æ±åä¸è´ï¼é¤ä¸è¡¨ 2021/2022/2023 ä¸å¤å·®å¼ï¼ã - 2026-09 ææ°æ®æ¥èªã2026å¹´8æãæä»¶ï¼å¤å®ä¸º**ææ¬¡é误**ï¼å»ºè®®æ ¸å®åå é¤ææ¹æã ## äºãéçé®é¢ 1. æ¯ç 2021 累计åï¼EO/EPï¼ç¼ºå¤±ã2022 累计å为常éï¼æ¯å¦ææä¿®æ¹éä¸å¡ç¡®è®¤ã 2. H2031 2025-01 è¡¥é½æéæºæä»¶å¾ ç¨æ·æä¾ã 3. h2032 ç 2026-09 èæå¤ç½®æ¹å¼å¾ 确认ï¼å é¤ or ä¿çæ¹åï¼ã ## å ãç»è®º - ãç´¯è®¡åªæåå 个对å¾ä¸ãçç´æ¥åå æ¯**æ¯çé 2021 累计å为空ã2022 累计åä¸ºåæ»å¸¸éï¼2023 累计åè¾å ¥ç²¾åº¦ä¸æºæä»¶ä¸ç¬¦**ï¼2026/2025/2024 ä¸å¹´ä¸æºæä»¶å®å ¨ä¸è´ã - æ¬æ¬¡å¯¼å ¥çãé路货è¿ãåå¨ 1 å¤ææ¬¡é误ï¼2026-09 å®ä¸º 8 ææ°æ®å¯æ¬ï¼ï¼ãé路客è¿ãåå¨ 2025-01 缺æã2026-08 ä¸ªä½æ·ç¼ºé»å两å¤ç¼ºå£ã docs/³ÇÊпÍÔË/ÍøÔ¼³µ²ð·Ö.xlsxBinary files differ
docs/³ÇÊпÍÔË/ÍøÔ¼³µ²ð·Ö_2026Äê7ÔÂ.xlsxBinary files differ
docs/ÉóºË½çÃæÔ±¨Ä£°å/Ä£°å_¹«Â·ÂÿÍÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026£©.xlsxBinary files differ
docs/ÉóºË½çÃæÔ±¨Ä£°å/Ä£°å_³ÇÊй«¹²½»Í¨Ô¶ÈÔËÓªÇé¿ö£¨2026£©(1).xlsxBinary files differ
docs/ÉóºË½çÃæÔ±¨Ä£°å/Ä£°å_ÉóºË½á¹û.xlsxBinary files differ
docs/ÉóºË½çÃæÔ±¨Ä£°å/Ä£°å_ÉóºË½á¹û_.xlsxBinary files differ
docs/ÉóºË½çÃæÔ±¨Ä£°å/Ä£°å_ѲÓγö×âÆû³µÔËÓª·þÎñÇé¿öÔ±¨£¨2026£©(1).xlsxBinary files differ
docs/ÉóºË½çÃæÔ±¨Ä£°å/Ä£°å_µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026£©(1).xlsxBinary files differ
docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-05.md
New file @@ -0,0 +1,21 @@ # 工使¥ç»_2026-09-05ï¼å¨å å çï¼ ## 仿¥å·¥ä½ï¼åä¸ºæ°æ®åæä¸äº¤ä»ï¼æ ä»£ç æ¹å¨ï¼ 1. 8 æè´§è¿ä¼ä¸å¹³åè¿è·å¼å¸¸çéï¼å¤è½®å£å¾ï¼äº¤ä»æ¡é¢ï¼ï¼ - ä¸¥æ ¼å£å¾ï¼åæ¯>50% ä¸ ç¯æ¯>50% ä¸åæ¯/ç¯æ¯å¢éå>50kmï¼å½ä¸ 3 å®¶ï¼è°·åå©éãç¥åæ¶åå©ãæ¹ååæ¶ï¼ï¼ - å¤éå£å¾Aï¼åæ¯>50% ä¸ åæ¯å¢é¿é>50kmï¼70 å®¶ãå£å¾Bï¼åæ¯æç¯æ¯åèªå¢é>50kmï¼74 å®¶ï¼ä» ç¯æ¯æ°å¢ 4 å®¶ï¼ï¼åºå¯¹æ¯æä»¶ï¼ - âè´§ç©å¨è½¬é忝>è´§è¿é忝 ä¸ å¹³åè¿è·åæ¯>15% ä¸ å¢é¿é>50kmâï¼ä¸å«è½¨è¿¹å·®å¼çï¼106 å®¶ï¼å·²ä¸ 38 å®¶çï¼å«å·®å¼ç>30%ï¼æ ¸éªï¼å 38 å®¶å ¨é¨å å«ã 2. ä¸äººå·¥/åäºè¡¨ï¼ã8æé路货ç©ä¼ä¸è¿è·é®é¢æ±æ»æç»2ãï¼105 å®¶ï¼éå®¶æ ¸å¯¹ï¼ - å¯ä¸å·®å¼ï¼æ¹åé¿å³¡å¯ç¨ç»¿çµä¾åºé¾æéå ¬å¸ï¼106 å®¶çæãæç»2 æ ï¼ã - æ ¹å ï¼è¯¥ä¼ä¸ 2025-10 ç±âæ¹åä¸å³¡å¯ç¨ç»¿çµâæ¹åï¼ç³»ç»æç»ä¸ä¿¡ç¨ä»£ç è¯å«ä¸ºåæå¯æ¯ï¼2025-08 è¿è· 183.7â2026-08 238.0kmï¼å¢é 54.3km 贴线ï¼è½¨è¿¹æµç®å·®å¼ç 13%<30%ï¼ï¼åäºè¡¨æåç§°å¹é æªæ¥ä¸ã537 家坿¯æ ·æ¬ä¸æ¹åä¼ä¸ä» æ¤ 1 å®¶ã 3. çæãæ¬å¨å·¥ä½æ±æ¥æ¸ å_2026-08-31è³09-05.xlsxãï¼æ¡é¢ï¼ï¼ä¾å¨ä¸é¢å¯¼æ±æ¥ï¼å¾ åä¸éçå¦é¡µã ## æµè¯ç»ææè¦ - æ ä»£ç æ¹å¨ï¼çéç»æä¸æ°æ®åºéæ¡æ ¸å¯¹ï¼SQL ä¸èæ¬åå£å¾ä¸è´ï¼å¯æ¯ 537 å®¶ãå½ä¸æ°æ ¸éªéè¿ï¼ã ## éçé®é¢ä¸å¾ å - è¿è·å¼å¸¸ååå£å¾å¾ ç¨æ·å®ç¨¿ï¼70/74/106 å®¶ä¸é䏿å¦å®ï¼ï¼å®ç¨¿ååºæ£å¼é¢å¯¼çå¹¶ç»ç»ä¼ä¸æ ¸å®åé¦ã - âé¿å³¡/ä¸å³¡å¯ç¨âä¸å®¶æ¯å¦çº³å ¥ååå¾ ä¸å¡çå¤ã ## æå¤©è®¡å - å¨ä¸ï¼æç¨æ·å®ç¨¿å£å¾æ´çè¿è·å忣å¼çï¼ç»§ç» P1 å¾ åï¼æ¯çéª¨æ¶æäº¤ãåäºç模æ¿å ¼å®¹ãæèµ 8 æåºåéè·å®¡æ ¸ï¼ã docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-16.md
@@ -77,4 +77,306 @@ 1. ä¸ç¨æ·ç¡®è®¤ `2021-12` / `2022-12` çãæ´å¹´æ¥è¡¨æãçä¸å¡å£å¾ï¼ä»¥åæ¯å¦éè¦æå¹´åº¦æ°æ®ææéææ¥è¡¨æã 2. 确认æ¯å¦éè¦è¡¥ 2023 å¹´æ°æ®ã以å `2026-01`~`2026-07` çä¸å¹´åææ¯å¦éè¦è¡¥é½ã 3. è§ç¨æ·æè§å¤çé¢è§å¼¹çªãå ± 0 è¡ãææ¡ã 4. ç½ç»æ¢å¤åè¡¥æ¨å ¬å¸ giteaã 4. ç½ç»æ¢å¤åè¡¥æ¨å ¬å¸ giteaã --- ## åãåæè¿½å ï¼ç¬¬ 3 è½®ç¨æ·åé¦ 6 æ¡ï¼2026-09-16ï¼ ç¨æ·æ¬è½®æåº 6 æ¡åé¦ï¼éæ¡å¤çç»æå¦ä¸ï¼ | # | ç¨æ·åé¦ | å¤çç»æ | |---|----------|----------| | 1 | 21â26 å¹´è´§è¿éå¨è½¬éè¡¨æ°æ®å ¥åº | ä¸è½®å·²å®æï¼`0cfd6e0`ï¼ï¼æ¬è½®è¡¥é½ 2023 å¹´ï¼è§ #2ï¼ | | 2 | ç¨æ·æ ¸å®ã23 å¹´æ 12 æçæ°æ®ã | **å±å®**ã8 ææºæä»¶ç¡®å®æ²¡æ 2023 å¹´ Sheetï¼ä½ 7 ææä»¶ `D:\05_æ°æ®åç±»\è´§è¿\7æ\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-7æï¼.xlsx` éæä¸ä¸ªå为 `2023` ç Sheetãå·²å¦å `_2023_import_tmp.xlsx`ï¼`2023` + `2022å¹´` 两个 Sheetï¼å¯¼å ¥ï¼çæ `2023-12`ï¼18 è¡ï¼ï¼**432 é¡¹éæ ¼æ¯å¯¹é¶å·®å¼** | | 3 | è¦ä¸ä»½ãææè¦æ³¨æçç¹ãçæ±æ»ææ¡£ | æ°å»º `docs/é®é¢æ±æ»/é®é¢ä¸æ³¨æäºé¡¹æ±æ»_2026-09-16.md`ï¼11 ç« + éæ¥è¡¨ï¼å«å¯å¨/è¿ç¨ãæ¥å¿éªè¯ãæ°æ®åºãå¯¼å ¥è·¯å¾ä¸ææ¬¡çº¦å®ãæ¥è¡¨ãéªè¯ç ãæä»¶ç¼ç ãæµè§å¨åè¯ãgit åä»åºãéçé®é¢ï¼ | | 4 | æ¢ WiFi åç»å½é¡µåºç°éªè¯ç ç½æ¡ + ãéªè¯ç å 载失败ã | 已修å¤ï¼å端é»è®¤å¼ + fail-safeï¼ï¼æ¬è½®æµè§å¨å¤æµéè¿ | | 5 | é¢è§ç¹ä¸ä¸å¼¹ã导åºå¤±è´¥ï¼è¯·ç¡®è®¤å¯¼å ¥æ°æ®ã | å·²ä¿®å¤æç¤ºé»è¾ï¼åºåç½ç»/å端åå ï¼ï¼å¦å¤ä¸¤å°é¡¹ï¼ææ éä½ãå¼¹çªæå¨åè§ï¼æ¬è½®æµè§å¨å®æµéè¿ | | 6 | å ¬è·¯æ 客 H203-1 模æ¿è¢«ä¿®æ¹ | å·²éé å¹¶éªè¯ï¼æ°å¢ `ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ` / `å¡«æ¥åä½` 两åå ¥åºï¼æ°èæ ¼å¼ååå ¼å®¹ | ### 1. 2023 å¹´è´§è¿æ°æ®è¡¥å½ï¼ç¨æ·ç¬¬ 2 æ¡ï¼ - **ææ¥è¿ç¨**ï¼å 确认 8 ææºæä»¶ 5 个 Sheet å ¨ä¸ºå¯è§ãæ 2023ï¼åå ¨çæç´¢ `*è¿è¾é*`ã`*23å¹´*`ã`*è´§è¿é*` æä»¶åï¼æåæ«æ `D:\05_æ°æ®åç±»` ä¸ `D:\æ¡é¢` 䏿æ `.xlsx` ç **Sheet å**ï¼å½ä¸ 7 ææä»¶ç `2023` Sheetã - **ä¸è´æ§é¢æ£**ï¼7 æä¸ 8 ææä»¶ç `2021å¹´ / 2022å¹´ / 2024å¹´` ä¸å¹´æ°æ®éæ ¼æ¯å¯¹ï¼`onlyJuly / onlyAug / differ` å ¨ä¸ºç©º â ä¸å¹´**é¶å·®å¼**ï¼å¯å®å ¨ç¨ 7 ææä»¶è¡¥ 2022ï¼ä½ä¸º 2023 çä¸å¹´åææ¥æºï¼ã - **å¯¼å ¥**ï¼`POST /api/import/freightTurnover?period=2023-12`ï¼è¿åãå ± 36 æ¡è®°å½ãã - **éªè¯**ï¼`2023-12` 18 è¡ï¼è´§è¿é + å¨è½¬éå ± 432 é¡¹ä¸ Excel éæ ¼æ¯å¯¹ **mismatches=0**ï¼`last_*` ä¸ `2022-12` éå¼ç¸åï¼å ¨é¨æ¥è¡¨æ 2021-12 â 2026-08 å ± 13 æãæ¯æ 18 è¡ã - 详è§ãåè½æµè¯æ¥å_è´§è¿éå¨è½¬é2023å¹´æ°æ®è¡¥å½_2026-09-16.mdãã ### 2. H203-1 æ¨¡æ¿æ°å¢åéé ï¼ç¨æ·ç¬¬ 6 æ¡ï¼ - **æ¨¡æ¿ diff ç»è®º**ï¼Sheet1 ç± 773Ã50 â 816Ã52ï¼å¨ãä¼ä¸åç§°ãåæå ¥ `ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç `ã`å¡«æ¥åä½` 两åï¼å ¶ä½ 48 åæ´ä½å³ç§»ã - **æ¹å¨ 6 å¤**ï¼åº DDLã`docs/init.sql`ã`docs/database.md`ã`PassengerEnterpriseMonthly.java`ã`DataImportService.java`ã`DataViewController.java`ï¼æ°æ®æ¥ç页åï¼ã - **éªè¯**ï¼æ°æ¨¡æ¿å¯¼å ¥ 814 æ¡ 0 失败ï¼åé¡¹æ±æ»ï¼å®¢è¿è½¦è¾ 24584 / æ ¸å®è½½å®¢ä½ 711018 / 客è¿é 16371625 / å¨è½¬é 1023386179ï¼ä¸æºæä»¶å ¨çï¼èæ ¼å¼ `.xls` å¯¼å ¥ 767 æ¡ 0 å¤±è´¥ä¸æ°åæå¼ï¼**èæä»¶å ¶å®ä¹å¸¦è¿ä¸¤å**ï¼ï¼æ°å¼ä¸æ¢æ 2026-08 å®å ¨ä¸è´ï¼è´åç¨ä¾ï¼ééç±»åï¼æ¥éæ¸ æ°ã - **è¿ç¨ä¸ç失误**ï¼`docs/database.md` é `| enterprise_name | varchar(200) | ä¼ä¸åç§° |` åºç° 4 次ï¼é¦æ¬¡æ¹éæ¿æ¢è¯¯æ¹ 3 å¼ è¡¨ï¼å·² `git checkout` åéåæ¹ä¸ºãæªåç« èåæ¿æ¢ãã - 详è§ãåè½æµè¯æ¥å_H2031æ¨¡æ¿æ°å¢åéé _2026-09-16.mdãã ### 3. ç»å½éªè¯ç 容é + æ¥è¡¨é¢è§æ´æ¹ï¼ç¨æ·ç¬¬ 4ã5 æ¡ï¼ - **éªè¯ç **ï¼`Login.vue` é»è®¤ `captchaRequired=false`ï¼æ¹ä¸º fail-safeï¼ä» å端æç¡®è¿å `required===true` ææ¾ç¤ºï¼ï¼æ¢ WiFi/å端ä¸å¯è¾¾æ¶ä¸åæ®çéªè¯ç ç½æ¡ã - **失败æç¤º**ï¼`failWith(err, action)` + `errReason(raw)` éåï¼åºåãè¿ä¸ä¸æå¡å¨ãä¸ãå端çå®åå ãï¼é¢è§è°ç¨å¸¦ `action='é¢è§'`ï¼Blob é误å `text()` åè§£æã - **ææ éä½**ï¼é¢è§è¡¨å¤´ç± 3 å补为 4 åï¼åç±»/ææ /æ°æ®/忝ï¼ï¼å®æµ x åæ 35 / 118 / 394 / 587ï¼`16888.76` è½å¨ãæ°æ®ãåã - **å¼¹çªæå¨ + åè§**ï¼æ°å¢ `dialogDrag.js` æä»¤ï¼Element UI 2.15.14 æ `draggable`ï¼ï¼`border-radius:10px`ï¼å®æµæå¨ `(0,40) â (120,200)`ï¼`transform=matrix(1,0,0,1,120,160)`ï¼å ³éåå¤ä½ `none`ã - ãä¸å£å¾ä¹åä¸å渲æè¡¨æ ¼ãä¸è½®å·²ä¿®ï¼æ¬è½®å¤æ ¸å¼¹çªå **æä¸ä» æä¸å¼ 表**ã - 详è§ãåè½æµè¯æ¥å_ç»å½éªè¯ç 容é䏿¥è¡¨é¢è§æ´æ¹_2026-09-16.mdãã ### 4. 注æäºé¡¹æ±æ»ææ¡£ï¼ç¨æ·ç¬¬ 3 æ¡ï¼ æ°å»º `docs/é®é¢æ±æ»/é®é¢ä¸æ³¨æäºé¡¹æ±æ»_2026-09-16.md`ï¼å ± 11 ç« ï¼ éæ¥è¡¨ï¼10 æ¡ï¼ãå¯å¨ä¸è¿ç¨ç®¡çãæå¡ç¶æéªè¯ãæ°æ®åºãæ°æ®å¯¼å ¥ï¼è·¯å¾ + ææ¬¡çº¦å® + å¤å¹´åº¦å·¥ä½ç°¿è¯å«è§åï¼ãæ¥è¡¨çæãç»å½ä¸éªè¯ç ãæä»¶åå ¥ä¸ææ¬å¤ççåãæµè§å¨èªå¨ååè¯çåãGit åä»åºå·¥ä½æµãå½åå·²ç¥éçé®é¢ã ## åä¸ãæµè¯ç»ææè¦ï¼åæè¿½å é¨åï¼ - **2023 è¡¥å½**ï¼5 æ¡ç¨ä¾ï¼ï¼æ£åå ¥åºã432 é¡¹éæ ¼æ¯å¯¹é¶å·®å¼ãä¸å¹´åæåèª 2022ãæ¥è¡¨ææ¸ åæ éå¤/æ æ®çã2022-12 éååéå¼ä¸å ââ å ¨é¨éè¿ã - **H203-1 æ°å¢å**ï¼9 æ¡ç¨ä¾ï¼ï¼æ°æ¨¡æ¿ 814 æ¡ 0 失败ã两å 814/814 æå¼ãé¦è¡ä¸æ±æ»å项䏿ºæä»¶å ¨çãèæ ¼å¼ 767 æ¡ 0 å¤±è´¥ä¸æ°å¼ä¸ 2026-08 å ¨çãExcel COM æ½æ¥é¦è¡ä¸è´ãè´åééç±»åæ¥éæ¸ æ°ãåå³ç§»ä¸å½±åæ§å段 ââ å ¨é¨éè¿ã - **ç»å½éªè¯ç + é¢è§æ´æ¹**ï¼10 æ¡ç¨ä¾ï¼ï¼æ éªè¯ç ç½æ¡ãæ¥å£ `required=false`ã表头 4 åä¸ x åæ å¯¹é½ãåè§ 10pxãæå¨ä½ç§» 120/160ãå ³éå¤ä½ãå¼¹çªå ä» 1 å¼ è¡¨ã失败æç¤ºå·²ç»åãå¯¼åºæå ââ å ¨é¨éè¿ã - **æµè¯æ°æ®æ¸ ç**ï¼H203-1 å¯¼å ¥éªè¯äº§çç `2099-06 / 2099-07 / 2099-09` ä¸ä¸ªæµè¯æï¼å ± 2395 è¡ï¼åå ¶ `import_batch` è®°å½å·²å é¤ï¼`h2031_enterprise_monthly` æ¢å¤ä¸º 2026-01 ~ 2026-08 å ± 8 æï¼`freight_turnover_import` 为 13 æ à 18 è¡ã ## åäºãéçé®é¢ä¸å¾ åï¼åææ´æ°ï¼ | # | é®é¢ | ç¶æ | |---|------|------| | 1 | 8 ææºæä»¶ç¼º 2023 å¹´ Sheet | **已解å³**ï¼ç¨ 7 ææä»¶è¡¥å½ `2023-12`ï¼ | | 2 | `2026-01` ~ `2026-07` ç `last_*` 为空 | å¾ ç¨æ·ç¡®è®¤æ¯å¦è¡¥ | | 3 | `2026-01` ~ `2026-08` ç H203-1 `unified_credit_code` / `report_unit` ä¸ºç©ºï¼æ¤åä»£ç æªè¯»è¿ä¸¤åï¼ | **å¾ ç¨æ·ç¡®è®¤æ¯å¦é导å岿件åå¡«** | | 4 | `2024-12` çä¸å¹´åææªåå¡«ï¼éé导 2024 å¹´æ°æ®ï¼ | å¾ ç¨æ·ç¡®è®¤ | | 5 | é¢è§å¼¹çªãå ± 0 è¡ãä¸ãæåº¦è¦çï¼1~8æåææ°æ®ãå£å¾ææ¡ä¸å | å¾ ç¨æ·ç¡®è®¤æ¹ææ¡ | | 6 | `2021-12` çãæ´å¹´æ¥è¡¨æãçä¸å¡å£å¾ | å¾ ç¨æ·ç¡®è®¤ | | 7 | å ¬å¸ gitea æ¨éï¼ç½ç»æ ååºï¼ | å¾ è¡¥æ¨ï¼**ç¦å¼ºæ¨** | | 8 | ä»åºæ ¹ç®å½å¤§é `_*.*` ä¸´æ¶æä»¶ | ç»ç¨æ·åæå忏 ç | ## åä¸ãä¸ä¸æ¥è®¡åï¼åææ´æ°ï¼ 1. çç¨æ·ç¡®è®¤ 3 ä»¶äºï¼æ¯å¦é导 2026 å¹´åå² H203-1 æä»¶å填两åãæ¯å¦è¡¥ `last_*` / `2024-12` ä¸å¹´åæãé¢è§å¼¹çªææ¡æ¯å¦è°æ´ã 2. ç½ç»æ¢å¤åè¡¥æ¨å ¬å¸ giteaï¼å fetch åå¹¶ï¼ç¦å¼ºæ¨ï¼ã 3. è§ç¨æ·æè§æ¸ çä»åºæ ¹ç®å½ `_*.*` ä¸´æ¶æä»¶ã ## ååãgit å®é ç»æï¼åæè¡¥è®°ï¼ 1. `git fetch origin`ï¼ä¸ªäºº giteeï¼`master`ï¼ï¼è¿ç«¯ä¸æ¬å°ä¸è´ï¼`HEAD...origin/master = 0 0`ï¼ï¼**æ åäº/ç¨æ·æ°æäº¤**ï¼æ éåå¹¶ã 2. æäº¤ `24b4c28`ï¼`feat(h2031): éé æ¨¡æ¿æ°å¢ãç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç /å¡«æ¥åä½ã两åå¹¶å ¥åºï¼fix(import): è¡¥å½ 2023 å¹´è´§è¿éå¨è½¬éï¼fix(login/report): éªè¯ç 容éãé¢è§ææ 对é½ãå¼¹çªå¯æå¨åè§ã失败æç¤ºç»åï¼docs: æ°å¢é®é¢ä¸æ³¨æäºé¡¹æ±æ»`ï¼10 个æ¹å¨ + 4 个æ°å¢ï¼å ± 14 个æä»¶ï¼ã 3. æ¨ä¸ªäººä»åº `origin`ï¼`git push origin main:master` æåï¼`0cfd6e0..24b4c28`ï¼ã 4. æ¨å ¬å¸ `gitea`ï¼`git fetch gitea` æ¥ `Operation too slow. Less than 1000 bytes/sec transferred the last 15 seconds`ï¼`curl --max-time 20 http://61.183.254.94:3000/` è¿å `http_code=000 time=20.01`ï¼ç¡®è®¤**å ¬å¸å ç½ä¸å¯è¾¾**ï¼ç½ç»é®é¢ï¼éåæ®ï¼ï¼æ¬æ¬¡æªæ¨éæåï¼å·²å为éçé®é¢ï¼è¡¥æ¨åå `git fetch gitea` ä¸è¿ç«¯ `main` åå¹¶ï¼**ç¦å¼ºæ¨**ã ## åäºãç¨æ· 4 æ¡ç¡®è®¤çè½å®ï¼2026-09-16 æ¶å°¾ï¼ | ç¨æ·åé¦ | ç»è®ºä¸å¤ç½® | |---|---| | 1-2ãæå¯¼å ¥çè´§è¿éå¨è½¬éè¡¨éæ 23 å¹´æ°æ®ã | å·²éæ ¼å¤æ ¸ï¼8 ææºæä»¶åªæ `2026å¹´ / 2025å¹´ / 2024å¹´ / 2022å¹´ / 2021å¹´` äºä¸ª Sheetï¼å ææ ä»»ä½ 2023 æ è¯ï¼å½ä¸é¡¹åä¸ºæµ®ç¹æ°éçæ°åå·§åï¼ï¼`2023` Sheet åºç°å¨**7 æ**æä»¶éãå·²ç¨ 7 ææä»¶ç `2023` Sheet è¡¥å½ `2023-12`ï¼æ éå导ã | | 1ã让ä»ç©ºçå§ã | 2026-01~08 ç H203-1 `unified_credit_code` / `report_unit` ä¿æç©ºï¼**ä¸é导**å岿件ã | | 2ãæ¯ä¸æ¯æ 23 å¹´ä¹å¯¼è¿å»ã | æ¯ï¼å·²å¯¼å ¥ `2023-12`ï¼18 è¡ï¼ãè¥è¦åå¡« `2024-12` çä¸å¹´åæå¼ï¼éåé坼䏿¬¡ 2024 å¹´æ°æ®ï¼å¾ ç¨æ·ç¡®è®¤ï¼ã | | 3ãå¯ä»¥ã | é¢è§å¼¹çªææ¡å·²æç¡®è®¤ä¿®æ¹ï¼æ±æ»å¤§è¡¨ãææ N 项ãï¼å ¶å®æ¥è¡¨ãå ± N è¡æç»ãï¼ï¼å¹¶å·²å¨æµè§å¨å®æµã | | 4ãä»ä¹æ¶åå¼å§è¿ä¸ä¸çã | å ¬å¸ gitea **èª 2026-09-15 èµ·ä¸å¯ç¨**ï¼09-15 ä¸ºåæ®å¼¹çªæªæ¨æåï¼09-16 èµ·å为 TCP 3000 å¯è¿ä½ HTTP æ ååºã仿¥å¤æµ `Test-NetConnection` 为 Trueã`curl` 25s è¶ æ¶ `code=000`ã | ## åå ãgit å®é ç»æï¼æ¶å°¾è¡¥è®°ï¼ - `git fetch origin`ï¼ä¸ªäºº giteeï¼ï¼`HEAD...origin/master = 0 0`ï¼æ æ°æäº¤ï¼æ éåå¹¶ã - æäº¤ `e7cddc4`ï¼`fix(report): é¢è§å¼¹çªè¡æ°ææ¡ææ¥è¡¨ç±»ååºå`ï¼4 个æä»¶ï¼+25/-1ï¼ã - æ¨ä¸ªäººä»åº `origin`ï¼`git push origin main:master` æåï¼`b0c8b4f..e7cddc4`ï¼ã - æ¨å ¬å¸ `gitea`ï¼`git fetch gitea` ä»å¤±è´¥ï¼æ¥ `fatal: unable to access ... Recv failure: Connection was reset`ï¼`fetch_exit=128`ï¼ï¼æ¬æ¬¡**æªæ¨éæå**ï¼ç»§ç»å为éçé®é¢ï¼è¡¥æ¨åå `git fetch gitea` ä¸è¿ç«¯ `main` åå¹¶ï¼**ç¦å¼ºæ¨**ã ## åä¸ãç¨æ·ç¬¬ 5 æ¡ï¼æ±æ»å¤§è¡¨ä¸ 8 æå®ç¨¿é表æ¯å¯¹ **æ¯å¯¹å¯¹è±¡**ï¼`D:\æ¡é¢\çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx`ï¼ç¨æ· 14:39 导åºï¼ vs `D:\05_æ°æ®åç±»\æ±æ»è¡¨\8ææ±æ»å®ç¨¿\2026å¹´8æå®¢è¿éãè´§è¿éå®ç¨¿.xlsx`ã鿰坼åºä¸æ¬¡ï¼`GET /api/report/export/summaryWorkbook?period=2026-08&mode=month`ï¼å¾å°çæä»¶ä¸æ¡é¢é£ä»½**åèæ°å®å ¨ä¸è´ï¼950,186ï¼**ï¼æé¤âæä»¶è¿æâã **踩çåï¼éè¦ï¼**ï¼ 1. 两边**è¡åé«åº¦ä¸å**ï¼å¯¼åºæ¯å¸å· 6 è¡ãå®ç¨¿ 4 è¡ï¼å¯¼åº 118 è¡ vs å®ç¨¿ 84 è¡ï¼ï¼ç´æ¥æåå æ ¼åæ æ¯ä¼å¾åº 4.6 ä¸ä¸ªâå·®å¼âï¼å ¨æ¯éä½åªå£° â æ¹ç¨ãå°åº+ææ +åæ é¢ã**è¯ä¹é®**对é½ã 2. 导åºç«¯æ **39,939 ä¸ªå ¬å¼æ ¼**ï¼`=C7+C9`ã`=C5/V5-1`ã`RANK(...)`ï¼ï¼`openpyxl(data_only=True)` è¯»åºæ¥å ¨æ¯ None â è¯¯å¤æâæ´è¡¨æ²¡æ°æ®âãExcel COM æä¸å¼ï¼ç¨æ·å·²å¼ç Excelï¼ä¸è½ä¹±å¨ï¼ï¼æå**èªå·±åå ¬å¼æ±å¼å¨**ï¼SUM/RANK/ROUND+åå+跨表å¼ç¨ï¼ç®åº 61,972 个æ°å¼æ ¼åæ¯ã **ç»è®º**ï¼è¯ä¹é®ä¸è´ 28,567 个ï¼ä¸ä¸è´ 4,742 个ã * ` è´§è¿` 表ï¼å¯¼åºæ¯å¸å·æ¯å®ç¨¿**å¤ä¸¤è¡**ï¼ãè§ä¸+è§ä¸è´§è¿éããè§ä¸è´§è¿éãï¼ï¼åææ æ°å¼**é¶å·®å¼**ï¼å®ç¨¿è¿æãè§ä¸+è§ä¸å¨è½¬éãè¡è导åºè¯¥è¡ä¸ºç©ºã * **æå¤§å·®å¼æ¥æº**ï¼`city_bus_monthly / city_taxi_monthly / wyc_order_monthly / wyc_total_monthly` **åªæ 2026-01~08ï¼æ²¡æ 2025 å¹´** â å ¬äº¤/åºç§/ç½çº¦è½¦/ä¸å£å¾å å¼ è¡¨çãä¸å»å¹´åæ¯ãè¢«ç®æ `0`/`-1`ã2025 年累计åå°ã * `h2031_enterprise_monthly` 缺 `2025-01`ï¼æºæä»¶æ¬èº«æ²¡æ 1 æï¼ã * 导åºç«¯ãä¸å£å¾åæãå¤ä¸æ®µå½æåã缺 4 è¡âå æ¯âã 详è§ãåè½æµè¯æ¥å/æ±æ»å¤§è¡¨ä¸å®ç¨¿æ¯å¯¹_2026-09-16.mdãã ## åå «ãç¨æ·ç¬¬ 2 æ¡ï¼2024 å¹´æ°æ®é导ï¼åå¡«ä¸å¹´åæï¼ **èæ¯**ï¼`last_*`ï¼ä¸å¹´åæï¼åªä»**åä¸ä¸ªå·¥ä½ç°¿çä¸ä¸å¹´ Sheet** åï¼8 ææä»¶æ²¡æ `2023` Sheetï¼æä»¥ `2024-12` ç `last_*` ä¸ç´æ¯ NULLã **è¿ç¨**ï¼å ç¨ 7 ææä»¶ï¼å« `2023` Sheetï¼å¦ååªç 4 个年度 Sheet çä¸´æ¶æä»¶å¯¼å ¥ â `2024-12` ç `last_*` å¡«ä¸äºï¼ä½ **`2021-12` çãæ¹åçãè¡ 1 æå¼ä» 14945.34 åæäº 0**ãææ¥åç°ãæ¹åçãè¡æ¯ `=SUM()` **å ¬å¼**ï¼openpyxl å¦åä¼**丢æå ¬å¼çç¼åå¼**ï¼POI 读å°ç©ºå ¬å¼å°±å 0ã **ä¿®æ£**ï¼æ¹ç¨**åå§ 7 ææä»¶**æ´ä»½é导ï¼`POST /api/import/freightTurnover?period=2026-07`ï¼è¿åãå ± 108 æ¡è®°å½ã= 6 æ à 18 è¡ï¼ã **夿 ¸**ï¼7 æ/8 æä¸¤ä¸ªæä»¶ç 11 个年度 Sheet ä¸åºéæ ¼æ¯å¯¹ **4,752 æ ¼å ¨é¨ 0 ä¸ä¸è´**ï¼ä¸å¹´åæé¾æ¡ 2022â2021ã2023â2022ã2024â2023ã2025â2024ã2026-07/08â2025 **å ¨é¨ 0 ä¸ä¸è´**ã **æè®**ï¼ä»¥åä¸è½ç¨ openpyxl å¦å Excel ååç»å端ï¼å ¬å¼ç¼åä¼ä¸¢ï¼è¦ä¹ç¨åå§æä»¶ï¼è¦ä¹ç¨ Excel COM å¦åã ## åä¹ãç¨æ·ç¬¬ 3 è½®æé®ï¼è´§è¿é¡µç¾ã累计ã为ä»ä¹åªæåå个对å¾ä¸ + æ°å¯¼å ¥æ°æ®ä½æ£ ### 19.1 å®ä½è¿ç¨ 1. è§£å导åºä»¶ã è´§è¿ã页ç¾ï¼å ± 6 个累计å ââ `S`(2026 1-8æ)ã`AT`(2025)ã`BV`(2024)ã`CW`(2023)ã`DZ`(2022)ã`EO`(2021)ã 2. 读æ¯ç `docs/çææ±æ»å¤§è¡¨/çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx` çåå页ï¼`S5/AT5/BV5/CW5` æ¯ **Î£å ¬å¼**ï¼`DZ5` æ¯ **æ°å¼å¸¸é 144979.285376043**ï¼`EO5/EP5` **为空**ã2021 å¹´ `EC5:EN5` åäºä¸ªæé½æå¼ï¼å计 161309.5316ï¼ï¼åªæ¯ç´¯è®¡åæ¼äºã 3. ç¨æºæä»¶ï¼`D:\05_æ°æ®åç±»\é«é\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-8æï¼.xlsx`ï¼å¦æ 7 ææä»¶å« 2023 页ï¼å¤ç®å ¨çè¡ï¼ | 年度 | å | æ±æ»è¡¨ | æºæä»¶æ ¸ç® | å·®å¼ | |---|---|---|---|---| | 2026(1-8æ) | S | 130311.8927 | 130311.8927 | 0 | | 2025 | AT | 195433.2232 | 195433.2232 | 0 | | 2024 | BV | 184938.5780 | 184938.5780 | 0 | | 2023 | CW | 173045.2932 | 173045.2964 | â0.0033 | | 2022 | DZ | 144979.2854 | 144979.2825 | +0.0029 | | 2021 | EO | 空 | 161309.5316 | æ´å缺失 | å¨è½¬éè¡åçï¼2023 â0.0017ã2022 +0.0025ã2021 空ï¼ãå¸å·è¡ 2026~2022 éæ ¼ä¸è´ï¼å·®å¼åªå¨ãå ¨çãè¡å 2021 åã ### 19.2 åå * **2021 累计åï¼EOï¼å¨æ¯çéå°±æ¯ç©ºç** ââ æ¼å¡«ç´¯è®¡å ¬å¼ï¼8 æå®ç¨¿åæ ·ä¸ºç©ºï¼å±åå²éçã * **2022 累计åï¼DZï¼æ¯åæ»å¸¸é**ï¼ä¸ä¼éå¯¼å ¥æ°æ®å·æ°ï¼å ¶åæå¼ä¹æ¯å½å¹´æå·¥å½å ¥çæ§ç²¾åº¦ï¼1 æ 10709.5265 vs æºæä»¶ 10709.5234ï¼ã * **2023 累计åï¼CWï¼æ¯å ¬å¼ï¼ä½è¾å ¥æ¥èªæ¯ç**ï¼æ¯ç 2023 å ¨çè¡ = è§ä¸+è§ä¸ä¸¤è¡ç¸å ï¼ä¸æºæä»¶ `2023` 页æ¹åçè¡ç²¾åº¦ä¸åï¼å·® 0.0033ã * ä»£ç æ¯æ¬¡å¯¼åºåªåå¡«ãç®æ 彿ãä¸åï¼`SummaryWorkbookFiller.fillFreightSheet`ï¼ï¼åå²æä»½å ¨é¨æ²¿ç¨æ¯ç â æ¯ç对ä¸ä¸å°±æ´ä½å¯¹ä¸ä¸ã ### 19.3 æ°å¯¼å ¥æ°æ®ä½æ£ï¼é®é¢æ¸ åï¼ | # | 严é度 | é®é¢ | |---|---|---| | 1 | é« | `h2032_enterprise_monthly` å¤åºä¸ä¸ª **2026-09 æ**ï¼æºæä»¶åæ¯ãé路货ç©è¿è¾æåº¦ç产æ åµï¼2026å¹´8æï¼.xlsãï¼batch 302ï¼ãä¸ 2026-08 æéä¼ä¸æ¯ï¼636 æ¡ä¼ä¸å®å ¨åéã90 个åºåï¼ä» 38 å®¶ä¼ä¸æ°å¼ä¸å â æ¯ 8 ææ°æ®çå¦ä¸çæ¬è¢«åæ 9 æ | | 2 | é« | `h2031_enterprise_monthly` **缺 2025-01**ï¼ä»å¤©åªå¯¼äº 02~12ï¼ï¼2025 年累计ä¼å° 1 个æ | | 3 | ä¸ | `passenger_individual_monthly` 2026-08 **缺é»åå¸**ï¼7 æ¡å 6 æ¡ï¼ | | 4 | ä½ | PASSENGER_AUTH 11 æå ¨ 0 è¡ï¼é确认æ¯å¦æ£å¸¸ | | 5 | æç¤º | 2025-04 ç H2032 æ¤åç¼ºå¤±ï¼æ¬æ¬¡å·²è¡¥é½ï¼batch 382ï¼664 è¡ï¼ï¼h2032 åºåæ° 2025=87 / 2026=90ï¼å±ä¼ä¸è¿éè§æ£å¸¸åå¨ | å ¥åºæ½æ¥ï¼H2032 2025 å ¨å¹´è§ä¸ 50117.0940 ä¸å¨ / 7435040.9971 ä¸å¨å ¬éã2026 å¹´ 1-8 æè§ä¸ 31399.8248 ä¸å¨ï¼éå¸å· 17/17 ä¸å¯¼åºä»¶ãè´§è¿éæåã累计表ä¸è´ã 详è§ãåè½æµè¯æ¥å/è´§è¿ç´¯è®¡åæ ¸å¯¹ä¸å¯¼å ¥æ°æ®ä½æ£_2026-09-16.mdãã ### 19.4 git ç»æï¼æ¬è½®ï¼ - æäº¤ `27574bc`ï¼åè½æµè¯æ¥å + æ¬è + .gitignore è¡¥ `_pylibs/`ãä¿®æ£ `~$*` åå¯¼ç©ºæ ¼ï¼â **å·²æ¨ originï¼gitee masterï¼**ï¼`559e937..27574bc`ã - **å ¬å¸ gitea ä»ä¸å¯ç¨**ï¼`Test-NetConnection 61.183.254.94:3000` è¿å Trueï¼TCP éï¼ï¼ä½ `GET /r/trafficAudit.git/info/refs?service=git-upload-pack` 25 ç§æ ä»»ä½ååºï¼HTTP 000ï¼ï¼`git fetch gitea` æ¥ `Operation too slow. Less than 1000 bytes/sec`ãå¤æä¸ºæå¡ç«¯æªæ£å¸¸æä¾ HTTP ååºï¼å¾ æ¢å¤åè¡¥æ¨ï¼**ç¦å¼ºæ¨**ã ## äºåãç¨æ·ãå¯ä»¥ãææé¡¹è½å®ï¼è´§è¿é¡µç¾ç´¯è®¡åä¿®å¤ + H2032 èææ¸ ç ### 20.1 å ³é®åç°ï¼æ ¹å 䏿¯ç´¯è®¡å ¬å¼ï¼èæ¯ãå ¨çè§ä¸ãè¡ ä¸ä¸èæå¤å®ä¸ºã2021 累计å空 + 2022 忻叏é + 2023 精度差ãï¼æ¬è½®ç¨ Excel COM éæå®æµå**ä¿®æ£äºç»è®º**ã对 6 个年度åéææ¯è¾ãå ¨çè¡ãä¸ã17 å¸å·è¡ä¹åãï¼ | 年度 | å计差 | è§ä¸å·® | è§ä¸å·® | |---|---|---|---| | 2026(1-8) | 2.8e-5 | 1.8e-12 | 2.8e-5 | | 2025 | 3.3e-11 | 9.1e-13 | 3.5e-11 | | 2024 | 1.5e-11 | 9.1e-13 | 1.3e-11 | | 2023 | **4.6e-3** | 4.5e-13 | **4.6e-3** | | 2022 | **3.1e-3** | 2.3e-13 | **3.1e-3** | | 2021 | 4.0e-5 | 4.0e-5 | 1.5e-4 | - ãè§ä¸ãå ¨çè¡æ°¸è¿æ¯ 17 å¸å·ä¹åï¼å ¬å¼ï¼ï¼**ä¸å¤ä¸å·®**ï¼ - å·®å¼ 100% æ¥èªãå ¨çè§ä¸ãè¡ ââ 宿¯**åæ»ç常é**ï¼ä¸ 17 å¸å·è§ä¸ä¹åä¸çï¼ - èã17 å¸å·è¡ä¹åãæ°å¥½çäºæºæä»¶æ¹åçè¡ï¼2022 = 144979.2825ã2023 = 173045.2964ï¼ï¼æ£æ¯ç¨æ·äººå·¥æ ¸ç®çé£ä¸ªæ°ã æä»¥åªè¦æãå ¨ç è§ä¸/è§ä¸ã两è¡é½æ¹æ 17 å¸å·æ±åå ¬å¼ï¼å ¨çè¡èªç¶çäºå¸å·ä¹åï¼ç´¯è®¡åéä¹èªå¨å¯¹ä¸ã ### 20.2 æ¯çæ¹å¨ï¼docs/çææ±æ»å¤§è¡¨/2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨.xlsx çã è´§è¿ãé¡µï¼ | ä½ç½® | æ¹å | æ¹å | |---|---|---| | r7/r8/r9/r10ï¼å ¨ç è§ä¸/è§ä¸ è´§è¿é·å¨è½¬éï¼2021-2025 åæï¼ | 忻叏é | SUM(17 å¸å·å¯¹åºè¡) | | r5/r6ï¼å ¨ç è´§è¿é/å¨è½¬éï¼2021-2025 åæï¼ | 常é | m7+m9 / m8+m10 | | DZï¼2022 累计ï¼è¡ 5-112ï¼ | 忻叏é | SUM(DM:DX) | | EOï¼2021 累计ï¼è¡ 5-112ï¼ | 空 | SUM(EC:EN) | | EAï¼2022 ç´¯è®¡åæ¯ï¼è¡ 5-112ï¼ | 忻叏é | IFERROR(DZ/SUM(EC:EN)-1,"") | å ± 360 + 324 个åå ã2026 å¹´åä¸å¨ï¼å½æå¼ç±å¯¼åºä»£ç åå¡«ï¼ï¼EPï¼2021 ç´¯è®¡åæ¯ï¼ä¿æä¸ºç©ºï¼é¡µå 没æ 2020 åï¼æ åæ¯åºæï¼ãæ¹åå¤ä»½ docs/çææ±æ»å¤§è¡¨/_bak_202608æ¯çä¿®æ¹å_20260916/ã **åªæ¹æ¯çè¿ä¸ä¸ªæä»¶**ï¼çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx æ¯å宽åç §ä»¶ï¼ä»£ç åªè¯»å宽/éèæ è®°ï¼ï¼_çå¼åå.xlsx è¿è¡æ¶æ ä»»ä½ä»£ç å¼ç¨ï¼åæå¤ä»½æ¯ç resolveSummaryDonor(2026,8) è¦æ±æä»¶å以 _å¤ä»½_ å¼å¤´ä¸å«ã2026å¹´8æãï¼ç®å½ä¸æ å¹é ï¼å¯¼åºæ¥å¿ç¡®è®¤ãæªæ¾å°åæå¤ä»½æ¯çãï¼ï¼ä¸ä¼å²ææ¹å¨ã ### 20.3 æ°æ®åºæ¸ ç - DELETE FROM h2032_enterprise_monthly WHERE report_period='2026-09' â 636 è¡ï¼ROW_COUNT() 宿µï¼ - DELETE FROM import_batch WHERE id=302 â 1 è¡ - å¤ä»½ï¼_backup_h2032_2026-09_rows_20260916.sqlï¼636 å ç»ï¼ã_backup_h2032_2026-09_batch302_20260916.sql ### 20.4 ä¿®å¤å宿µï¼éå¯¼åº 2026-08ï¼Excel éç®ï¼ | 年度 | å | ä¿®å¤å | ä¿®å¤å | æºæä»¶æ ¸ç® | |---|---|---|---|---| | 2026(1-8æ) | S | 130311.8927 | 130311.8927 | 130311.8927 | | 2025 | AT | 195433.2232 | 195433.2232 | 195433.2232 | | 2024 | BV | 184938.5780 | 184938.5780 | 184938.5780 | | 2023 | CW | 173045.2932 | **173045.2964** | 173045.2964 | | 2022 | DZ | 144979.2854 | **144979.2825** | 144979.2825 | | 2021 | EO | 空 | **161309.5316** | 161309.5316 | å ¨é¨ 4 ä½å°æ°ä¸è´ï¼æå¤§æ®å·® 4.1e-5ï¼ä¸ºæµ®ç¹ç´¯å åªå£°ï¼ã导åºä»¶ãå ¨çè¡ãvsã17 å¸å·è¡ä¹åãéæ å°äºçäº 9.3e-10ãé¢è§æ¥å£ types=summaryWorkbook è¿å ready=trueã20 é¡¹ææ ï¼å½æè´§è¿é 16888.76ã累计 130311.89ï¼ã2026-07 导åºåå½éè¿ã ### 20.5 踩å 1. **PowerShell åå¼å·éç "$m7" ä¼è¢«å½æåé m7**ï¼å ¬å¼ä¸² "=SUM(DM$r:DX$r)" ä¸ç $r:DX è¢«å½æã驱å¨å¨ r:ãèåæï¼å ¬å¼è¢«åæ =SUM(DM5) ââ 馿¬¡èæ¬å·²ææ¯çæ¹åï¼é å¤ä»½è¿ååæ¹ç¨ ${m}/${r} å®çéè·ã 2. **åµå¥çåå¼å· here-string 伿åç»æ¢å¤å± here-string** â æ¹ä¸ºãå Out-File åè¡¥ä¸æä»¶ï¼å Get-Content -Raw ä¼ ç» codex.exe --codex-run-as-apply-patchãã 3. æ¯ç被 Excel éååä½ç§¯ 959,706 â 1,480,392 åèï¼å¯¼åºä»¶ 950,186 â 1,331,599ï¼Excel èªèº«æ ¼å¼å¼éï¼ä¸å½±åæ°æ®ï¼ã 4. 2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨_çå¼åå.xlsx ç S åæ¼äº 8 æï¼=C+E+G+I+K+M+Oï¼ç¼º Q5ï¼ï¼ä½å®è¿è¡æ¶ä¸è¢«å¼ç¨ï¼æ¬æ¬¡æªæ¹ã ### 20.6 éç - 2026-09 æå¨ h204_vehicle_quarterlyï¼1284 è¡ï¼batch 142/144 åæä»¶ï¼ãinvestment_monthlyï¼31 è¡ï¼batch 107/108 åæºï¼ãaudit_resultï¼2061 è¡ï¼ãaudit_runï¼3 è¡ï¼ä¸ä»å¨ï¼æ¬æ¬¡æªå¨ï¼å¾ ç¨æ·ç¡®è®¤æ¯å¦æ¸ çã - 2026-07 æå¯¼åºä»¶ã è´§è¿ã页为 118x145ï¼æ¯ 8 æå° 2 åï¼ï¼å 7 ææ¯çæ¯ã1-4 æéª¨æ¶ãã 详è§ãåè½æµè¯æ¥å/åè½æµè¯æ¥å_è´§è¿é¡µç¾ç´¯è®¡åä¿®å¤ä¸èææ¸ ç_2026-09-16.mdãã --- ## äºåä¸ã2026-07 æ¯çè¡¥é½ + 导åºä»¶ãExcel æä¸å¼ãæ ¹å ä¿®å¤ æ¥æï¼2026-09-16ï¼ç¬¬ 9 è½®ï¼æ¥äºåèï¼ ### 21.1 ä»å¤©åäºä»ä¹ | # | äºé¡¹ | ç»æ | |---|---|---| | 1 | æ¸ ç 2026-09 æ®çæ°æ®ï¼ç¨æ·ç¬¬ 1 æ¡ï¼ | **宿**ï¼h204_vehicle_quarterly 1284 / investment_monthly 31 / audit_result 2061 / audit_run 3 / import_batch 5 / h2032 636ï¼å ¨é¨å¤æ ¸ä¸º 0 æ®çï¼å·²çå¯è¿å SQL å¤ä»½ `_backup_2026-09_residual_all_20260916.sql` | | 2 | ä¿® 2026-07 导åºä»¶ãExcel æä¸å¼ã | **宿**ï¼P0ï¼è§ 21.2ï¼ | | 3 | è¡¥é½ 2026-07 æ¯çï¼ç¨æ·ç¬¬ 3 æ¡ãå¯ä»¥è¡¥é½ãï¼ | **宿**ï¼è§ 21.3ï¼ | | 4 | ä¿®å¤ä»½æ¯çåå¡«æè¡¥é½ãæååå½¢ã | **宿**ï¼è§ 21.4ï¼ | ### 21.2 æ ¹å ï¼openpyxl æ¯ç + å¤ä»½åå¡« â æ®ç <is> éæ³æ ¼ - åä»¶é 19 ä¸ªæ ¼åå½¢å¦ `<c r="E15" s="111" t="n"><v>67.0</v><is><t>67.00</t></is></c>`ï¼`t="n"` å´å¸¦ `<is>`ï¼æ¨¡å¼éæ³ï¼Excel ç´æ¥æå¼ï¼COM æ¥ãä¸è½åå¾ç±» Workbooks ç Open 屿§ãï¼è¿ä¿®å¤æ¨¡å¼ `CorruptLoad=1` 乿ä¸å¼ï¼ã - 7 ææ¯çæ¯ **openpyxl ååº**ï¼ææ¬å `<is>`ï¼ï¼8 ææ¯çæ¯ **Excel åç**ï¼ææ¬èµ° sharedStringsï¼â å代ç ä¸åªæ 7 æåã - 触åè æ¯ `restoreSummaryMonthlyBlocks`ï¼7 ææ `_å¤ä»½_2026å¹´7æâ¦æ¸ çåâ¦xlsx`ï¼æ´æ ¼åå¡«æ¶å¾ inlineStr æ ¼éåå¼ï¼ç䏿§ `<is>`ï¼8 ææ²¡æ `_å¤ä»½_*`ï¼ä¸èµ°åå¡«ï¼æä»¥ä¸ç´æ¯å¥½çã - å®ä½ææ³ï¼å¼å¾è®°ä½ï¼ï¼åä»¶/好件**é¤ worksheets/styles/sharedStrings å¤å ¨é¨é¨ä»¶éåèç¸å** â zip æäº¤ + Excel éä¸å¼æ¡£ leave-one-out â éå® **sheet9ãå ¬äº¤ã17 æ ¼ + sheet12ã轨éã轮渡ã2 æ ¼**ã ### 21.3 ä¿®å¤ 1. `ReportExportService.exportSummaryWorkbook`ï¼è½çåæ°å¢ `normalizeStaleInlineStrings(wb)`ï¼æ¸ æææãé inlineStr å´æ®ç `<is>`ãçæ ¼åï¼å¹ç + warn æ¥å¿ï¼ã 2. `ReportExportService.restoreSummaryMonthlyBlocks`ï¼æ°å¢ `skipFreightHistoryBlocks`ï¼ã è´§è¿ã页 **T åå以å**ï¼2025..2021 äºä¸ªå¹´åº¦å + å年累计åï¼æ°¸ä¸ä»å¤ä»½æ¯çåå¡« ââ 䏿¢æãä¸å£å¾æåå·¦åãä¿æ¤åä¸æè·¯ï¼é²ãçæå夿´»ãã ### 21.4 7 ææ¯çè¡¥é½ï¼Excel COMï¼360 + 324 æ ¼ï¼ æ `_fix_mother.ps1`ï¼8 ææ¯çé£çï¼**æ´ä½å·¦ç§» 2 å**æ¹åï¼ - 年度åï¼2025 `T,V,X,Z,AB,AD,AF,AH,AJ,AL,AN,AP`ï¼2024 `AV..BR` éåï¼2023 `BW..CS` éåï¼2022 `DK..DV` è¿ç»ï¼2021 `EA..EL` è¿ç»ï¼æ¯åå `r7/r9/r8/r10 = SUM(17 å¸å·)`ã`r5=r7+r9`ã`r6=r8+r10` â **360 æ ¼**ï¼ - 累计åï¼`DX=SUM(DK:DV)`ã`EM=SUM(EA:EL)`ã`DY=IFERROR(DX/SUM(EA:EL)-1,"")`ï¼è¡ 5..112 â **324 æ ¼**ï¼ - `CalculateFullRebuild` åä¿åãæ¯ç 921,559 â 1,440,038 åèï¼è½¬ Excel åçï¼ã ### 21.5 æµè¯ç»ææè¦ | ç¨ä¾ | ç»æ | |---|---| | 2026-07 导åºï¼ä¿®å¤åï¼ | FAILï¼å¤ç°ï¼ | | ç¯å¢/è·¯å¾æé¤ï¼å°ä»¶ãä¸¤æ¬æ¯çã09-08 æ§å¯¼åºãæ¹åå¤å¶ï¼ | å ¨é¨ OKï¼ç¡®è®¤éç¯å¢é®é¢ | | ä¿®å¤å 2026-07 å¯¼åº | **OK sheets=19**ï¼`DX5=144979.2825`ã`DY5=-0.101235487797891`ã`EM5=161309.53162`ã`CU5=173045.296428512` | | ä¿®å¤å 2026-08 å¯¼åº | **OK sheets=19**ï¼`DZ5=144979.2825`ã`EO5=161309.53162`ã`CW5=173045.296428512` | | è·¨æä¸è´æ§ | 7 æä¸ 8 æç 2022/2021/2023 累计**å®å ¨ç¸ç** | | éæ³æ ¼å¤æ« | 0 个 | | 2026-09 æ®ç夿 ¸ | 5 å¼ è¡¨å ¨ 0 | > 注ï¼8 ææ¯ç计ç®å `DZ5` ç±æ§ç忻叏é `144979.285376043` å为 `144979.2825`ï¼å·® 0.0029 ââ æ£æ¯ç¬¬åäºèè®°å½çãå ¨çè§ä¸å¸¸é â 17 å¸å·ä¹åãé£ç¬å·®é¢ï¼å±**ä¿®æ£**èéåéã ### 21.6 踩å 1. **Excel COM å¤å¿è¿ç¨ä¼è®© `Workbooks.Open` é´ææ§åæ¥åä¸ä¸ªé**ï¼æ¯ä¾æµå®å¿ é¡»å¼ºææ¬æ¬¡æ°å»ºç `EXCEL` è¿ç¨ãææ¥åæå°±å å¤å¿è¿ç¨è¯¯å¤ã8 æä»¶ä¹æä¸å¼ãï¼æµªè´¹äºä¸è½®ã 2. `CTWorksheet` **没æ** `isSetSheetData()`ï¼sheetData æ¯å¿ å¡«ï¼ï¼è¦ç¨ `getSheetData() != null`ã 3. æ¯çè¡¥é½çå¤ä»½æä»¶**ä¸è½**ç¨ `_å¤ä»½_` åç¼ï¼ä¼è¢« `resolveSummaryDonor` å½ donor åå¡«ï¼ï¼æ¬æ¬¡ç¨ `_bak_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_è¡¥é½å_20260916.xlsx`ã ### 21.7 éç - 2026-06 / 2026-09 æ æ¯ç â é¢è§ `ready=False`ãæªæ¾å°æ¨¡æ¿æä»¶ãï¼éå 建æ¯çã - 第 8 æ£éçæªå¨ï¼`h2031` 缺 2025-01ã`passenger_individual_monthly` 2026-08 缺é»åã`PASSENGER_AUTH` 11 æå ¨ 0ã - ä»åºæ ¹ `_*.*`ï¼å«æ¬æ¬¡ `_hyb_*` / `_loo_*` / `_v2_*` / `_final_*` / `_fixed_*` / `_t7_*` / `_poijar`ï¼æªå ï¼å¾ ç¨æ·åæã 详è§ãåè½æµè¯æ¥å/åè½æµè¯æ¥å_2026-07æ¯çè¡¥é½ä¸å¯¼åºä»¶æä¸å¼ä¿®å¤_2026-09-16.mdãã ### 21.8 æ¶å·¥è®°å½ï¼2026-09-16ï¼ - æ¬è½®ä»£ç /ææ¡£å·² commit `80e0879`ï¼å¹¶ **push å°ä¸ªäºº gitee `origin/master`**ï¼`e29485b..80e0879`ï¼ã - å ¬å¸ gitea ä»ä¸éï¼`git fetch gitea` æèµ·çº¦ 5 åéæ ååºï¼å·²æçº¦å®**ä¸å¼ºæ¨**ï¼å¾ ç½ç»æ¢å¤åè¡¥æ¨ï¼æ¬å°ç° `ahead 16`ï¼ã - æ¶å·¥æ¶ç¯å¢ï¼å端 8090ãå端 8080 åå¨è·ï¼Excel å¤å¿è¿ç¨å·²æ¸ å¹²åï¼åªä¿çç¨æ·èªå·±ç 18564/25868ï¼ã - æªæäº¤å 容ï¼**ææä¿çï¼çç¨æ·ç¡®è®¤**ï¼ï¼`docs/æèµ/` ä¸çæ¢æå¢å ï¼`Xæâ¦` æ¹åçï¼éæ¬è½®æ¹å¨ï¼ãä»åºæ ¹ `_*.*` ææ¥ä¸´æ¶æä»¶ã - æå¤©å¯åï¼æ°å»º 2026-09ï¼å 2026-06ï¼æ¯çï¼è®© 9 ææºæ°æ®å¯¼å ¥åè½ç´æ¥åºæ±æ»å¤§è¡¨ï¼å ¬å¸ gitea è¡¥æ¨ã docs/Ͷ×Ê/ÊäÈë7ÔµÄÄÚÈÝÒªÓë¡¶Ä£°å_²éѯ½á¹û(Ͷ×Êϵͳ-¿ÍÔË+ÎïÁ÷ 2026.7)¡·½øÐÐУÑ飬´æÔÚÊý¾Ý²»Ò»Öµĵ¯´°Ìáʾ.txt
docs/±¨±íÉú³É_¹ØÏµÂß¼ÓëÿÈÕ½ø¶È×ܱí.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/2026Äê7ÔµÀ·ÔËÊäÁ¿»ã×ܱí.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/2026Äê8ÔµÀ·ÔËÊäÁ¿»ã×ܱí.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/2026Äê8ÔµÀ·ÔËÊäÁ¿»ã×ܱí_°æÊ½ÔÐÍ.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/»ã×ܱíÔ¤ÀÀ¸ñʽ.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Éú³É_µÀ·ÔËÊäÁ¿»ã×ܱí.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/Éú³É_µÀ·ÔËÊäÁ¿»ã×ܱí_2026-07_¸ñʽÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/Éú³É_µÀ·ÔËÊäÁ¿»ã×ܱí_2026-07_ÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/Éú³É_µÀ·ÔËÊäÁ¿»ã×ܱí_2026-08_ËÄÒ³Êý¾ÝÇý¶¯_2026-09-13.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/Éú³É_µÀ·ÔËÊäÁ¿»ã×ܱí_2026-08_ÅÅÃûË¢ÐÂÓëͬ±È°Ù·ÖÊý_2026-09-11.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/Éú³É_µÀ·ÔËÊäÁ¿»ã×ܱí_2026-08_¸ñʽÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/Éú³É_µÀ·ÔËÊäÁ¿»ã×ܱí_2026-08_ÇåÀíÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/µÀ·ÔËÊäÁ¿»ã×ܱí_2026-07_ÅÅÃû×ó¿éɾ³ýÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/µÀ·ÔËÊäÁ¿»ã×ܱí_2026-07_°æÊ½Í³Ò»ÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/µÀ·ÔËÊäÁ¿»ã×ܱí_2026-08_À©ÁÐÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Êä³ö/µÀ·ÔËÊäÁ¿»ã×ܱí_2026-08_°æÊ½Í³Ò»ÑéÖ¤.xlsxBinary files differ
docs/Éú³É»ã×Ü´ó±í/Ô¤ÀÀ½çÃæ.png
docs/»õÔËÆóҵƽ¾ùÔ˾àÔö·ùɸ²éÃûµ¥_2026-08ÓëÀÛ¼Æ_2026-09-05.xlsxBinary files differ
docs/»õÔËÆóҵƽ¾ùÔ˾àÔö·ùɸ²éÃûµ¥_2026-08ÓëÀÛ¼Æ_8ÔÂÀۼƾù50¿Ú¾¶_2026-09-05.xlsxBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê10Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê11Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê12Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê1Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê2Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê3Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê4Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê5Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê6Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê7Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê8Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2025ÄêÔ±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2025Äê9Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2026Äê1-7Ô±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026Äê1Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2026Äê1-7Ô±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026Äê2Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2026Äê1-7Ô±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026Äê3Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2026Äê1-7Ô±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026Äê4Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2026Äê1-7Ô±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026Äê5Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2026Äê1-7Ô±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026Äê6Ô£©.xlsBinary files differ
docs/»õÔËÐèµ¼ÈëµÄÊý¾Ý/»õÔË/2026Äê1-7Ô±¨/µÀ·»õÎïÔËÊäÔ¶ÈÉú²úÇé¿ö£¨2026Äê7Ô£©.xlsBinary files differ
docs/ÎÊÌâ»ã×Ü/ÎÊÌâÓë×¢ÒâÊÂÏî»ã×Ü_2026-09-16.md
New file @@ -0,0 +1,289 @@ # 交éè´§è¿ç»è®¡å®¡æ ¸ç³»ç» â é®é¢ä¸æ³¨æäºé¡¹æ±æ» > ç¨éï¼æé¡¹ç®è¿è¡ãæ°æ®å¯¼å ¥ãæ¥è¡¨çæãä»åºåä½ä¸ææã踩è¿çåãéä¸è®°å½ï¼ä¾åç»å¼åä¸è¿ç»´å¿«éæ¥é ã > ç»´æ¤æ¹å¼ï¼æ°åç°é®é¢è¯·ç´æ¥å¨æ¬æä»¶è¿½å ï¼å¹¶æ³¨ææ¥æã > æåæ´æ°ï¼2026-09-16 --- ## ä¸ãéæ¥è¡¨ï¼æå¸¸è§ç 10 æ¡ï¼ | # | äºé¡¹ | æ£ç¡®åæ³ | |---|------|----------| | 1 | å¯å¨åå端 | é¡¹ç®æ ¹ç®å½æ§è¡ `powershell -NoProfile -ExecutionPolicy Bypass -File start-dev.ps1` | | 2 | 端å£å ç¨å¤æ | ç `backend.log` / `traffic-audit-web/frontend.log`ï¼**ä¸è¦**ä¾èµ `Get-NetTCPConnection` | | 3 | å端就绪æ å¿ | æ¥å¿åºç° `Started TrafficAuditApplication` + `Tomcat started on port(s): 8090` | | 4 | å端就绪æ å¿ | æ¥å¿åºç° `Compiled successfully` + `App running at:` | | 5 | è¿æ°æ®åº | `mysql.exe --host=127.0.0.1 --port=3308 --user=root --default-character-set=utf8mb4 -D traffic_audit` | | 6 | åæ§è¿ç¨ | æ PID 精确å `cmd â java(maven) â java(app)` é¾ï¼**ä¸è¦æ node_repl åç¨æ·èªå·±ç cmd çªå£** | | 7 | èæ¬æ¥ã已添å äºå ·æç¸åé®ç项ã | æ¬æºåæ¶åå¨ `Path` ä¸ `PATH`ï¼æ¹ç¨ `cmd.exe /c ... > log 2>&1`ï¼**严ç¦ç¨ `Start-Process`** | | 8 | å䏿æä»¶ | ç¨ UTF-8ï¼`main.js` 带 BOM å¿ é¡»åå BOMï¼æ¹æä»¶åå 确认åæä»¶æ¯ CRLF è¿æ¯ LF | | 9 | æäº¤å | å æµè¯ + åãåè½æµè¯æ¥åã+ æ´æ°ã工使¥ç»ãï¼å fetch/åå¹¶/æ¨é | | 10 | æ¨å ¬å¸ gitea | å `git fetch gitea` ä¸è¿ç«¯ `main` åå¹¶ï¼**ç¦æ¢å¼ºæ¨** | --- ## äºãå¯å¨ä¸è¿ç¨ç®¡ç | é®é¢ | åå | å¤ç½® | |------|------|------| | `Start-Process` æ¥ã已添å äºå ·æç¸åé®ç项ã | ç¯å¢åéåæ¶åå¨ `Path` ä¸ `PATH`ï¼å¼ç¸åï¼ | ç»ä¸ç¨ `cmd.exe /c ... > log 2>&1` æ `ProcessStartInfo` å¯å¨ | | åç«¯å¨æ²ç®±å èµ·ä¸æ¥ï¼`EPERM: lstat`ï¼ | node 访é®ç¨æ·ç®å½è¢«æ²ç®±æ¦æª | `start-dev.ps1` æ´ä½å¨æ²ç®±å¤æ§è¡ | | åµå¥ `powershell.exe -Command` å¼å·è¢«ç ´å | å¤å± shell å è§£æä¸å±å¼å· | ç´æ¥è¿è¡ `.ps1` æä»¶ï¼ä¸ååµå¥ | | é坿¶è¯¯æ Codex å æ ¸ | æååæ `node.exe` ä¼å½ä¸ `node_repl` | æ PID 精确ååç«¯é¾ `cmd â java(maven) â java(app)`ãåç«¯é¾ `cmd â node(npm) â cmd â node(vue-cli-service)` | | å端æ¥å¿æ¾ä¸å° | æ¥å¿å¨åç®å½ | `traffic-audit-web/frontend.log`ï¼å端 `backend.log` å¨ä»åºæ ¹ç®å½ | **é坿 åæµç¨**ï¼ååº `java.exe` è¿ç¨ â å `app` â `maven` â `cmd` â è¿è¡ `start-dev.ps1`ï¼èæ¬èªå¨è·³è¿å·²å¨çå¬ç端å£ï¼ã --- ## ä¸ãæå¡ç¶æéªè¯ - æ²ç®±å `Get-NetTCPConnection` ä¼å æéãæç»è®¿é®ãè**éé»å¤±è´¥**ï¼æ®æ¤å¤å®ç«¯å£æªç嬿¯éçã - 夿æå¡ç¶æä¸å¾ä»¥æ¥å¿ä¸ºåï¼HTTP æ¢æ´»ç¨ï¼ - å端ï¼`GET http://127.0.0.1:8090/api/auth/captcha-config`ï¼è¿å `{"code":200,...}` å³éï¼ - å端ï¼`http://localhost:8080/#/login` - å端æ¥å¿åºç° `Proxy error: Could not proxy request /api/... (ECONNREFUSED)` 说æ**åç«¯å½æ¶æ²¡èµ·æ¥**ï¼ä¸æ¯å端é®é¢ã --- ## åãæ°æ®åº - è¿æ¥ï¼æ¬å°å¼ååºï¼ï¼ `& 'C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe' --host=127.0.0.1 --port=3308 --user=root --password=<è§ AGENTS.md> --default-character-set=utf8mb4 -D traffic_audit` - **å¿ é¡»å `--host=127.0.0.1`**ï¼åæ `-h127.0.0.1` ä¼è¢«è§£ææ host `127`ï¼è¿æ¥å¤±è´¥ã - è¾åºè¿æ»¤ `2>&1 | Select-String -NotMatch 'Warning'` å¯å±è½å¯ç è¦åã - 常ç¨è¡¨ä¸å ³é®åï¼ | 表 | 说æ | å ³é®å | |----|------|--------| | `freight_turnover_import` | è´§è¿é/å¨è½¬é | `report_period`ã`region_name`ã`freight_m01..m12`ã`turnover_m01..m12`ã`last_*` | | `h2031_enterprise_monthly` | å ¬è·¯æ 客 H203-1 ææ¥ | `report_period`ã`enterprise_code`ã`unified_credit_code`ã`report_unit` | | `import_batch` | å¯¼å ¥æ¹æ¬¡ | `import_type`ã`report_period`ã`file_name`ã`success_rows` | | `audit_result` / `audit_run` | å®¡æ ¸ç»æ/è¿è¡ | `report_period` | - ææ¥ãæææ°æ®å¨ä¸å¨ãï¼`SELECT report_period, COUNT(*) FROM <表> GROUP BY report_period ORDER BY report_period;` - ææ¥ãææå¯¼å ¥æ¥èªåªä¸ªæä»¶ãï¼æ¥ `import_batch` ç `file_name`ã - **è¡¨ç»æåæ´è¦åæ¥ä¸å¤**ï¼å®é åº DDLã`docs/init.sql`ã`docs/database.md`ã - æµè¯ç¨æ¥è¡¨æå»ºè®®ç¨ `2099-xx`ï¼æµå®ç¨ `POST /api/import/clear?period=...` æç´æ¥ DELETE æ¸ çï¼é¿å 污æç宿份䏿项ã --- ## äºãæ°æ®å¯¼å ¥ï¼æä»¶è·¯å¾ä¸ææ¬¡çº¦å® ### 5.1 è´§è¿é/å¨è½¬éï¼`/api/import/freightTurnover`ï¼ | æºæä»¶ | è¦çææ¬¡ | 夿³¨ | |--------|----------|------| | `D:\05_æ°æ®åç±»\é«é\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-8æï¼.xlsx` | 2021-12 / 2022-12 / 2024-12 / 2025-12 / 2026-08 | **æ 2023 å¹´ Sheet** | | `D:\05_æ°æ®åç±»\è´§è¿\7æ\å®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-7æï¼.xlsx` | å¤ä¸ä¸ª `2023` Sheet | 2023 å¹´æ°æ®çæ¥æºï¼2021/2022/2024 ä¸ 8 ææä»¶éå¼ä¸è´ | - å¤å¹´åº¦å·¥ä½ç°¿è¯å«è§åï¼`detectYearSheets`ï¼ï¼ 1. **è³å° 2 个 Sheet**ï¼å Sheet æä»¶ä¸è¯å«ä¸ºå¤å¹´åº¦å·¥ä½ç°¿ï¼ä¼èµ°èçæåº¦æ¨¡æ¿è·¯å¾ï¼ï¼ 2. æ¯ä¸ª Sheet åå¹é `^\d{4}\s*å¹´?$`ï¼`2023å¹´`ã`2023` é½å¯ä»¥ï¼ï¼ 3. æ¯ä¸ª Sheet é¦è¡ A1 å«ãè´§è¿éããB1 å«ãæãã 任䏿¡ä»¶ä¸æ»¡è¶³ â æ´ä½åéèçæåº¦æ¨¡æ¿è§£æã - æ¯ä¸ªå¹´åº¦ Sheet çç»æï¼ä¸æ¹æ¯ãè´§è¿é(ä¸å¨)ãåï¼çº¦ 20 è¡ï¼ï¼ä¸æ¹æ¯ãå¨è½¬é(ä¸å¨å ¬é)ãåï¼**åä¸å¸å·åç¬¬äºæ¬¡åºç°å³è§ä¸ºå¨è½¬éå**ã - æ¥è¡¨æè¯ä¹ï¼**`2021-12` è¿ç±»ææ¾çæ¯è¯¥å¹´ 1â12 æçå ¨å¹´æ°æ®**ï¼`m01..m12` å ¨é¨æå¼ï¼ï¼ä¸æ¯ 12 æåæã该年æåææ°æ®çæä»½å³å®æå·ï¼2026 å¹´åªæ 1â8 æ â `2026-08`ï¼ã - ä¸å¹´åæï¼å¤å¹´åº¦æä»¶éèªå¨å**ä¸ä¸å¹´åº¦ Sheet**ï¼è¥ä¸ä¸å¹´åº¦ä¸åå¨ï¼å¦ 2021 æ 2020 Sheetï¼ï¼`last_*` 为空ã - åªè¡¥æä¸å¹´æ¶ï¼å¯å¦åä¸ä¸ªåªå«è¯¥å¹´ + ä¸ä¸å¹´ç临æ¶å·¥ä½ç°¿åå¯¼å ¥ï¼æ³¨æãè³å° 2 个 Sheetãè§åï¼ã ### 5.2 å ¬è·¯æ 客 H203-1ï¼`/api/import/passengerMonthly`ï¼ | æºæä»¶ | 夿³¨ | |--------|------| | `docs\å ¬è·¯æ 客\模æ¿_交ä¼ç»H203-1表_å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµ.xlsx` | ç¨æ·ä¿®æ¹åçæ¨¡æ¿ | | `D:\æ¡é¢\æµè¯æ°æ®\å ¬è·¯æ 客\å «æ\å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµï¼2026ï¼_2026-09-09 09_18_45.xls` | ç³»ç»å¯¼åºçèæ ¼å¼æ ·ä¾ | | `D:\éè¦å¯¼å ¥çæ°æ®\å ¬è·¯æ 客\*.xls` | åå²åæå¯¼åºæä»¶ | - è§£æ**æè¡¨å¤´ååå¼**ï¼`buildHeaderMap`ï¼ï¼å æ¤æ¨¡æ¿å¨ä¸é´æå/æ´ä½å³ç§»**ä¸ä¼**ç ´åå ¶å®å段ã - æ°æ¨¡æ¿å¨ãä¼ä¸åç§°ãåæ°å¢ 2 åï¼`ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç `ã`å¡«æ¥åä½`ï¼èæ ¼å¼æä»¶å ¶å®ä¹å¸¦è¿ä¸¤åï¼æ¤åä»£ç æªè¯»åï¼ã - å¿ éå缺失ä¼ç´æ¥æ¥éï¼ä¾å¦ééç±»åæ¶æç¤ºã表头缺å°å¿ éåãä¼ä¸åç§°ãã客è¿é_æ»è®¡ããã ### 5.3 å ¶å® - å¯¼å ¥å¤±è´¥å¿ é¡»å¨é¡µé¢æ¾ç¤º**è¡å·**ï¼ç¨æ·è¦æ±ï¼ï¼æ°å¢è§£æé»è¾æ¶ä¸è¦åæè¡å·ä¿¡æ¯ã --- ## å ãæ¥è¡¨çæ - ãæ±æ»å¤§è¡¨ãé¢è§å¼¹çªç± `ReportExport.vue` 渲æï¼ - å¼¹çªå **åªä¿çä¸å¼ ææ è¡¨**ï¼åç±» / ææ / æ°æ® / 忝ï¼ï¼ãä¸å£å¾ãä¹åä¸å渲æä»»ä½è¡¨æ ¼ï¼ - å¼¹çªæ¯ææå¨ï¼`v-dialog-drag` æä»¤ï¼ææ 颿 ï¼+ 10px åè§ã - 导åºä¾èµ**æ¯çæ¨¡æ¿æä»¶**ï¼`docs/çææ±æ»å¤§è¡¨/YYYYå¹´Mæéè·¯è¿è¾éæ±æ»è¡¨.xlsx`ãç¼ºå¤±æ¶æ¥ãæ¯çå®ä½å¤±è´¥ï¼æªæ¾å°æ¨¡æ¿æä»¶ãï¼**䏿¯æ°æ®é®é¢**ã - æ¥å£å±é¢èªæ¥ï¼ç»è¿å端ï¼å®ä½æ¯åç«¯è¿æ¯å端é®é¢ï¼ï¼ - é¢è§ï¼`GET /api/report/preview?period=2026-08&mode=month&types=summaryWorkbook` - 导åºï¼`GET /api/report/export/summaryWorkbook?...` - 失败æç¤ºå·²ç»åï¼è½åºåãè¿ä¸ä¸æå¡å¨ãåãå端è¿åçå ·ä½åå ãï¼å¯¼åºæ¥å£æ¯ `responseType:'blob'`ï¼æ¥éæ¶ `data` 乿¯ Blobï¼å¿ é¡»å `text()` åè§£æã --- ## ä¸ãç»å½ä¸éªè¯ç | é®é¢ | åå | å¤ç½® | |------|------|------| | ç»å½é¡µåºç°ç©ºç½æ¹æ¡ + ãéªè¯ç å 载失败ï¼è¯·æ£æ¥ç½ç»ã | å端 `captchaRequired` é»è®¤ `true`ï¼è¯»å `/api/auth/captcha-config` 失败æ¶éé»å¿½ç¥ï¼é¡µé¢æ®çå è½½ä¸åºæ¥çéªè¯ç æ¡ | é»è®¤å¼æ¹ `false`ï¼æ¹ä¸º fail-safeï¼åªæå端æç¡®è¿å `required === true` ææ¾ç¤ºï¼è¯·æ±å¤±è´¥æãä¸éè¦éªè¯ç ãå¤ç | | å¼å ³ä½ç½® | å端 `application.yml` ç `app.captcha.required` | å ³æååºæ¾ç¤ºãæµè¯æ¨¡å¼ï¼è¡ä¸ºéªè¯ç 已跳è¿ã | | æ¢ç½ç»/æ¢ IP åæ¥å£ 403 | è·¨åç½åå | CORS éæ¾è¡å ç½ç½æ®µï¼å·²ä¿®å¤ `0d2a5fc`ï¼ | --- ## å «ãæä»¶åå ¥ä¸ææ¬å¤ççå - æ¬æºæä»¶**æ¢è¡ç¬¦ä¸ç»ä¸**ï¼`Login.vue`ã`main.js` æ¯ CRLFï¼`ReportExport.vue`ã`DataImportService.java`ã`docs/*.md` æ¯ LFãç¨ `[System.IO.File]::WriteAllText` æ¶å¿ é¡»å¹é 忢è¡ç¬¦ï¼å¦ååç» `-replace` / å符串å¹é ä¼å¤±è´¥ã - `main.js` 带 BOMï¼`EF BB BF`ï¼ï¼æ¹åæ¶è¦ç¨ `New-Object System.Text.UTF8Encoding($true)`ã - **`git checkout -- <æä»¶>` 伿 LF 转æ CRLF**ï¼æ¬ä»åº `core.autocrlf=true`ï¼ï¼ä¼è®©åç»åºäº LF çæ¿æ¢å¤±æï¼æä½åå 确认ç宿¢è¡ç¬¦ã - PowerShell å¤è¡ä¸ææ¿æ¢å»ºè®®å `*.py` èæ¬ç¨ `python` æ§è¡ï¼`apply_patch` 卿¬æºä¸å¯ç¨ï¼ã - åç¬¦ä¸²æ¿æ¢**注æéç¹å¯ä¸æ§**ï¼`| enterprise_name | varchar(200) | ä¼ä¸åç§° |` å¨ `docs/database.md` åºç° 4 次ï¼ç´æ¥ replace 伿¹é表ï¼å¿ é¡»å æªåç®æ ç« èåæ¿æ¢ã - 读 `.xls`ï¼æ¬æº python æ `xlrd`ï¼å¯ç¨ Excel COMï¼`New-Object -ComObject Excel.Application` â `Workbooks.Open` â `Cells.Item(r,c).Text`ï¼è®°å¾ `Quit()` + `ReleaseComObject`ï¼ã --- ## ä¹ãæµè§å¨èªå¨ååè¯çå - `tab.playwright.evaluate()` 读 DOM æå¯ä¿¡ï¼AX æ å¯è½è¯»å°ç¼åã - Playwright locator 对 Element UI è¡¨æ ¼å æé®**ä¼è¶ æ¶**ï¼`isVisible()` æä¸º falseï¼ï¼æ¹ç¨ AX ç´¢å¼ `tab.click(index)`ã - `tab.drag([x1,y1],[x2,y2])` ææ½æ¶ï¼åæ å¿ é¡»è½å¨**å½åè§å£**å ï¼æ¬æºå 嵿µè§å¨è§å£å¾å°ï¼çº¦ 319Ã790ï¼ï¼å¦åæ¥ `Coordinate is outside the active tab content viewport`ã - `tab.click` ç AX ç´¢å¼**å¨é¡µé¢å·æ°åä¼å¤±æ**ï¼å¯è½å½ä¸å«çæ§ä»¶ï¼æ¯æ¬¡æä½åéæ° `cua.getTab(...)` åæ°ç´¢å¼ã - æªå¾ï¼`const fs = await import('fs'); fs.writeFileSync(path, Buffer.from(await tab.getScreenshot()))`ï¼`require` ä¸å¯ç¨ï¼ã - æ¹ `.vue` åéè¦ `tab.reload()`ã - 临æ¶èæ¬/æä»¶ï¼`_*.*`ï¼æªç»ç¨æ·åæ**ä¸è¦å **ã --- ## åãGit åä»åºå·¥ä½æµ | ä»åº | remote | 忝 | å°å | |------|--------|------|------| | 个人 | `origin` | `master` | `https://gitee.com/zhizhijie/traffic-audit.git` | | å ¬å¸ | `gitea` | `main` | `http://61.183.254.94:3000/r/trafficAudit.git`ï¼è´¦å· zyjï¼ | æ¯æ¬¡æ¹å¨çåºå®é¡ºåºï¼ 1. æµè¯ + åãåè½æµè¯æ¥åã + æ´æ°ã工使¥ç»ãï¼ 2. `git fetch origin` â å并个人ä»åºæ°æäº¤ï¼é¿å è¦çç¨æ·æ¹å¨ï¼ï¼ 3. `git fetch gitea` â ä¸è¿ç«¯ `main` 对æ¯åå¹¶ â **ç¦æ¢å¼ºæ¨**ï¼ 4. `git commit` â `git push`ã - åæ®åªèµ°æ¬æº git/ä¸´æ¶ askpassï¼**ç¦æ¢åè¿ä»åºä»»ä½æä»¶**ã - å ¬å¸ gitea ç½ç»ä¸éæ¶è®°å½ä¸ºéçé®é¢ï¼**ä¸è¦**ç¨å¼ºæ¨ç»è¿ã --- ## åä¸ãå½åå·²ç¥éçé®é¢ï¼æªè³ 2026-09-16ï¼ | # | é®é¢ | å½±å | ç¶æ | |---|------|------|------| | 1 | 8 ææºæä»¶ç¼º 2023 å¹´ Sheet | å·²ç¨ 7 ææä»¶è¡¥å½ `2023-12` è§£å³ | å·²è§£å³ | | 2 | 2026-01 ~ 2026-07 ç `last_*` 为空 | è¿å ææ¹å¨åå³ä¸ºç©ºï¼éæ¬æ¬¡å¼å ¥ | å¾ ç¨æ·ç¡®è®¤æ¯å¦è¡¥ | | 3 | 2026-01 ~ 2026-07 ç H203-1 `unified_credit_code` / `report_unit` 为空 | æ°åæ¬ææè¯»åï¼å岿æªåå¡« | å¾ ç¨æ·ç¡®è®¤æ¯å¦é导 | | 4 | é¢è§å¼¹çªãå ± 0 è¡ãä¸ãæåº¦è¦çï¼1~8æåææ°æ®ãå£å¾ä¸å | æè¯¯è§£ | å¾ ç¨æ·ç¡®è®¤æ¹ææ¡ | | 5 | å ¬å¸ gitea æ¨é | ç½ç»æ ååºï¼æªæ¨æå | å¾ è¡¥æ¨ | | 6 | ä»åºæ ¹ç®å½å¤§é `_*.*` ä¸´æ¶æä»¶ | ä½ç§¯/å¯è¯»æ§ | ç»ç¨æ·åæå忏 ç | > 2026-09-16 åææ´æ°ï¼éçé®é¢ 4ï¼é¢è§å¼¹çªãå ± 0 è¡ãææ¡ï¼å·²æç¨æ·ç¡®è®¤ä¿®æ¹å®æ¯ââæ±æ»å¤§è¡¨æ¹ä¸ºæ¾ç¤ºãææ N 项ãï¼å ¶å®æ¥è¡¨æ¾ç¤ºãå ± N è¡æç»ãã --- ## åäºã2026-09-16 è¡¥å ï¼è´§è¿é¡µç¾ã累计ãåä¿®å¤ï¼éè¦å£å¾ï¼ ### 12.1 æ¯çæ´¾çå£å¾ï¼å¿ é¡»éµå®ï¼ ã è´§è¿ã页è¡ç»æï¼ - å ¨çåï¼r5 è´§è¿é / r6 å¨è½¬é / r7 å ¶ä¸è§ä¸è´§è¿é / r8 å ¶ä¸è§ä¸å¨è½¬é / r9 å ¶ä¸è§ä¸è´§è¿é / r10 å ¶ä¸è§ä¸å¨è½¬éï¼ - 17 个å¸å·åæ¯å 6 è¡ï¼é¦è¡ 11,17,23,...,107ï¼æ¦æ±å¸...æåºï¼ï¼åå 顺åºï¼å计货è¿é / è§ä¸è´§è¿é / è§ä¸è´§è¿é / å计å¨è½¬é / è§ä¸å¨è½¬é / è§ä¸å¨è½¬éã **è§åï¼å ¨çè¡å¿ é¡»å®å ¨ç± 17 å¸å·è¡æ´¾çã** - r7 / r8 / r9 / r10 = SUM(17 å¸å·å¯¹åºè¡)ï¼ - r5 = m7+m9ï¼r6 = m8+m10ã å岿è®ï¼r9/r10ï¼å ¨çè§ä¸ï¼æ¾æ¯**忻叏é**ï¼ä¸ 17 å¸å·è§ä¸ä¹åä¸ç ââ 2023 å·® 4.6e-3ã2022 å·® 3.1e-3ã2021 å·® 1.5e-4ï¼2024/2025/2026 æ°å¥½ä¸º 0ï¼ï¼å¯¼è´ 6 个累计åé 2022/2023 æ¯æºæä»¶äººå·¥æ ¸ç®å·® 0.003 å·¦å³ã2021 æ´å为空ã2026-09-16 å·²å ¨é¨æ¹ä¸ºå ¬å¼ã 累计åç°ç¶ï¼å ¨çè¡ï¼4 ä½å°æ°ä¸æºæä»¶ä¸è´ï¼ï¼ | å | 年度 | å ¬å¼ | |---|---|---| | S | 2026(1-8æ) | C+E+G+I+K+M+O+Q | | AT | 2025 | V+X+...+AR | | BV | 2024 | AX+AZ+...+BT | | CW | 2023 | BY+CA+...+CU | | DZ | 2022 | =SUM(DM:DX)ï¼åä¸ºåæ»å¸¸éï¼ | | EO | 2021 | =SUM(EC:EN)ï¼å为**空**ï¼ | | EP | 2021 ç´¯è®¡åæ¯ | ä¿æä¸ºç©ºï¼é¡µå æ 2020 åï¼æ åºæï¼ | | EA | 2022 ç´¯è®¡åæ¯ | =IFERROR(DZ/SUM(EC:EN)-1, 空串)ï¼åä¸ºåæ»å¸¸éï¼ | ### 12.2 æ¯çæ¹å¨æ¹å¼ä¸æä»¶èè´£ - **å¿ é¡»ç¨ Excel COM**ï¼æ¹å ¬å¼ -> CalculateFullRebuild -> Saveï¼ï¼**ä¸å¯ç¨ openpyxl å¦å**ï¼ä¼æ¸ ç©ºå ¨æ¬å ¬å¼ç¼åå¼ï¼æ¾å¯¼è´ 2021 å¹´æ¹åçè¡å 0ï¼ã - 导åºä»¶éçå ¬å¼**æ ç¼åå¼**ï¼openpyxl(data_only=True) è¯»åºæ¥å ¨æ¯ Noneï¼æ ¸å¯¹æ°å¼å¿ é¡»ç¨ Excel COM éç®æèªåæ±å¼å¨ã - æä»¶èè´£ï¼ - YYYYå¹´Mæéè·¯è¿è¾éæ±æ»è¡¨.xlsx = **æ¯ç**ï¼å¯ä¸æ°æ®æ¥æºï¼ï¼ - çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx = **åªä½å宽åç §**ï¼applySummaryReferenceLayout åªè¯»å宽/éèæ è®°ï¼ä¸è¯»æ°å¼ï¼ï¼ - 2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨_çå¼åå.xlsx = è¿è¡æ¶**æ ä»»ä½ä»£ç å¼ç¨**ã - åæå¤ä»½æ¯çè¿åæºå¶ï¼resolveSummaryDonor åªè®¤æä»¶å**以 `_å¤ä»½_` å¼å¤´ä¸å«ã{å¹´}æã**çæä»¶ï¼å½ä¸å³æ´æ ¼åå¡«è¦çæ¯çã=> èªå»ºçå¤ä»½æä»¶/ç®å½**ä¸è¦**ç¨ `_å¤ä»½_` åç¼ï¼å¦åå¯è½è¢«å½æ donor ææ¯çæ¹åæ§å¼ã ### 12.3 ææ¬å¤ççåï¼æ¬æº PowerShell / gitï¼ | é®é¢ | åå | å¤ç½® | |---|---|---| | å ¬å¼è¢«åæ =SUM(DM5) | "$m7" 被解æä¸ºåé m7ï¼"$r:DX" éç $r:DX è¢«å½æã驱å¨å¨ r:ãèåæ | ä¸å¾ç¨ ${m} / ${r} å®ç | | å½ä»¤æ´ä½ä¸æ§è¡ãæ è¾åºãéåºç 1 | ä¸ä¸ªå½ä»¤éåºç°**åµå¥çåå¼å· here-string**ï¼å¤å±å¨ç¬¬ä¸ä¸ªç»æç¬¦å¤æåç»æ | ä¸ä¸ªå½ä»¤åªæ¾ä¸ä¸ª here-stringï¼æå Out-File åè¡¥ä¸æä»¶ï¼åç¨ Get-Content -Raw | | apply_patch ä¼ å¤è¡åæ°å¤±è´¥ | .bat å è£ å¨ç ´åäºå¤è¡åæ° | ç´æ¥è° codex.exe --codex-run-as-apply-patch $patch | | git commit -m æ¥ "outside repository" | PowerShell ç¨åå¼å·è½¬ä¹ï¼æ¶æ¯éçåææ +å¼å·ä¼æåç»æå符串 | ç¨ git commit -F <æ¶æ¯æä»¶> | | PS5.1 æ¥ä¹±ç è·¯å¾ãæ æ³æ¾å° ...ã | PS7 ç Out-File -Encoding utf8 åçæ¯**æ BOM** UTF-8ï¼PS5.1 æ GBK è¯»èæ¬ | å .ps1 æ¶ç¨ -Encoding utf8BOM | ### 12.4 éçé®é¢å¢éï¼æªè³ 2026-09-16 æï¼ | # | é®é¢ | å½±å | ç¶æ | |---|---|---|---| | 7 | h2032_enterprise_monthly 2026-09 èæï¼å®ä¸º 8 ææä»¶è¯¯å为 9 æï¼ | 636 è¡ + import_batch 302 | **å·²å é¤**ï¼çå¯è¿å SQL å¤ä»½ | | 8 | ã è´§è¿ã页累计å 2021/2022/2023 对ä¸ä¸äººå·¥æ ¸ç® | 已修æ¯çæ´¾çå£å¾ï¼6 åå ¨é¨å¯¹ä¸ | **已解å³** | | 9 | 2026-09 æè¿å¨ h204_vehicle_quarterly(1284 è¡) / investment_monthly(31 è¡) / audit_result(2061 è¡) / audit_run(3 è¡) | è¥æ 2026-09 åºæ¥è¡¨ä¼åå°èæ°æ® | å¾ ç¨æ·ç¡®è®¤æ¯å¦æ¸ ç | | 10 | 2026-07 导åºä»¶ã è´§è¿ã页为 118x145ï¼æ¯ 8 æå° 2 åï¼ | 7 ææ¯çæ¯ã1-4 æéª¨æ¶ãï¼é宿´æ¯ç | å¾ 7 ææ¯çå®ç¨¿ | | 11 | 2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨_çå¼åå.xlsx ç S åæ¼ 8 æï¼ç¼º Q5ï¼ | è¿è¡æ¶æªè¢«å¼ç¨ï¼ææ å½±å | å¾ ç¡®è®¤è¯¥æä»¶å»ç | | 12 | æ¯çç» Excel éååä½ç§¯ 959,706 -> 1,492,121 åèï¼å¯¼åºä»¶ 950,186 -> 1,331,599ï¼ | çº¯æ ¼å¼å¼éï¼æ°æ®æ å½±å | è®°å½ | 详è§ãåè½æµè¯æ¥å/åè½æµè¯æ¥å_è´§è¿é¡µç¾ç´¯è®¡åä¿®å¤ä¸èææ¸ ç_2026-09-16.mdãã --- ## åä¸ã2026-09-16 è¡¥å ï¼2026-07 æ¯çè¡¥é½ & 导åºä»¶ãExcel æä¸å¼ãæ ¹å ï¼P0ï¼ ### 13.1 çç¶ä¸æ ¹å | 项 | å 容 | |---|---| | çç¶ | `GET /api/report/export/summaryWorkbook?period=2026-07&mode=month` çæç xlsxï¼**Excel æä¸å¼**ï¼COM æ¥ãä¸è½åå¾ç±» Workbooks ç Open 屿§ãï¼`CorruptLoad=1` ä¿®å¤æ¨¡å¼åæ ·æä¸å¼ï¼ï¼2026-08 忥壿£å¸¸ | | ç´æ¥åå | 导åºä»¶éæ **19 个模å¼éæ³æ ¼**ï¼`<c r="E15" s="111" t="n"><v>67.0</v><is><t>67.00</t></is></c>` ââ `t="n"` ä¸å 许带 `<is>`ï¼inlineStr ä¸ç¨ï¼ | | æ·±å±åå | 7 ææ¯çç± **openpyxl** ååºï¼`docProps/app.xml` = `Microsoft Excel Compatible / Openpyxl 3.1.5`ï¼ææ¬å `<is>`ï¼ï¼8 ææ¯çæ¯ **Excel åç**ï¼ææ¬èµ° sharedStringsï¼ãPOI çé¨ååå ¥è·¯å¾åªæ¹ `t`/`<v>`ã䏿¸ æ§ `<is>` | | 触åè·¯å¾ | 7 æåå¨ `_å¤ä»½_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_æ¸ çå_20260904.xlsx` â `restoreSummaryMonthlyBlocks` æ´æ ¼åå¡« â å¾ inlineStr æ ¼éåå¼ç䏿§ `<is>`ã8 ææ `_å¤ä»½_*`ï¼ä¸èµ°åå¡«ï¼æ æ£å¸¸ | | å½ä¸ä½ç½® | leave-one-out å®ä½å° **sheet9ãå ¬äº¤ã17 æ ¼ + sheet12ã轨éã轮渡ã2 æ ¼** | ### 13.2 ä¿®å¤ï¼`traffic-audit-server`ï¼ 1. **`exportSummaryWorkbook` æ°å¢ `normalizeStaleInlineStrings(wb)`**ï¼è½ç忏 æææãé `inlineStr` å´æ®ç `<is>`ãçæ ¼åï¼å¹çï¼ï¼å½ä¸å³æ warn æ¥å¿ã 2. **`restoreSummaryMonthlyBlocks` æ°å¢ `skipFreightHistoryBlocks`**ï¼ã è´§è¿ã页 **T åå以å**ï¼2025/2024/2023/2022/2021 年度å + å年累计/ç´¯è®¡åæ¯åï¼**æ°¸ä¸ä»å¤ä»½æ¯çåå¡«** ââ 䏿¢æãä¸å£å¾æå左忰¸ä¸åå¡«ãåä¸æè·¯ï¼é¿å è¡¥é½è¢«ãçæå夿´»ãã ### 13.3 2026-07 æ¯çè¡¥é½ï¼å£å¾ä¸ 8 ææ¯ç对é½ï¼ - 年度åï¼æ¯åï¼ï¼`r7/r9/r8/r10 = SUM(17 å¸å·å¯¹åºè¡)`ã`r5 = r7+r9`ã`r6 = r8+r10` â 360 æ ¼ï¼ - 累计åï¼`DX = SUM(DK:DV)`ï¼2022ï¼ã`EM = SUM(EA:EL)`ï¼2021ï¼å**æ´å为空**ï¼ã`DY = IFERROR(DX/SUM(EA:EL)-1,"")`ï¼2022 ç´¯è®¡åæ¯ï¼å为**忻叏é**ï¼â 324 æ ¼ï¼ - 2023 累计 `CU = BW+BY+â¦+CS` æ¬æ¥å°±æ£ç¡®ï¼æªæ¹ï¼`EN`ï¼2021 ç´¯è®¡åæ¯ï¼æå£å¾ä¿æä¸ºç©ºã - ä¸æè¯æ®ï¼æ¯ç `DX5=144979.2825`ï¼æ§å¸¸é `144979.285376043`ï¼å·® 0.0029 = å ¨çè§ä¸å¸¸éä¸ 17 å¸å·ä¹åçå·®ï¼ã`EM5=161309.53162`ã`CU5=173045.296428512`ï¼ä¸ 8 ææ¯ç `DZ5/EO5/CW5` **å®å ¨ç¸ç**ã - å¤ä»½ï¼`docs/çææ±æ»å¤§è¡¨/_bak_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_è¡¥é½å_20260916.xlsx`ã**åå¿æ¹å为 `_å¤ä»½_` å¼å¤´**ï¼å¦åä¼è¢« `resolveSummaryDonor` å½ donor åå¡«ã ### 13.4 æ¬æ¬¡æ°å¢çææ¥å | é®é¢ | åå | å¤ç½® | |---|---|---| | Excel COM **é´ææ§**æ¥åä¸ä¸ªéï¼å¯¼è´è¯¯å¤ã8 æä»¶ä¹æä¸å¼ã | æ¯æ¬¡ `New-Object -ComObject Excel.Application` çä¸ç**å¤å¿ EXCEL è¿ç¨**伿±¡æåç»å®ä¾ | æ¯ä¾æµå®æãæ¬æ¬¡æ°å»ºç EXCEL è¿ç¨ã强æåæµä¸ä¸ä¾ï¼`Quit()`+`ReleaseComObject` å¹¶ä¸å¤ | | ç¼è¯æ¥ãæ¾ä¸å° isSetSheetData()ã | `CTWorksheet.sheetData` æ¯ XSD **å¿ å¡«**å ç´ ï¼ä¸çæ `isSetXxx` | æ¹ç¨ `ctw.getSheetData() != null` | | é¨ä»¶çº§ diff 太大è·ä¸å¨ | 对 519KB ç `styles.xml` ç´æ¥ `difflib` æ¯ O(n²) | å æé¨ä»¶æ¯åè尺寸/æ¯å¦ç¸çï¼åªå¨å¿ è¦çå°é¨ä»¶ä¸å diff | ### 13.5 éçé®é¢å¢é | # | é®é¢ | å½±å | ç¶æ | |---|---|---|---| | 13 | 2026-06 / 2026-09 æ æ¯ç | é¢è§ `ready=False`ãæªæ¾å°æ¨¡æ¿æä»¶ãï¼æ æ³åºæ° | éå 建æ¯çï¼ç¨æ·ç¬¬ 5 é®çå»¶ä¼¸ï¼ | | 14 | ä»åºæ ¹ `_*.*` ä¸´æ¶æä»¶ç»§ç»å¢å¤ï¼`_hyb_*` / `_loo_*` / `_v2_*` / `_final_*` / `_fixed_*` / `_t7_*` / `_poijar`ï¼ | ä½ç§¯/å¯è¯»æ§ | ç»ç¨æ·åæå忏 ç | > 第 10 项ï¼2026-07 导åºä»¶å° 2 å / 7 ææ¯çæ¯ã1-4 æéª¨æ¶ãï¼æ¬èå·²å¤çï¼å¯¼åºç«¯ä¼**èªå¨è¡¥åº 5/6/7 æè¡¨å¤´ä¸å ¬å¼**å¹¶éç®ç´¯è®¡å ¬å¼ï¼æ¯çå·²è¡¥é½ 2021/2022/2023 累计åï¼æ å ³é该项ã traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java
@@ -359,6 +359,8 @@ H2031_COLUMNS.add(col("regionCode", "æå±å°åº", 100)); H2031_COLUMNS.add(col("enterpriseCode", "ä¼ä¸ä»£ç ", 130)); H2031_COLUMNS.add(col("enterpriseName", "ä¼ä¸åç§°", 220)); H2031_COLUMNS.add(col("unifiedCreditCode", "ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ", 180)); H2031_COLUMNS.add(col("reportUnit", "å¡«æ¥åä½", 160)); H2031_COLUMNS.add(col("vehicleTotal", "客è¿è½¦è¾å计", 110)); H2031_COLUMNS.add(col("seatTotal", "æ ¸å®è½½å®¢ä½å计", 130)); H2031_COLUMNS.add(col("vehicleSchedule", "ççº¿è½¦è¾æ°", 110)); traffic-audit-server/src/main/java/com/trafficaudit/dataimport/entity/PassengerEnterpriseMonthly.java
@@ -22,6 +22,10 @@ private String enterpriseCode; /** ä¼ä¸åç§° */ private String enterpriseName; /** ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç */ private String unifiedCreditCode; /** å¡«æ¥åä½ */ private String reportUnit; /** 客è¿è½¦è¾_æ»è®¡ */ private Integer vehicleTotal; traffic-audit-server/src/main/java/com/trafficaudit/dataimport/service/DataImportService.java
@@ -319,6 +319,9 @@ entity.setRegionCode(gs(row, colMap, "æå±å°åº")); entity.setEnterpriseCode(gs(row, colMap, "ä¼ä¸ä»£ç ")); entity.setEnterpriseName(name.trim()); // æ°ç模æ¿å¨ãä¼ä¸åç§°ãåæ°å¢äºä¸¤åï¼ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç /å¡«æ¥åä½ï¼ï¼æè¡¨å¤´åå¼ï¼èæ¨¡æ¿æ è¯¥åæ¶ä¸º null entity.setUnifiedCreditCode(gs(row, colMap, "ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ")); entity.setReportUnit(gs(row, colMap, "å¡«æ¥åä½")); entity.setVehicleTotal(gi(row, colMap, "客è¿è½¦è¾_æ»è®¡")); entity.setSeatTotal(gi(row, colMap, "æ ¸å®è½½å®¢ä½_æ»è®¡")); entity.setVehicleSchedule(gi(row, colMap, "è½¦è¾æ°_客è¿ç车ï¼å«å®çº¿æ 游客è¿å®¢è½¦ï¼")); traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
@@ -3360,12 +3360,41 @@ + "æãçæ_éè·¯è¿è¾éæ±æ»è¡¨ã对é½å宽忰={}ï¼ç¼ºæ°æç¤º={}", dbFilled, yoyFilled, monthFormulaFilled, rankRefreshed, cumulativeRefreshed, widthApplied, dbProblems); applyTwoDecimalFormat(wb); // æ°å¼æ¾ç¤ºä¸¤ä½å°æ°ï¼ä¿çå ¨ç²¾åº¦ï¼ï¼% / æ¥æçæ¢ææ ·å¼ä¸æ¹å int inlineFixed = normalizeStaleInlineStrings(wb); // æ¸ æãé inlineStr å´æ®ç <is>ãçéæ³æ ¼ï¼å¦å Excel æç»æå¼ if (inlineFixed > 0) log.warn("æ±æ»å·¥ä½ç°¿æ¸ ææ®ç inlineStr éæ³æ ¼ {} ä¸ªï¼æ¯çç± openpyxl ååºæ¶çå ¸åé®é¢ï¼", inlineFixed); if (!wb.getCTWorkbook().isSetCalcPr()) wb.getCTWorkbook().addNewCalcPr(); wb.getCTWorkbook().getCalcPr().setFullCalcOnLoad(true); // è¿å/æ¹åå ¬å¼åæå¼å³éç® return toBytes(wb); } finally { ZipSecureFile.setMinInflateRatio(savedZipRatio); } } /** * æ¸ æãé inlineStr å´æ®ç <is>ãçéæ³åå æ ¼ã * * æ¯çè¥ç± openpyxl ååºï¼ææ¬åå æ ¼ç¨ <is>ï¼inlineStrï¼åå¨ï¼POI ç setCellValue åªæ¹å t ä¸ <v>ï¼ * ä¸ä¼æ¸ ææ§ <is>ï¼äºæ¯äº§åº <c t="n"><v>67.0</v><is><t>67.00</t></is></c> è¿ç§éæ³æ ¼ï¼ * Excel å¤å®ä¸ºãæ æ³è¯»åçå 容ãèç´æ¥æç»æå¼ï¼COM 表ç°ä¸ºãä¸è½åå¾ç±» Workbooks ç Open 屿§ãï¼ã * 2026-07 导åºä»¶å³å æ¤æä¸å¼ï¼ãå ¬äº¤ã17 æ ¼ +ã轨éã轮渡ã2 æ ¼ï¼ãè½çåç»ä¸æ¸ çï¼å¹çã */ private int normalizeStaleInlineStrings(XSSFWorkbook wb) { int fixed = 0; for (int i = 0; i < wb.getNumberOfSheets(); i++) { org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet ctw = wb.getSheetAt(i).getCTWorksheet(); if (ctw == null || ctw.getSheetData() == null) continue; for (org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow row : ctw.getSheetData().getRowArray()) { for (org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell c : row.getCArray()) { if (!c.isSetIs()) continue; STCellType.Enum t = c.getT(); if (t == null || !STCellType.INLINE_STR.equals(t)) { c.unsetIs(); fixed++; } } } } return fixed; } /** @@ -4454,6 +4483,9 @@ if (bs == null) continue; // ä¸å£å¾æå页 A..H éæ§å·¦åå·²äº 2026-09-09 ææ¿æ´åå é¤ï¼è¯¥åºåæ°¸ä¸ä»å¤ä»½æ¯çåå¡«ï¼é¿å âçæå夿´»â boolean skipMidRankLeftBlock = "ä¸å£å¾æå".equals(ds.getSheetName()); // ã è´§è¿ã页 2025..2021 年度åï¼T åèµ·ï¼å«å年累计/ç´¯è®¡åæ¯åï¼å¨æ¯ç鿝ãå¸å·æ´¾çå ¬å¼ãï¼ // å¤ä»½æ¯çååºä»æ¯æ§ç忻叏éï¼å ¨çè§ä¸çï¼ï¼åå¡«ä¼è®© 2021/2022/2023 累计å对ä¸ä¸ï¼âçæå夿´»âï¼ï¼æ 该åºä¸åå¡«ã boolean skipFreightHistoryBlocks = " è´§è¿".equals(ds.getSheetName()); for (int r = ds.getFirstRowNum(); r <= ds.getLastRowNum(); r++) { Row dr = ds.getRow(r); if (dr == null) continue; @@ -4461,6 +4493,7 @@ for (Cell dc : dr) { if (dc == null) continue; if (skipMidRankLeftBlock && dc.getColumnIndex() < 8) continue; if (skipFreightHistoryBlocks && dc.getColumnIndex() >= 19) continue; // T åå以å = 2025..2021 年度å CellType t = dc.getCellType(); if (t == CellType.BLANK) continue; String dtx = summaryCellText(dc); traffic-audit-web/src/directives/dialogDrag.js
New file @@ -0,0 +1,61 @@ /** * v-dialog-dragï¼è®© Element UI 2.x ç el-dialog è½ç¨æ 颿 æå¨ã * Element UI 2.x ç el-dialog 没æ draggable 屿§ï¼é£æ¯ Element Plus çåè½ï¼ï¼ * æä»¥è¿éç¨æä»¤å®ç°ï¼åªæ¹ .el-dialog ç transformï¼ä¸æ¹å¸å±ï¼ * å¼¹çªå ³éï¼wrapper 被置为 display:noneï¼æ¶èªå¨å¤ä½ï¼ä¸æ¬¡æå¼ä»å¨åä½ã * ç¨æ³ï¼<el-dialog v-dialog-drag custom-class="xxx"> */ export default { inserted(el) { const dialog = el.querySelector('.el-dialog') const header = el.querySelector('.el-dialog__header') if (!dialog || !header) return let startX = 0 let startY = 0 let baseX = 0 let baseY = 0 let curX = 0 let curY = 0 let dragging = false const reset = () => { curX = 0 curY = 0 dialog.style.transform = '' } const onMove = (e) => { if (!dragging) return curX = baseX + (e.clientX - startX) curY = baseY + (e.clientY - startY) dialog.style.transform = 'translate(' + curX + 'px, ' + curY + 'px)' if (e.preventDefault) e.preventDefault() } const onUp = () => { if (!dragging) return dragging = false document.removeEventListener('mousemove', onMove) document.removeEventListener('mouseup', onUp) } const onDown = (e) => { if (e.button !== 0) return const t = e.target if (t && t.closest && t.closest('.el-dialog__headerbtn')) return dragging = true startX = e.clientX startY = e.clientY baseX = curX baseY = curY document.addEventListener('mousemove', onMove) document.addEventListener('mouseup', onUp) if (e.preventDefault) e.preventDefault() } header.addEventListener('mousedown', onDown) if (typeof MutationObserver !== 'undefined') { const mo = new MutationObserver(() => { if (el.style.display === 'none') reset() }) mo.observe(el, { attributes: true, attributeFilter: ['style'] }) } } } traffic-audit-web/src/main.js
@@ -3,8 +3,10 @@ import 'element-ui/lib/theme-chalk/index.css' import App from './App.vue' import router from './router' import dialogDrag from './directives/dialogDrag' Vue.use(ElementUI) Vue.directive('dialog-drag', dialogDrag) // 让 el-dialog 坿å¨ï¼Element UI 2.x æ draggable 屿§ï¼ Vue.config.productionTip = false // å ¨å±ç»åºï¼æ¸ é¤ç»å½æå¹¶åç»å½é¡µï¼å页é¢ä¾§è¾¹æ ãéåºç»å½ãèåå ±ç¨ï¼ traffic-audit-web/src/views/Login.vue
@@ -40,16 +40,20 @@ captchaId: '', clickIds: [], loggingIn: false, captchaRequired: true captchaRequired: false } }, created() { // éªè¯ç æ¯å¦å¯ç¨ä¸å¾ä»¥å端 /api/auth/captcha-config 为åï¼ // é»è®¤ä¸æ¾ç¤ºï¼åªæå端æç¡®è¿å required=true ææ¸²æéªè¯ç ç»ä»¶ã // ä¿®å¤ï¼æ¤åé»è®¤ true ä¸è¯·æ±å¤±è´¥æ¶éé»å¿½ç¥ï¼åæ¢ç½ç»å该é 置读ä¸å°ï¼ // ç»å½é¡µå°±ä¼æ®çä¸ä¸ªå è½½ä¸åºæ¥çéªè¯ç ç½æ¡å¹¶æç¤ºâéªè¯ç å 载失败ï¼è¯·æ£æ¥ç½ç»âã axios.get('/api/auth/captcha-config', { timeout: 10000 }) .then(res => { const d = res.data if (d && d.code === 200) this.captchaRequired = d.data.required !== false this.captchaRequired = !!(d && d.code === 200 && d.data && d.data.required === true) }) .catch(() => {}) .catch(() => { this.captchaRequired = false }) }, methods: { onCaptchaVerified(payload) { traffic-audit-web/src/views/ReportExport.vue
@@ -99,12 +99,14 @@ </div> </el-alert> </div> <el-dialog :title="'é¢è§æ°æ® - ' + previewModule + 'ï¼' + previewPeriod + 'ï¼'" :visible.sync="previewVisible" width="760px"> <el-dialog :title="'é¢è§æ°æ® - ' + previewModule + 'ï¼' + previewPeriod + 'ï¼'" :visible.sync="previewVisible" width="760px" top="5vh" custom-class="pv-dialog" v-dialog-drag> <div class="preview-body"> <div v-for="it in previewItems" :key="it.key" class="preview-item"> <div class="preview-head"> <span class="preview-name">{{ it.label }}</span> <span class="preview-rows">å ± {{ it.rowCount || 0 }} è¡</span> <span class="preview-rows" v-if="it.key === 'summaryWorkbook'">ææ {{ (it.summary || []).length }} 项</span> <span class="preview-rows" v-else>å ± {{ it.rowCount || 0 }} è¡æç»</span> </div> <div class="preview-coverage"> <span class="cov-label">æåº¦è¦çï¼</span> @@ -114,7 +116,7 @@ </div> <table class="preview-summary wb-table" v-if="it.key === 'summaryWorkbook' && it.summary && it.summary.length"> <thead> <tr><th style="width:44%">ææ </th><th style="width:30%">æ°æ®</th><th>忝</th></tr> <tr><th style="width:12%">åç±»</th><th style="width:40%">ææ </th><th style="width:28%">æ°æ®</th><th>忝</th></tr> </thead> <tbody> <template v-for="(sec, si) in wbRows(it.summary)"> @@ -388,7 +390,7 @@ this.previewVisible = true this.loading = '' }) .catch(err => this.failWith(err)) .catch(err => this.failWith(err, 'é¢è§')) }, fmtVal(v) { if (v === null || v === undefined || v === '') return 'â' @@ -505,13 +507,45 @@ }) .catch(() => doExport()) }, failWith(err) { // é¢è§/导åºå¤±è´¥ç»ä¸æç¤ºï¼åºåâè¿ä¸ä¸æå¡å¨âä¸âå端è¿åçé误åå âã // å¯¼åºæ¥å£ç¨ responseType: 'blob'ï¼æ¥éæ¶ data 乿¯ Blobï¼å¿ é¡»å è¯»ææ¬åè§£æï¼ // å¦åæ¿ä¸å°å端çå®åå ï¼åªä¼æ¾ç¤ºç¬¼ç»çâè¯·ç¡®è®¤å·²å¯¼å ¥å¯¹åºæ°æ®âã failWith(err, action) { if (err && err._toast) { this.loading = ''; return } let msg = '' const d = err && err.response && err.response.data if (d && typeof d === 'object' && d.message) msg = d.message this.$message.error('导åºå¤±è´¥ï¼' + (msg || 'è¯·ç¡®è®¤å·²å¯¼å ¥å¯¹åºæ°æ®ï¼ææ¥çå端æ¥å¿')) this.loading = '' const act = action || '导åº' const finish = (reason) => { this.$message.error(act + '失败ï¼' + reason) this.loading = '' } if (!err || !err.response) { if (err && err.code === 'ECONNABORTED') { finish('请æ±è¶ æ¶ï¼è¯·ç¨åéè¯'); return } finish('æ æ³è¿æ¥æå¡å¨ï¼è¯·æ£æ¥ç½ç»è¿æ¥ï¼æç¡®è®¤å端æå¡æ¯å¦å·²å¯å¨') return } const d = err.response.data const fallback = 'è¯·ç¡®è®¤å·²å¯¼å ¥å¯¹åºæ°æ®ï¼ææ¥çå端æ¥å¿' if (d && typeof d.text === 'function') { Promise.resolve(d.text()).then(txt => finish(this.errReason(txt) || fallback)).catch(() => finish(fallback)) return } finish(this.errReason(typeof d === 'string' ? d : (d && d.message)) || fallback) }, // å端å¼å¸¸ååºå¯è½æ¯ JSON/HTML/çº¯ææ¬ï¼å°½éæååºå¯è¯»çåå errReason(raw) { if (!raw) return '' let text = String(raw).trim() if (text.charAt(0) === '{' || text.charAt(0) === '[') { try { const j = JSON.parse(text) if (j && j.message) return j.message } catch (e) { /* é JSONï¼æçº¯ææ¬å¤ç */ } } text = text.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim() // å¼å代ç/ç½ç»å±æ¥é转æäººè¯ï¼é¿å ç´æ¥æ ECONNREFUSED ä¹ç±»æç»ç¨æ· if (/ECONNREFUSED|ECONNRESET|Proxy error|socket hang up|Network Error|Failed to fetch/i.test(text)) { return 'æ æ³è¿æ¥æå¡å¨ï¼è¯·æ£æ¥ç½ç»è¿æ¥ï¼æç¡®è®¤å端æå¡æ¯å¦å·²å¯å¨' } return text.length > 200 ? text.slice(0, 200) + 'â¦' : text }, downloadBlob(res, fileName) { const isZip = /\.zip$/.test(fileName) @@ -579,3 +613,11 @@ .wb-yoy.yoy-empty { color:#C0C4CC; } .wb-note { color:#E6A23C; font-size:12px; margin:2px 0 8px; } </style> <style> /* é¢è§æ°æ®å¼¹çªï¼åè§ + å¯éè¿æ 颿 æå¨ï¼v-dialog-drag æä»¤ï¼ã ä¸è½åè¿ scopedï¼el-dialog é»è®¤ append-to-bodyï¼DOM æå¨ body ä¸ï¼scoped éæ©å¨å¹é ä¸å°ã */ .pv-dialog { border-radius: 10px; overflow: hidden; } .pv-dialog .el-dialog__header { cursor: move; user-select: none; -webkit-user-select: none; } .pv-dialog .el-dialog__headerbtn { cursor: pointer; } </style>