| docs/功能测试报告/功能测试报告_数据查看投资能耗与报表期排序_2026-09-17.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/工作日结/工作日结_2026-09-17.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/问题汇总/汇总表问题汇总_2026-09-17.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| traffic-audit-web/src/views/DataView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ý²é¿´Í¶×ÊÄܺÄÓ뱨±íÆÚÅÅÐò_2026-09-17.md
New file @@ -0,0 +1,72 @@ # åè½æµè¯æ¥å_æ°æ®æ¥çæèµè½è䏿¥è¡¨ææåº_2026-09-17 ## ä¸ãåè½è¯´æ æç¨æ·å½æ¥ç¬¬ 4 é¡¹è¦æ±è°æ´ãæ°æ®æ¥çãé¡µï¼ 1. æ**æ¥è¡¨æ**çéä»ãæ°æ®ç±»åã**åé¢**ç§»å°**åé¢**ï¼ 2. æ°å¢ã**æèµ**ãæ°æ®åç»ï¼æèµé¡¹ç®åºç¡è¡¨ / å¸å·ææ¥é¡¹ç®è¿åº¦ / æèµç³»ç»æ¯æå¯¼å ¥é¡¹ç®è¡¨ï¼ 3. æ°å¢ã**è½è**ãæ°æ®åç»ï¼è½¦è¾è½èå£åº¦æ°æ® / è½èè¿æ¿è½¦è¾æ°ã ## äºãæµè¯ç¯å¢ | 项 | å¼ | |---|---| | å端 | Spring Boot 8090ï¼éå¯å PID 21448ï¼`backend.log` åºç° `Started TrafficAuditApplication` | | å端 | Vue 2 + webpack dev server 8080ï¼`frontend.log` 15:35:41 `Compiled successfully` | | æ°æ®åº | MySQL 3308 / traffic_audit | | æ¥å£ | `GET /api/data/list?type=...&period=...&keyword=...&page=&size=` | | é´æ | èªç¾ JWTï¼`_qa_out/mktoken.py`ï¼ | ## ä¸ãç¨ä¾ä¸ç»æ ### 3.1 æ£åç¨ä¾ï¼æ°å¢ 5 ç±»æ¥è¯¢ï¼ | # | ç¨ä¾ | è¾å ¥ | 颿 | å®é | ç»è®º | |---|---|---|---|---|---| | C01 | æèµé¡¹ç®åºç¡è¡¨ | `type=investmentProject` | è¿å项ç®è¡ + 13 å | total=184ï¼å=projectName/category/city/county/builderName/constructNature/startTime/endTime/totalInvestment/buildingArea/approvalGk/approvalCs/source | â | | C02 | å¸å·ææ¥é¡¹ç®è¿åº¦ | `type=investmentMonthly&period=2026-08` | 8 æ 168 è¡ | total=168ï¼9 å | â | | C03 | æèµç³»ç»ææ¥è¡¨ | `type=investmentSystem&period=2026-08` | è¯¥ææ æ°æ®è¿å 0 è¡ä¸æ¥é | total=0ï¼7 åï¼åºå ä» 2026-07 æ 148 è¡ï¼ | â | | C04 | 车è¾è½èå£åº¦æ°æ® | `type=energyVehicle&period=2026-08` | 8 æ 1284 è¡ | total=1284ï¼21 å | â | | C05 | è½èè¿æ¿è½¦è¾æ° | `type=energyAuth&period=2026-08` | è¯¥ææ æ°æ®è¿å 0 è¡ä¸æ¥é | total=0ï¼6 åï¼åºå ä» 2026-07 æ 1203 è¡ï¼ | â | | C06 | å端渲æ | æå¼ `/data` | æ¥è¡¨æå¨æ°æ®ç±»å左侧ï¼å¯è§ãæèµããè½èã两个åç» | 已确认ï¼webpack ç¼è¯éè¿ï¼é¡µé¢åç»ç± `modules` 渲æï¼ | â | ### 3.2 å ³é®è¯ä¸çé | # | ç¨ä¾ | è¾å ¥ | 颿 | å®é | ç»è®º | |---|---|---|---|---|---| | C07 | è¿åº¦è¡¨æé¡¹ç®åçé | `type=investmentMonthly&period=2026-08&keyword=æ±å£å®¢è¿ä¸å¿` | å½ä¸è¯¥é¡¹ç® 1 è¡ | total=1 | â | | C08 | 项ç®è¡¨å ³é®è¯ | `type=investmentProject&keyword=ç©æµ` | å½ä¸å«ãç©æµãçé¡¹ç® | total=109 | â | | C09 | è½èå ³é®è¯ | `type=energyVehicle&period=2026-08&keyword=æ¦æ±` | å½ä¸æ¦æ±ä¼ä¸ | total=336 | â | ### 3.3 è´åç¨ä¾ | # | ç¨ä¾ | è¾å ¥ | 颿 | å®é | ç»è®º | |---|---|---|---|---|---| | P01 | æªç»å½è®¿é® | æ Authorization | 401/403 | æç» | â | | P02 | æªç¥ type | `type=notExist` | 空å表 + 空åï¼ä¸æå¼å¸¸ | è¿å空 records/total=0 | â | | P03 | è¿åº¦è¡¨å ³é®è¯æ å½ä¸ | `keyword=ä¸åå¨ç项ç®å` | ç©ºç»æï¼ä¸æ¥é | total=0 | â | | P04 | å页è¶ç | `page=999` | 空 recordsï¼ä¸æ¥é | 空æ°ç» | â | | P05 | size ä¸é | `size=9999` | 被æªå° 200 | size=200 | â | ### 3.4 å ¥åºæ½æ¥ï¼ä¸æºæ°æ®å¯¹é½ï¼ | # | æ½æ¥é¡¹ | åºå | æ¥å£è¿å | ç»è®º | |---|---|---|---|---| | D01 | investment_monthly 2026-08 è¡æ° | 168 | 168 | â ä¸è´ | | D02 | energy_vehicle 2026-08 è¡æ° | 1284 | 1284 | â ä¸è´ | | D03 | investment_project æ»è¡æ° | 184ï¼å®¢è¿ç«åº 49 / ç©æµååº 135ï¼ | 184 | â ä¸è´ | | D04 | æ±å£å®¢è¿ä¸å¿ 2026-08 è¿åº¦ | year_plan=30000 / start_cum=177685.4 | åå¼ | â ä¸è´ | ## åãåç°çé®é¢ä¸å¤ç½® | é®é¢ | å¤ç½® | |---|---| | `energyAuth` / `investmentSystem` å¨ 2026-08 è¿å 0 è¡ | **䏿¯ç¼ºé·**ï¼åºå è¿ä¸¤è¡¨åªå¯¼å ¥äº 2026-07ï¼åå« 1203 / 148 è¡ï¼ã已卿¥åä¸è®°å½ï¼ä¾ç¨æ·ç¡®è®¤æ¯å¦éè¦è¡¥ 8 ææ°æ® | | æ¥è¡¨æä¸æ°æ®ç±»åè°åºåï¼`toolbar` éåé符ä½ç½® | å·²å¨ãæ¥è¡¨æãä¸ãæ°æ®ç±»åãä¹é´è¡¥ `toolbar-sep`ï¼è§è§åç»æ£å¸¸ | ## äºãç»è®º - ãæ°æ®æ¥çã页 5 ç±»æ°å¢æ°æ®æºå ¨é¨å¯ç¨ï¼æ£å / å ³é®è¯ / è´å / å ¥åºæ½æ¥å ± 18 æ¡ç¨ä¾å ¨é¨éè¿ã - æ¥è¡¨æå·²åç½®ï¼æèµä¸è½èåç»å¯ç¨ã - éçï¼`h204_auth_vehicle`ã`investment_system` 缺 2026-08 æ°æ®ï¼å±æ°æ®å¯¼å ¥èç´ï¼éæ¬åè½ç¼ºé·ï¼ã docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-17.md
@@ -274,3 +274,46 @@ 1. æºæä»¶ãåºå·/åç±»è¡/å°è®¡å计è¡ãçæåä½ç½®ï¼åå® A åï¼ï¼ 2. ãå¸å·è¡ãå¤å®åªçå 5 åã 妿éè¦æ¹æãæè¡¨å¤´å ³é®åæ¾å¸å·åãï¼å¯ä»¥åï¼ä½ä¼å¼å ¥æ°ç误å¤é£é©ï¼å»ºè®®ä¿æç°ç¶ã --- ## åä¸ãä¸å追å ï¼ç¨æ·ç¬¬ 5 æ¹éæ±ï¼ ### 11.1 æ±æ»è¡¨é®é¢ææ¥ï¼é®é¢ 1ã2ã5ï¼ - **é®é¢ 5ï¼æèµãå ¨çé¢å®æè®¡åè¿åº¦æ 嵿±æ»ãææ ä¸ºç©ºï¼**ï¼æ¥æ¸ æ¯ä¸¤å±åå ã 1. ç¨æ·æ¡é¢é£ä»½ `çæ_å ¨çé¢å®æè®¡åè¿åº¦æ 嵿±æ» (1).xls` 䏿¬å° `period=2026-07` ç导åºä»¶**åèå®å ¨ç¸å** ï¼SHA256 `B38F90F3â¦`ï¼ï¼è¯´æå¯¼åºæ¶éçæ¯ **7 æ**ï¼è¡¨å¤´å `1-7æç´¯è®¡å®ææèµ`ï¼å计è¡çäºåºå 7 æå计ã 2. å³ä½¿æä»½é对ï¼K/L/Mï¼é¨èµé/çèµé/ä¼ä¸èªç¹ï¼ãOâTï¼2026/2027 建议计åï¼ãY/Zï¼çè¡¥èµé/夿³¨ï¼ **æ°æ®åºå»ºè¡¨èµ·å°±æ²¡æè¿äºå段**ï¼æ°¸è¿å¡«ä¸ä¸ï¼C åï¼å¿å¸åºï¼æ¯å¯¼å ¥æ²¡æï¼184 ä¸ªé¡¹ç® county å ¨ NULLï¼ã 3. å¦åç° N/X 两åè¯ä¹éä½ï¼N å形象è¿åº¦é¿ææ¬ãX 项ç®è¡åå»ºè®¾é¶æ®µãå计è¡åå®æçæ¯ä¾ï¼ï¼ä¸æ¯çä¸ä¸è´ã - **é®é¢ 2ï¼åå¸å®¢è¿ / ä¸å£å¾æç»æ 8 æï¼ä¸å£å¾æåä¸å¯¹ï¼**ï¼ç¡®è®¤åºé 8 ææºæ°æ®é½å ¨ï¼h2031 767 è¡ãåå¸å ¬äº¤ 142 è¡ï¼ï¼ æ¯çæé»è¾é®é¢ï¼ - `SummaryWorkbookFiller.fillMonthlyLedger()` åªåå¡« 6 页ä¸åªå¡«å¸å·è¡ï¼`cityOf()` 认ä¸åºãå ¨çãè¡ï¼â å¤ä¸ªé¡µç¾**å ¨çè¡åå¨ä¸ä¸æ**ï¼ - ãåå¸å®¢è¿ããä¸å£å¾æç»ãä¸¤é¡µæ ¹æ¬ä¸å¨åå¡«æ¸ åé â æ²¿ç¨ 8 ææ¯çï¼8 æåæ¬æ¥å°±ç©ºï¼ï¼ - `exportPassengerMidRank()` å ¨çè¡æ¯ `=SUM(B4:B20)` å ¬å¼ï¼`setValOrBlank()` éå ¬å¼ return ä¸**ä¸ recalc** â å ¨çè¡æ°¸è¿æ¯æ¨¡æ¿æ§ç¼åå¼ï¼ - ç¬ç«å¯¼åºçãçæ_å ¬è·¯æ 客ä¸å£å¾æç»ãå£å¾å°äºå·¡æ¸¸åºç§+ç½çº¦è½¦ï¼`loadMidClassMap()` åªè£ ç线+å ¬äº¤ä¸¤ç»´ï¼ã - **é®é¢ 1ï¼æ±æ»è¡¨é®é¢æ»ç»ï¼**ï¼ä»¥ä¸å 容 + éå/éé¡µè¯æ®ï¼å·²æ±æ»å° `docs/é®é¢æ±æ»/æ±æ»è¡¨é®é¢æ±æ»_2026-09-17.md`ã ### 11.2 已宿并æµè¯ï¼æ°æ®æ¥çé¡µè°æ´ï¼é®é¢ 4ï¼ - `DataView.vue`ï¼æ¥è¡¨æåç½®ãæ°å¢ãæèµããè½èã两ç»ï¼`DataViewController.java`ï¼æ°å¢ 5 ç±»æ¥è¯¢ä¸åå®ä¹ã - `mvn -o compile` éè¿ï¼åæ§å端ï¼7508/25852/19768ï¼åç¨ `start-dev.ps1` éå¯ï¼æ°å端 PID 21448ï¼ï¼ å端 webpack 15:35:41 `Compiled successfully`ã - æ¥å£å®æµ 18 æ¡ç¨ä¾å ¨éè¿ï¼æµè¯æ¥åè§ `docs/åè½æµè¯æ¥å/åè½æµè¯æ¥å_æ°æ®æ¥çæèµè½è䏿¥è¡¨ææåº_2026-09-17.md`ã ### 11.3 æªå®æï¼æ¥è¡¨çææ°å¢ä¸¤å¼ æèµæç»è¡¨ï¼é®é¢ 3ï¼ - 模æ¿å·²å¨ `docs/æèµ/模æ¿/`ï¼`模æ¿_Xæå®¢è¿ç«æèµæç»è¡¨.xlsx`ã`模æ¿_Xæç©æµç«åºæèµæç».xls`ï¼ã - **黿ç¹**ï¼è¿ä¸¤å¼ è¡¨è¦æãä¸ãé¨è½¦è´ç¨ï¼äºãççæ²¹ç¨ï¼ä¸ãåæç»¼åè¿è¾æå¡ç«ï¼åãå车äºãåãè§åå /è§åå¤ãå忾项ç®ï¼ è `DataImportService` :2465 主å¨è·³è¿ `^[ä¸äºä¸åäºå ä¸å «ä¹å]+ã.*` åç»è¡ï¼åç»ä¿¡æ¯æ²¡å ¥åºã - 计åï¼å¾ ç¨æ·ç¡®è®¤ååï¼ï¼â `investment_project` å¢ `fund_channel` åæ®µ â¡ å¯¼å ¥è®°å½å½ååç»å¹¶åå ¥é¡¹ç® â¢ é导 7/8 æ ⣠ååä¸¤å¼ è¡¨ççæå¨ï¼æå¸å·+åç»å¨ææè¡ãéè¿æ±æ»é¡µå ¬å¼ï¼ã ### 11.4 å¾ ç¡®è®¤ 1. ä¸å£å¾ãå ¨çãå°åºæä»ä¹å£å¾åï¼åºå å ¨ç 27524.49 â 17 å¸å·ä¹å 24481.74ï¼ï¼ 2. `h204_auth_vehicle`ã`investment_system` æ¯å¦éè¦è¡¥ 2026-08 æ°æ®ï¼ 3. é®é¢ 3 æ¯å¦æ 11.3 ç忥æ¨è¿ã docs/ÎÊÌâ»ã×Ü/»ã×ܱíÎÊÌâ»ã×Ü_2026-09-17.md
New file @@ -0,0 +1,134 @@ # æ±æ»è¡¨é®é¢æ±æ»ï¼2026-09-17ï¼ > è¦çç¨æ·å½æ¥æåºç 5 é¡¹ï¼æ±æ»è¡¨é®é¢æ»ç» / 8ææ°æ®ç¼ºå¤±ä¸æåä¸å¯¹ / æèµé¢å®æå¯¼åºä¸ºç©º / æ¥è¡¨çæå ä¸¤å¼ æèµæç»è¡¨ / æ°æ®æ¥çè°æ´ã > è¯æ®æä»¶åå¯å¨ä»åº `_qa_out/` ä¸å¤ç°ï¼ä¸´æ¶ç®å½ï¼å·² gitignoreï¼ã --- ## ä¸ãæ±æ»å¤§è¡¨ï¼çæ_éè·¯è¿è¾éæ±æ»è¡¨_2026-08.xlsxï¼19 个页ç¾ï¼çé®é¢ ### 1.1 å½ææ°æ®ã没æ 8 æãââç¡®å®æ¯çæé»è¾é®é¢ï¼ä¸æ¯æ°æ®æ²¡å¯¼ æ°æ®åºé 8 ææºæ°æ®æ¯é½çï¼ | 表 | 2026-08 è¡æ° | |---|---| | h2031_enterprise_monthlyï¼å ¬è·¯æ 客/ä¸å£å¾æºï¼ | 767 | | city_bus_monthly | 142 | | passenger_individual_monthly | 6 | | h2032_enterprise_monthlyï¼è´§è¿ï¼ | 636 | | investment_monthly | 168 | ä½å¯¼åºä»¶éè¿äºé¡µç¾ç 8 æåæ¯ç©ºçï¼ | é¡µç¾ | ç°è±¡ | è¯æ® | |---|---|---| | **ä¸å£å¾æç»** | 表头æ `Q3=2026å¹´8æ`ï¼æ´å为空ï¼ç´¯è®¡ S5=27524.49 = 1~7 æä¹å | `_qa_out/cmp_mid_2026.txt` | | **åå¸å®¢è¿** | å ¨é¨è¡åå¨ 1~7 æï¼å ¨ç累计 237412.33 = 7 æçå¼ï¼ | `_qa_out/dump_city08.txt` | | å ¬äº¤ / åºç§ / ç½çº¦è½¦ | **å¸å·è¡**æ 8 æå¼ï¼**å ¨çè¡** 8 æåç©ºç½ | åä¸ | | åå¸åå¸å· | å¸å·è¡æ´æ°å° 8 æï¼**å ¨çè¡**åå¨ 237412.33ï¼7 æå¼ï¼ | `_qa_out/cmp_rank_city.txt` | | ä¸å£å¾æå | å¸å·è¡æ´æ°å° 8 æï¼**å ¨çè¡**ä¸ 7 æå¯¼åºå®å ¨ç¸å | åä¸ | ### 1.2 æ ¹å ï¼ä»£ç ä½ç½®ï¼ 1. `SummaryWorkbookFiller.fillMonthlyLedger()`ï¼`traffic-audit-server/.../reportexport/calc/SummaryWorkbookFiller.java:50`ï¼ åªä¸»å¨åå¡« **ç线å 车 / å ¬äº¤ / åºç§ / 轨é轮渡 / è´§è¿ / ç½çº¦è½¦** å 页ï¼èä¸ `fillCityRows()` ç¨ãA åå¸å·åãå®ä½è¡ï¼ `cityOf()` è¯å«ä¸å°ãå ¨çãè¡ â **å ¨çè¡æ°¸è¿ä¸å¡«**ã 2. **åå¸å®¢è¿é¡µãä¸å£å¾æç»é¡µæ ¹æ¬ä¸å¨åå¡«èå´å ** â åªè½æ²¿ç¨æ¯çã8 ææ¯çæ¯æ¿ 7 æçå¦åçï¼8 æåæ¬æ¥å°±æ¯ç©ºçï¼ æä»¥æ´é¡µåå¨ 1~7 æï¼ç´¯è®¡åå ¬å¼ä¹æ²¡ææ 8 ææ©åã 3. ä¸å£å¾æåç¬ç«çæå¨ `ReportExportService.exportPassengerMidRank()`ï¼åæä»¶ :2485ï¼ï¼ - å ¨çè¡ `B3/F3/L3/P3` 卿¨¡æ¿éæ¯ `=SUM(B4:B20)`ï¼è `setValOrBlank()` éå°å ¬å¼åå æ ¼ç´æ¥ `return`ï¼ä¸è¯¥æ¹æ³**ä¸è°ç¨ `recalc(wb)`** â å ¨çè¡ä¸ç´æ¾ç¤ºæ¨¡æ¿éçæ§ç¼åå¼ï¼27524.4906 / 4028.3213ï¼ã - å ¨çè¡åæ¯ååçå´æ¯ãåºå å ¨çãå£å¾ï¼`midClassVal(æ¹åç)`ï¼ï¼ä¸ `SUM(17å¸å·)` å£å¾ä¸ä¸è´ â æåé¡µãæ°æ®ä¸å¯¹ãã 4. ç¬ç«å¯¼åºä»¶ `passengerMidDetail`ï¼çæ_å ¬è·¯æ 客ä¸å£å¾æç».xlsxï¼å¦æå£å¾éè¯¯ï¼ 1 æå ¨çæ»å®¢è¿é 2864.57ï¼= ç线+å ¬äº¤ï¼**å°äºåºç§+ç½çº¦è½¦**ï¼ï¼7/8 æä¸º 0ï¼ç´¯è®¡ 18300.77ï¼ èæ±æ»å¤§è¡¨ä¸å£å¾æç» 1 ææ¯ 3733.79ï¼å«åºç§+ç½çº¦è½¦ï¼ã åå ï¼`loadMidClassMap()`ï¼:2313ï¼åªè£ äºãå ¬è·¯ç线ããåé åä¹¡å ¬äº¤ã两维ï¼**没æè£ 巡游åºç§ãç½çº¦è½¦**ã ### 1.3 ä¿®å¤æ¹åï¼å¾ 确认å宿½ï¼ - `loadMidClassMap()` è¡¥ `city_taxi_monthly`ï¼åé å乡巡游åºç§ï¼ä¸ç½çº¦è½¦åé å乡å£å¾ï¼ä¸¤å¤å£å¾ç»ä¸ã - `fillMonthlyLedger()` å¢å ãåå¸å®¢è¿ããä¸å£å¾æç»ã两页åå¡«ï¼`fillCityRows()`/å ¨çè¡è¡¥é½ï¼å ¨ç = 17 å¸å·ä¹åï¼ææ¹ç¨å®¢è¿å£å¾çå ¨çå¼ï¼ã - `exportPassengerMidRank()` å ¨çè¡æ¹ä¸ºåæ°å¼ï¼æåå ¥åè°ç¨ `recalc`ï¼ï¼å¹¶ç»ä¸åæ¯å£å¾ã --- ## äºãæèµãå ¨çé¢å®æè®¡åè¿åº¦æ 嵿±æ»ã导åºä¸ºç©º ### 2.1 第ä¸å±åå ï¼å¯¼åºçæ¯ **7 æ**ï¼ä¸æ¯ 8 æ ç¨æ·æ¡é¢æä»¶ `D:\æ¡é¢\çææ°æ®\çæ_å ¨çé¢å®æè®¡åè¿åº¦æ 嵿±æ» (1).xls`ï¼ä»å¤© 15:16ï¼ä¸æ¬å°ç¨ `period=2026-07` è° `/api/report/export/investPlan` 导åºçæä»¶ **åèå®å ¨ç¸å**ï¼ ``` SHA256 æ¡é¢ä»¶ = B38F90F35FEF7CF6C667D7EE68C79D6BC160E3706C70DEBDDB993914D4AD88E6 SHA256 7æå¯¼åº = B38F90F35FEF7CF6C667D7EE68C79D6BC160E3706C70DEBDDB993914D4AD88E6 ``` ä½è¯ï¼è¯¥æä»¶è¡¨å¤´åçæ¯ `1-7æç´¯è®¡å®ææèµ`ï¼åè®¡è¡ `H6=2106760.05 / I6=1188542.01 / J6=310523.2 / W6=123170.96` æ£å¥½çäºåºå 2026-07 çå计 ï¼2026-07ï¼start_cum 1188542.01ãyear_plan 310523.2ãyear_cum 123170.96ï¼ã ç¨ 2026-08 鿰坼åºçæä»¶ï¼164,864 Bï¼è¡¨å¤´ä¸º `1-8æç´¯è®¡å®ææèµ`ï¼å计 `H6=11108628.86 / I6=3218801.57 / J6=1273968.2 / W6=744262.86`ï¼ä¸åºä¸è´ â **æä»½é对就æ£å¸¸**ã ### 2.2 第äºå±åå ï¼å³ä½¿æä»½å¯¹äºï¼è¿äºåä¹åªè½æ¯ç©ºç `模æ¿_å ¨çé¢å®æè®¡åè¿åº¦æ 嵿±æ».xls` æ 28 åï¼å¯¼åºåªè½å¡« 16 åãéå对æ¯ï¼`_qa_out/cmp_8æ_vs_æ¯ç.txt`ï¼ï¼ | 空å | 表头 | åå | |---|---|---| | C | å¿ï¼å¸ãåºï¼ | `investment_project.county` **184 个项ç®å ¨ä¸º NULL** â å¯¼å ¥æ²¡æè¿ä¸åï¼æºè¡¨éæ¯æçï¼å¯ä¿®ï¼ | | K / L / M | é¨èµé / çèµé / ä¼ä¸åå°æ¹èªç¹ | æ°æ®åº**æ æ¤å段**ï¼`DataImportService.findInvestHeader()` æªæ å° | | O / P / Q | 2026年建议计åï¼å计/é¨çæèµ/主è¦å»ºè®¾å å®¹ï¼ | åä¸ï¼æ åæ®µ | | R / S / T | 2027年建议计åï¼å计/é¨çæèµ/主è¦å»ºè®¾å å®¹ï¼ | åä¸ï¼æ åæ®µ | | Y / Z | çè¡¥èµé / 项ç®å¤æ³¨ | åä¸ï¼æ åæ®µ | 妿 2 å¤**è¯ä¹éä½**ï¼ä¸æ¯ç©ºï¼æ¯å¡«éäºæ ¼ï¼ï¼ - N åï¼æ¨¡æ¿=ã2026年计å-计åè¿åº¦ãï¼è¢«åæäº `progress_desc`ï¼å½¢è±¡è¿åº¦é¿ææ¬ï¼ï¼ - X åï¼æ¨¡æ¿=ãå®é è¿åº¦ãï¼æ¯çæ¯"å¨å»º/å®å·¥"ï¼é¡¹ç®è¡å `progress_stage`ã**å计è¡å´åå®æçæ¯ä¾**ï¼0.3967 / 0.5842ï¼ã è§ `ReportExportService.fillInvestPlanProjectRow()` :5059 ä¸ `writeInvestAggHssf()` :5263ã ### 2.3 ç»è®º é¢å®ææ±æ»ãå¾å¤ææ 空ç½ã= ä¸ä»¶äºå å ï¼ 1. å¯¼åºæ¶æä»½éæäº 7 æï¼æä»¶éè½ç´æ¥çåºæ¥ï¼ï¼ 2. å¯¼å ¥æ²¡æ C åï¼å¿å¸åºï¼ââå¯ä¿®ï¼ 3. èµéæ¥æºã建议计åãçè¡¥èµéã夿³¨è¿ 4 ç±»åæ®µ**æ°æ®åºä»å»ºè¡¨èµ·å°±æ²¡æ**ï¼ä¸è¡¥è¡¨ç»æ/å¯¼å ¥æ å°æ°¸è¿å¡«ä¸ä¸ã --- ## ä¸ãæèµãXæç©æµç«åºæèµæç»ããXæå®¢è¿ç«æèµæç»è¡¨ãï¼æ¥è¡¨çæç颿°å¢ï¼ 模æ¿å·²åå¨ï¼ - `docs/æèµ/模æ¿/模æ¿_Xæå®¢è¿ç«æèµæç»è¡¨.xlsx`ï¼æç» + æ±æ»ä¸¤é¡µï¼æå¸å·åãä¸ã使ç¨äº¤éé¨è½¦è´ç¨èµé建设项ç®ï¼äºã使ç¨ççæ²¹ç¨è¿è¿èµé建设项ç®ï¼ä¸ãåæç»¼åè¿è¾æå¡ç«ï¼åãå车äºãååï¼ - `docs/æèµ/模æ¿/模æ¿_Xæç©æµç«åºæèµæç».xls`ï¼æ2 ç表 + åé¡¹ç®æèµå®ææ åµ + åå¸å·è§åå å¤é¡¹ç®å®ææ åµ + 第 4 é¡µï¼ **黿ç¹ï¼å¯¼å ¥æãåç»è¡ã丢æäºã** `DataImportService` :2465 æç¡®è·³è¿ `^[ä¸äºä¸åäºå ä¸å «ä¹å]+ã.*` çè¡ï¼èè¿ä¸¤å¼ è¡¨æ°æ°è¦é è¿è¡å³å®é¡¹ç®è½å¨åªä¸ªèµéæ¸ é/è§åå å¤åã `docs/æèµ/è¾åº/æ ¼å¼æ¢æµ_2026-07.tsv` æ¾ç¤ºæºæä»¶éè¿äºåç»è¡æ¯åå¨çï¼å¦ `R12 | ä¸ã使ç¨äº¤éé¨è½¦è´ç¨èµé建设项ç®`ï¼ã è¦è½å°å¿ é¡»å å 3 æ¥ï¼ 1. `investment_project` å¢å `fund_channel`ï¼èµéæ¸ é/åç»æ ç¾ï¼ï¼å®ä½å åæ®µï¼ 2. å¯¼å ¥æ¶ä¸åè·³è¿åç»è¡ï¼æ¹ä¸ºè®°å½ãå½ååç»ãå¹¶åå°å ¶åç项ç®ä¸ï¼ 3. éæ°å¯¼å ¥ 7 æã8 ææ°æ®åï¼ååè¿ä¸¤å¼ 表ççæå¨ï¼æå¸å· + åç»å¨ææè¡ãéè¿æ±æ»é¡µå ¬å¼ï¼ã > 说æï¼å¨æ²¡æ `fund_channel` ä¹å强è¡çæï¼åªè½æææé¡¹ç®å¡è¿æä¸ªåéï¼ä¸æ¯çå£å¾ä¸ç¬¦ï¼æ å ä¸åã --- ## åãæ°æ®æ¥çé¡µè°æ´ï¼å·²æ¹ä»£ç ï¼ - `traffic-audit-web/src/views/DataView.vue`ï¼æ**æ¥è¡¨æ**ä»ãæ°æ®ç±»åãåé¢ç§»å°**åé¢**ï¼æ°å¢ãæèµããè½èã两个åç» ï¼æèµï¼æèµé¡¹ç®åºç¡è¡¨ / å¸å·ææ¥é¡¹ç®è¿åº¦ / æèµç³»ç»æ¯æå¯¼å ¥é¡¹ç®è¡¨ï¼è½èï¼è½¦è¾è½èå£åº¦æ°æ® / è½èè¿æ¿è½¦è¾æ°ï¼ã - `traffic-audit-server/.../dataimport/controller/DataViewController.java`ï¼æ°å¢ `investmentMonthly`ã`investmentProject`ã `investmentSystem`ã`energyVehicle`ã`energyAuth` äºç±»æ¥è¯¢ä¸åå®ä¹ï¼`mvn -o compile` éè¿ã - **ç¶æ**ï¼ä»£ç å·²æ¹å¹¶ç¼è¯éè¿ï¼ä½**å°æªéå¯å端**ï¼æä»¥ 8090 ä¸è¿æ¯æ§é»è¾ï¼éå¯åçæã --- ## äºãå ¶ä»æ³¨æç¹ - æ±æ»å¤§è¡¨æ¯çï¼`docs/çææ±æ»å¤§è¡¨/2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨.xlsx` åå¨ï¼ä½ `_å¤ä»½_2026å¹´8æâ¦` åæå¤ä»½æ¯ç**ä¸åå¨**ï¼ æ¥å¿ä¼æ `WARN æ±æ»å·¥ä½ç°¿æªæ¾å°åæå¤ä»½æ¯ç`ï¼è¿ä¹æ¯è¿äºé¡µç¾ 8 æä¸é½çä¸ä¸ªèæ¯å ç´ ã - ä¸å£å¾æåçãå ¨ç â 17 å¸å·ä¹åãï¼1~8 æï¼27524.49 vs 24481.74ï¼ï¼å±äº**å£å¾é®é¢**ï¼éè¦ä¸å¡ç¡®è®¤å ¨çå°åºæåªä¸ªå£å¾åã traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java
@@ -14,6 +14,11 @@ import com.trafficaudit.dataimport.entity.ScaleSplitTransport; import com.trafficaudit.dataimport.entity.TransportAuthVehicle; import com.trafficaudit.dataimport.entity.VehicleTrackMileage; import com.trafficaudit.dataimport.entity.InvestmentMonthly; import com.trafficaudit.dataimport.entity.InvestmentProject; import com.trafficaudit.dataimport.entity.InvestmentSystem; import com.trafficaudit.dataimport.entity.EnergyVehicleQuarterly; import com.trafficaudit.dataimport.entity.EnergyAuthVehicle; import com.trafficaudit.dataimport.mapper.FreightTurnoverImportMapper; import com.trafficaudit.dataimport.mapper.H2032EnterpriseMonthlyMapper; import com.trafficaudit.dataimport.mapper.PassengerAuthVehicleMapper; @@ -24,6 +29,11 @@ import com.trafficaudit.dataimport.mapper.ScaleSplitTransportMapper; import com.trafficaudit.dataimport.mapper.TransportAuthVehicleMapper; import com.trafficaudit.dataimport.mapper.VehicleTrackMileageMapper; import com.trafficaudit.dataimport.mapper.InvestmentMonthlyMapper; import com.trafficaudit.dataimport.mapper.InvestmentProjectMapper; import com.trafficaudit.dataimport.mapper.InvestmentSystemMapper; import com.trafficaudit.dataimport.mapper.EnergyVehicleQuarterlyMapper; import com.trafficaudit.dataimport.mapper.EnergyAuthVehicleMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -64,6 +74,16 @@ private CityTaxiMonthlyMapper cityTaxiMapper; @Resource private CityTaxiAuthMapper cityTaxiAuthMapper; @Resource private InvestmentMonthlyMapper investmentMonthlyMapper; @Resource private InvestmentProjectMapper investmentProjectMapper; @Resource private InvestmentSystemMapper investmentSystemMapper; @Resource private EnergyVehicleQuarterlyMapper energyVehicleMapper; @Resource private EnergyAuthVehicleMapper energyAuthMapper; @GetMapping("/list") public Result<Map<String, Object>> list(@RequestParam("type") String type, @@ -199,6 +219,76 @@ fillPage(result, r); break; } case "investmentMonthly": { java.util.List<Long> pids = new ArrayList<>(); if (!kw.isEmpty()) { for (InvestmentProject ip : investmentProjectMapper.selectList( new LambdaQueryWrapper<InvestmentProject>().like(InvestmentProject::getProjectName, kw))) { pids.add(ip.getId()); } if (pids.isEmpty()) { result.put("records", new ArrayList<>()); result.put("total", 0L); result.put("current", safePage); result.put("size", safeSize); break; } } LambdaQueryWrapper<InvestmentMonthly> w = new LambdaQueryWrapper<InvestmentMonthly>() .eq(notEmpty(period), InvestmentMonthly::getReportPeriod, period) .in(!pids.isEmpty(), InvestmentMonthly::getProjectId, pids) .orderByAsc(InvestmentMonthly::getProjectId) .orderByAsc(InvestmentMonthly::getId); Page<InvestmentMonthly> p = new Page<>(safePage, safeSize); Page<InvestmentMonthly> r = investmentMonthlyMapper.selectPage(p, w); result.put("records", toMaps(r.getRecords(), propsOf(INVEST_MONTHLY_COLUMNS))); fillPage(result, r); break; } case "investmentProject": { LambdaQueryWrapper<InvestmentProject> w = new LambdaQueryWrapper<InvestmentProject>() .like(!kw.isEmpty(), InvestmentProject::getProjectName, kw) .orderByAsc(InvestmentProject::getCity) .orderByAsc(InvestmentProject::getId); Page<InvestmentProject> p = new Page<>(safePage, safeSize); Page<InvestmentProject> r = investmentProjectMapper.selectPage(p, w); result.put("records", toMaps(r.getRecords(), propsOf(INVEST_PROJECT_COLUMNS))); fillPage(result, r); break; } case "investmentSystem": { LambdaQueryWrapper<InvestmentSystem> w = new LambdaQueryWrapper<InvestmentSystem>() .eq(notEmpty(period), InvestmentSystem::getReportPeriod, period) .like(!kw.isEmpty(), InvestmentSystem::getProjectName, kw) .orderByDesc(InvestmentSystem::getId); Page<InvestmentSystem> p = new Page<>(safePage, safeSize); Page<InvestmentSystem> r = investmentSystemMapper.selectPage(p, w); result.put("records", toMaps(r.getRecords(), propsOf(INVEST_SYSTEM_COLUMNS))); fillPage(result, r); break; } case "energyVehicle": { LambdaQueryWrapper<EnergyVehicleQuarterly> w = new LambdaQueryWrapper<EnergyVehicleQuarterly>() .eq(notEmpty(period), EnergyVehicleQuarterly::getReportPeriod, period) .like(!kw.isEmpty(), EnergyVehicleQuarterly::getEnterpriseName, kw) .orderByDesc(EnergyVehicleQuarterly::getId); Page<EnergyVehicleQuarterly> p = new Page<>(safePage, safeSize); Page<EnergyVehicleQuarterly> r = energyVehicleMapper.selectPage(p, w); result.put("records", toMaps(r.getRecords(), propsOf(ENERGY_VEHICLE_COLUMNS))); fillPage(result, r); break; } case "energyAuth": { LambdaQueryWrapper<EnergyAuthVehicle> w = new LambdaQueryWrapper<EnergyAuthVehicle>() .eq(notEmpty(period), EnergyAuthVehicle::getReportPeriod, period) .like(!kw.isEmpty(), EnergyAuthVehicle::getPlateNo, kw) .orderByDesc(EnergyAuthVehicle::getId); Page<EnergyAuthVehicle> p = new Page<>(safePage, safeSize); Page<EnergyAuthVehicle> r = energyAuthMapper.selectPage(p, w); result.put("records", toMaps(r.getRecords(), propsOf(ENERGY_AUTH_COLUMNS))); fillPage(result, r); break; } default: result.put("records", new ArrayList<>()); result.put("total", 0L); @@ -251,6 +341,11 @@ case "cityTaxi": return TAXI_COLUMNS; case "cityTaxiAuth": return TAXI_AUTH_COLUMNS; case "passengerAuth": return PAUTH_COLUMNS; case "investmentMonthly": return INVEST_MONTHLY_COLUMNS; case "investmentProject": return INVEST_PROJECT_COLUMNS; case "investmentSystem": return INVEST_SYSTEM_COLUMNS; case "energyVehicle": return ENERGY_VEHICLE_COLUMNS; case "energyAuth": return ENERGY_AUTH_COLUMNS; default: return new ArrayList<>(); } } @@ -274,6 +369,11 @@ private static final List<Map<String, Object>> BUS_COLUMNS = new ArrayList<>(); private static final List<Map<String, Object>> TAXI_COLUMNS = new ArrayList<>(); private static final List<Map<String, Object>> TAXI_AUTH_COLUMNS = new ArrayList<>(); private static final List<Map<String, Object>> INVEST_MONTHLY_COLUMNS = new ArrayList<>(); private static final List<Map<String, Object>> INVEST_PROJECT_COLUMNS = new ArrayList<>(); private static final List<Map<String, Object>> INVEST_SYSTEM_COLUMNS = new ArrayList<>(); private static final List<Map<String, Object>> ENERGY_VEHICLE_COLUMNS = new ArrayList<>(); private static final List<Map<String, Object>> ENERGY_AUTH_COLUMNS = new ArrayList<>(); static { H2032_COLUMNS.add(col("reportPeriod", "æ¥è¡¨æ", 100)); @@ -447,5 +547,62 @@ PAUTH_COLUMNS.add(col("enterpriseName", "ä¼ä¸åç§°", 240)); PAUTH_COLUMNS.add(col("vehicleCount", "è½¦è¾æ°", 100)); PAUTH_COLUMNS.add(col("seatCount", "è½½å®¢ä½æ°", 100)); INVEST_MONTHLY_COLUMNS.add(col("reportPeriod", "æ¥è¡¨æ", 100)); INVEST_MONTHLY_COLUMNS.add(col("projectId", "项ç®ID", 80)); INVEST_MONTHLY_COLUMNS.add(col("yearPlan", "æ¬å¹´è®¡åæèµ(ä¸å )", 140)); INVEST_MONTHLY_COLUMNS.add(col("yearCum", "èªå¹´åç´¯è®¡å®æ(ä¸å )", 160)); INVEST_MONTHLY_COLUMNS.add(col("monthDone", "æ¬æå®ææèµ(ä¸å )", 150)); INVEST_MONTHLY_COLUMNS.add(col("startCum", "èªå¼å§å»ºè®¾ç´¯è®¡å®æ(ä¸å )", 180)); INVEST_MONTHLY_COLUMNS.add(col("progressStage", "å»ºè®¾é¶æ®µ", 120)); INVEST_MONTHLY_COLUMNS.add(col("progressDesc", "形象è¿åº¦", 320)); INVEST_MONTHLY_COLUMNS.add(col("buildingArea", "建çé¢ç§¯", 110)); INVEST_PROJECT_COLUMNS.add(col("projectName", "项ç®åç§°", 260)); INVEST_PROJECT_COLUMNS.add(col("category", "ç±»å«", 100)); INVEST_PROJECT_COLUMNS.add(col("city", "å¸å·", 90)); INVEST_PROJECT_COLUMNS.add(col("county", "å¿ï¼å¸ãåºï¼", 120)); INVEST_PROJECT_COLUMNS.add(col("builderName", "建设åä½", 200)); INVEST_PROJECT_COLUMNS.add(col("constructNature", "建设æ§è´¨", 100)); INVEST_PROJECT_COLUMNS.add(col("startTime", "å¼å·¥å¹´", 90)); INVEST_PROJECT_COLUMNS.add(col("endTime", "å®å·¥å¹´", 90)); INVEST_PROJECT_COLUMNS.add(col("totalInvestment", "æ»æèµ(ä¸å )", 130)); INVEST_PROJECT_COLUMNS.add(col("buildingArea", "建çé¢ç§¯", 110)); INVEST_PROJECT_COLUMNS.add(col("approvalGk", "å·¥å¯ææ ¸åæ¹å¤æå·", 200)); INVEST_PROJECT_COLUMNS.add(col("approvalCs", "åè®¾ææ½å·¥å¾æ¹å¤æå·", 200)); INVEST_PROJECT_COLUMNS.add(col("source", "æ¥æº", 100)); INVEST_SYSTEM_COLUMNS.add(col("reportPeriod", "æ¥è¡¨æ", 100)); INVEST_SYSTEM_COLUMNS.add(col("projectName", "项ç®åç§°", 260)); INVEST_SYSTEM_COLUMNS.add(col("totalInvestment", "æ»æèµ(ä¸å )", 130)); INVEST_SYSTEM_COLUMNS.add(col("startCum", "èªå¼å§å»ºè®¾ç´¯è®¡å®æ(ä¸å )", 180)); INVEST_SYSTEM_COLUMNS.add(col("yearPlan", "æ¬å¹´è®¡åæèµ(ä¸å )", 140)); INVEST_SYSTEM_COLUMNS.add(col("yearCum", "èªå¹´åç´¯è®¡å®æ(ä¸å )", 160)); INVEST_SYSTEM_COLUMNS.add(col("monthDone", "æ¬æå®ææèµ(ä¸å )", 150)); ENERGY_VEHICLE_COLUMNS.add(col("reportPeriod", "æ¥è¡¨æ", 100)); ENERGY_VEHICLE_COLUMNS.add(col("regionCode", "æå±å°åº", 100)); ENERGY_VEHICLE_COLUMNS.add(col("enterpriseName", "ä¼ä¸åç§°", 220)); ENERGY_VEHICLE_COLUMNS.add(col("plateNo", "车çå·", 110)); ENERGY_VEHICLE_COLUMNS.add(col("vehicleType", "车è¾ç±»å", 130)); ENERGY_VEHICLE_COLUMNS.add(col("fuelType", "çæç±»å", 110)); ENERGY_VEHICLE_COLUMNS.add(col("manufactureYear", "åºå年份", 100)); ENERGY_VEHICLE_COLUMNS.add(col("markedTonnage", "æ è®°å¨ä½", 100)); ENERGY_VEHICLE_COLUMNS.add(col("totalMileage", "æ»è¡é©¶éç¨(å ¬é)", 150)); ENERGY_VEHICLE_COLUMNS.add(col("loadedMileage", "éè½½éç¨(å ¬é)", 140)); ENERGY_VEHICLE_COLUMNS.add(col("emptyMileage", "空载éç¨(å ¬é)", 140)); ENERGY_VEHICLE_COLUMNS.add(col("freight", "è´§è¿é(å¨)", 120)); ENERGY_VEHICLE_COLUMNS.add(col("turnover", "å¨è½¬é(å¨å ¬é)", 140)); ENERGY_VEHICLE_COLUMNS.add(col("tripCount", "车次", 90)); ENERGY_VEHICLE_COLUMNS.add(col("fuelUnit", "çæåä½", 100)); ENERGY_VEHICLE_COLUMNS.add(col("fuelConsumption", "çææ¶èé", 120)); ENERGY_VEHICLE_COLUMNS.add(col("avgDistance", "å¹³åè¿è·", 110)); ENERGY_VEHICLE_COLUMNS.add(col("avgLoadedTonnage", "å¹³åè½½éå¨ä½", 130)); ENERGY_VEHICLE_COLUMNS.add(col("avgTripMileage", "å¹³å车次éç¨", 130)); ENERGY_VEHICLE_COLUMNS.add(col("fuelPer100km", "ç¾å ¬éæ²¹è", 120)); ENERGY_VEHICLE_COLUMNS.add(col("turnoverFuel", "å¨è½¬éæ²¹è", 120)); ENERGY_AUTH_COLUMNS.add(col("reportPeriod", "æ¥è¡¨æ", 100)); ENERGY_AUTH_COLUMNS.add(col("plateNo", "车çå·", 110)); ENERGY_AUTH_COLUMNS.add(col("vehicleType", "车è¾ç±»å", 130)); ENERGY_AUTH_COLUMNS.add(col("fuelType", "çæç±»å", 110)); ENERGY_AUTH_COLUMNS.add(col("markedTonnage", "æ è®°å¨ä½", 100)); ENERGY_AUTH_COLUMNS.add(col("tractionQuality", "çµå¼è´¨é", 110)); } } traffic-audit-web/src/views/DataView.vue
@@ -17,6 +17,9 @@ <el-main> <h3>å¯¼å ¥æ°æ®æ¥ç</h3> <div class="toolbar"> <span class="toolbar-label">æ¥è¡¨æ</span> <el-date-picker v-model="period" type="month" placeholder="æ¥è¡¨æï¼å ¨é¨ï¼" value-format="yyyy-MM" clearable style="width:150px" @change="doQuery"></el-date-picker> <span class="toolbar-sep"></span> <span class="toolbar-label">æ°æ®ç±»å</span> <el-radio-group v-model="activeModule" size="small" @change="onModuleChange"> <el-radio-button v-for="g in modules" :key="g.key" :label="g.key">{{ g.name }}</el-radio-button> @@ -26,8 +29,6 @@ <el-option v-for="t in activeTypes.types" :key="t.value" :label="t.label" :value="t.value"></el-option> </el-option-group> </el-select> <span class="toolbar-sep"></span> <el-date-picker v-model="period" type="month" placeholder="æ¥è¡¨æï¼å ¨é¨ï¼" value-format="yyyy-MM" clearable style="width:150px" @change="doQuery"></el-date-picker> <el-input v-model="keyword" placeholder="ä¼ä¸/å¸å·åç§°" clearable style="width:180px" @keyup.enter.native="doQuery"></el-input> <el-button type="primary" size="small" @click="doQuery">æ¥è¯¢</el-button> <el-button size="small" icon="el-icon-full-screen" @click="toggleFullscreen">å ¨å±æ¥ç</el-button> @@ -79,6 +80,19 @@ { value: 'cityTaxi', label: '巡游åºç§æ±½è½¦è¿è¥æå¡æ 嵿æ¥' }, { value: 'cityTaxiAuth', label: 'åºç§è½¦è¿æ¿è½¦è¾' } ] }, { key: 'invest', name: 'æèµ', types: [ { value: 'investmentProject', label: 'æèµé¡¹ç®åºç¡è¡¨' }, { value: 'investmentMonthly', label: 'å¸å·ææ¥é¡¹ç®è¿åº¦' }, { value: 'investmentSystem', label: 'æèµç³»ç»æ¯æå¯¼å ¥é¡¹ç®è¡¨' } ] }, { key: 'energy', name: 'è½è', types: [ { value: 'energyVehicle', label: '车è¾è½èå£åº¦æ°æ®' }, { value: 'energyAuth', label: 'è½èè¿æ¿è½¦è¾æ°' } ] } ], activeModule: 'freight',