11个文件已修改
1 文件已重命名
21个文件已添加
| New file |
| | |
| | | -- åå¸å®¢è¿ç½çº¦è½¦æåº¦è¾å
¥å»ºè¡¨ï¼2026-09-04ï¼ |
| | | -- æ°æ®æº1ï¼æ¨¡æ¿_ç½çº¦è½¦æ»æ°.xlsxï¼æåº¦å
¨ç pinï¼å®¢è¿é/å
¶ä¸åå¸å
/å¨è½¬é/å
¶ä¸åå¸å
å¨è½¬éï¼ |
| | | -- æ°æ®æº2ï¼æ¨¡æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxï¼æåº¦è¾å
¥é¡µï¼B-E å
¨ç pin + F 订åå计 + G-W 17å¸å·è®¢åï¼ |
| | | |
| | | CREATE TABLE IF NOT EXISTS wyc_total_monthly ( |
| | | id BIGINT NOT NULL AUTO_INCREMENT, |
| | | report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ yyyy-MM', |
| | | pin_k DOUBLE DEFAULT NULL COMMENT 'å
¨çç½çº¦è½¦å®¢è¿é(ä¸äººæ¬¡)', |
| | | pin_ck DOUBLE DEFAULT NULL COMMENT 'å
¶ä¸åå¸å
客è¿é', |
| | | pin_z DOUBLE DEFAULT NULL COMMENT 'å
¨ç客è¿å¨è½¬é(ä¸äººå
Ž)', |
| | | pin_cz DOUBLE DEFAULT NULL COMMENT 'å
¶ä¸åå¸å
å¨è½¬é', |
| | | created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
| | | PRIMARY KEY (id), |
| | | UNIQUE KEY uk_wyc_total_period (report_period) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç½çº¦è½¦æåº¦å
¨ç pin è¾å
¥'; |
| | | |
| | | CREATE TABLE IF NOT EXISTS wyc_order_monthly ( |
| | | id BIGINT NOT NULL AUTO_INCREMENT, |
| | | report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ yyyy-MM', |
| | | pin_k DOUBLE DEFAULT NULL, |
| | | pin_ck DOUBLE DEFAULT NULL, |
| | | pin_z DOUBLE DEFAULT NULL, |
| | | pin_cz DOUBLE DEFAULT NULL, |
| | | order_sum DOUBLE DEFAULT NULL COMMENT '订åå计ï¼åï¼', |
| | | order_wuhan DOUBLE DEFAULT NULL, |
| | | order_huangshi DOUBLE DEFAULT NULL, |
| | | order_shiyan DOUBLE DEFAULT NULL, |
| | | order_yichang DOUBLE DEFAULT NULL, |
| | | order_xiangyang DOUBLE DEFAULT NULL, |
| | | order_ezhou DOUBLE DEFAULT NULL, |
| | | order_jingmen DOUBLE DEFAULT NULL, |
| | | order_xiaogan DOUBLE DEFAULT NULL, |
| | | order_jingzhou DOUBLE DEFAULT NULL, |
| | | order_huanggang DOUBLE DEFAULT NULL, |
| | | order_xianning DOUBLE DEFAULT NULL, |
| | | order_suizhou DOUBLE DEFAULT NULL, |
| | | order_enshi DOUBLE DEFAULT NULL, |
| | | order_xiantao DOUBLE DEFAULT NULL, |
| | | order_qianjiang DOUBLE DEFAULT NULL, |
| | | order_tianmen DOUBLE DEFAULT NULL, |
| | | order_shennong DOUBLE DEFAULT NULL, |
| | | created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
| | | PRIMARY KEY (id), |
| | | UNIQUE KEY uk_wyc_order_period (report_period) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç½çº¦è½¦è®¢ååå
¨çæ»éæåº¦è¾å
¥'; |
| New file |
| | |
| | | # ä¸å交ä»å·¥ä½æ¸
åï¼2026-09-04ï¼ |
| | | |
| | | > **表åé
读约å®**ï¼æ¬æãâ¦â¦ãå为**ä¸å¡ä¸æå**ï¼å¯ç´æ¥çæï¼ï¼ç¨åºæ°æ®åºéçè±æè¡¨åï¼å¦ scale_split_transportï¼åªç»å¼å对ç
§ï¼ä¸å¡äººåä¸ç¨è®°ã宿´å¯¹ç
§è§ãè¾å
¥è¾åºä¸é»è¾å
³ç³»æ»è¡¨ã第 5 èã |
| | | |
| | | > 便®ï¼09-03 å¯ä¸æ»è¡¨ï¼docs/æ¥è¡¨çæ_å
³ç³»é»è¾ä¸æ¯æ¥è¿åº¦æ»è¡¨_2026-09-03.xlsxï¼Sheet3/Sheet4 颿 + 09-02 å¾
确认æ¸
å 16 项ï¼å·²éç¯çå·²åé¤ï¼ã |
| | | > ç¨æ³ï¼P0=ä¸å交ä»åå¿
é¡»éç¯ï¼P1=ä¸åå°½é宿ï¼P2=æä½åååãä¸å¡ç¨æ·å¨åºï¼å¡âå¾
确认â项å¯å½åºéæ¡ææ¿ã |
| | | > 说æï¼09-04 08:43 æ¯çï¼docs/çææ±æ»å¤§è¡¨/çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼ä»å¨ä¿®æ¹ä¸ï¼å¡ä¾èµæ¯ççå¨ä½å
ä¸å¦ä¸ä¼è¯å¯¹é½åå¨ã |
| | | |
| | | ## P0ï¼äº¤ä»é»æï¼ä¸åå¿
é¡»éç¯ï¼ |
| | | |
| | | ### 1.ãå¾
确认·请ä¸å¡éæ¡ææ¿ãæ±æ»å¤§è¡¨æ¯ç/å£å¾ 8 é® |
| | | | ç¼å· | ä¼å
级 | ä¸å¥è¯é®é¢ | ç°ç¶ | å¾å建议 | |
| | | |---|---|---|---|---| |
| | | | Q1 | P0 | æ¯ç 19 页çâæ°æ®åºè¡åè¾¹ç + æä»½æ©å° 12 æâè§åæä¹å®ï¼ | P2 å°è´¦å¡«å
çåç½® | å
åºå® 2026 çå¼âè¡åæ å°è¡¨âï¼ç¨åºæææ©å C..O/Q | |
| | | | Q2 | P0 | 2025/2024 åèåä¸åæ¯æä¹å¤çï¼ | 2025 åæåºå
æ æ°æ® | ä¿çæ¯çç¼åå¼ï¼å·²è¯è·ï¼ï¼2024 åéèä¸å å·¥ | |
| | | | Q11 | P0 | æ¯æçææµç¨ï¼ç±ç¨åºææå¤å¶+æ©åï¼è¿æ¯æ¯æäººå·¥æ¾å½ææ¯çï¼ | ç°ä¸ºä¸¥æ ¼å¹é
彿æ¯çãç¼ºææ¥é | ç¨åºææå¤å¶æ©åï¼è¿å
¥ Q1 è¡åè§åï¼ | |
| | | | Q7 | P0 | åå¸å®¢è¿æå页âç½çº¦è½¦åâæ¬æè¦ä¸è¦å¡«ï¼ | æå表已å¯ç¨ï¼æ¥å
¥æ¹æ¡æªå® | æåè¾åºâå°è´¦é¡µâæå页å
¬å¼èªå¨æ±æ» | |
| | | | Q8 | P0 | åºç§âåå¸å
âå£å¾ä¸ U402 䏿¥å£å¾æ¯å¦ä¸è´ï¼ | åºå
passenger_city<æ»éï¼æ¦æ±é¤å¤ï¼ | 以 U402 䏿¥å段为åï¼å乡线路å£å¾å·®å¼é说æ | |
| | | | Q3 | P1 | å¯è§é¡µ #REF! ç¨ç¨åºæ¸
ç©ºè¿æ¯äººå·¥å¨æ¯çæ¸
é¤ï¼ | ä¸å£å¾æç»/è´§è¿/ç线å
车ç仿®ç | æ¯çå®ç¨¿æ¶äººå·¥æ¸
ä¸é + ç¨åºå¯¹æ±å¼å¤±è´¥æ ¼å
åºæ¸
空 | |
| | | | Q4 | P1 | 轨é/轮渡æåº¦ 1-5 ææ°æ®æ¯å¦ææä»¶å¯è¡¥å
¥åºï¼ | åºå
ä»
6/7 æ | è½è¡¥åè¡¥ï¼ä¸è½åæ±æ»è¡¨è¯¥é¡µå
å¡« 6-7 æ | |
| | | | Q6 | P1 | å
¬äº¤â客è¿é忝/ç¯æ¯ 0%âè¦ä¸è¦ç«å®¡æ ¸è§åæ¦æªï¼ | #9 å¾
åï¼çå£å¾é®é¢ | å âè¶å¿ä¸è´/ä¸ä¸º 0 å¼å¸¸âè§åè¿å
¬äº¤/åºç§å®¡æ ¸ | |
| | | |
| | | 产åºï¼æ¬è¡¨å½åºæå¾ â åæ¥æ´æ°å¯ä¸æ»è¡¨ Sheet3 ç¶æ + docs/å¾
ä¸å¡ç¨æ·ç¡®è®¤æ¸
å_2026-09-02.mdã |
| | | ### 09-04 ä¸åææ¿è®°å½ï¼ä¸å¡å£å¤´çå¤ï¼å¾
å½å
¥å¯ä¸æ»è¡¨ Sheet3ï¼ |
| | | | ç¼å· | ææ¿ç»æ | 对åºè¡¨/页ç¾ï¼æ¶é¤âQå æåªä¸ªè¡¨âæ§ä¹ï¼ | |
| | | |---|---|---| |
| | | | Q1 | éææ©å±ï¼ç¨åºææå¤å¶æ¯çå¹¶éææ©åï¼2026 å¼å C..O/Q æ©å° 12 æï¼ | ã2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxãæ´æ¬ 19 页ï¼å°è´¦é¡µ/åæé¡µ/æå页ç»ä¸çå¼ï¼ | |
| | | | Q11 | æ¯çç¨åºå¤å¶ï¼æ¯æç±ç¨åºå¤å¶å½ææ¯çï¼ä¸å人工æ¾å½ææ¯ç | åä¸ï¼summaryWorkbook çæé»è¾ï¼ | |
| | | | Q2 | ä¿çæ¯çç¼åï¼2025 åæåä¿çæ¯çç¼åå¼ï¼2024 åèåä¸å å·¥ | å页å³ä¾§ 2025 åæåï¼T..AP åï¼ï¼2024 åæ´æ©è¾
å©åï¼å¦ä¸å£å¾æç» AUãç线å
车 IJ/JW/JFï¼ | |
| | | | Q7 | æ¬æè¦å¡«ï¼ç½çº¦è½¦åå¡«å¼ï¼æåè¾åºâå°è´¦é¡µâæå页å
¬å¼æ±æ»ï¼ | ç½çº¦è½¦å°è´¦é¡µ â åå¸å®¢è¿é¡µ â å叿±æ»/åå¸åå¸å·æå页ï¼2026-07 ç½çº¦è½¦ 4852.30/4430.84/421.46ï¼ | |
| | | | Q8 | å£å¾ä¸è´ï¼åºç§âå
¶ä¸åå¸å
âä¸ U402 䏿¥å£å¾ä¸è´ | åºç§å°è´¦é¡µ r7/r8âå
¶ä¸åå¸å
âè¡ï¼æ°æ®æº ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ã.passenger_city | |
| | | | Q3 | ææ¿ï¼ä¸æ¸
空ï¼ä¿ç #REF! ä¾äººå·¥åç»æ ¸æ¥ï¼ç¨åºä¸åæ¸
空å
åºï¼æ«ææ¸
åå³å¯ï¼ | æ¯ç 4 个å¯è§é¡µè¿å¤æé¾æ ¼ï¼ä¸å£å¾æç» AU4/AU97ãè´§è¿ BQ108ãç线å
车 IJ4/IJ5/JW4/JW5/JF28/JF29 | |
| | | | Q4 | ææ¿ï¼è½¨é/轮渡 1-5 æå
ç¨ãéè·¯è¿è¾éæ±æ»è¡¨ãæ¯çå
å·²æå¼ï¼åå§æ°æ®åç»å¯¼å
¥ååä¿®æ£ | 轨é轮渡å°è´¦é¡µï¼è½¨éï¼å
¨ç/æ¦æ±/é»ç³ï¼è½®æ¸¡ï¼å
¨ç/æ¦æ±ï¼ï¼æ°æ®æº ãåå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµè¡¨ã(å
¬äº¤ææ¥)ï¼6/7 æï¼ | |
| | | |
| | | > 第äºè½®è¡¥å
å£å¾ï¼09-04 ä¸åï¼ï¼åæ¯/ç¯æ¯ææ¶ç´æ¥ç¨æ¯çå
2025 åææ°æ®ï¼ä¸éç®ä¸æ¿æ¢ï¼ï¼åå§ 2025 æ°æ®åç»å¯¼å
¥ååä¿®æ£ï¼è½¨é轮渡 1-5 æåæ¤å¤çï¼#REF! ä¿ç䏿¸
空ï¼å®¡æ ¸è§åç±»å
å»ç»ï¼å½å主线=导å
¥+æ¥è¡¨çæã |
| | | | Q6 | ææ¿ï¼å®¡æ ¸è§åç±»å
å
¨é¨å»ç»ï¼å«âå¢é为 0 éæ ¸å®âï¼å
¬äº¤/åºç§/è´§è¿/æ
客åï¼ï¼ä¼å
è§£å³å¯¼å
¥ä¸æ¥è¡¨çæ | å®¡æ ¸æ¨¡åï¼åå¸å
¬äº¤ææ¥ï¼CITY_BUSï¼ï¼ç°ç¶äºå®ï¼ä»
B001-B004ï¼2026-07 å®¡æ ¸ 0 å½ä¸ | |
| | | |
| | | ### 2.ãæ¥è¡¨çæãæ¯çå®ç¨¿æ ¸å¯¹ï¼ä¸å¦ä¸ä¼è¯å¯¹é½åååï¼ |
| | | - ç¡®è®¤ç©ºæ°æ®æ¯çæ¹æ¡è½å°ï¼09-03 å·²ææ¿ï¼å·¡æ¸¸åºç§çç¨â空æ¯ç+导åºå¡«å¼âï¼ã |
| | | - æ ¸å¯¹ `çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx`ï¼08:43 ä»å¨æ¹ï¼ï¼æ #REF!ã19 页å¯è§/éèé½å
¨ãè¡åæ å°ä¸ã页ç¾é»è¾å
³ç³»è¯´æ.mdãä¸è´ã |
| | | - 产åºï¼è¡åæ å°è¡¨å稿ï¼Q1 åç½®ç©ï¼ï¼ä¾ P2 ç¼ç ç¨ã |
| | | |
| | | ### 3.ãæ¥è¡¨çæã交ä»ååå½å¿«ç
§ï¼ææè¦æ¼ç¤ºç表ä»å¤©éè·ä¸éï¼ |
| | | - 22+ åè¡¨å¯¼åº + `summaryWorkbook 2026-07` + `wycSplit 2026-07` å
¨éé导åºå° `outputs/report_check/regression_2026-09-04/`ã |
| | | - æ ¡éªï¼æ¥å£å
¨ 200ï¼æ«æè¾åº #REF!/é误å
¬å¼ä½ç½®æ¸
åï¼ä¿çä¾äººå·¥æ ¸æ¥ï¼ä¸å 0 æè¨ï¼ï¼æ½æ¥å
³é®æ°å¼ï¼æ¦æ± 7 æè´§è¿ 4940.97ãå
¨ç 16285.71ãä¸ªä½ 189998/4584040.2ãåºç§ 5860.24/5351.24ãç½çº¦è½¦ 4852.30/4430.84ãæ±æ»è¡¨ 7 ææ ·ä¾ï¼ã |
| | | - 产åºï¼æ´æ°ã模ååè½éªè¯ç¶æç©éµ_2026-09-04ã+ãåè½æµè¯æ¥å_ä¸ååå½_2026-09-04.mdãã |
| | | |
| | | ### 4.ãGitãæ¶å°¾æ¨éï¼AGENTS å·²ææï¼ä¸å鿬¡è¯¢é®ï¼ |
| | | - `git fetch gitea` â ä¸è¿ç«¯ main 对æ¯/åå¹¶ï¼ç¦å¼ºæ¨ï¼â æ 09-03~09-04 代ç /ææ¡£ commit â push å
¬å¸ giteaã |
| | | |
| | | ## P1ï¼ä¸åå°½éå®æï¼ |
| | | |
| | | ### 5.ãæ±æ»å¤§è¡¨ãP2 å°è´¦é¡µå¡«å
æ¹æ¡ + 馿è¯å¡« |
| | | - å
åºå°è´¦é¡µï¼ç线å
车/å
¬äº¤/åºç§/ç½çº¦è½¦/轨é轮渡ï¼âæ°æ®æ¥æºâè¡æ å°âæä»½åå
¥âæ¹æ¡ææ¡£ï¼Q1/Q4 ææ¿åè¯å¡« 2026-07 ç线å
车/åºç§ä¸¤é¡µå¹¶ä¸åºå¼å¯¹ç
§ã |
| | | |
| | | ### 6.ãåå¸å®¢è¿ãæå页ç½çº¦è½¦åæ¥å
¥æ¹æ¡ï¼Q7ï¼ |
| | | - æå表ï¼wycSplitï¼â æ±æ»è¡¨å°è´¦é¡µ â åå¸å®¢è¿é¡µå
¬å¼èªå¨æ±æ»ï¼è¯è·ä¸é¡µæ ¸å¯¹ 4852.30/4430.84ã |
| | | |
| | | ### 7.ã导å
¥ã大æä»¶å¯¼å
¥è¿åº¦âå·²å¤ç N/M è¡â宿¶æ¾ç¤ºï¼å¾
å #16/Q10ï¼ |
| | | - å端导å
¥æ¥å£å è¿åº¦ç¶æ/轮询端ç¹ï¼å
H2032/è¿æ¿/轨迹/åºç§è¿æ¿ä»»ä¸æ¡ï¼ï¼å端æ¯è¡æ¾ç¤ºâå¤çä¸ i/Nâã |
| | | - æµè¯ï¼4.2 ä¸è¡çå®åºç§è¿æ¿æä»¶å¤ç°åâæ æ¾ç¤ºâï¼åéªè¯æ°è¿åº¦æ¾ç¤ºï¼ååè½æµè¯æ¥åã |
| | | |
| | | ### 8.ãå
¬è·¯æ
客ãä¸å£å¾æç» 7-12 ææ©åå¡«å
ï¼ä¾èµ Q1 æ©åè§åï¼ |
| | | - æ©åè§åå®åææ¨¡æ¿åä½è¡¥å 8-12 æï¼SQL èå对ç
§æµè¯ã |
| | | |
| | | ### 9.ãå®¡æ ¸ãå®¡æ ¸é¾è·¯æ¼ç¤ºåå½ï¼ä¸åè¦è®²å®¡æ ¸ï¼å
èªæµï¼ |
| | | - è³å°è· H2032ãCITY_BUSãCITY_TAXIãINVEST å䏿ï¼å¯¼å
¥âè§åå®¡æ ¸ï¼/api/audit/executeï¼âç»æå表âï¼AI åæè¥å¯æ¼ç¤ºï¼â è®°å½å½ä¸/éè¿æ°ä¸æªå¾ä½ç½®ã |
| | | - ç¹å«æ ¸å¯¹ Q6 ç¸å
³ï¼CITY_BUS æ¯å¦åå¨â客è¿éåæ¯ç¯æ¯ 0%â误æ¥ï¼ç¡®è®¤ I004 ä¿æ¤çæï¼æèµï¼ã |
| | | - 产åºï¼å®¡æ ¸åå½å°èå¹¶å
¥ä¸åå彿¥åã |
| | | |
| | | ### 10.ã导å
¥ã9-2 使£é®é¢ç¶ææ ¸æ¥ï¼ä¸æ©æ¹ï¼åªæ ¸ç¶æï¼ |
| | | - æ ¸å¯¹ï¼éæ³æ°å¼éé» 0 / 失败è¡å·è¡¥é½ / æ¹æ¬¡åå¡« / è¿æ¿è½¨è¿¹è¯¯å å®¡æ ¸ç»æââæ¯å¦å·²è¢« 9-2â导å
¥æ ¡éªå¢å¼ºâè¦çï¼ææªè¦ç项å¨é®é¢æ¸
åæ âæªä¿®/å¾
ææâï¼ä¸é»å¡äº¤ä»ã |
| | | |
| | | ## P2ï¼æä½åååï¼ |
| | | |
| | | ### 11.ãæèµãæèµå表 .xls è§£æå·¥å
·åå¤å¹¶éæ ¼æ«æï¼Q9ï¼ã |
| | | ### 12.ãè½èãè½èæ±æ»âç¼ºåæ¯âç¨çç©ºè¿æ¯âââå ä½ï¼å¹¶å
¥å¾
确认æ¸
åä¸èµ·é®ï¼ã |
| | | ### 13.ãææ¡£ãæ´æ°å¯ä¸æ»è¡¨ Sheet4ï¼09-04 宿è¡ï¼ä¸ã工使¥ç»_2026-09-04.mdãï¼ä¸çåï¼ã |
| | | |
| | | ## ä¸åäº¤ä»ææå
ï¼è¾¹åè¾¹å¤ï¼ |
| | | - æ±æ¥ä¸»çº¿ï¼å¯¼å
¥ï¼ç宿件 0 失败 + è¿åº¦æ¾ç¤ºï¼â å®¡æ ¸ï¼è§åå½ä¸æ¼ç¤ºï¼â æ¥è¡¨çæï¼22 表 + æ±æ»å¤§è¡¨éª¨æ¶/æ ·å¼ + ç½çº¦è½¦æå表ï¼â å·²ç¥ç¼ºå£ä¸å¾
åï¼è¯å®åï¼ã |
| | | - å¯ç¹å¼çè¯æ®ï¼docs/åè½æµè¯æ¥å/*_2026-09-03.mdãdocs/çææ±æ»å¤§è¡¨/*.mdãoutputs/report_check/regression_2026-09-04/ãå¯ä¸æ»è¡¨ xlsxãå¾
ä¸å¡ç¡®è®¤æ¸
å mdã |
| | | - ä¸å¥é£é©æç¤ºï¼æ¯ç/æ±æ»è¡¨ P2 å±âæ¹æ¡+骨æ¶âç¶æï¼éå
¨æ°æ®æåï¼ï¼äº¤ä»è¯æ¯æâ已宿ï¼19 é¡µæ´æ¬çæéª¨æ¶ï¼è¿è¡ä¸ï¼å°è´¦å¡«å
P2â表述ã |
| New file |
| | |
| | | # äº¤æ¥ææ¡£ï¼2026-09-04 ä¸åï¼ |
| | | |
| | | > ç¨éï¼ç»âå¦ä¸ä¸ªä¼è¯âç»§ç»å·¥ä½ç¨ãæ°ä¼è¯è¯·å
è¯»æ¬æ + `docs/çææ±æ»å¤§è¡¨/è¾å
¥è¾åºä¸é»è¾å
³ç³»æ»è¡¨_2026-09-03.md`ï¼åæææ«ãä¸ä¸æ¥ä¸å¾
ç¡®è®¤ãæ¨è¿ã |
| | | |
| | | ## 1 项ç®ä¸æ¥å¸¸è§èï¼AGENTS.md æè¦ï¼ |
| | | - 项ç®ï¼äº¤éç»è®¡å®¡æ ¸ç³»ç»ãå端 Spring Bootï¼traffic-audit-serverï¼ç«¯å£ 8090ï¼ï¼å端 Vue2+Elementï¼traffic-audit-webï¼ç«¯å£ 8080ï¼/api 代ç 8090ï¼ã |
| | | - å¯å¨ï¼æ ¹ç®å½ `powershell -NoProfile -ExecutionPolicy Bypass -File start-dev.ps1`ï¼é¡»å¨æ²ç®±å¤æ§è¡ï¼ï¼æåæ å¿ç backend.log / frontend.logã |
| | | - éå¯ï¼æ PID ç²¾ç¡®åæ§è¿ç¨åå¯å¨ï¼ä¸è¦æ node_replï¼MCP å
æ ¸ï¼åç¨æ·èªå·±å¼ç cmd çªå£ã |
| | | - æ°æ®åºï¼MySQL 127.0.0.1:3308ï¼åº traffic_auditï¼root/123456ã |
| | | - è§èï¼2026-09-02 èµ·ï¼ï¼æ¯å®æä¸ä¸ªåè½âæµè¯âå `docs/åè½æµè¯æ¥å/åè½æµè¯æ¥å_<åè½å>_<æ¥æ>.md`ï¼æ¯å¤©ä¸çå `docs/工使¥ç»/工使¥ç»_<æ¥æ>.md`ã |
| | | - gitï¼2026-09-03 ç¨æ·ææï¼æ éå鮿¯å¦æ¨éï¼ï¼æ¹å®âæµè¯/忥åâ`git fetch gitea` 对æ¯åå¹¶ï¼ç¦å¼ºæ¨ï¼âcommitâpush å
¬å¸ giteaï¼è´¦å· zyjï¼åæ®èµ°æ¬æºï¼ã |
| | | - 注æï¼å½åå·¥ä½åºå¾èï¼**åå¨å
¶ä»ä¼è¯æ£å¨æ¹ç代ç /ææ¡£**ï¼docs/åå¸å®¢è¿ çå é¤ä¸æ°å¢ãoutputs/ã_test_tmp/ã*.bakã*.zip çæªæäº¤ï¼ãæäº¤æ¶åª `git add` èªå·±æ¹çæä»¶ï¼ä¸è¦æ´å
æäº¤ã |
| | | |
| | | ## 2 ç¯å¢è¸©åè®°å½ |
| | | 1. Codex åè¿ç¨ PowerShell åæ¶æ Path ä¸ PATH 两个ç¯å¢åéï¼Start-Process/Get-Item env:Path 伿¥éï¼å¯å¨ä¸å¾ç¨ `cmd.exe /c ... > log 2>&1` æ¹å¼ã |
| | | 2. node 卿²ç®±å
è®¿é® C:\Users\jcxiong ä¼è¢«æï¼å¯å¨èæ¬å¿
é¡»æ²ç®±å¤æ§è¡ã |
| | | 3. apply_patch å½ä»¤å¨æ¬ä¼è¯ä¸å¯ç¨ï¼æ¥ Invalid patchï¼ãæ¹æä»¶ç¨ PowerShell `[System.IO.File]::WriteAllText/WriteAllLines` æ python åï¼UTF-8ï¼ã |
| | | 4. bundled python å¯è½ä¸é丢 pymysqlï¼ç¨ `python -m pip install pymysql` è£
åå³å¯ï¼mysql å½ä»¤è¡å¼å·æè¸©åï¼ä¼å
python+pymysqlã |
| | | 5. ç¨æ·ä¸´æ¶èæ¬/æä»¶æªç»åæä¸å ï¼å¯¼å
¥å¤±è´¥è¦å¨é¡µé¢æ¾ç¤ºè¡å·ã |
| | | |
| | | ## 3 ä»å¤©å·²å®æï¼2026-09-04ï¼ |
| | | - æ ¸å®ãæ±æ»è¡¨æ¯çã5 个æå页â7æå½æå=1-7累计åâé®é¢ï¼`docs/çææ±æ»å¤§è¡¨/æ±æ»è¡¨æ¯çæ°æ®ä½æ£ä¸å¾
å³çæ¸
å_2026-09-04.md`ï¼ï¼æ¹æ¡ A/B å¾
ç¨æ·ææ¿ã |
| | | - æ ¸å®è´§è¿âè§ä¸âå£å¾ï¼ä¸å¡ç¡®è®¤ï¼ï¼è§ä¸ = ãè´§è¿éå¨è½¬é表ãå
¨å£å¾ â ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-2) è§ä¸å计ï¼å¨è½¬éåå¼ï¼h2032 å使¯ å¨/å¨å
¬éï¼è¦å
÷10000ã |
| | | - 2026-07 å
¨é对账éè¿ï¼å
¨çè§ä¸ 3754.78ãå
¨å£å¾ 16285.71ãè§ä¸ 12530.93ï¼ä¸æ¯ç O7/O5/O9 å
¨çï¼17 å¸å·é项ä¸è´ï¼å¨è½¬éåå¼éªè¯ä¹éè¿ï¼æ¦æ±è§ä¸å¨è½¬é 462751.81=æ¯ç O16ï¼ã |
| | | - è½å° SQLï¼`docs/çææ±æ»å¤§è¡¨/è§ä¸è´§è¿éå£å¾_2026-09-04.sql`ï¼æ¥è¯¢1 åå¸å·ãæ¥è¯¢2 å
¨çæ ¡éªãæ¥è¯¢3 å¯éåå¡«=é»è®¤æ³¨éï¼ãå·²å¨åºéè·éã |
| | | - ææ¡£ä¸æåæ¹é ï¼ç¨æ·çä¸æè±æåºè¡¨åï¼ï¼æ»è¡¨ md §5-§8ã页ç¾é»è¾å
³ç³»è¯´æ.mdãè½å°æ¹æ¡.mdãä¸å交ä»å·¥ä½æ¸
å.mdï¼åæç¨åºè¡¨åæ¹ä¸ºã䏿ä¸å¡åãï¼æé¦å â表åé
读约å®âã |
| | | - git å·²æ¨éï¼æ¬ä¼è¯åªå¨ææ¡£ï¼æªå¨ä»£ç ï¼ï¼b5146d2 â d36f112 â 26f2700ã |
| | | |
| | | ## 4 å
³é®å£å¾éè®° |
| | | ### 4.1 表å对ç
§ï¼è¯¦ç»çè§ æ»è¡¨ §5ï¼ |
| | | | ä¸å¡å«æ³ | ç¨åºåºè¡¨å | |
| | | |---|---| |
| | | | ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-2 ä¼ä¸ææ¥ï¼å¨/å¨å
Ž) | h2032_enterprise_monthly | |
| | | | ãè´§è¿éå¨è½¬é表ã(å
¨å£å¾æ»éææ¥ï¼ä¸å¨/ä¸å¨å
¬éï¼å«æ¹åçè¡ãå»å¹´å last_*) | freight_turnover_import | |
| | | | ãè§ä¸è§ä¸æå表ã(æåç»æè¡¨ï¼ç°åªæå¨è½¬éãåªæ CUMULATIVE è¡) | scale_split_transport | |
| | | | ãå
¬è·¯æ
客è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-1)/ã个ä½å®¢è¿ææ¥è¡¨ã | h2031_enterprise_monthly / passenger_individual_monthly | |
| | | | ãåå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµè¡¨ã(å
¬äº¤ææ¥ï¼å«è½¨é轮渡å)/ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ã | city_bus_monthly / city_taxi_monthly | |
| | | | ã轨迹éç¨è¡¨ã/ åç±»ãè¿æ¿è½¦è¾è¡¨ã | vehicle_track_mileage / transport_auth_vehicle / passenger_auth_vehicle / city_taxi_auth / h204_auth_vehicle | |
| | | | ãé路货è¿è½¦è¾è½æºæ¶èæ
åµè¡¨ã(H204 壿¥) | h204_vehicle_quarterly | |
| | | | ãæèµææ¥è¡¨/项ç®è¡¨/æèµç³»ç»å¯¼åºè¡¨ã | investment_monthly / investment_project / investment_system | |
| | | | ãå®¡æ ¸è§å/æ§è¡/ç»æ/说æè¡¨ã | audit_rule / audit_run / audit_result / audit_explanation | |
| | | | ã导å
¥æ¹æ¬¡è¡¨ã | import_batch | |
| | | |
| | | ### 4.2 å
¬å¼ |
| | | - è§ä¸è´§è¿é(ä¸å¨) = SUM(h2032.freight_total) ÷ 10000 |
| | | - å
¨å£å¾è´§è¿é(ä¸å¨) = freight_turnover_import.freight_m{MM} |
| | | - è§ä¸è´§è¿é = å
¨å£å¾ â è§ä¸ï¼å¨è½¬éåå¼ï¼freight_turnover_import.turnover_m{MM} â SUM(h2032.turnover_total)÷10000ï¼ |
| | | - å
¨çæ ¡éªï¼17 å¸å·æ±å = âæ¹åçâè¡ = æ¯çâ è´§è¿â页 O5/O6ï¼æ»éï¼ãO7/O8ï¼è§ä¸ï¼ãO9/O10ï¼è§ä¸ï¼ |
| | | - 2025 åºåï¼å
¨å£å¾å»å¹´ = freight_turnover_import.last_*ï¼è§ä¸/è§ä¸æå 2025 = æ¯ç T..AP ç¼ååï¼12 个æå
¨é½ï¼å·²æ ¸å®ï¼â æâä¿çæ¯çç¼åå¼âå¤ç |
| | | |
| | | ### 4.3 æ±æ»å·¥ä½ç°¿ï¼19 页ä¸å±ï¼ |
| | | - å°è´¦é¡µï¼ç线å
车ï¼å«ä¸ªä½ï¼ãå
¬äº¤ãåºç§ãç½çº¦è½¦ã轨é轮渡ï¼è½¨é=æ¦æ±+é»ç³ï¼è½®æ¸¡ä»
æ¦æ±ï¼é»ç³æ è½®æ¸¡ï¼ |
| | | - å£å¾åæé¡µï¼åå¸å®¢è¿ = å
¬äº¤åå¸å
+åºç§åå¸å
+ç½çº¦è½¦åå¸å
+轨é轮渡ï¼ä¸å£å¾æç» = ç线å
¨é+å
¬äº¤å乡差+åºç§å乡差+ç½çº¦è½¦å乡差 |
| | | - æå页ï¼å叿±æ»/åå¸åå¸å·/è´§è¿/è´§è¿éæå/è´§è¿å¨è½¬éæå/ä¸å£å¾æå/ä¸å£å¾åæ/éè·¯è¿è¾å¨è½¬éï¼B=G+L/2+Q/10ï¼G=è´§è¿å¨è½¬éä¸å¨å
¬éãL=åå¸å®¢è¿éä¸äººæ¬¡ãQ=ä¸å£å¾æ
客å¨è½¬éä¸äººå
¬éï¼ |
| | | - å£å¾ä¿®è®¢ï¼å·²ç¡®è®¤ï¼ï¼åºç§/ç½çº¦è½¦ å
¨éâ åå¸å
ï¼ä»
æ¦æ±ç¸çï¼ï¼2026-07 åºç§å
¨çå乡差 509.00ãç½çº¦è½¦ 421.46 |
| | | - 2026 å¼å C/E/G/I/K/M/Oï¼å¶æ°å忝ï¼ï¼Q=1-7 累计ï¼2025 å T..APï¼å³ä¾§ 2024/æ´æ©åèåå¤ä¸º #REF! æ®çï¼å¾
æ¸
ï¼ |
| | | ### 4.4 å±ç¤ºè§å |
| | | - ææçææ¥è¡¨åºå£âæ¾ç¤ºä¸¤ä½å°æ°ãä¿çå
¨ç²¾åº¦âï¼æ´æ°ä¸æ¾ç¤º .00ï¼å¯¼åºå宽æå
容èªéåºï¼2026-09-03 å·²å®ç°å¹¶æµè¯ï¼ |
| | | |
| | | ## 5 ç°ç¶æ°æ®ç¼ºå£ï¼å½±åâç¨åºèªå¨çæâï¼ |
| | | - åºå
H203-1 ä¼ä¸ææ¥åªæ 2026-03ã2026-07ï¼åå¸å
¬äº¤/巡游åºç§åªæ 2026-06ã2026-07ï¼ä¸ªä½å®¢è¿åªæ 2026-07ï¼è½¨éè½®æ¸¡åªæ 6/7 æï¼1-5 æå¾
è¡¥æä»¶ï¼ï¼ç½çº¦è½¦æåº¦æåè¾å
¥ãç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxãåªæ 2026-07 ä¸è¡ã |
| | | - ãè§ä¸è§ä¸æå表ãåªæ CUMULATIVEï¼ç´¯è®¡ï¼è¡ï¼2026-07 126 è¡ã2026-06 108 è¡ï¼æ 彿(MONTHLY)è¡ï¼è´§è¿éä¸åå
¨ç©ºã |
| | | - æ±æ»æ¯çâ è´§è¿â页ï¼åå¸å·âè§ä¸+è§ä¸è´§è¿éââè§ä¸è´§è¿éâ两è¡ç©ºç½ï¼å
¨çè¡æå¼ï¼ï¼åå è§ Â§6.1 å¾
确认 3ã |
| | | |
| | | ## 6 ä¸ä¸æ¥ä¸å¾
ç¡®è®¤ï¼æ°ä¼è¯ä¸»ä»»å¡ï¼ |
| | | ### 6.1 çç¨æ·ææ¿ï¼å
å¤è¿°å¹¶çåå¤ï¼å«èªè¡åè®¾ï¼ |
| | | 1. ãè§ä¸è§ä¸æå表ãåå¡«è´§è¿éæåæâ彿âè¿æ¯â1-累计âå£å¾ï¼ï¼ç°è¡¨åªæ CUMULATIVE è¡ï¼å
¬å¼ç»çæ¯å½æå¼ï¼ââå¯¹åº SQL æ¥è¯¢ 3ã |
| | | 2. è§ä¸è´§è¿éåæ°æ¹å¼ï¼å®æ¶ç°ç®ï¼æ¨èï¼è¿æ¯åå¡«è½è¡¨åæ°ã |
| | | 3. æ±æ»è¡¨â è´§è¿â页åå¸å·âè§ä¸è´§è¿é / è§ä¸+è§ä¸è´§è¿éâä¸¤è¡æ¯å¦ç±ç¨åºè¡¥å¡«ï¼ç°æ¯çç空ï¼ã |
| | | 4. 2025 åæåï¼ç¡®è®¤âä¿çæ¯çç¼åå¼âï¼æ¬ä¼è¯å·²ææ¤åææ¡£ï¼ç¨åºæªå¨ï¼ã |
| | | 5. æ¹æ¡ A/Bï¼ä½æ£æ¸
å 2026-09-04ï¼ï¼5 个æå页â7æå½æåéç¨ç´¯è®¡å¼âï¼æ¯å¦ç°å¨æ A ä¿®æ£ï¼ç平快ï¼åææ Bï¼æ ¹æ²»ï¼å¯¼åºæ¶èªå¨éç®å½æåï¼ã |
| | | 6. ä¸åæ¸
å Q1/Q2/Q4/Q6/Q7/Q8/Q11ï¼è¡åè¾¹ç䏿份æ©å° 12 æã2025/2024 åå¤çã轨é轮渡 1-5 ææ°æ®ãå
¬äº¤â忝/ç¯æ¯ 0%âæ¯å¦ç«å®¡æ ¸è§åãåå¸å®¢è¿æå页ç½çº¦è½¦åæ¬æå¡«å¼ãåºç§åå¸å
å£å¾ä¸ U402ãæ¯æçææµç¨ï¼ç¨åºæ©å vs æ¯æäººå·¥æ¯çï¼ã |
| | | ### 6.2 æªå®æå¼åä»»å¡ï¼æä¼å
级ï¼åèè½å°æ¹æ¡ P0-P7ï¼ |
| | | - P0 æ¯çå®ç¨¿ï¼æ¸
#REF!ãå®è¡åè¾¹çæ å°ã确认 2025/2024 åçç¥ï¼è§ 6.1ï¼ã |
| | | - P1 æ±æ»å·¥ä½ç°¿éª¨æ¶æ´æ¬çæï¼å¤å¶æ¯çâéè页âç©ºæ°æ®å¯¼åºå¯ç¨ï¼ï¼åå² commit 6b0ae27/8b26ddc å·²ææ´æ¬å¤å¶+两ä½å°æ°+å宽èªéåºï¼å
ç¡®è®¤ææ°æ¯ççæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsx ç¶æã |
| | | - P2 å°è´¦é¡µå¡«å
ï¼ç线å
车/å
¬äº¤/åºç§/ç½çº¦è½¦/轨é轮渡ï¼å
å¡« 2026-07 ç线ãåºç§å¯¹åºå¼ï¼ã |
| | | - P3 å£å¾åæé¡µå¡«å
ï¼åå¸å®¢è¿ãä¸å£å¾æç»ï¼å乡差å
¬å¼ï¼æ ¡éª Q1â0ï¼ã |
| | | - P4 æå页填å
ï¼å叿±æ»/åå¸å·/è´§è¿/æå/ä¸å£å¾æå/åæï¼è´§è¿é¡µç¨ §4.2 å
¬å¼å¡«è§ä¸/è§ä¸ï¼ã |
| | | - P5 éè·¯è¿è¾å¨è½¬éåæé¡µã |
| | | - P6 å端æ¥å
¥âæ±æ»å·¥ä½ç°¿âä¸âç½çº¦è½¦æå表âçæé项ã |
| | | - P7 åå½å¯¹ç
§ä¸ãåè½æµè¯æ¥å_æ±æ»å·¥ä½ç°¿çæ_â¦ã+ã工使¥ç»_2026-09-04.mdãã |
| | | - ç¬ç«é¡¹ï¼å¯¼å
¥å¤§æä»¶âå·²å¤ç N/M è¡â宿¶è¿åº¦ï¼å
¬è·¯æ
客ä¸å£å¾æç» 7-12 ææ©åï¼ä¾èµ Q1ï¼ï¼åºç§å¯¼å
¥ä¿®æ£ï¼å¦ä¸ä¼è¯è´è´£ï¼å¿å¨ï¼ï¼è¿æ¿/轨迹/è½è导å
¥åå½ï¼æèµå表 .xls è§£æï¼Q9ï¼ã |
| | | ### 6.3 å¯è½çææ¡£æ¶å°¾ |
| | | - è¥ç¨æ·è¦æ±âå
¨æ¹âï¼database.mdãarchitecture.mdãREADMEãåè½æµè¯æ¥åçä»å«ç¨åºè¡¨åçææ¯ææ¡£ï¼ç»ä¸å âä¸æè¡¨å对ç
§æå¼âï¼æ¬ä¼è¯åªæ¹äºä¸å¡/é»è¾ç±»ææ¡£ï¼ã |
| | | |
| | | ## 7 æè¿ git æäº¤ï¼æ¬æ¬¡ä¼è¯å
ï¼ |
| | | - b5146d2 docs: å¢è¡¥åºè¡¨å
³ç³»/å使¢ç®/è´§è¿è§ä¸è§ä¸å£å¾ + è½å°å£å¾ SQL |
| | | - d36f112 docs: æ±æ»è¡¨/SQL åºè¡¨åæ¹å为ä¸å¡ä¸æè¡¨å |
| | | - 26f2700 docs: 页ç¾é»è¾/è½å°æ¹æ¡/ä¸åæ¸
å ç¨åºè¡¨åç»ä¸æ¹ä¸å¡ä¸æå |
| | | - æ´æ©ï¼6b0ae27ï¼ç½çº¦è½¦æå+æ±æ»æ´æ¬çæ+䏤尿°ï¼ã8b26ddcï¼æ´æ°æ .00+å宽èªéåº+09-04 使£æ¸
åï¼ |
| | | - 注æï¼è¿ç¨å¯è½å·²æåäºæ°æäº¤ï¼å¼å·¥åå
`git fetch gitea` æ£æ¥ `main...gitea/main`ã |
| | | |
| | | ## 8 ç»æ°ä¼è¯çå¼å·¥å£ä»¤ |
| | | 1. å
è¯»æ¬æä»¶ §6ï¼æâå¾
ç¨æ·ææ¿â6 ç»é®é¢åç¨æ·å¤è¿°å¹¶çåå¤ã |
| | | 2. 忥ï¼git fetch giteaï¼è¿ç«¯ææ°æäº¤å
åå¹¶ï¼ç¦æ¢å¼ºæ¨ã |
| | | 3. æ¶å跨表å£å¾ä¸å¾å
ç `docs/çææ±æ»å¤§è¡¨/è¾å
¥è¾åºä¸é»è¾å
³ç³»æ»è¡¨_2026-09-03.md` §5-§7ã |
| | | 4. æ¯å®æä¸ä¸ªåè½ï¼æµè¯âåè½æµè¯æ¥åâï¼ä¸çï¼å·¥ä½æ¥ç»âæäº¤æ¨éã |
| New file |
| | |
| | | # åè½æµè¯æ¥åï¼åå¸å®¢è¿å¯¼å
¥ä¸ææ°å¢ç½çº¦è½¦å¯¼å
¥ï¼2026-09-04ï¼ |
| | | |
| | | ## åè½è¯´æ |
| | | 2026-09-04 ç¨æ·ææ¿ï¼æ°æ®å¯¼å
¥ââåå¸å®¢è¿æ¨¡å䏿å¢å ãç½çº¦è½¦æ»æ°ãä¸ãç½çº¦è½¦è®¢ååå
¨çæ»éãä¸¤é¡¹ï¼æ¯çæ¾äº docs/åå¸å®¢è¿/ãæ¬æ¬¡å®ç°ï¼ |
| | | - å端æ°å¢å¯¼å
¥æ¥å£ï¼POST /api/import/wycTotalãPOST /api/import/wycOrderï¼ |
| | | - æ°å¢è¡¨ wyc_total_monthlyï¼å
¨ç pinï¼ä¸ wyc_order_monthlyï¼pin + 订åå计 + 17å¸å·è®¢åï¼ï¼ææ¥è¡¨æå
å åæãå¹ç upsertï¼åæ¶è®°å½æ¹æ¬¡ï¼WYC_TOTAL / WYC_ORDERï¼ä¾å¯¼å
¥è¿åº¦ä¸å岿¾ç¤ºï¼ |
| | | - å端 DataImport.vueï¼åå¸å®¢è¿ä¸ææ°å¢ä¸¤é¡¹ãTYPE_LABELS / BATCH_TYPE_MAPãæ¨¡æ¿å/ä¸è½½ URLï¼å¯¹åºæ¯çï¼ãendpoint æ å°å
¨é¨è¡¥é½ã |
| | | |
| | | ä»£ç æ¹å¨ï¼å¾
æ¨éï¼ï¼ |
| | | - traffic-audit-server/src/main/java/com/trafficaudit/dataimport/entity/WycTotalMonthly.javaãWycOrderMonthly.javaï¼æ°å¢ï¼@TableField åºå® pin_ck/pin_cz ååï¼ |
| | | - traffic-audit-server/src/main/java/com/trafficaudit/dataimport/mapper/WycTotalMonthlyMapper.javaãWycOrderMonthlyMapper.javaï¼æ°å¢ï¼ |
| | | - traffic-audit-server/src/main/java/com/trafficaudit/dataimport/service/DataImportService.javaï¼æ°å¢ importWycTotal/importWycOrder/upsertWyc/upsertWycTotal/periodOfCell/dbl/dblN ååå caseï¼ |
| | | - traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataImportController.javaï¼æ°å¢ä¸¤ä¸ªç«¯ç¹ï¼ |
| | | - traffic-audit-web/src/views/DataImport.vueï¼ä¸æ/æ ç¾/模æ¿/端ç¹ï¼ |
| | | - docs/sql_wyc.sqlï¼å»ºè¡¨ DDL æ²æ·ï¼ |
| | | |
| | | ## æµè¯ç¯å¢ |
| | | - å端 8090ï¼éå¯å就绪ï¼ï¼å端 dev server 8080ï¼DataImport.vue æ¹å¨åçç¼è¯ Compiled successfullyï¼ï¼MySQL 127.0.0.1:3308 traffic_auditï¼æ¯ç为 docs/åå¸å®¢è¿/模æ¿_ç½çº¦è½¦æ»æ°.xlsxãæ¨¡æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxï¼å®é
ç¼è¾çï¼å« 2026-01~07ï¼ã |
| | | - æ¹æ³ï¼HTTP å®é
导å
¥ï¼ä¸æºæä»¶é项对é½ãå¹çéå¯¼ãæ¨¡æ¿ä¸è½½ URLãç©ºæ°æ®è´åç¨ä¾ã |
| | | |
| | | ## ç¨ä¾ä¸ç»æ |
| | | 1. ç½çº¦è½¦æ»æ°å¯¼å
¥ï¼æ£åï¼ï¼ä¸ä¼ 模æ¿_ç½çº¦è½¦æ»æ°.xlsxï¼æ¥å£è¿åâ导å
¥æåï¼å
± 7 æâï¼DB ä¸ 2026-01~07 å
¨ç pin B-E 䏿¯çéæä¸è´ï¼å¦ 2026-07 = 4852.3/4430.84/28348.02/22705.61ï¼ãç»è®º PASSã |
| | | 2. ç½çº¦è½¦è®¢å导å
¥ï¼æ£åï¼ï¼ä¸ä¼ 模æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxï¼å
± 7 æï¼2026-07 F=订åå计 29730791ãG-W 17å¸å·ä¸æ¯çä¸è´ï¼æ¦æ± 11183267â¦ç¥åæ¶ 3534ï¼ï¼2026-01~06 订åå为 NULLï¼æ¯çæ æ°æ®ï¼æ£ç¡®ï¼ãç»è®º PASSã |
| | | 3. å¹çéå¤å¯¼å
¥ï¼æ£åï¼ï¼åæä»¶éå¤ä¸ä¼ ï¼ä¸¤è¡¨æ°æ®ä»å 7 è¡ä¸å¼ä¸åï¼å
å åæï¼ï¼æ¹æ¬¡è¡¨æ¯æ¬¡å¯¼å
¥åè®°å½ãç»è®º PASSã |
| | | 4. 模æ¿ä¸è½½ï¼æ£åï¼ï¼GET /api/templates/åå¸å®¢è¿/模æ¿_ç½çº¦è½¦æ»æ°.xlsx ä¸ è®¢åçå 200ãç»è®º PASSã |
| | | 5. ç©ºæ°æ®æä»¶ï¼è´åï¼ï¼ä¸ä¼ åªå«è¡¨å¤´ç xlsxï¼è¿å code 500ãæç¤ºâæªè¯å«å°æææä»½è¡ï¼A ååºä¸ºæ¥æï¼å¦ 2026-07ï¼â¦âï¼éè¯¯ææ¡æ¸
æ°ãç»è®º PASSï¼é¢æå¤±è´¥ï¼ã |
| | | 6. ç¼è¯ä¸å¯å¨ï¼å端 mvn compile EXIT=0ï¼åç«¯èæ¬ node --check éè¿ä¸ dev server çç¼è¯æåãç»è®º PASSã |
| | | |
| | | ## åç°çé®é¢ä¸å¤ç½® |
| | | 1. æ°å¢ Mapper æ¥å£å°¾é¨æ®çâ{{}}âï¼æ½è±¡æ¹æ³ä½ï¼å¯¼è´ç¼è¯å¤±è´¥ï¼å·²ä¿®ä¸ºâ{}âã |
| | | 2. DataImportService.periodOfCell æ£å \d æªè½¬ä¹ä¸º \\dï¼Java å符串âéæ³è½¬ä¹âç¼è¯å¤±è´¥ï¼ï¼å·²ä¿®å¤ã |
| | | 3. 馿¬¡å¯¼å
¥è¿åâå
± 0 æâï¼åå 为å®ä½å段 pinCK/pinCZ ä¸å线çç¥æ å°ä¸º pin_c_k/pin_c_zï¼ä¸è¡¨å pin_ck/pin_cz ä¸å¹é
ï¼insert æ¥ Unknown columnï¼å¤çï¼å®ä½å¢å @TableField("pin_ck")/@TableField("pin_cz")ï¼å¤æµå 7 æå
¨é¨å
¥åºã |
| | | |
| | | ## ç»è®º |
| | | åå¸å®¢è¿å¯¼å
¥ä¸ææ°å¢ä¸¤é¡¹ç½çº¦è½¦å¯¼å
¥åè½å·²å®ç°å¹¶éè¿æµè¯ï¼æ£åï¼å®é
æ¯ç 1-7 æï¼ãå¹çéå¯¼ãæ¨¡æ¿ä¸è½½ãç©ºæ°æ®è´åå符å颿ï¼å
¥åºæ°æ®ä¸æºæä»¶é项ä¸è´ãåç«¯ä¸æé¡¹è¿éç¨æ·å¨é¡µé¢ç¹å»äººå·¥è¿ä¸ç¼ã |
| New file |
| | |
| | | # åè½æµè¯æ¥åï¼å®¡æ ¸å
¬å¼ä¿®æ£ + æåç®æ æå¯¼å
¥ + å
¨å±ç¿»é¡µï¼2026-09-04ï¼ |
| | | |
| | | ## ä¸ãè´§è¿å®¡æ ¸ RULE_006ï¼æ´è½¦å¨ä½æ¹ä¸ºâå¹³åå¨ä½âå£å¾ |
| | | - æ¹å¨ï¼`AuditEngineService.checkOutRange` 对 `tonsWhole` åæ®µæâæ´è½¦å¹³åå¨ä½ = æ´è½¦å¨ä½(tonsWhole) / æ´è½¦è½¦è¾æ°(vehicleWhole)â计ç®åä¸ 4~40 æ¯è¾ï¼æ æ´è½¦æ°æ¶éååå¼å¤æã`h2032FieldLabel` ä¸åï¼æç¤ºææ¬æ¾å¼æ âæ´è½¦å¹³åå¨ä½(æ´è½¦å¨ä½/æ´è½¦æ°)âã |
| | | - åå ï¼åé»è¾ç´æ¥æ¿æ´è½¦å¨ä½æ»éï¼å¦é»åå¯ç¨ç©æµ 357 å¨ï¼23 è¾æ´è½¦ï¼æ¯ 4~40ï¼ææ»éå½åå误æ¥ã |
| | | - éªè¯ï¼éæ°æ§è¡ 2026-07 H2032 å®¡æ ¸ï¼POST /api/audit/executeï¼ï¼RULE_006 å½ä¸ 8 æ¡ä¸å
¨é¨ä¸ºâæ´è½¦å¹³åå¨ä½=0.92~3.93ï¼èå´ 4~40âï¼é»åå¯ç¨ 357/23â15.52 ä¸åå½ä¸ï¼ï¼å
¶ä½è§åæ£å¸¸ï¼RULE_001 59ãRULE_002 106ãRULE_004 6ãRULE_005 21ãRULE_003 0ï¼ãç»è®º PASSã |
| | | |
| | | ## äºãå®¡æ ¸æç¤ºæ°åä¸åç¨ç§å¦è®¡æ°æ³ |
| | | - æ¹å¨ï¼`fmt`/`fmt4` ç¨ BigDecimal.toPlainString è¾åºï¼å¤§æ°å¦ 1.04e7 æ¾ç¤ºä¸º 10435762.52 è䏿¯ 1.043576252E7ã |
| | | - éªè¯ï¼é导å 2026-07 å®¡æ ¸ææ¬å为æ®éåè¿å¶æ¾ç¤ºï¼ç¼è¯éè¿ãç»è®º PASSã |
| | | |
| | | ## ä¸ãè§ä¸è§ä¸æå导å
¥ï¼æç®æ æ¥è¡¨æåªåå¯¹åºæé¡µç¾ |
| | | - æ¹å¨ï¼`DataImportService.importScaleSplit` å¢å ç®æ æï¼period çæä»½ï¼è¿æ»¤ï¼é¡µç¾å½¢å¦â{M}æç´¯è®¡/Mæä»½âåªå¨è¯¥ M=ç®æ ææ¶å¯¼å
¥ï¼Mæç´¯è®¡âCUMULATIVEãMæä»½âMONTHï¼ï¼é¡µç¾ä¸ºâ彿/累计âï¼æ¨¡æ¿æ ·å¼ï¼ä¸é宿ã |
| | | - åå ï¼1-N ææ´å
æä»¶è¢«æ´å¯¼ä¼æå¤ä¸ªæé¡µç¾å¡è¿å䏿¥è¡¨æé æéå¤è¡ï¼æ¤å 04-07 åå« 72/90/108/126 è¡å³ä¸ºæ¤ç±»èæ°æ®ï¼ã |
| | | - éªè¯ï¼ç«¯å°ç«¯ï¼ï¼ç¨ã2026å¹´1-6æå
¬è·¯è´§è¿éï¼åå¸å·ï¼.xlsxãé导 2026-04/05/06ï¼æ¯æè¿åâ36 æ¡è®°å½â=彿 18 + 累计 18ï¼åºå
æ¯ææ region å¯ä¸ï¼æ¦æ± 2026-06 彿å计å¨è½¬é 687103.88 䏿ºæä»¶éå¼ä¸è´ï¼2026-07 æ§ 126 è¡ç´¯è®¡æ°æ®å¾
ç¨ 1-7 ææä»¶é坼䏿¬¡å³æ¶æä¸º 36 è¡ãç»è®º PASSã |
| | | |
| | | ## åãæ°æ®æ¥çå
¨å±æ¨¡å¼å¯ç¿»é¡µï¼åç«¯ï¼ |
| | | - æ¹å¨ï¼`DataView.vue` æè¡¨æ ¼ä¸å
¶ä¸å页å¨å
è¿åä¸ `.table-wrap`ï¼å
¨å±ç®æ ä» `.table-area` æ¹ä¸º `.table-wrap`ï¼å¹¶å å
¨å± flex å¸å±æ ·å¼ï¼å
¨å±æ¶ä¿çå页æ¡ã |
| | | - éªè¯ï¼æ¨¡æ¿ç»æ/é»è¾è°æ´ç¼è¯ç± vue-cli-service çæ´æ°ï¼æµè§å¨ç«¯éç¨æ·å
¨å±æ¥ç确认ï¼è¡¨æ ¼+å页å¯è§ãå¯ç¿»é¡µï¼ãç»è®ºï¼ä»£ç 就绪ï¼å¾
人工è§è§ç¡®è®¤ã |
| | | |
| | | ## ç¯å¢ |
| | | - å端 8090ï¼å¤æ¬¡éå¯è³ææ°ä»£ç ï¼æå䏿¬¡ 16:51 就绪ï¼ï¼å端 8080 è¿è¡ä¸ï¼MySQL 127.0.0.1:3308ã |
| New file |
| | |
| | | # åè½æµè¯æ¥åï¼æ±æ»å¤§è¡¨ 1-6 æçæ + 1-7 ææ©åï¼2026-09-04ï¼ |
| | | |
| | | ## ä¸ãåè½è¯´æ |
| | | - ç®æ ï¼éªè¯ãéè·¯è¿è¾éæ±æ»è¡¨ãçæç¨åºå¯äº§åºä¸¤æ¬äº§ç©ââ |
| | | 1. **1-7 ææ©å**ï¼`period=2026-07`ï¼ï¼ä»¥â1-4 æéª¨æ¶âæ¯ç为åºãæåæå¤ä»½æ¯çè¿åæåº¦åï¼å¾å° 1-7 æå®æ´å·¥ä½ç°¿ï¼ |
| | | 2. **1-6 æçæ**ï¼`period=2026-07&toMonth=6`ï¼ï¼å¨ä¸è¿° 1-7 å
容åºç¡ä¸ï¼æ 8 个å°è´¦/åæé¡µè£åªå° 6 æââ |
| | | - 7 æå½æå¼åï¼Oï¼ã7 æåæ¯åï¼Pï¼ç**æ°æ®æ ¼æ¸
空ï¼è¡¨å¤´ä¿ç**ï¼ç¨æ·ææ¿å£å¾ â ï¼ï¼ |
| | | - 累计å
¬å¼ï¼Qï¼å»æ 7 æé¡¹ï¼ç´¯è®¡åæ¯å
¬å¼ï¼Rï¼åæ¯å»æ 2025 å¹´ 7 æåï¼=2025 å¹´ 1-6 æï¼ç¨æ·ææ¿å£å¾ â¡ï¼ã |
| | | - ä»£ç æ¹å¨ï¼ |
| | | - `ReportExportService.exportSummaryWorkbook(period, mode, toMonth)`ï¼æ°å¢å¯é `toMonth` è£åªï¼ |
| | | - æ°å¢ `trimSummaryMonthlySheets(wb, keepMonths)`ï¼åªå¤ç 8 个å°è´¦/åæé¡µï¼` è´§è¿`ãç线å
车ãåå¸å®¢è¿ãå
¬äº¤ãåºç§ãç½çº¦è½¦ã轨éã轮渡ãä¸å£å¾æç»ï¼ï¼æâå«ç´¯è®¡å
¬å¼ä¸ä»»ä¸ 2026 æåº¦å¼åé空âè¯å«æ°æ®è¡ï¼ |
| | | - `ReportExportController /export/summaryWorkbook` å¢å å¯éåæ° `toMonth`ã |
| | | - 产ç©ï¼ç¨åºå®é
HTTP çæï¼éæå·¥æ¹è¡¨ï¼ï¼ |
| | | - `docs/çææ±æ»å¤§è¡¨/è¾åº/éè·¯è¿è¾éæ±æ»è¡¨_2026-07.xlsx`ï¼921,070 Bï¼ |
| | | - `docs/çææ±æ»å¤§è¡¨/è¾åº/éè·¯è¿è¾éæ±æ»è¡¨_2026-06.xlsx`ï¼912,980 Bï¼ |
| | | |
| | | ## äºãæµè¯ç¯å¢ |
| | | - å端 Spring Boot 8090ï¼`mvn spring-boot:run` å®è·ï¼æ¬æº MySQL 127.0.0.1:3308/traffic_auditï¼ï¼ |
| | | - æ¯çï¼`docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsx`ï¼1-4 æéª¨æ¶ï¼å·¥ä½åºæªæäº¤çï¼ï¼ |
| | | - å¤ä»½æ¯çï¼éæ ¼å¯¹ç
§åºåï¼ï¼`docs/çææ±æ»å¤§è¡¨/_å¤ä»½_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_æ¸
çå_20260904.xlsx`ï¼ |
| | | - æ ¡éªèæ¬ï¼éæ ¼æ¯è¾åå
æ ¼åæï¼å
¬å¼å« `=`ãå¼ãææ¬ï¼ï¼æ°å¼æ int/float çä»·å½ä¸åã |
| | | |
| | | ## ä¸ãç¨ä¾ä¸ç»æ |
| | | |
| | | | # | ç¨ä¾ | è¾å
¥ | 颿 | å®é
| ç»è®º | |
| | | |---|---|---|---|---|---| |
| | | | 1 | 1-7 ææ©å | GET `/api/report/export/summaryWorkbook?period=2026-07&mode=month` | ä¸å¤ä»½æ¯çå
¨ç°¿éæ ¼ä¸è´ | çå·®å¼=0 | éè¿ | |
| | | | 2 | 1-6 æçæï¼æ£åï¼ | åä¸è¿½å `&toMonth=6` | éè£åªèå´ï¼é 8 å°è´¦é¡µ + 8 å°è´¦é¡µ A..N çï¼ä¸å¤ä»½ä¸è´ï¼ä»
O/P/Q/R æè§ååå | éç½ååçå·®å¼=0 | éè¿ | |
| | | | 3 | 7 æä¸¤åæ¸
空/表头ä¿ç | 8 å°è´¦é¡µæ°æ®è¡ O/P | æ°æ®æ ¼ç©ºãè¡¨å¤´è¡ O/P ä¿ç | æ°æ®æ ¼æ¸
空 1132ï¼è¡¨å¤´ä¿ç 24ï¼è¡¨å¤´å¼å¸¸ 0 | éè¿ | |
| | | | 4 | 累计æ 1-6 æ | æ°æ®è¡ Q åå
¬å¼ | 廿 `+O{è¡}` | æ¹å 566 å¤ï¼ä¾ï¼`=C5+E5+...+O5`â`=C5+...+M5` | éè¿ | |
| | | | 5 | ç´¯è®¡åæ¯åæ¯=2025 1-6 æ | æ°æ®è¡ R åå
¬å¼ | 廿 `,AF{è¡}`/`+AF{è¡}` | æ¹å 566 å¤ï¼ä¾ï¼`=Q5/SUM(T5..AF5)-1`â`=Q5/SUM(T5..AD5)-1` | éè¿ | |
| | | | 6 | æ½æ¥å
³é®æ ¼ | è´§è¿/ä¸å£å¾æç» O/P/Q/R | è¡¨å¤´è§æãæ°æ®è¡ O/P 空 | 07 æ°æ®è¡ O=3754.7823ï¼7 æå¼ï¼ï¼06 åæ ¼ä¸ºç©ºï¼è¡¨å¤´ä¸è´ | éè¿ | |
| | | | 7 | è´å/è¾¹ç | `toMonth` ç¼ºçæ â¥7 | è¡ä¸ºä¸æ§çä¸è´ï¼å
¨ç°¿è¿åï¼ | åç¨ä¾ 1ï¼çå·®å¼ 0 | éè¿ | |
| | | |
| | | ## åãå®ç°ä¸åç°å¹¶å¤ç½®çé®é¢ |
| | | 1. **POI è¡å· 0-based vs å
¬å¼ 1-based**ï¼åçæè¡ç´¢å¼æ¼æ¥ `+O4`ï¼å¹é
ä¸ä¸å
¬å¼éç `O5`ï¼å¯¼è´ Q/R æªæ¹åï¼ä»
æ¸
空çæï¼ãå¤ç½®ï¼token è¡å·æ¹ `excelRow = r + 1`ã |
| | | 2. **2025 åæå 0-based ç´¢å¼é 1**ï¼åæ¯å T..AF ç 0-based èµ·ç¹æ¯ 19ï¼Tï¼ï¼è¯¯ç¨ 20 ä¼ç®åº AGï¼åå·è¶ 1 åï¼ï¼R å
¬å¼å¹é
ä¸å°ãå¤ç½®ï¼`lastCol = 19 + 2*(m-1)`ã |
| | | 3. 两å¤ä¿®å¤ååéæ° `mvn compile` + éå¯åç«¯å¤æµéè¿ï¼æç»äº§ç©ä¸ºä¿®å¤å代ç çæï¼ã |
| | | |
| | | ## äºãè¾¹çä¸å·²ç¥é¡¹ï¼æ¬æ¬¡æªçº³å
¥ï¼ |
| | | - **æåèå页**ï¼è´§è¿éæåãè´§è¿å¨è½¬éæåãä¸å£å¾æåãä¸å£å¾åæãå叿±æ»ãåå¸åå¸å·ãéè·¯è¿è¾å¨è½¬éï¼çåå
æ ¼ä¸º**人工æ¯çéæå¼ï¼1-7 æç´¯è®¡å£å¾ï¼**ï¼æ¬æ¬¡è£åªä¸è§¦åï¼è¦éâ1-6 æâèªå¨éç®éèµ° P2-P5 æ°æ®é©±å¨å¡«å
ï¼å¦ææï¼ã |
| | | - 2025/2024 åèåä¿çæ¯çç¼åå¼ï¼æªæ¹ï¼å·²ç¡®è®¤å£å¾ï¼ã |
| | | - éè页ï¼å
¬è·¯æ»å®¢è¿ã2025å¹´åå¸å®¢è¿éãä¸å£å¾å®¢è¿éãä¸å£å¾è®¡ç®è¿ç¨ï¼æªçº³å
¥è£åªï¼ä¿æåæ ·ã |
| | | |
| | | ## å
ãç»è®º |
| | | âå
çæ 1-6 æã1-7 ææ©åâ两æ¬äº§ç©ç»ç¨åºå®é
çæå¹¶éè¿éæ ¼å¯¹ç
§ï¼1-7 æäº§ç©ä¸å¤ä»½æ¯çé¶å·®å¼ï¼1-6 æäº§ç©å¨ 8 个å°è´¦/åæé¡µæ£ç¡®æ§è¡â7 æä¸¤åç空ï¼è¡¨å¤´ä¿çï¼ã累计/忝æ 1-6 æâçå£å¾ï¼å
¶ä½èå´é¶å·®å¼ãP0 项å¯å
³éï¼å©ä½æåèåé¡µæ°æ®é©±å¨éç®ï¼P2-P5ï¼ååè·è¿ã |
| New file |
| | |
| | | # åè½æµè¯æ¥åï¼æ±æ»å·¥ä½ç°¿æåº¦åæ©å/è¿åè¯ç¹ï¼2026-07ï¼ï¼2026-09-04ï¼ |
| | | |
| | | ## åè½è¯´æ |
| | | ç¨æ·ææ¿ï¼ä»¥ã2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxãï¼å·²æ¸
ç为â1-4 æéª¨æ¶âï¼ä¸ºæ¯çï¼ç±ç¨åºæ 5-7 ææåº¦åæåæå¤ä»½æ¯çè¿åï¼å®ç°âéææ©åçæ 1-N ææ±æ»è¡¨âçç¬¬ä¸æ¥è¯ç¹ï¼M1ï¼ç®æ æ 2026-07ï¼ãå£å¾ï¼1-4 æä¿çæ¯çæ°æ®ï¼ç´¯è®¡å
¬å¼æ¢å¤ä¸º 1-7 æï¼åæ¯ R åæ¯ç¨ 2025 å¹´ 1-7 æåï¼2025/2024 åèåä¿æä¸å¨ï¼è¾åºå¦åæ°æä»¶ï¼ä¸æ¹æ¯çã |
| | | |
| | | ä»£ç æ¹å¨ï¼ |
| | | - traffic-audit-server/.../reportexport/service/ReportExportService.java |
| | | - exportSummaryWorkbook å¢å ï¼å®ä½åæå¤ä»½æ¯çï¼_å¤ä»½_*_æ¸
çå_*.xlsxï¼æ {å¹´}å¹´{æ}æ å¹é
ï¼æç´¢é
ç½®ç®å½/user.dir/ä¸çº§ç®å½ä¸ä¸ªåéæ ¹ï¼â éæ ¼æâå¤ä»½æå
容è骨æ¶ç¼ºå¤±æå
容ä¸åâçåå
æ ¼åå¡«ï¼å« 5-7 æè¡¨å¤´ãæ°æ®ãå
¬å¼ä¸ç´¯è®¡/忝å
¬å¼ï¼ï¼ |
| | | - æ°å¢ resolveSummaryDonor / restoreSummaryMonthlyBlocks / summaryCellText ä¸ä¸ªç§ææ¹æ³ï¼ |
| | | - å¯¼åºæ¶ç½® fullCalcOnLoad=trueï¼ä¿è¯ Excel/WPS æå¼å³éç®è¢«æ¹å/è¿åçå
¬å¼ã |
| | | |
| | | ## æµè¯ç¯å¢ |
| | | - å端 8090ï¼å¤æ¬¡éå¯åææ°ä»£ç 就绪ï¼ï¼MySQL 127.0.0.1:3308ã |
| | | - æ¯çï¼docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼1-4 æéª¨æ¶ï¼19 页ç¾ï¼ï¼å¤ä»½ï¼docs/çææ±æ»å¤§è¡¨/_å¤ä»½_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_æ¸
çå_20260904.xlsxã |
| | | - æ¹æ³ï¼è°ç¨ GET /api/report/export/summaryWorkbook?period=2026-07&mode=monthï¼ä¿å为 docs/çææ±æ»å¤§è¡¨/è¾åº/éè·¯è¿è¾éæ±æ»è¡¨_2026-07.xlsxï¼ç¨ openpyxl ä¸å¤ä»½æ¯çéæ ¼æ¯å¯¹ï¼å
容/å
¬å¼ææ¬ï¼éæ ·å¼ï¼ã |
| | | |
| | | ## ç¨ä¾ä¸ç»æ |
| | | 1. è¿åå¹¿åº¦ï¼æ£åï¼ï¼æ¸
çæ¶è¢«è£ç 7 个å°è´¦/åæé¡µï¼è´§è¿/ç线å
车/åå¸å®¢è¿/å
¬äº¤/åºç§/ç½çº¦è½¦/轨é轮渡/ä¸å£å¾æç»ï¼ç¼ºå¤±åå
æ ¼å
¨é¨è¡¥é½ï¼missing=0ï¼å
¶ä½é¡µï¼æå页/éèé¡µï¼æ¬æ å·®å¼ï¼æªæ¹å¨ãç»è®º PASSã |
| | | 2. éæ ¼å¯¹ç
§ï¼æ£åï¼ï¼è¾åºä¸å¤ä»½æ¯ç 19 页å
¨éæ¯å¯¹ï¼real-diff=0ï¼ä»
31 æ ¼ä¸ºâæ´æ° vs 46143.0âçæ°å¼ç价表示差å¼ï¼Excel æ°å¼ç¸åï¼ãç»è®º PASSã |
| | | 3. 累计/忝å
¬å¼ï¼æ£åï¼ï¼æ½æ¥ ç线å
车/å
¬äº¤/åºç§/è´§è¿ çè¡ Q æ¢å¤ä¸º 1-7 æåæå¼æ±åï¼å¦ =G4+E4+C4+I4+K4+M4+O4ï¼ï¼R æ¢å¤ä¸º =Q/SUM(2025 å¹´ 1-7 æå)-1ï¼ä¸å¤ä»½ä¸è´ãç»è®º PASSã |
| | | 4. æå¼å³éç®ï¼æ£åï¼ï¼äº§ç© xl/workbook.xml å« <calcPr fullCalcOnLoad="true"/>ãç»è®º PASSã |
| | | 5. æ¯çæªè¢«æ¹å¨ï¼æ£åï¼ï¼çæå忝çæä»¶åèæªåï¼åªè¯»å¤å¶ï¼ãç»è®º PASSã |
| | | 6. ç¼è¯ä¸å¯å¨ï¼mvn compile EXIT=0ï¼å端éå¯å°±ç»ªï¼æ¥å£ 200 è¿å xlsxãç»è®º PASSã |
| | | |
| | | ## åç°çé®é¢ä¸å¤ç½® |
| | | 1. åç donor å®ä½åªæ¥é
ç½®ç®å½ç¸å¯¹è·¯å¾ï¼è spring-boot:run çå·¥ä½ç®å½æ¯æ¨¡åç®å½ï¼traffic-audit-serverï¼ï¼å¯¼è´âæªæ¾å°å¤ä»½æ¯çâãè¾åºä»ä¸ºéª¨æ¶ï¼å·²æ¹ä¸ºä¸ resolveAnyTemplate ç¸åç 3 åéæ ¹ç®å½æ«æï¼å¤æµè¿åæåã |
| | | 2. POI setForceFormulaRecalculation æªå calcPrï¼æ¹ä¸ºç´æ¥æä½ XSSFWorkbook.getCTWorkbook() ç calcPr.fullCalcOnLoad=trueï¼å·²éªè¯åå
¥ã |
| | | |
| | | ## ç»è®º |
| | | M1 è¯ç¹éè¿ï¼ä» 1-4 æéª¨æ¶æ¯çå¯ç¨åºåè¿ååºä¸äººå·¥ 7 ææ¯çå
容é¶å·®å¼ç宿´å·¥ä½ç°¿ï¼å« 5-7 ææåº¦åä¸ 1-7 累计/忝å
¬å¼ï¼ï¼è¾åºæä»¶ docs/çææ±æ»å¤§è¡¨/è¾åº/éè·¯è¿è¾éæ±æ»è¡¨_2026-07.xlsxãä¸ä¸æ¥ M1bï¼æä»½>7ï¼8-12 æï¼æ¶æâä¸ä¸æåå
é+åå¼ç¨å¹³ç§»âèªå¨æå
¥æ°åï¼å¤ä»½æ å¯¹åºæä»½æ¶ç¨ï¼ï¼åæ¥å
¥ M2 å°è´¦æ°æ®ä»åºå
å¡«å
ã |
| | | |
| | | ## éæ³¨ï¼è¾åºæ ¼å¼ä¿®å¤ï¼2026-09-04 14:15 夿µï¼ |
| | | ç¨æ·åé¦çæäº§ç©æ ¼å¼ä¸ç¾è§ï¼å®ä½ä¸º `exportSummaryWorkbook` ä¸è°ç¨äº `autoFitContentColumns(wb)`ï¼æå
¬å¼ææ¬è®¡ç®å®½åº¦åæäººå·¥æ¯çæ´ä½å宽顶å°çº¦ 36ï¼è¦çäºæ¨¡æ¿çå¼ã |
| | | å¤ç½®ï¼æ±æ»å¤§è¡¨å¯¼åºä¸å autoFitï¼ä¿ç人工æ¯çå宽/çå¼ï¼å
¶ä½å°æ¥è¡¨å¯¼åºä» autoFitï¼ãéæ°ç¼è¯å¹¶å¤è· `GET /api/report/export/summaryWorkbook?period=2026-07&mode=month` åï¼ |
| | | - å宽 diff=0ãåå¹¶åå
æ ¼ diff=0ãè¡é« diff=0ï¼ä¸äººå·¥æ¯çé页æ¯å¯¹ï¼ï¼ |
| | | - å
容 real-diff=0ï¼31 å¤ä¸ºæ´æ°/æµ®ç¹çä»·å·®å¼å¦ 46143 vs 46143.0ï¼æ£å¸¸ï¼ï¼ |
| | | - 产ç©ï¼`docs/çææ±æ»å¤§è¡¨/è¾åº/éè·¯è¿è¾éæ±æ»è¡¨_2026-07.xlsx`ï¼çº¦ 921 KBï¼ã |
| | | ç»è®ºï¼PASSï¼å¾
ç¨æ·å¨ Excel/WPS 䏿å¼ç¡®è®¤è§è§æ ¼å¼ã |
| New file |
| | |
| | | # åè½æµè¯æ¥åï¼æ±æ»è¡¨æ´æ°ä¸æ¾ç¤º .00 ä¸å宽èªéåºï¼2026-09-04ï¼ |
| | | |
| | | ## åè½è¯´æ |
| | | é对ãçæ_éè·¯è¿è¾éæ±æ»è¡¨ã两个ä½éªé®é¢ä¿®æ¹ï¼ä»
å¨ ReportExportService.javaï¼ï¼ |
| | | 1. æ°åæ¾ç¤ºï¼ä¿çâæ¾ç¤ºä¸¤ä½å°æ°ãåå¨å
¨ç²¾åº¦âçæ»ååï¼ä½æ´æ°å¼ä¸åæ¾ç¤º `.00`ï¼åå®ç°å¯¹âå
¬å¼ç»æä¸ºæ´æ°âçæ ¼ä¹ä¼å¥ 0.00ï¼æ¬æ¬¡è¡¥é½è·³è¿é»è¾ï¼ã |
| | | 2. åå®½ï¼æ±æ»è¡¨æ´æ¬å¯¼åºåæåå
æ ¼å
容èªå¨å 宽ï¼åªå 宽ä¸ç¼©çªï¼è·³è¿åå¹¶åå
æ ¼æ é¢ï¼ä¸ææ 2 å宽估ç®ï¼åæ ¼è¶
å®½ææ¬å°é¡¶ 34ï¼å宽ä¸é 46ï¼é²æ¢é¿è¯´ææåæçï¼ã |
| | | |
| | | ## æµè¯ç¯å¢ |
| | | - å端 8090ï¼éæ°ç¼è¯å¹¶éå¯ï¼æ°ä»£ç çæï¼ï¼MySQL 127.0.0.1:3308ã |
| | | - æ¯çï¼docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼åºçº¿æä»¶ï¼docs/çææ±æ»å¤§è¡¨/çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼æ§ä»£ç 导åºï¼ã |
| | | |
| | | ## ç¨ä¾ä¸ç»æ |
| | | | # | ç¨ä¾ | è¾å
¥/颿 | å®é
| ç»è®º | |
| | | |---|---|---|---|---| |
| | | | 1 | æ±æ»è¡¨æ´æ°æ ¼ä¸å¸¦ .00ï¼æ£åï¼ | 2026-07 æ´æ¬å¯¼åºï¼æ´æ°æ ¼ä¸åè¢«å¥ 0.00 æ ·å¼ | æ´æ°ä¸ 0.00 æ ·å¼çæ ¼ç±æ§æä»¶ 972 å¤éè³ 34 å¤ï¼å©ä½ 34 å¤ä¸ºæ¯çæ¬èº«é¢è®¾ 0.00 æ ·å¼ï¼éæ¬æ¬¡å¯¼åºæ°å¢ï¼ï¼0.00 æ ·å¼æ»æ° 10588â9650 | PASS | |
| | | | 2 | æ±æ»è¡¨å°æ°æ ¼ä»ä¸¤ä½æ¾ç¤ºãä¿çå
¨ç²¾åº¦ï¼æ£åï¼ | éæ´æ°æ ¼æ¾ç¤º 0.00ãæ°å¼ç²¾åº¦ä¸å | æ½æ¥ä¸å£å¾åæ B4=11204.5406 ç仿 0.00 æ¾ç¤ºä¸åå¨å
¨ç²¾åº¦ï¼éæ´æ°çº¯æ°å¼æ ¼æ éæ¼ï¼nonint-plain=0ï¼ | PASS | |
| | | | 3 | å宽æå
容å å®½ï¼æ£åï¼ | å页ç¾å宽åªå¢ä¸å | ä¸å£å¾åæ B/D/Hãå叿±æ»ãè´§è¿éæåãåå¸åå¸å·ãç线å
è½¦çæ½æ¥å宽åå 宽ï¼å¦è´§è¿éæå Q åæªè®¾å®½åº¦â21ãBâ21ï¼ï¼max 宽 36 以å
| PASS | |
| | | | 4 | ç¬ç«æ¥è¡¨åå½ï¼wycSplit 2026-07ï¼ | æ´æ°ä¸å¸¦ .00ãéæ´æ°å
¨é¨ 0.00 | æ´æ°ä¸ .00 æ ¼=0ï¼188 ä¸ªéæ´æ°æ ¼å
¨é¨ 0.00 æ¾ç¤º | PASS | |
| | | | 5 | ç¼è¯ä¸å¯å¨åå½ | mvn compile EXIT=0ãå端éå¯å°±ç»ª | ç¼è¯ EXIT=0ï¼8090 å¯å¨ OK | PASS | |
| | | |
| | | ## åç°çé®é¢ä¸å¤ç½® |
| | | 1. æ¯çèªèº«ä»æ 34 ä¸ªâæ´æ°æ ¼é¢è®¾ 0.00 æ ·å¼âï¼å±çå¼è®¾è®¡èé导åºäº§çï¼ï¼å¦éå½»åºå»æéæ¹æ¯çæ ·å¼ï¼æ¬æ¬¡ä¸å¨ã |
| | | 2. æ±æ»è¡¨æ¯çå卿°æ®é®é¢ï¼7æå½æåéç¨ç´¯è®¡å¼ï¼æ¶å 5 个页ç¾ï¼ï¼å±æ°æ®å±é®é¢ãéæ¬æ¬¡æ ¼å¼ä¿®æ¹èå´ï¼å¦è§ãæ±æ»è¡¨æ¯çæ°æ®ä½æ£ä¸å¾
å³çæ¸
å_2026-09-04.mdãã |
| | | |
| | | ## ç»è®º |
| | | 两项修æ¹éè¿æµè¯ï¼æ´æ°ä¸åæ¾ç¤º .00ï¼æ±æ»è¡¨å¯¼åºåå宽æå
容èªéåºå 宽ï¼éæ´æ°æ ¼ä»æ¾ç¤ºä¸¤ä½å°æ°å¹¶ä¿çå
¨ç²¾åº¦ã |
| New file |
| | |
| | | # åè½æµè¯æ¥åï¼è§ä¸è§ä¸æå导å
¥æ¯æâNæä»½â页ç¾ï¼2026-09-04ï¼ |
| | | |
| | | ## åè½è¯´æ |
| | | ãè§ä¸è§ä¸æåãæ°æ®æºæä»¶ï¼å¦ã2026å¹´1-Næå
¬è·¯è´§è¿éï¼åå¸å·ï¼.xlsxãï¼ç页ç¾å½å为â1æä»½â¦Næä»½ / 1æç´¯è®¡â¦Næç´¯è®¡âãå导å
¥é»è¾åªè¯å«â彿/累计âï¼å¯¼è´âNæä»½ï¼å½æï¼â页ç¾è¢«æ´ä½è·³è¿ï¼åºé 04-07 åªæ CUMULATIVEï¼ç´¯è®¡ï¼è¡ãæ MONTHï¼å½æï¼è¡ã |
| | | æ¬æ¬¡æ¹å¨ï¼`DataImportService.importScaleSplit`ï¼2 è¡ï¼ï¼ |
| | | - é¡µç¾æ¢æµï¼`sn.contains("彿") || sn.contains("累计")` â å¢å `|| sn.contains("æä»½")`ï¼ |
| | | - 彿份å¤å®ï¼`sheetName.contains("彿")` â `sheetName.contains("彿") || sheetName.contains("æä»½")`ã |
| | | |
| | | ## æµè¯ç¯å¢ |
| | | - å端 8090ï¼2026-09-04 15:48 éå¯ï¼å è½½æ¬æ¹å¨ï¼ï¼MySQL 127.0.0.1:3308ã |
| | | - éªè¯å¯¹è±¡ï¼ã2026å¹´1-6æå
¬è·¯è´§è¿éï¼åå¸å·ï¼.xlsxãï¼D:\æ¡é¢\æµè¯æ°æ®\è´§è¿\6æï¼é¡µç¾ 12 个ï¼1-6æç´¯è®¡+1-6æä»½ï¼ã |
| | | |
| | | ## ç¨ä¾ä¸ç»æ |
| | | | ç¨ä¾ | è¾å
¥ | 颿 | å®é
| ç»è®º | |
| | | |---|---|---|---|---| |
| | | | ç¼è¯ | mvn -o compile | EXIT=0 | EXIT=0 | PASS | |
| | | | 页ç¾è¯å«ï¼éæéªè¯ï¼ | 宿µæä»¶é¡µç¾â6æä»½/6æç´¯è®¡â¦â | 两ç§é¡µç¾åå¯è¢«æ°æ¡ä»¶å½ä¸ï¼æä»½âMONTHã累计âCUMULATIVEï¼ | ä»£ç æ¡ä»¶ä¸æä»¶é¡µç¾å½åé䏿¯å¯¹ä¸è´ï¼â6æç´¯è®¡âå«â累计âï¼ä¸¤ç§åæ³ä¸åæéæ¼ | PASS | |
| | | | å¸å±å
¼å®¹ï¼éæéªè¯ï¼ | â6æä»½âä¸â6æç´¯è®¡âå 3 è¡è¡¨å¤´ | ä¸å¯¼å
¥å¨éªæ¶è§åï¼å¸å·/è§ä¸â¦/å¨è½¬éå表头ï¼ä¸è´ | 两页ç¾ç¬¬2è¡A=å¸å·ãB=è§ä¸ä¼ä¸è¿è¾éï¼ç¬¬3è¡B=å¨è½¬éâ¦ï¼èµ°âä»
å¨è½¬éâ忝ï¼åä½å¯¹é½ | PASS | |
| | | | å端就绪 | éå¯ start-dev.ps1 | 8090 就绪 | Started TrafficAuditApplication 15:48:09ï¼ç«¯å£ååºæ£å¸¸ | PASS | |
| | | | 端å°ç«¯é导 | ç¨ç宿件é导 04-07ï¼è½åºï¼ | è¡¥åºå½æè¡ | æªæ§è¡ï¼éç¨æ·å¨å¯¼å
¥é¡µé导确认ï¼é¿å
对å
±äº«åºèªè¡åæ°ï¼ | å¾
åå½ | |
| | | |
| | | ## åç°çé®é¢ä¸å¤ç½® |
| | | 1. æ§æ°æ® 04-07 åªæç´¯è®¡è¡ï¼å¤ç½®=ç¨æ·æææ¿ç¬¬ 3 æ¡å
许é导ï¼å端已就绪ï¼ç¨åæä»¶é导å³å¯è¡¥åºå½æ(MONTH)è¡ã |
| | | 2. æ°æ®ç¼ºå£ 01-03ï¼æå彿+ç´¯è®¡åæ ï¼ï¼è§ãdocs/çææ±æ»å¤§è¡¨/æ°æ®å¯¼å
¥ç°ç¶ä¸ç¼ºå£æ¸
å_2026-09-04.mdã第ä¸é¨åï¼ç¨æ·è¡¥å¯¼ã |
| | | |
| | | ## ç»è®º |
| | | ä»£ç æ¹å¨å°±ç»ªãç¼è¯ä¸éæå¸å±éªè¯éè¿ãå端已å è½½ï¼ç«¯å°ç«¯âéå¯¼è¡¥å½æè¡âçå¾
ç¨æ·å¨å¯¼å
¥é¡µç¨ç宿件åå½ï¼æ¨èåæ¶æ½æ¥ 04 ä¸ 06 åä¸ç¬ä¸æºæä»¶éæ ¼å¯¹é½ï¼ã |
| New file |
| | |
| | | # åè½æµè¯æ¥åï¼æ¥è¡¨é¢è§ææ åç§°æ¾ç¤ºä¸è´§è¿éå计åä½ä¿®æ£ï¼2026-09-04ï¼ |
| | | |
| | | ## åè½è¯´æ |
| | | - æ¥è¡¨çæçé¢âé¢è§æ°æ®âå¼¹çªä¸ï¼ææ åç§°åå§ç»ç©ºç½ãåä½ä¸å±ç¤ºï¼å端 summary è¡å段为 label/value/unitï¼å端模æ¿è¯¯è¯» s.nameï¼å¯¼è´åªå©æ°å¼ãçä¸åºæ¯è¡æ¯ä»ä¹ææ ã |
| | | - âè´§è¿æ¥è¡¨âé¢è§ä¸çâå
¨ç累计货è¿éï¼å计ï¼âæ°å¼è¢«å ÷10000ï¼æ¨¡æ¿_è´§è¿éå¨è½¬é表表头å³âè´§è¿é(ä¸å¨)âï¼æ°æ®åºæä¸å¨åæ ·å
¥åºï¼ä»£ç åå½âå¨âé¤ä»¥ 1 ä¸ï¼é¢è§åºç° å计â8.03 ä¸å¨ãè§ä¸â-19730 ä¸å¨ çéè¯¯ç»æã |
| | | |
| | | ## æ¹å¨ |
| | | - traffic-audit-web/src/views/ReportExport.vueï¼é¢è§ summary è¡¨æ ¼é¦åæ¹ä¸º s.labelï¼å¹¶æ°å¢ç¬¬ä¸åå±ç¤ºåä½ï¼s.unitï¼ã |
| | | - traffic-audit-server/.../ReportExportService.javaï¼freightPreview å
¨ç累计货è¿éå计ä¸å ÷10000ï¼ç´æ¥ä»¥ä¸å¨å±ç¤ºã |
| | | |
| | | ## æµè¯ç¯å¢ |
| | | - å端 8090ï¼éæ°ç¼è¯å¹¶éå¯ï¼backend.log æ¾ç¤º Started TrafficAuditApplicationï¼ï¼å端 8080ï¼vue-cli serve çç¼è¯çæï¼ã |
| | | - MySQL 127.0.0.1:3308 traffic_auditï¼2026-05 æ°æ®ï¼æ¨¡æ¿_è´§è¿éå¨è½¬é 18 è¡ãH203-2 ææ¥ 636 è¡ãæå表 90 è¡ï¼ã |
| | | |
| | | ## ç¨ä¾ä¸ç»æ |
| | | 1. å端æ¥å£æ£åï¼GET /api/report/preview?period=2026-05&cycle=month&types=cityDetailï¼è¿åå
è¡ summaryã |
| | | - å
¨ç累计货è¿éï¼å计ï¼= 80293.3268 ä¸å¨ï¼å
¶ä¸è§ä¸ = 19738.4516 ä¸å¨ï¼å
¶ä¸è§ä¸ = 60554.8752 ä¸å¨ï¼è§ä¸ä¸ºæ£ï¼å计=è§ä¸+è§ä¸ èªæ´½ï¼ã |
| | | - å
¨ç累计å¨è½¬éï¼å计ï¼= 10784476.1971832 ä¸å¨å
¬éï¼è§ä¸ 3067064.95ï¼è§ä¸ 7717411.24ãç»è®º PASSã |
| | | 2. å端å±ç¤ºæ£åï¼å·²ç¼è¯äº§ç© ReportExport chunk ä¸å« s.label ä¸åä½åãä¸åå« s.nameï¼å¼¹çªè¡¨æ ¼é¦åå°æ¾ç¤ºææ åç§°ãç»è®º PASSã |
| | | 3. åå½ï¼è´§è¿éåå¸å·æç»/è´§è¿éæå/å¨è½¬éæåå¯¼åºæ¥å£ä» 200 è¿å xlsxï¼å¯¼åºæ°å¼é»è¾æªåå½±åï¼ãç»è®º PASSã |
| | | 4. æ°æ®æºç¼ºå£ï¼éæ¬æ¬¡æ¹å¨ï¼å¦è¡è·è¿ï¼ï¼æ¨¡æ¿_è´§è¿éå¨è½¬é last_*ï¼å»å¹´ï¼å 2026-04~07 å
¨ç©ºï¼æå表æ MONTH 彿è¡ä¸è´§è¿éä¸åå
¨ç©ºââå¯¼è´ 5 æï¼å 4/6/7 æï¼æå忝åãå¨è½¬é彿页ä»ä¸ºç©ºï¼éä¸å¡è¡¥æ°æ®æä»¶åé导ã |
| | | |
| | | ## ç»è®º |
| | | 两å¤ç¼ºé·ä¿®å¤å®æå¹¶éªè¯éè¿ï¼é¢è§å¼¹çªå°è½æ¾ç¤ºææ å+åä½ï¼è´§è¿éå计ä¸ååºç° 8.03 ä¸å¨ãè´è§ä¸çè¯¯å¯¼æ§æ°åã |
| New file |
| | |
| | | # 工使¥ç» 2026-09-04 |
| | | |
| | | ## 仿¥å®æ |
| | | 1. 代ç ï¼åç¼è¯éè¿ãå端已éå¯çæï¼commit fc2e76b / a9e6c0b å·²æ¨é giteaï¼ï¼ |
| | | - è§ä¸è§ä¸æå导å
¥ï¼æ¯æâNæä»½/Næç´¯è®¡â页ç¾è¯å«ï¼å¹¶æç®æ æ¥è¡¨æåªåå¯¹åºæé¡µç¾ï¼é¿å
1-N ææ´å
æä»¶äº§çå¤é¡µç¾èæ°æ®ï¼ã |
| | | - è´§è¿å®¡æ ¸ RULE_006ï¼æ´è½¦å¨ä½æâæ´è½¦å¹³åå¨ä½=æ´è½¦å¨ä½Ã·æ´è½¦æ°âå¤å® 4~40ï¼é»åå¯ç¨ç©æµ 357t/23è¾ ä¸å误æ¥ï¼ï¼éè· 2026-07 H2032 å®¡æ ¸éªè¯ï¼RULE_006 å½ä¸ 8 æ¡åææ°å£å¾ï¼ã |
| | | - å®¡æ ¸æç¤ºæ°åå»ç§å¦è®¡æ°æ³ï¼fmt/fmt4 æ¹ toPlainStringï¼ã |
| | | - æ°æ®æ¥çâå
¨å±æ¥çâè¿åå页å¨ä¸èµ·å
¨å±ï¼DataView.vueï¼ï¼å¾
æµè§å¨äººå·¥ç¡®è®¤ã |
| | | 2. æ°æ®å¯¼å
¥ï¼é
åç¨æ·ï¼ï¼ |
| | | - ç¨ã2026å¹´1-6æå
¬è·¯è´§è¿éï¼åå¸å·ï¼ãé导 2026-04/05/06 æåï¼æ¯æ 36 è¡=彿18+累计18ï¼æ¦æ± 6 æå½æå¨è½¬é 687103.88 䏿ºæä»¶ä¸è´ï¼ï¼ |
| | | - ç¨æ·èªè¡é导 2026-07 æåä¸è¡¥å¯¼ 01-03ï¼åºå
è§ä¸è§ä¸æå 2026-01~07 å·²å
¨é½ï¼å 18 MONTH+18 CUMULATIVEï¼ã |
| | | - ç°ç¶ï¼å
¬äº¤/åºç§/个ä½å®¢è¿/H203-1ï¼01-08ï¼/è´§è¿éå¨è½¬éï¼04-07ï¼07 å
åµ 1-7 æï¼/ç½çº¦è½¦ï¼01-07ï¼åææ°æ®ã |
| | | 3. ææ¡£ï¼æ°æ®å¯¼å
¥ç°ç¶ä¸ç¼ºå£æ¸
åãæ¯ç使£æ¸
åè¿½å ææ¿è®°å½ãåè½æµè¯æ¥åÃ3ã |
| | | |
| | | ## éçé®é¢ä¸å¾
åï¼ææ©ä¼å
ï¼ |
| | | - ~~P0 æ±æ»å¤§è¡¨â1-6 æçæ + 1-7 ææ©åâç¨åºæ¹é ä¸å¯¹ç
§éªè¯~~ï¼å·²å®æï¼è§ææ«âæé´è¿½å âï¼2026-09-04 å¤ï¼ã |
| | | - P1 åå¸å®¢è¿å
¬äº¤/åºç§âåäºç模æ¿âåä½å
¼å®¹ï¼çåäºæä»¶æè¡¨å¤´ï¼ã |
| | | - P1 æ¯çä¿®æ£ï¼æ¹æ¡ Aï¼å½æåéç¨ç´¯è®¡å¼ãå³ä¾§ #REF! æ¸
çï¼ååä½ä¸ºæ¯çï¼docs/çææ±æ»å¤§è¡¨ 䏿ªæäº¤ç xlsx æ¹å¨å¾
ä¸å¹¶å¤çã |
| | | - P2 ç½çº¦è½¦æå/æ±æ»å·¥ä½ç°¿çææ¥å
¥å端é项ï¼å¦å°æªå®æï¼ï¼çæäº§ç©å½åä¸è¾åºç®å½ç¡®è®¤ã |
| | | - å端/å端代ç 已就绪并è¿è¡ä¸ï¼8090/8080ï¼ï¼å¼æºåç´æ¥ç»§ç»å³å¯ã |
| | | |
| | | ## 夿³¨ |
| | | - å®¡æ ¸ç»æå·²ææ°å£å¾éç®ï¼2026-07 H2032ï¼ï¼å¦ä¹åç»§ç»é导 07 æå/å
¨å£å¾ï¼éåç¹ä¸æ¬¡âå®¡æ ¸âå·æ°ã |
| | | - 仿¥æªå®æé¡¹ä¸å ç¨æ·ä¸´æ¶æä»¶ï¼ä¸´æ¶èæ¬çå¨ä»åºæ ¹ç®å½ï¼_*.py/_*.sql çï¼æªæ¸
çã |
| | | |
| | | ## æé´è¿½å ï¼2026-09-04 20:3xï¼å ç宿 P0ï¼ |
| | | - P0ã1-6 æçæ + 1-7 ææ©åãç¨åºæ¹é ä¸å¯¹ç
§éªè¯å·²å®æï¼ |
| | | - 代ç ï¼`ReportExportService.exportSummaryWorkbook` å¢å å¯é `toMonth` è£åª + `trimSummaryMonthlySheets`ï¼8 å°è´¦/åæé¡µï¼7 æå½æå¼/åæ¯æ°æ®æ ¼æ¸
空ã表头ä¿çï¼Q ç´¯è®¡å» 7 æé¡¹ãR ç´¯è®¡åæ¯åæ¯å» 2025 å¹´ 7 æåï¼ï¼æ§å¶å¨ `/export/summaryWorkbook` å¢å `toMonth` åæ°ã |
| | | - 产ç©ï¼ç¨åº HTTP å®è·çæï¼å·²è½çï¼ï¼`docs/çææ±æ»å¤§è¡¨/è¾åº/éè·¯è¿è¾éæ±æ»è¡¨_2026-07.xlsx`ã`_2026-06.xlsx`ã |
| | | - éªè¯ï¼07 ä¸å¤ä»½æ¯çå
¨ç°¿éæ ¼ 0 å·®å¼ï¼06 éç½åå 0 å·®å¼ãO/P æ°æ®æ¸
空 1132 æ ¼ãQ/R å
¬å¼åæ¹å 566 å¤ã表头ä¿ç 24 æ ¼å
¨å¯¹ãæ¥åï¼`docs/åè½æµè¯æ¥å/åè½æµè¯æ¥å_æ±æ»å¤§è¡¨1-6æçæä¸1-7ææ©åéªè¯_2026-09-04.md`ã |
| | | - éçï¼æ°ï¼ï¼æåèåé¡µï¼æå/æ±æ»/åæ/æ»å¨è½¬éï¼ä¸ºæ¯çéæ 1-7 å£å¾ï¼é P2-P5 æ°æ®é©±å¨å¡«å
åå纳å
¥ 1-6 éªæ¶ã |
| | | - ææ¥å¾
åæ´æ°ï¼P0 已仿¸
åç§»é¤ï¼P1ï¼åäºçå
¬äº¤/åºç§æ¨¡æ¿åä½å
¼å®¹ãæ¯çæ¹æ¡ A ä¿®æ£åæäº¤éª¨æ¶æ¯çä¸ä¸¤æ¬ xlsx åæ´ï¼ä¿æï¼P2ï¼æåèå页éç®ãæ±æ»å·¥ä½ç°¿å端æ¥å
¥ï¼è·è¿ã |
| | | |
| New file |
| | |
| | | # æ°æ®å¯¼å
¥ç°ç¶ä¸ç¼ºå£æ¸
åï¼2026-09-04 å¿«ç
§ï¼ |
| | | |
| | | > ç¨éï¼æ¯æâå
çæ 1-6 æã1-7 ææ©åâéªè¯ï¼ä»æ¥ææ¿ç¬¬ 6ã7 æ¡ï¼ã |
| | | > æ°æ®æ¥æºï¼`import_batch` + ä¸å¡è¡¨è¡æ°ï¼å¿«ç
§æ¶é´ 2026-09-04 15:5xï¼åºï¼traffic_audit(127.0.0.1:3308)ã |
| | | |
| | | ## ä¸ã忍¡åãæ°æ®ç±»å â æºæä»¶ã对ç
§ï¼å¯¼å
¥ä¸æç¨ï¼ |
| | | | æ°æ®ç±»å(䏿) | åºè¡¨ | å¸¸ç¨æºæä»¶ | |
| | | |---|---|---| |
| | | | è´§è¿ä¼ä¸ææ¥(H203-2) | h2032_enterprise_monthly | ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã/H203-2 | |
| | | | è´§è¿éå¨è½¬é(å
¨å£å¾) | freight_turnover_import | ãå®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-Næï¼.xlsxã/ãæ¨¡æ¿_è´§è¿éå¨è½¬é.xlsxã | |
| | | | è§ä¸è§ä¸æå | scale_split_transport | ã2026å¹´1-Næå
¬è·¯è´§è¿éï¼åå¸å·ï¼.xlsxãï¼é¡µç¾âNæä»½ / Næç´¯è®¡âï¼/ãæ¨¡æ¿_è§ä¸è§ä¸æåè¿è¾é.xlsxã | |
| | | | å
¬è·¯æ
客ä¼ä¸ææ¥(H203-1) | h2031_enterprise_monthly | ãå
¬è·¯æ
客è¿è¾æåº¦ç产æ
åµï¼2026å¹´Næï¼.xlsã | |
| | | | 个ä½å®¢è¿ææ¥ | passenger_individual_monthly | ãæ¹åçå
¬è·¯æ
客è¿è¾ä¸ªä½æ·æåº¦ç产æ
åµï¼2026.Nï¼.xlsxã | |
| | | | åå¸å
¬äº¤ææ¥ | city_bus_monthly | ãåå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµï¼2026å¹´Næï¼.xlsã | |
| | | | 巡游åºç§ææ¥ | city_taxi_monthly | ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ï¼2026å¹´Næï¼.xlsã | |
| | | | ç½çº¦è½¦è®¢ååå
¨çæ»é | wyc_order_monthly | ãç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxã | |
| | | | ç½çº¦è½¦æ»æ° | wyc_total_monthly | ãç½çº¦è½¦æ»æ°.xlsxã | |
| | | |
| | | ## äºã2026 å¹´ 1-8 æå¤§è¡¨è¾å
¥å¯¼å
¥ç©éµ |
| | | å¾ä¾ï¼â å·²ææå导å
¥è®°å½ï¼â 缺ï¼â² 已导ä½éå级åé导ï¼å½æå缺失ï¼ï¼â³ 已坼使件å½ååçå¾
æ ¸å¯¹ã |
| | | |
| | | | æ°æ®ç±»åï¼¼æä»½ | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | |
| | | |---|---|---|---|---|---|---|---|---| |
| | | | è´§è¿ä¼ä¸ææ¥(H203-2) | â | â | â | â | â | â | â | â | |
| | | | è´§è¿éå¨è½¬é(å
¨å£å¾) | â | â | â | â | â | â(注1) | â | â | |
| | | | è§ä¸è§ä¸æå | â | â | â | â² | â² | â² | â² | â | |
| | | | å
¬è·¯æ
客ä¼ä¸ææ¥(H203-1) | â | â | â | â | â | â | â | â | |
| | | | 个ä½å®¢è¿ææ¥ | â | â | â | â | â³(注2) | â | â | â | |
| | | | åå¸å
¬äº¤ææ¥ | â | â | â | â | â | â | â | â | |
| | | | 巡游åºç§ææ¥ | â | â | â | â | â | â | â | â | |
| | | | ç½çº¦è½¦è®¢ååå
¨çæ»é | â | â | â | â | â | â | â | â | |
| | | | ç½çº¦è½¦æ»æ° | â | â | â | â | â | â | â | â | |
| | | |
| | | 注 1ï¼è´§è¿éå¨è½¬é 2026-06 ç两ç¬å¯¼å
¥å使ç¨ãå®ç¨¿-â¦ï¼2026å¹´1-5æï¼ãæä»¶ï¼09-04 09:45/09:46ï¼ï¼è¥ 6 ææç¬ç«å®ç¨¿æä»¶å»ºè®®é导è¦çæ ¸å¯¹ã |
| | | 注 2ï¼ä¸ªä½å®¢è¿ 2026-05 导å
¥çæä»¶åæ¯ãâ¦ï¼2026.3ï¼ãï¼å
容æ¯å¦ç¡®ä¸º 5 ææ°æ®éäººå·¥æ ¸å¯¹ï¼å¿
è¦æ¶é导ã |
| | | 注 3ï¼è§ä¸è§ä¸æå 04-07 ç®ååªæå导å
¥â累计(1-Næ)âè¡ï¼**âNæä»½ï¼å½æï¼âè¡æ¤å被导å
¥é»è¾è·³è¿**ï¼éå级å端åæåæä»¶éå¯¼è¡¥å½æè¡ï¼è§ç¬¬ä¸é¨åï¼ã |
| | | 注 4ï¼å·¡æ¸¸åºç§ 2026-07 æ¾å¨ 08-26 误ç¨å
¬äº¤æ¨¡æ¿å¯¼å
¥ 142 è¡ï¼éåå·²ç¨åºç§æ¨¡æ¿é导è¦ç为 17 è¡ï¼åºå
æ£å¸¸ï¼ã |
| | | |
| | | ## ä¸ã1-4 æç¼ºå£æ¸
åï¼è¯·ææ¤è¡¥å¯¼/éå¯¼ï¼ |
| | | ç´æ¥ç¨äºâ1-6 æçæâéªè¯ï¼è¶æ©å¯¼é½è¶æ©å¼è·ãå
¨é¨éè¿ç°æå¯¼å
¥é¡µé¢å³å¯æä½ã |
| | | |
| | | | # | æ°æ®ç±»å | 缺çæä»½ | 说æ | |
| | | |---|---|---|---| |
| | | | 1 | è´§è¿éå¨è½¬é(å
¨å£å¾) | 2026-01ã02ã03 | ç¨ãå®ç¨¿-æ¹åçåå¸å·è¿è¾éæ°æ®ï¼2026å¹´1-3æï¼â¦ãçå¯¹åºæä»¶ï¼æ¯æ 18 è¡ï¼å
¨ç+17 å¸å·ï¼ | |
| | | | 2 | è§ä¸è§ä¸æå | 2026-01ã02ã03 | ç¨ã2026å¹´1-Næå
¬è·¯è´§è¿éï¼åå¸å·ï¼.xlsxãï¼æ¯æåºå¾ 彿+累计 两ç»è¡ | |
| | | | 3 | è§ä¸è§ä¸æåï¼éå¯¼ï¼ | 2026-04~07 | å
éå¯å端ï¼å·²å âNæä»½â页ç¾è¯å«ï¼ï¼åæåæä»¶é导ï¼è¡¥åº 04-07 ç彿(MONTH)è¡ | |
| | | | 4 | å
¬è·¯æ
客ä¼ä¸ææ¥(H203-1) | 2026-01ã02 | ç¨ãå
¬è·¯æ
客è¿è¾æåº¦ç产æ
åµï¼2026å¹´1/2æï¼.xlsã | |
| | | | 5 | 个ä½å®¢è¿ææ¥ | 2026-01ã02ã03 | ç¨ãâ¦ä¸ªä½æ·æåº¦ç产æ
åµï¼2026.1~3ï¼.xlsxã | |
| | | | 6 | åå¸å
¬äº¤ææ¥ | 2026-01ã02ã03 | ç¨ãåå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµï¼2026å¹´1-3æï¼.xlsã | |
| | | | 7 | 巡游åºç§ææ¥ | 2026-01ã02ã03 | ç¨ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ï¼2026å¹´1-3æï¼.xlsã | |
| | | | 8 | ç½çº¦è½¦è®¢å/æ»é | ï¼å·²é½ï¼ | 01-07 å已导å
¥ï¼æ éè¡¥ | |
| | | | 9 | æèµææ¥ | 2026-01~05 | åºå
åªæ 06-09ï¼è¥æèµæ¨¡åä¸å¨æ¬æ¬¡ 1-6 æéªè¯èå´å¯åè¡¥ | |
| | | |
| | | > æ³¨ï¼æåææ¥ 1-6 ææä»¶å®æµé¡µç¾å³ä¸ºâ1æä»½â¦6æä»½ / 1æç´¯è®¡â¦6æç´¯è®¡âæ ¼å¼ï¼æ§ç¨åºåªè¯å«â彿/累计â导è´å½æè¡å
¨é¨è¢«è·³è¿ï¼æ¬æ¬¡å·²å âæä»½âè¯å«ï¼é导å³å¯è¡¥é½å½æè¡ã |
| | | |
| | | ## åã2025 å¹´å®ç¨¿æ°æ®ç°ç¶ï¼ææ¿ç¬¬ 4 æ¡ï¼ |
| | | - è´§è¿ä¼ä¸ææ¥(H203-2)ï¼2025-01~12 å·²å
¨é导å
¥ï¼æ¯æ 664 è¡ï¼ã |
| | | - å
¶ä½æ¨¡åï¼åºéææ 2025 å¹´æ°æ®è¡ã |
| | | - å
¨å£å¾ãè´§è¿éå¨è½¬éãæ¯ææä»¶çå³åæ¬å°±æ¯âå»å¹´ 1-12 æâåï¼last_*ï¼é 2026 å¹´è¡å
åµï¼ï¼ä¸æ¯çå³ä¾§ 2025 ååæºï¼ |
| | | - è¥è¦æ± 2025 æå/åå¸å®¢è¿/å
¬è·¯æ
客ç乿â导å
¥å®ç¨¿âèéâæ¯çç¼åâå¤çï¼è¯·åç¥èå´ï¼åªäºæ¨¡åãåªå 个æä»½çæä»¶ï¼ï¼æåææ¨¡åååºæ¸
åã |
| | | |
| | | ## äºãå¾
åï¼å¯¹åºä»æ¥ææ¿ï¼ |
| | | 1. éå¯å端å è½½âNæä»½âè¯å«ï¼ä»£ç å·²æ¹ãç¼è¯éè¿ï¼å°æªéå¯ï¼ãâ
ä¸ä¸æ¥æ§è¡ |
| | | 2. æç¬¬ä¸é¨å补导/é导åï¼è·â1-6 æçæ + 1-7 ææ©åâéªè¯å¹¶åºäº§ç©ï¼ææ¿ç¬¬ 7 æ¡ï¼ã |
| | | 3. æ¯çæâæ°æ®åå
¬å¼æ¹å¯¹åä½ä¸ºæ¯çâå¤çï¼ææ¿ç¬¬ 5 æ¡ï¼å³ä½æ£æ¸
åæ¹æ¡ A ä¿®æ£ï¼ã |
| | | 4. ç¬ç«å°è¡¨ä¿çä¸å ï¼ææ¿ç¬¬ 1 æ¡ï¼ï¼å¾
大表éªè¯éè¿ååè®®ä¸çº¿ã |
| | | 5. å
许éå¤å¯¼å
¥å·²çæï¼ææ¥è¡¨æå
å åæï¼ææ¿ç¬¬ 3 æ¡ï¼ã |
| | | |
| | | --- |
| | | |
| | | ## æ´æ°è®°å½ï¼2026-09-04 ä¸å ç¨æ·çå¤åï¼ |
| | | - å
¬äº¤/åºç§/个ä½å®¢è¿/H203-1 已补导ï¼2026-01~07ï¼H203-1 è³ 08ï¼ç°å·²å
¨é½ï¼æèµæ¨¡åæä¸çº³å
¥æ¬æ¬¡èå´ï¼ç¨æ·çå¤ï¼ã |
| | | - è´§è¿éå¨è½¬éï¼2026-02 å·²æå¯¼å
¥è¡ï¼ç¨æ·çå¤â7æè¡¨æ ¼å·²å« 1-7 ææ¯ææ°æ®âä¸å·²éæ°å¯¼å
¥ï¼2026-04~07 å¨åºï¼01ã03 æ ç¬ç«è¡ä½ 07 è¡å
åµåæåå¼ï¼åæ°æ¶æ m01~m07 使ç¨ï¼ã |
| | | - è§ä¸è§ä¸æå导å
¥å·²å级为âæç®æ æ¥è¡¨æå页ç¾âï¼åªå¯¼å
¥ {ç®æ æ}æä»½/{ç®æ æ}累计ï¼ä¸åæ 1-N æå
¨é¨é¡µç¾å¡è¿å䏿ï¼ï¼å¹¶å·²ç¨ã2026å¹´1-6æå
¬è·¯è´§è¿éï¼åå¸å·ï¼.xlsxãé导 2026-04/05/06 éªè¯ï¼æ¯æ = 彿 18 è¡ + 累计 18 è¡ï¼æ¦æ± 6 æå½æå计å¨è½¬é 687103.88 䏿ºæä»¶ä¸è´ã2026-07 ç®åä»ä¸ºæ§æ°æ®ï¼126 è¡ç´¯è®¡ï¼ï¼å¾
ç¨ã2026å¹´1-7æå
¬è·¯è´§è¿éï¼åå¸å·ï¼.xlsxãé坼䏿¬¡å³å¯åå¹²åï¼36 è¡ï¼ã |
| | | - è§ä¸è§ä¸æå 2026-01~03 ä»ç©ºï¼å¯å¤ç¨ã2026å¹´1-6æå
¬è·¯è´§è¿éï¼åå¸å·ï¼ãçæä»¶ï¼å¯¼å
¥é¡µéæ¥è¡¨æ 01/02/03 å³å¯ï¼ç¨åºåªåå¯¹åºæé¡µç¾ï¼ï¼æç¨åæèªå·±çå®ç¨¿æä»¶ã |
| | | - åâ个ä½å®¢è¿ 2026-05 æä»¶å为 (2026.3)âçç¹å·²æ¾æ¸
ï¼æä»¶ååéãå
容为 6 ææ°æ®ï¼å·²ä¿®æ¹å导å
¥ï¼06 ç°æ 7 è¡ï¼ã |
| New file |
| | |
| | | # æ±æ»è¡¨æ¯çæ°æ®ä½æ£ä¸å¾
å³çæ¸
åï¼2026-09-04ï¼ |
| | | |
| | | > ç»è®ºå
è¡ï¼å½åâçæ_éè·¯è¿è¾éæ±æ»è¡¨ = æ´æ¬å¤å¶æ¯çâãæ¬æ¬¡ä½æ£åç°çé®é¢ç»å¤§å¤æ°**åå¨äºæ¯çæä»¶æ¬èº«ï¼æ°æ®å±ï¼**ï¼ä¸æ¯å¯¼åºç¨åºæå®ç®éãæ¯çæä»¶ï¼docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxã |
| | | |
| | | ## ä¸ã已确认é®é¢ï¼å½æåéç¨ç´¯è®¡å¼ï¼ |
| | | æ¯çä¸ä»¥ä¸ 5 个æå页çâ7æå½æâæ°æ®åï¼è¢«å¤å¶æäºâ1-7æç´¯è®¡âæ°æ®åï¼æ°å¼ã忝å
¨é¨ç¸åï¼ï¼ |
| | | |
| | | | é¡µç¾ | 累计å | 彿å(é误) | ç¤ºä¾ | 7æå½æåºçº¦ä¸º | |
| | | |---|---|---|---|---| |
| | | | ä¸å£å¾åæ | r3-r7 | r12-r16 | æ»å®¢è¿é 27524.49 | â4028ï¼ç线 1631.20ï¼å
¬äº¤å乡 1466.66ï¼åºç§å乡 509.00ï¼ç½çº¦è½¦å乡 421.46ï¼åå 2026-07 åºå
/æåå¼ï¼ | |
| | | | å叿±æ» | r3-r9 | r14-r20 | æ»å®¢è¿é 237412.33 | â35465ï¼å
¬äº¤ 12974.73ï¼å·¡æ¸¸åºç§ 5860.24ï¼ç½çº¦è½¦ 4852.30ï¼è½¨é 11731.83ï¼è½®æ¸¡ 46.05ï¼ | |
| | | | åå¸åå¸å· | r5 èµ· | r50 èµ· | å
¨çæ»å®¢è¿é 237412.33 | åå叿±æ»åæå£å¾ | |
| | | | è´§è¿éæå | r4-r21 | r25-⦠| å
¨çè§ä¸ 27734.461 | 7æåæï¼è¿å°äº 1-7 ç´¯è®¡ï¼ | |
| | | | è´§è¿å¨è½¬éæå | r5 èµ· | r27 èµ· | å
¨çè§ä¸å¨è½¬é 4357157.34 | 7æåæ | |
| | | |
| | | è¿å¸¦å½±åï¼å½æåçâ忝ââæåââå æ¯âä¹éé误å¼ä¸å¹¶éï¼å¦ä¸å£å¾åæ C12/G12 å C3/G3ï¼ç¨ç齿¯ç´¯è®¡åæ¯ï¼ã |
| | | |
| | | ## äºãå
¶ä»éè¦ä½ ææ¿/çæçé®é¢ |
| | | 1. æ°æ®æºç¼ºå£ï¼å½±åâç¨åºèªå¨çæ 1-7 累计âï¼ï¼åºå
h2031 ä¼ä¸ææ¥åªæ 2026-03ã2026-07ï¼åå¸å
¬äº¤/巡游åºç§åªæ 2026-06ã2026-07ï¼ä¸ªä½å®¢è¿åªæ 2026-07ãå½åå¯ä¸å®æ´ç 1-7 åæå£å¾ä¾æ®æ¯æ¯çå°è´¦é¡µæ¬èº«ã |
| | | 2. ç½çº¦è½¦æåº¦æåè¾å
¥ãç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxãç®ååªæ 2026-07 ä¸è¡ï¼1-6 æç½çº¦è½¦åææ æ³ç±ç¨åºèªå¨è®¡ç®ã |
| | | 3. æ¯çå
¶å®éçï¼å³ä¾§å¤§é 2024/æ´æ©åèåä¸ `#REF!` æé¾ï¼å·²ç¥å¤ç项ï¼ï¼é¡µç¾é´å
¬å¼å¼ç¨ä¸â空æ¯çå¡«å¼âæ¹æ¡ä»æ P2 è½å°æ¹æ¡æ¨è¿ï¼è¡åè¾¹çãæä»½æ©å±ã2024 åå¤çã轨é轮渡å
¥åºãè¾åºç®å½äºé¡¹å¾
ææ¿ï¼ã |
| | | |
| | | ## ä¸ãä¿®å¤æ¹å建议ï¼è¯·éæ©/ç¡®è®¤ï¼ |
| | | - æ¹æ¡ Aï¼ç平快ï¼ä»
æ¬ææ£ç¡®ï¼ï¼æä¸è¡¨ææ¯ç 5 个页ç¾çâ7æå½æåâç¨ 7 æå½æåºå¼/æåç»ææ¹æ£ç¡®ï¼æ¬æ¬¡çæå³æ£ç¡®ï¼ä»¥åæ¯ææ¯çä»é人工ä¿è¯å½æåæ£ç¡®ã |
| | | - æ¹æ¡ Bï¼æ ¹æ²»ï¼æ¨èåç» P2 å®ç°ï¼ï¼å¯¼åºæ¶ä¸åä¿¡ä»»æ¯ç彿åï¼æ¹ä¸ºâå°è´¦é¡µï¼ä¿ç 1-7 åæï¼ï¼å½æåºå¼ï¼ç½çº¦è½¦æåè¾å
¥âèªå¨éç®æå页彿åï¼ç´¯è®¡åä¸å°è´¦é¡µä¸è´æ§ä¹å¯å å
¥çæåèªå¨æ ¡éªã |
| | | - å
å A 顶使¬ææµè¯ï¼åææå Bã |
| | | |
| | | --- |
| | | |
| | | ## åãç¨æ·ææ¿è®°å½ï¼2026-09-04 ä¸åï¼è¿½å ï¼ |
| | | 1. ç¬ç«å°è¡¨ææ¶ä¿çï¼çæ±æ»å¤§è¡¨è·éååèèåæ¶ï¼=使£æ¸
åâä¿®å¤æ¹åâéå°è¡¨å¯¼åºä¸å ï¼ã |
| | | 2. åææä¿®æ£åçæ¯çæ¹æ¡æ¨è¿ã |
| | | 3. å
è®¸éæ°å¯¼å
¥ï¼ç¨åºææ¥è¡¨æå
å åæï¼å·²éªè¯çæï¼æå 04-07 ééå¯¼è¡¥å½æè¡ï¼ã |
| | | 4. 2025 å¹´æ°æ®æâ导å
¥å®ç¨¿æ°æ®âå¤çï¼ç®åä»
H203-2 æ 2025-01~12ï¼å
¶ä½æ¨¡åèå´å¾
ç¨æ·æä¾æä»¶åååºæ¸
åã |
| | | 5. æ¯ç = ææ°æ®åå
¬å¼æ¹å¯¹åçæä»¶ä½ä¸ºæ¯çï¼æ¹æ¡ Aï¼å
ä¿®æ£å½æåéç¨ç´¯è®¡å¼ãæ¸
#REF!ï¼åä½ä¸ºæ¯çï¼ã |
| | | 6. å·²æè¦æ±è¾åºã1-4 æç¼ºæ°æ¸
åãâ è§ãæ°æ®å¯¼å
¥ç°ç¶ä¸ç¼ºå£æ¸
å_2026-09-04.mdã第ä¸é¨åã |
| | | 7. å
çæ 1-6 ææ°æ®ï¼1-7 æéè¿æ©å宿ï¼å䏿¬¡éªè¯ï¼å¾
æ°æ®è¡¥å¯¼åæ§è¡ï¼ä»£ç ä¾§âNæä»½âè¯å«å·²å°±ç»ªï¼ã |
| | | |
| | | --- |
| | | |
| | | ## äºãè¿½å ææ¿ä¸å¾
åï¼2026-09-04 17:1xï¼ç¨æ·ä¸´ä¸çï¼ |
| | | - æ°æ®ï¼æå/å
¨å£å¾/åå¸å®¢è¿/å
¬è·¯æ
客ï¼å·²å
¨é¨å¯¼å
¥ä¸æ ¸éªå¹²åï¼è§ä¸è§ä¸æå 2026-01~07 å 18 彿 + 18 累计ã |
| | | - 2025 å¹´æ°æ®ï¼ä»¥æ¯çç¼å为åï¼æä¸æ¹é导å
¥ï¼åç»å¯¼å
¥åå䏿¯çæ ¸å¯¹ã |
| | | - æ©åæ¹é ï¼1-6 æçæ + 1-7 ææ©åéªè¯ï¼ï¼ç¨æ·å·²ç¡®è®¤ ââ â¡ç´¯è®¡/忝æ 1-6 æè®¡ç®ï¼åæ¯åæ¯ä¸º 2025 å¹´ 1-6 æï¼â 1-6 æè¡¨ä¸ 7 æä¸¤åé»è®¤ãä¿çè¡¨å¤´ãæ°æ®åç空ãï¼è¥éæ´å廿忹ï¼ãæ¤é¡¹ 17:30 åæªå®æï¼å å
¥ææ©å¾
åï¼è§ 工使¥ç»_2026-09-04.mdï¼ã |
| | | - åå¸å®¢è¿å
¬äº¤/åºç§åäºç模æ¿ï¼å° ä¼ä¸ä»£ç ç两åï¼æ æ³å¯¼å
¥ï¼çåäºæä»¶è¡¨å¤´/åæä»¶ï¼åååä½å
¼å®¹ã |
| | |
| | | # èªå¨çæãéè·¯è¿è¾éæ±æ»è¡¨ãè½å°æ¹æ¡ï¼v0.1ï¼2026-09-03ï¼ |
| | | |
| | | > **表åé
读约å®**ï¼æ¬æãâ¦â¦ãå为**ä¸å¡ä¸æå**ï¼å¯ç´æ¥çæï¼ï¼ç¨åºæ°æ®åºéçè±æè¡¨åï¼å¦ scale_split_transportï¼åªç»å¼å对ç
§ï¼ä¸å¡äººåä¸ç¨è®°ã宿´å¯¹ç
§è§ãè¾å
¥è¾åºä¸é»è¾å
³ç³»æ»è¡¨ã第 5 èã |
| | | |
| | | ## 1 ç®æ ä¸äº¤ä»ç© |
| | | - ç³»ç»ææ¥è¡¨æèªå¨çæä¸æ¬æ±æ»å·¥ä½ç°¿ï¼2026-07 æ ·ä¾å·²ç±ç¨æ·æå·¥å¶ä½ï¼ä½äº docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼ã |
| | | - 交ä»ç©å½¢æï¼ä¸ä¸ª .xlsx å·¥ä½ç°¿ï¼å
å« 15 个å¯è§é¡µç¾ï¼çå¼ãå
¬å¼ãæ ·å¼ä¸äººå·¥æ¯çä¸è´ï¼ï¼éè页ï¼å
¬è·¯æ»å®¢è¿ã2025å¹´åå¸å®¢è¿éãä¸å£å¾å®¢è¿éãä¸å£å¾è®¡ç®è¿ç¨ï¼ä¿çä½éèï¼æ¬æ¬¡ä¸çº³å
¥æ°æ®å å·¥ã |
| | |
| | | ## 3 é¡µç¾æ¸
å䏿°æ®æºæ å° |
| | | | é¡µç¾ | å± | å£å¾ä¸å
容 | æ°æ®æºï¼åºè¡¨/导å
¥ç±»åï¼ | å¤ç¨ç°æé»è¾ | |
| | | |---|---|---|---|---| |
| | | | ç线å
车 | 1 | å
¬è·¯ç线+å
车ï¼å®¢è¿éè¡å«ä¸ªä½ï¼å
¶ä¸ä¸ªä½åç¬è¡ | h2031_enterprise_monthlyãpassenger_individual_monthly | çæ_å
¬è·¯æ
客åå¸å· æ¹é ï¼ä¸ªä½å¹¶å
¥æ»è¡å·²å®ç°ï¼2026-09-03ï¼ | |
| | | | å
¬äº¤ | 1 | å
¨ç+å¸å· æ»éä¸å
¶ä¸åå¸å
| city_bus_monthly | åå¸å®¢è¿å¯¼åºæ¨¡æ¿é»è¾æ©å± | |
| | | | åºç§ | 1 | 巡游åºç§ï¼æ»é=åå¸å
| åºç§å¯¼å
¥è¡¨ï¼city_taxi ç¸å
³ï¼ | åä¸ | |
| | | | ç线å
车 | 1 | å
¬è·¯ç线+å
车ï¼å®¢è¿éè¡å«ä¸ªä½ï¼å
¶ä¸ä¸ªä½åç¬è¡ | ãå
¬è·¯æ
客è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-1)ãã个ä½å®¢è¿ææ¥è¡¨ã | çæ_å
¬è·¯æ
客åå¸å· æ¹é ï¼ä¸ªä½å¹¶å
¥æ»è¡å·²å®ç°ï¼2026-09-03ï¼ | |
| | | | å
¬äº¤ | 1 | å
¨ç+å¸å· æ»éä¸å
¶ä¸åå¸å
| ãåå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµè¡¨ã(å
¬äº¤ææ¥) | åå¸å®¢è¿å¯¼åºæ¨¡æ¿é»è¾æ©å± | |
| | | | åºç§ | 1 | 巡游åºç§ï¼æ»é=åå¸å
| ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ãï¼åºç§å¯¼å
¥è¡¨ï¼ | åä¸ | |
| | | | ç½çº¦è½¦ | 1 | æ»é=åå¸å
ï¼æåæ¥æºå¾
å®ï¼ | ç½çº¦è½¦å¯¼å
¥è¡¨ | åä¸ | |
| | | | 轨é轮渡 | 1 | 轨éï¼æ¦æ±ãé»ç³ï¼è½®æ¸¡ï¼ä»
æ¦æ± | 轨é/轮渡导å
¥æ°æ® | åå¸å®¢è¿å¯¼åºæ©å± | |
| | | | åå¸å®¢è¿ | 2 | å
¬äº¤åå¸å
+åºç§+ç½çº¦è½¦+轨é轮渡 | ç±ç¬¬ 1 å±åæ | æ°åæé»è¾ | |
| | |
| | | - P7 åå½ä¸æ¥åï¼å
¨é对ç
§ 2026-07 人工æ¯çï¼è¾åºãåè½æµè¯æ¥å_æ±æ»å·¥ä½ç°¿çæ_<æ¥æ>.mdãï¼æ£åéæ ¼å¯¹ç
§ãè´åç¼ºæ°æ®æç¤ºãå
¥åºæ½æ¥ï¼ã |
| | | |
| | | ## 6 æ°æ®ç¼ºå£ä¸é£é© |
| | | - 2025 åºæï¼åºå
H2031 ä»
2026-03/07ãåå¸å®¢è¿ä»
2026-06/07ï¼æ 2025 æ°æ®ï¼2025 åæååªè½ ç空 æ ä¿çæ¯çç¼åå¼ï¼éææ¿ã |
| | | - 2025 åºæï¼ãå
¬è·¯æ
客è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-1) ç®ååºå
ä»
2026-03/07ãåå¸å®¢è¿ä»
2026-06/07ï¼æ 2025 æ°æ®ï¼2025 åæååªè½ ç空 æ ä¿çæ¯çç¼åå¼ï¼éææ¿ã |
| | | - ç½çº¦è½¦æåæ°æ®æºæªå®ï¼ææ¯çç°ç¶å
å®ç° æ»é=åå¸å
ï¼å乡差 0ï¼ï¼çæå说æååæ¹ã |
| | | - 轨é轮渡æåº¦æ°æ®æ¯å¦å·²å
¥åºãåæ®µå£å¾ï¼æ¦æ±/é»ç³ï¼å¾
æ ¸å¯¹ã |
| | | - åå¸åå¸å·ãå叿±æ» çå¼ç»èé对ç
§å®æ¹æ ·å¼ éæ ¼ç¡®è®¤ã |
| New file |
| | |
| | | -- ============================================================ |
| | | -- è§ä¸è´§è¿é / è§ä¸å¨è½¬é 计ç®å£å¾ï¼2026-09-04 ä¸å¡ç¡®è®¤ï¼ |
| | | -- ------------------------------------------------------------ |
| | | -- ç¨å°åªäºè¡¨ï¼ä¸æå = ç¨æ·å¹³æ¶å«çååï¼æ¬å·å
æ¯ç¨åºéåç表åï¼ä¸è¬ä¸ç¨ç®¡ï¼ï¼ |
| | | -- â ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã= 交ä¼ç»H203-2表ï¼ä¼ä¸çº§ææ¥ |
| | | -- ï¼åºè¡¨å h2032_enterprise_monthlyï¼ââéé¢çä¼ä¸é½æ¯âè§ä¸ä¼ä¸âï¼ |
| | | -- æåå¸å·ææä¼ä¸çâè´§è¿éãè´§ç©å¨è½¬éâå èµ·æ¥ï¼å°±æ¯âè§ä¸âå计ã |
| | | -- 注æï¼è¯¥è¡¨çè´§è¿éå使¯âå¨âãå¨è½¬éå使¯âå¨å
¬éâï¼ |
| | | -- èæ¥è¡¨å使¯âä¸å¨ãä¸å¨å
¬éâï¼æä»¥è¦é¤ä»¥ 10000ã |
| | | -- â¡ãè´§è¿éå¨è½¬é表ãï¼åºè¡¨å freight_turnover_importï¼ââå
¨çååå¸å·ç |
| | | -- âå
¨å£å¾âè´§è¿éãå¨è½¬éï¼è§ä¸+è§ä¸é½ç®å¨å
ï¼ï¼åä½å·²ç»æ¯âä¸å¨/ä¸å¨å
¬éâï¼ |
| | | -- éé¢è¿æä¸è¡âæ¹åçâç¨æ¥æ ¸å¯¹å
¨çå计ï¼ä»¥åå»å¹´åæåï¼last_*ï¼ã |
| | | -- â¢ãè§ä¸è§ä¸æå表ãï¼åºè¡¨å scale_split_transportï¼ââææåç»æå䏿¥ç表 |
| | | -- ï¼è§ä¸/è§ä¸/å计ï¼å«æåã忝ï¼ãç®å导å
¥çæå模æ¿åªæâå¨è½¬éâï¼ |
| | | -- æä»¥è¯¥è¡¨å¨è½¬éä¸åææ°ãè´§è¿éä¸å为空ï¼è´§è¿éæåå¦éè½è¡¨ï¼ |
| | | -- ç¨æ¥è¯¢ 3ï¼é»è®¤ä¸æ§è¡ï¼åå¡«ã |
| | | -- æ ¸å¿å
¬å¼ï¼åå¸å·ãæ¯ä¸ªæé½ä¸æ ·ï¼ï¼ |
| | | -- è§ä¸è´§è¿é(ä¸å¨) = â 表货è¿éå计 ÷ 10000 |
| | | -- å
¨å£å¾è´§è¿é(ä¸å¨) = â¡è¡¨å½æè´§è¿é |
| | | -- è§ä¸è´§è¿é(ä¸å¨) = å
¨å£å¾ â è§ä¸ |
| | | -- å¨è½¬éåçï¼è§ä¸å¨è½¬é = â¡è¡¨å½æå¨è½¬é â â 表å¨è½¬éå计 ÷ 10000ï¼ |
| | | -- å
¨çæ ¡éªï¼17 个å¸å·ç¸å = âæ¹åçâè¡ = æ±æ»è¡¨ãâ è´§è¿â页ãå
¨çæ° |
| | | -- ï¼2026-07ï¼è´§è¿é 16285.71 ä¸å¨ãè§ä¸ 3754.78 ä¸å¨ãè§ä¸ 12530.93 ä¸å¨ï¼ |
| | | -- ============================================================ |
| | | |
| | | -- ===================================================================== |
| | | -- æ¥è¯¢ 1ï¼åå¸å· âè§ä¸ / å
¨å£å¾ / è§ä¸â è´§è¿éãå¨è½¬éï¼2026-07 示ä¾ï¼ |
| | | -- æ '2026-07' æ¢æå«çæä»½ï¼æ m07 æ¢æå¯¹åºæå·ï¼m01~m12ï¼å³å¯æ¥å
¶ä»æã |
| | | -- ===================================================================== |
| | | SELECT m.å¸å·, |
| | | ft.freight_m07 AS å
¨å£å¾è´§è¿é_ä¸å¨, |
| | | ROUND(gs.è§ä¸è´§è¿é_ä¸å¨, 4) AS è§ä¸è´§è¿é_ä¸å¨, |
| | | ROUND(ft.freight_m07 - gs.è§ä¸è´§è¿é_ä¸å¨, 4) AS è§ä¸è´§è¿é_ä¸å¨, |
| | | ft.turnover_m07 AS å
¨å£å¾å¨è½¬é_ä¸å¨å
Ž, |
| | | ROUND(gs.è§ä¸å¨è½¬é_ä¸å¨å
¬é, 4) AS è§ä¸å¨è½¬é_ä¸å¨å
Ž, |
| | | ROUND(ft.turnover_m07 - gs.è§ä¸å¨è½¬é_ä¸å¨å
¬é, 4) AS è§ä¸å¨è½¬é_ä¸å¨å
Ž |
| | | FROM ( |
| | | SELECT 'æ¦æ±' AS å¸å·, 'æ¦æ±å¸' AS 表å
åå¸å UNION ALL SELECT 'é»ç³','é»ç³å¸' |
| | | UNION ALL SELECT 'åå °','åå °å¸' UNION ALL SELECT '宿','宿å¸' |
| | | UNION ALL SELECT 'è¥é³','è¥é³å¸' UNION ALL SELECT 'éå·','éå·å¸' |
| | | UNION ALL SELECT 'èé¨','èé¨å¸' UNION ALL SELECT 'åæ','åæå¸' |
| | | UNION ALL SELECT 'èå·','èå·å¸' UNION ALL SELECT 'é»å','é»åå¸' |
| | | UNION ALL SELECT 'å¸å®','å¸å®å¸' UNION ALL SELECT 'éå·','éå·å¸' |
| | | UNION ALL SELECT 'æ©æ½','æ©æ½å·' UNION ALL SELECT '仿¡','仿¡å¸' |
| | | UNION ALL SELECT 'æ½æ±','æ½æ±å¸' UNION ALL SELECT '天é¨','天é¨å¸' |
| | | UNION ALL SELECT 'æåº','æåº' |
| | | ) m |
| | | LEFT JOIN freight_turnover_import ft -- â¡ãè´§è¿éå¨è½¬é表ãï¼å
¨å£å¾æ»éææ¥ |
| | | ON ft.report_period = '2026-07' AND ft.region_name = m.表å
åå¸å |
| | | LEFT JOIN ( |
| | | SELECT CASE |
| | | WHEN region_code LIKE '4201%' THEN 'æ¦æ±' WHEN region_code LIKE '4202%' THEN 'é»ç³' |
| | | WHEN region_code LIKE '4203%' THEN 'åå °' WHEN region_code LIKE '4205%' THEN '宿' |
| | | WHEN region_code LIKE '4206%' THEN 'è¥é³' WHEN region_code LIKE '4207%' THEN 'éå·' |
| | | WHEN region_code LIKE '4208%' THEN 'èé¨' WHEN region_code LIKE '4209%' THEN 'åæ' |
| | | WHEN region_code LIKE '4210%' THEN 'èå·' WHEN region_code LIKE '4211%' THEN 'é»å' |
| | | WHEN region_code LIKE '4212%' THEN 'å¸å®' WHEN region_code LIKE '4213%' THEN 'éå·' |
| | | WHEN region_code LIKE '4228%' THEN 'æ©æ½' WHEN region_code LIKE '429004%' THEN '仿¡' |
| | | WHEN region_code LIKE '429005%' THEN 'æ½æ±' WHEN region_code LIKE '429006%' THEN '天é¨' |
| | | WHEN region_code LIKE '429021%' THEN 'æåº' END AS å¸å·, |
| | | SUM(freight_total) / 10000 AS è§ä¸è´§è¿é_ä¸å¨, -- â 表âè´§è¿éâå计ï¼å¨Ã·10000âä¸å¨ |
| | | SUM(turnover_total) / 10000 AS è§ä¸å¨è½¬é_ä¸å¨å
¬é -- â 表âå¨è½¬éâå计ï¼å¨å
¬é÷10000âä¸å¨å
Ž |
| | | FROM h2032_enterprise_monthly -- â ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ãï¼H203-2ï¼è§ä¸ä¼ä¸ï¼ |
| | | WHERE report_period = '2026-07' |
| | | GROUP BY å¸å· |
| | | ) gs ON gs.å¸å· = m.å¸å·; |
| | | |
| | | -- ===================================================================== |
| | | -- æ¥è¯¢ 2ï¼å
¨çæ ¡éªï¼çç¨åºç®çå
¨çæ°å¯¹ä¸å¯¹ï¼ |
| | | -- ææå¼ = 2026-07ï¼è§ä¸è´§è¿é 3754.78ï¼è§ä¸å¨è½¬é 597278.64ï¼ |
| | | -- å
¨å£å¾è´§è¿é 16285.71ï¼æ¯ç O5ï¼ï¼å
¨å£å¾å¨è½¬é 2181925.71ã |
| | | -- ===================================================================== |
| | | SELECT |
| | | (SELECT ROUND(SUM(freight_total)/10000, 4) FROM h2032_enterprise_monthly -- â 表 |
| | | WHERE report_period='2026-07' AND (region_code LIKE '42%' OR region_code LIKE '4290%')) AS å
¨çè§ä¸è´§è¿é_ä¸å¨, |
| | | (SELECT ROUND(SUM(turnover_total)/10000, 4) FROM h2032_enterprise_monthly -- â 表 |
| | | WHERE report_period='2026-07' AND (region_code LIKE '42%' OR region_code LIKE '4290%')) AS å
¨çè§ä¸å¨è½¬é_ä¸å¨å
Ž, |
| | | (SELECT freight_m07 FROM freight_turnover_import -- â¡è¡¨âæ¹åçâè¡ |
| | | WHERE report_period='2026-07' AND region_name='æ¹åç') AS å
¨çå
¨å£å¾è´§è¿é_ä¸å¨, |
| | | (SELECT turnover_m07 FROM freight_turnover_import -- â¡è¡¨âæ¹åçâè¡ |
| | | WHERE report_period='2026-07' AND region_name='æ¹åç') AS å
¨çå
¨å£å¾å¨è½¬é_ä¸å¨å
Ž; |
| | | |
| | | -- ===================================================================== |
| | | -- æ¥è¯¢ 3ï¼å¯éï¼é»è®¤ä¸æ§è¡ï¼ï¼æâè´§è¿éæåâåå¡«å°ãè§ä¸è§ä¸æå表ã |
| | | -- 注æï¼è¯¥è¡¨ç°å¨åªæâ累计ï¼CUMULATIVEï¼âå£å¾çå¨è½¬éè¡ï¼ |
| | | -- åå¡«è´§è¿ééè¦å
æ³æ¸
æ¥æ¯â彿âè¿æ¯â1-æç´¯è®¡âå£å¾ï¼ |
| | | -- 累计å£å¾è¦å
æ 1~7 æéæç®åºæ¥åå æ»ã确认å£å¾å忾弿³¨éæ§è¡ã |
| | | -- ===================================================================== |
| | | -- UPDATE scale_split_transport -- â¢ãè§ä¸è§ä¸æå表ã |
| | | -- JOIN (æ¥è¯¢ 1 çç»æ) d ON d.å¸å· = å¸å·å |
| | | -- SET above_scale_freight = d.è§ä¸è´§è¿é_ä¸å¨, |
| | | -- below_scale_freight = d.è§ä¸è´§è¿é_ä¸å¨, |
| | | -- total_freight = d.å
¨å£å¾è´§è¿é_ä¸å¨ |
| | | -- WHERE report_period='2026-07' AND period_type='MONTHLY'; |
| | |
| | | # æ¥è¡¨çæè¾å
¥è¾åºä¸é»è¾å
³ç³»æ»è¡¨ï¼2026-09-03 çï¼ |
| | | # æ¥è¡¨çæè¾å
¥è¾åºä¸é»è¾å
³ç³»æ»è¡¨ï¼2026-09-03 çï¼2026-09-04 å¢è¡¥ï¼ |
| | | |
| | | > å£å¾æ±æ»å
¥å£ï¼æâæ¥è¡¨çæï¼åå¸å®¢è¿/æ±æ»å·¥ä½ç°¿ï¼âç¸å
³åè½çè¾å
¥è¡¨ã页ç¾å
³ç³»ãé»è¾è¿ç®æ±æ»å¦ä¸ã |
| | | > 详ç»å±å¼è§ä¸¤ç¯ä¸é¢ï¼`docs/çææ±æ»å¤§è¡¨/页ç¾é»è¾å
³ç³»è¯´æ.md`ï¼19 页ä¸å±ç»æä¸å¾ç¨½ï¼ã`docs/çææ±æ»å¤§è¡¨/èªå¨çææ±æ»å·¥ä½ç°¿è½å°æ¹æ¡.md`ï¼P0-P7 è½å°æ¹æ¡ï¼ã |
| | | > 2026-09-04 å¢è¡¥ï¼ç¬¬ 5 èãç¨åºç¸å
³åºè¡¨æ»è§ä¸ç¸äºå
³ç³»ãã第 6 èãåä½ä¸æ°å¼æ¢ç®è§èãã第 7 èãè´§è¿âè§ä¸/è§ä¸âå£å¾è¯´æãï¼è½å° SQL è§ docs/çææ±æ»å¤§è¡¨/è§ä¸è´§è¿éå£å¾_2026-09-04.sqlã |
| | | |
| | | ## 1 å
³ç³»æ»è¡¨ |
| | | |
| | |
| | | 1. æ°å¼âæ¾ç¤ºä¸¤ä½å°æ°ãä¿çå
¨ç²¾åº¦âï¼ææçæå·¥ä½ç°¿åºå£ç»ä¸æ§è¡ applyTwoDecimalFormatï¼`0.00` æ¾ç¤ºï¼æ´æ°/%/æ¥æ/ç§å¦è®¡æ°/å·²å« 0.00 æ ·å¼ä¸å¨ï¼ã |
| | | 2. ç¼ºæ°æ®ä¸éé»ï¼wycSplit 缺è¾å
¥è¡ãsummaryWorkbook ç¼ºå½ææ¯çãready åç½®æ ¡éªç¼ºåºè¡¨æ°æ®æ¶ï¼å表置âç¼ºæ°æ®âå¹¶ç»åºåå ï¼å¯¼åºæç¡®æ¥éã |
| | | 3. ç¶ææ¥è¯¢ï¼/api/report/readyï¼æ°æ®å°±ç»ªï¼ã/api/report/previewã/api/report/export/{key}ï¼å个ï¼ã/api/report/export/selectedï¼å¤é zipï¼åå·²è¦çæ°ç±»åã |
| | | |
| | | |
| | | ## 5 ç¨åºç¸å
³âä¸å¡è¡¨âæ»è§ä¸ç¸äºå
³ç³»ï¼2026-09-04 å¢è¡¥ï¼ |
| | | |
| | | > é
读约å®ï¼ä»¥ä¸âãâ¦â¦ãâæ¯**ä¸å¡ä¸å«çåå**ï¼ç¨æ·è½çæï¼ï¼æ¬å¼§éçè±æï¼å¦ scale_split_transportï¼æ¯**ç¨åºæ°æ®åºéçå®é
表å**ï¼åªç»ç¨åº/å¼åç¨ï¼ä¸å¡äººåä¸ç¨è®°ã |
| | | > é¾è·¯æ»è§ï¼**导å
¥å°è´¦å±**ï¼åç±»ææ¥/壿¥/å¹´æ¥å¯¼å
¥ï¼â **å®¡æ ¸å±**ï¼è§åæ ¡éªï¼â **æ¥è¡¨çæå±**ï¼åè¡¨å¯¼åº / æ±æ»å·¥ä½ç°¿ / ç½çº¦è½¦æåï¼â è¾åºæä»¶ãæ¯æ¬¡å¯¼å
¥é½è®°ä¸ä¸ªâ导å
¥æ¹æ¬¡âï¼å¯å溯å°åå§æä»¶ã |
| | | |
| | | | ä¸å¡è¡¨åï¼ç¨æ·å«æ³ï¼ | ç¨åºåºè¡¨å | ç¯è/卿 | æ°æ®æ¥æºï¼å¯¼å
¥çæä»¶ï¼ | å¹²ä»ä¹ç¨ / åå«ç表ä»ä¹å
³ç³» | |
| | | |---|---|---|---|---| |
| | | | ã导å
¥æ¹æ¬¡è¡¨ã | import_batch | 导å
¥ | ææå¯¼å
¥å
±ç¨ | è®°å½âåªä¸æ¹æä»¶ãä»ä¹æ¶å导å
¥çâï¼åä¸å¡è¡¨é½å¸¦æ¹å·å¯åæ¥ | |
| | | | ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ãï¼äº¤ä¼ç»H203-2ï¼ä¼ä¸ææ¥ï¼ | h2032_enterprise_monthly | 导å
¥å°è´¦/æ | 模æ¿_交ä¼ç»H203-2表_é路货ç©è¿è¾æåº¦ç产æ
åµ.xlsx | æ¯ä¸ªâè§ä¸âä¼ä¸ä¸è¡çæç»ï¼æåå¸å·ä¼ä¸çè´§è¿é(å¨)ãå¨è½¬é(å¨å
¬é)å èµ·æ¥Ã·10000ï¼å°±æ¯è¯¥å¸å·âè§ä¸âå计ï¼ä¾è´§è¿æ¥è¡¨åæ±æ»è¡¨â è´§è¿âé¡µä½¿ç¨ | |
| | | | ãè´§è¿è¿æ¿è½¦è¾è¡¨ã | transport_auth_vehicle | 导å
¥å°è´¦/æ | 模æ¿_è¿æ¿è½¦è¾.xlsxï¼ä¹å¯é H203-2 第äºä¸ª sheet 导å
¥ï¼ | è§ä¸ä¼ä¸è½¦è¾æ°/å¨ä½ï¼ç¨äºè½¦è¾æ°æ®æ ¸å¯¹ | |
| | | | ãå
¬è·¯æ
客è¿è¾æåº¦ç产æ
åµè¡¨ãï¼äº¤ä¼ç»H203-1ï¼ä¼ä¸ææ¥ï¼ | h2031_enterprise_monthly | 导å
¥å°è´¦/æ | 模æ¿_交ä¼ç»H203-1表â¦xlsx | ç线å
车å°è´¦çâä¼ä¸é¨åâï¼å
¬è·¯æ
客åå¸å·æ¥è¡¨ | |
| | | | ã个ä½å®¢è¿ææ¥è¡¨ã | passenger_individual_monthly | 导å
¥å°è´¦/æ | 个ä½å®¢è¿ç¬ç«æ¨¡æ¿ | ç线å
车å°è´¦éçâå
¶ä¸ä¸ªä½âè¡ï¼å
¬è·¯æ
客æ»è¡=ä¼ä¸+ä¸ªä½ | |
| | | | ãå
¬è·¯æ
å®¢è¿æ¿è½¦è¾è¡¨ã | passenger_auth_vehicle | 导å
¥å°è´¦/æ | æ
å®¢è¿æ¿è½¦è¾æ°æ¨¡æ¿ï¼ä¹å¯é H203-1 ç¬¬äº sheet 导å
¥ï¼ | æ
å®¢è½¦è¾æ°æ ¸å¯¹ | |
| | | | ãé路货è¿è½¦è¾è½æºæ¶èæ
åµè¡¨ãï¼äº¤ä¼ç»H204ï¼å£æ¥ï¼ | h204_vehicle_quarterly | 导å
¥å°è´¦/å£ | è½è壿¥æ¨¡æ¿ï¼å®æ¹è½èæ ¼å¼ï¼åºå®åä½è§£æï¼ | è½èæç»ï¼è½¦ç/车å/çæ/è½èï¼ï¼ä¸è½èè¿æ¿ä¿¡æ¯åæ¥è¡¨æäºæ¥é²é导 | |
| | | | ãè½è车è¾è¿æ¿ä¿¡æ¯è¡¨ã | h204_auth_vehicle | 导å
¥å°è´¦/å£ | 模æ¿_è½è车è¾è¿æ¿ä¿¡æ¯.xlsx | è½è车è¾çæ¡£æ¡ä¿¡æ¯ | |
| | | | ã轨迹éç¨è¡¨ã | vehicle_track_mileage | 导å
¥å°è´¦/æ | 模æ¿_轨迹éç¨.xlsx | è¿æ¿å£å¾éç¨/è½¨è¿¹æ°æ® | |
| | | | ãåå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµè¡¨ãï¼åå¸å
¬äº¤ææ¥ï¼ä¼ä¸çº§ï¼ | city_bus_monthly | 导å
¥å°è´¦/æ | åå¸å
¬äº¤ææ¥æ¨¡æ¿ | å
¬äº¤å°è´¦é¡µï¼æ»é/å
¶ä¸åå¸å
/å乡差ï¼ï¼è¡¨å
è¿å¸¦è½¨éã轮渡æåº¦æ°æ®åï¼rail_*/ferry_*ï¼ï¼ç¨äºè½¨é轮渡å°è´¦ | |
| | | | ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ãï¼U402ï¼å¸å·çº§ï¼ | city_taxi_monthly | 导å
¥å°è´¦/æ | 巡游åºç§ææ¥æ¨¡æ¿ | åºç§å°è´¦é¡µï¼æ»éè¡+å
¶ä¸åå¸å
è¡ï¼ï¼ä¹æ¯ç½çº¦è½¦æåæ¶âå·¡æ¸¸å æ¯/å¹³åè¿è·âçè¾å
¥ | |
| | | | ãåºç§è½¦è¿æ¿è½¦è¾è¡¨ã | city_taxi_auth | 导å
¥å°è´¦/æ | åºç§è½¦è¿æ¿è½¦è¾ï¼è½¦è¾çº§æç»ï¼ | è¿è¥è½¦æ°å¯¹æ¯ï¼æéè·¯è¿è¾è¯åå·çæåå¸å·å½å± | |
| | | | ãè´§è¿éå¨è½¬é表ãï¼å
¨ç/å¸å·å
¨å£å¾æ»éææ¥ï¼ | freight_turnover_import | 导å
¥å°è´¦/æ | 模æ¿_è´§è¿éå¨è½¬é.xlsx | **å
¨å£å¾ï¼è§ä¸+è§ä¸ï¼**çè´§è¿é(ä¸å¨)/å¨è½¬é(ä¸å¨å
¬é)ï¼æ¯æä¸å(m01~m12)并带å»å¹´åæ(last_*)ï¼æâæ¹åçâè¡ç¨äºå
¨çæ ¡éª | |
| | | | ãè§ä¸è§ä¸æå表ãï¼æåç»æè¡¨ï¼ | scale_split_transport | 导å
¥å°è´¦/æ | 模æ¿_è§ä¸è§ä¸æåè¿è¾é.xlsxï¼å½æ/累计两个 sheetï¼ | åâè§ä¸/è§ä¸/å计âä¸åï¼å«æåã忝ï¼ãç®å导å
¥æ¨¡æ¿åªæå¨è½¬éï¼æä»¥å¨è½¬éä¸åææ°ãè´§è¿éä¸å空ï¼è¯¦è§ç¬¬ 7 èï¼ | |
| | | | ãæèµææ¥è¡¨ããæèµé¡¹ç®è¡¨ããæèµç³»ç»å¯¼åºè¡¨ã | investment_monthly / investment_project / investment_system | 导å
¥å°è´¦/æ | æèµææ¥ï¼å®¢è¿ç«åº/ç©æµååºçï¼/ 项ç®åº / æèµç³»ç»å¯¼åºæä»¶ | æèµæ¨¡å导å
¥ä¸å®¡æ ¸ï¼ææä¸æèµç³»ç»å¯¼åºæ°æ®å¯¹è´¦ï¼I004 çè§åï¼ | |
| | | | ãå®¡æ ¸è§å表ããå®¡æ ¸æ§è¡è¡¨ããå®¡æ ¸ç»æè¡¨ããå®¡æ ¸è¯´æè¡¨ã | audit_rule / audit_run / audit_result / audit_explanation | å®¡æ ¸ | å®¡æ ¸å¼æ | è§åé
ç½® â æ¯æ¬¡æ§è¡ä¸ä¸ªæ¹å· â å½ä¸/éè¿æç»ï¼æä¸å¡è¡¨ä¸è¡å·ï¼â æ±æ»è¯´æ | |
| | | | ãAI åæè±ææ å°è¡¨ã | llm_desensitize_map | è¾
å© | AI åæ | å¯¼åº AI åææ¶åè±æ | |
| | | | ãç¨æ·/è§è²/é¨é¨è¡¨ã | sys_user / sys_role / sys_dept | ç³»ç» | - | ç»å½ä¸ç/å¸/å¿æ°æ®æé | |
| | | |
| | | æ¥è¡¨çæå±ä¸æ°å¢è¡¨ï¼æâæ¥è¡¨é¡¹â模æ¿âä»ä¸é¢çä¸å¡è¡¨åæ°âè¾åº xlsxâï¼è¯¦è§ç¬¬ 1 èä¸ `docs/çææ±æ»å¤§è¡¨/èªå¨çææ±æ»å·¥ä½ç°¿è½å°æ¹æ¡.md`ã |
| | | |
| | | ## 6 åä½ä¸æ°å¼æ¢ç®è§èï¼2026-09-04 å¢è¡¥ï¼åç¨ 2026-07 åºå¼ä¸æ¯çéæ ¼éªè¯ï¼ |
| | | |
| | | | æ°æ®å¨åªä¸ªè¡¨ | åæ®µ/å«ä¹ | åºå
åä½ | æ¥è¡¨åä½ | æ¢ç® | 2026-07 éªè¯æ ·ä¾ | |
| | | |---|---|---|---|---|---| |
| | | | ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-2) | è´§è¿é | å¨ | ä¸å¨ | ÷10000 | æ¦æ±å计 12275499 å¨ â 1227.55 ä¸å¨ = æ±æ»è¡¨â è´§è¿â页è§ä¸7æ | |
| | | | ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-2) | è´§ç©å¨è½¬é | å¨å
¬é | ä¸å¨å
¬é | ÷10000 | æ¦æ±å计 2048095633 å¨å
¬é â 204809.56 = æ¯çè§ä¸å¨è½¬é7æ | |
| | | | ãè´§è¿éå¨è½¬é表ã | å½æè´§è¿é(mXX) | ä¸å¨ | ä¸å¨ | ç´æ¥ç¨ | å
¨ç 16285.71 ä¸âæ¹åçâè¡ã17 å¸å·æ±åä¸è´ | |
| | | | ãè´§è¿éå¨è½¬é表ã | 彿å¨è½¬é(mXX) | ä¸å¨å
¬é | ä¸å¨å
¬é | ç´æ¥ç¨ | æ¦æ± 667561.37 | |
| | | | ãè§ä¸è§ä¸æå表ã | è§ä¸/è§ä¸/å计å¨è½¬é | ä¸å¨å
¬é | ä¸å¨å
¬é | ç´æ¥ç¨ï¼æåæ¨¡æ¿æ°å¼ï¼ | æ¦æ±è§ä¸ç´¯è®¡ 1440570.29 = æ¯ç累计å | |
| | | | æ±æ»è¡¨æ¯çâ è´§è¿â页 | 2026 åæå¼åä¸ 2025 å(T..AP) | 䏿æ åï¼ä¸å¨/ä¸å¨å
¬éï¼ | åå·¦ | ç´æ¥ç¨ï¼2025 å为人工ç¼åå¼ | å
¨çè§ä¸ 12530.93ã25å¹´7æ 12187.25 | |
| | | |
| | | **æå®¹æè¸©çå**ï¼ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-2) æ¯âå¨/å¨å
¬éâï¼ãè´§è¿éå¨è½¬éè¡¨ãæ¯âä¸å¨/ä¸å¨å
¬éâï¼ä¸¤å¼ 表ç¸ååå¿
é¡»å
æ H203-2 çæ°å¼ Ã·10000ï¼å¦åä¼å·® 4 个æ°é级ã |
| | | |
| | | ## 7 è´§è¿âè§ä¸/è§ä¸âå£å¾ä¸ãè§ä¸è§ä¸æå表ã说æï¼2026-09-04 æ°å¢ï¼ä¸å¡å£å¾å·²ç¡®è®¤ï¼ |
| | | |
| | | **计ç®å
¬å¼ï¼åå¸å·ãæ¯ä¸ªæåå¼ï¼** |
| | | - è§ä¸è´§è¿éï¼ä¸å¨ï¼= ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-2) åä¼ä¸è´§è¿éå计 ÷ 10000 |
| | | - å
¨å£å¾è´§è¿éï¼ä¸å¨ï¼= ãè´§è¿éå¨è½¬é表ãå½æè´§è¿éå |
| | | - **è§ä¸è´§è¿éï¼ä¸å¨ï¼= å
¨å£å¾ â è§ä¸** |
| | | - è´§ç©å¨è½¬éåçï¼è§ä¸ = H203-2 å¨è½¬éå计 ÷ 10000ï¼å
¨å£å¾ = ãè´§è¿éå¨è½¬é表ã彿å¨è½¬éåï¼è§ä¸ = å
¨å£å¾ â è§ä¸ |
| | | - å
¨çæ ¡éªï¼17 å¸å·ç¸å = ãè´§è¿éå¨è½¬é表ãâæ¹åçâè¡ = æ±æ»è¡¨â è´§è¿â页å
¨çæ°ï¼2026-07ï¼O5=16285.71ãO7=3754.78ãO9=12530.93ï¼ |
| | | |
| | | **2026-07 éªè¯ç»æï¼å¯¹ç
§æ¯çã2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxãâ è´§è¿â页ï¼** |
| | | - è§ä¸å计 3754.78ãå
¨å£å¾ 16285.71ãè§ä¸å计 12530.93ï¼ä¸æ°ä¸æ¯ç O7/O5/O9 å
¨çã |
| | | - 17 å¸å·è§ä¸ä¸æ¯çâè§ä¸è´§è¿éâåéä¸å¯¹ä¸ï¼æ¦æ± 1227.55ãé»ç³ 133.08ãèå· 145.22ãæåº 7.90â¦ï¼ã |
| | | - è§ä¸åå¸å·ç¤ºä¾ï¼æ¦æ± 3713.42ãè¥é³ 2578.93ãèå· 869.60ãéå· 108.68ãæåº 25.67ï¼ç¸å =12530.93ã |
| | | - å¨è½¬éåå¼ä¹æç«ï¼æ¦æ±è§ä¸å¨è½¬é 462751.81ï¼=667561.37â204809.56ï¼= æ¯ç O16ã |
| | | |
| | | **ãè§ä¸è§ä¸æå表ãç½è¯è§£é** |
| | | - 宿¯âè§ä¸è§ä¸æå表âExcel 导å
¥åå䏿¥çç»æè¡¨ï¼ä¸å¼ è¡¨éæ¾âè§ä¸ä¼ä¸è¿è¾éãè§ä¸è¿è¾éãè¿è¾éå计âä¸åï¼å带æåã忝ï¼ï¼è®©æ¥è¡¨ç´æ¥åæåç»æãä¸ç¨æ¯æ¬¡ç°ç®ã |
| | | - ç®å导å
¥çæå Excel **åªæå¨è½¬é**ï¼æä»¥è¡¨éå¨è½¬éä¸åï¼è§ä¸/è§ä¸/åè®¡ï¼ææ°ï¼2026-07 å·²å
¥åº 126 è¡ï¼period_type=CUMULATIVE å³ç´¯è®¡å£å¾ï¼ï¼èè´§è¿éä¸å Excel éæ²¡æãä¸ç´æ¯ç©ºââ**䏿¯ç¨åºåäºï¼æ¯è¾å
¥æä»¶ä¸å«è´§è¿éæå**ã |
| | | - 妿以å叿å®è¿è´§è¿éæåä¹åï¼ç¨åºæä¸é¢çå
¬å¼åå¡«å³å¯ï¼SQL æ¥è¯¢ 3 å·²ç»ç¤ºä¾ï¼é»è®¤æ³¨é䏿§è¡ï¼ãæ¥è¡¨åæ°æ¹å¼â宿¶ç°ç®âåâè½è¡¨åæ°âéä¸ç§å³å¯ï¼é¿å
两å¤ç®çä¸ä¸æ ·ã |
| | | |
| | | **è½å° SQL**ï¼`docs/çææ±æ»å¤§è¡¨/è§ä¸è´§è¿éå£å¾_2026-09-04.sql`ï¼æ¥è¯¢ 1 = åå¸å·è§ä¸/è§ä¸è´§è¿éä¸å¨è½¬éï¼æ¥è¯¢ 2 = å
¨çæ ¡éªï¼æ¥è¯¢ 3 = å¯éçå填示ä¾ï¼ã |
| | | |
| | | **2025 åºå说æï¼å¯¹åº 2026-09-03 å·²ææ¿é¡¹ï¼2025 åæåä¿çæ¯çç¼åå¼ï¼** |
| | | - å
¨å£å¾ 2025 åºåï¼ä»ãè´§è¿éå¨è½¬é表ãçå»å¹´åæå(last_freight/last_turnover_mXX)åã |
| | | - è§ä¸/è§ä¸æåç 2025 åºåï¼åºå
没æ 2025 å¹´ç H203-2 ä¼ä¸ææ¥ï¼åªè½åæ±æ»è¡¨æ¯ç 2025 ç¼ååï¼T..APï¼å«è§ä¸/è§ä¸ï¼ï¼å·²æ ¸å® 12 个æåæå¼ï¼æ¹æ¡å¯è¡ã |
| | | |
| | | ## 8 ç¸å
³ææ¡£ç´¢å¼ï¼æç»åæ¥ï¼ |
| | | |
| | | - `docs/çææ±æ»å¤§è¡¨/页ç¾é»è¾å
³ç³»è¯´æ.md`ï¼æ±æ»å·¥ä½ç°¿ 19 页ä¸å±ç»æä¸å¾ç¨½ï¼å°è´¦/å£å¾åæ/æåï¼ã |
| | | - `docs/çææ±æ»å¤§è¡¨/èªå¨çææ±æ»å·¥ä½ç°¿è½å°æ¹æ¡.md`ï¼P0-P7 宿½æ¥éª¤ä¸éªæ¶ã |
| | | - `docs/çææ±æ»å¤§è¡¨/æ±æ»è¡¨æ¯çæ°æ®ä½æ£ä¸å¾
å³çæ¸
å_2026-09-04.md`ï¼5 个æå页â彿åéç¨ç´¯è®¡å¼âé®é¢ä¸ A/B æ¹æ¡ã |
| | | - `docs/æ¥è¡¨çæ_å
³ç³»é»è¾ä¸æ¯æ¥è¿åº¦æ»è¡¨.xlsx`ï¼Sheet1 æ¥è¡¨å
³ç³»ãSheet2 页ç¾å£å¾ãSheet3 å¾
确认ãSheet4 æ¯æ¥è¿åº¦ï¼å¯ä¸è¿åº¦æ»è¡¨ï¼ã |
| | | - `docs/çææ±æ»å¤§è¡¨/è§ä¸è´§è¿éå£å¾_2026-09-04.sql`ï¼è´§è¿è§ä¸å£å¾è½å° SQLï¼ä¸æè¡¨å说æçï¼ã |
| | |
| | | # 页ç¾é»è¾å
³ç³»è¯´æï¼2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨ï¼ |
| | | |
| | | > **表åé
读约å®**ï¼æ¬æãâ¦â¦ãå为**ä¸å¡ä¸æå**ï¼å¯ç´æ¥çæï¼ï¼ç¨åºæ°æ®åºéçè±æè¡¨åï¼å¦ scale_split_transportï¼åªç»å¼å对ç
§ï¼ä¸å¡äººåä¸ç¨è®°ã宿´å¯¹ç
§è§ãè¾å
¥è¾åºä¸é»è¾å
³ç³»æ»è¡¨ã第 5 èã |
| | | |
| | | ## 0 说æä¸ä¾æ® |
| | | - 便®æä»¶ï¼docs/çææ±æ»å¤§è¡¨/2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼å«å
¬å¼å稿ï¼2026-09-03 åæï¼ã |
| | | - ç¨éï¼ä½ä¸ºç³»ç»èªå¨çæè¯¥æ±æ»å·¥ä½ç°¿çåæ°ä¸å£å¾ä¾æ®ãæç»äº¤ä»ç©ä¸ºè¿ä¸æ¬æ±æ»å·¥ä½ç°¿ï¼ä¸ååç¬çæå°è¡¨æä»¶ã |
| | |
| | | ## 3 å页èè´£ä¸ä¸»è¦åæ° |
| | | - ç线å
车ï¼å
¬è·¯ç线ï¼å«å
车ï¼ãå
¨çè¡ r4/r5 为客è¿é/å¨è½¬éï¼å®¢è¿éå«ä¸ªä½ï¼å·²ç¡®è®¤ï¼ï¼r6/r7 为å
¶ä¸ä¸ªä½å®¢è¿é/å¨è½¬éãå¸å·è¡èª r8 èµ·æ¯ 4 è¡ä¸åãæ°æ®æºï¼H203-1 ä¼ä¸ææ¥ + ä¸ªä½æ·ææ¥ã |
| | | - å
¬äº¤ï¼æ»éè¡ r5/r6ï¼å
¶ä¸åå¸å
r7/r8ï¼å
¬äº¤å乡 = æ»é - åå¸å
ãæ°æ®æºï¼åå¸å
¬äº¤ææ¥ã |
| | | - åºç§ï¼å·¡æ¸¸åºç§ï¼ç»æåå
¬äº¤ï¼å
¨çå r5-r8ï¼å®¢è¿é/å¨è½¬é/å
¶ä¸åå¸å
客è¿é/å
¶ä¸åå¸å
å¨è½¬éï¼ï¼æ¯å¸å· 4 è¡ä¸åï¼æ¦æ± r9-r12ãé»ç³ r13-r16ï¼ä¾æ¤ç±»æ¨ï¼ãæ»éè¡ä¸âå
¶ä¸åå¸å
âè¡å¹¶åï¼æ»é ⥠åå¸å
ï¼ä»
æ¦æ±ä¸¤è¡ç¸çï¼å乡差 0ï¼ï¼å
¶ä½å¸å·åå¨åé
å乡差ã2026-07ï¼å
¨çåºç§å®¢è¿é 5860.24 ä¸äººæ¬¡ãå
¶ä¸åå¸å
5351.24ãåé
å乡差 509.00ï¼æº=city_taxi_monthly ç passenger_volume/passenger_cityï¼å¦é»ç³ 283.02/258.57ï¼ã |
| | | - åºç§ï¼å·¡æ¸¸åºç§ï¼ç»æåå
¬äº¤ï¼å
¨çå r5-r8ï¼å®¢è¿é/å¨è½¬é/å
¶ä¸åå¸å
客è¿é/å
¶ä¸åå¸å
å¨è½¬éï¼ï¼æ¯å¸å· 4 è¡ä¸åï¼æ¦æ± r9-r12ãé»ç³ r13-r16ï¼ä¾æ¤ç±»æ¨ï¼ãæ»éè¡ä¸âå
¶ä¸åå¸å
âè¡å¹¶åï¼æ»é ⥠åå¸å
ï¼ä»
æ¦æ±ä¸¤è¡ç¸çï¼å乡差 0ï¼ï¼å
¶ä½å¸å·åå¨åé
å乡差ã2026-07ï¼å
¨çåºç§å®¢è¿é 5860.24 ä¸äººæ¬¡ãå
¶ä¸åå¸å
5351.24ãåé
å乡差 509.00ï¼æº=ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ã çâ客è¿é/å
¶ä¸åå¸å
客è¿éâ两åï¼åæ®µè±æ passenger_volume/passenger_cityï¼ï¼å¦é»ç³ 283.02/258.57ï¼ã |
| | | - ç½çº¦è½¦ï¼ç»æåå
¬äº¤ï¼æ»éè¡+å
¶ä¸åå¸å
è¡ï¼æ¯å¸å· 4 è¡ï¼ãå
¨éä¸åå¸å
æ¥èªãç½çº¦è½¦å®¢è¿éæå表ãï¼å®¢è¿é Câæ»éè¡ãåå¸å
Hâå
¶ä¸åå¸å
è¡ãåé
å乡 Iâå乡差è¡ã2026-07ï¼å
¨ç 4852.30 / 4430.84 / 421.46ï¼æ¦æ±æ å乡差ï¼I=0ï¼ï¼æ¯çç½çº¦è½¦é¡µå½æå¼å³æåç»æï¼å¦é»ç³åå¸å
140.344963641575ï¼ã |
| | | - 轨é轮渡ï¼ä¸åå轨éï¼å
¨ç r4/r5ï¼æ¦æ± r6/r7ï¼é»ç³ r8/r9ï¼å
¨ç=æ¦æ±+é»ç³ï¼ï¼ä¸åå轮渡ï¼å
¨ç r13/r14ï¼æ¦æ± r15/r16ï¼å
¨ç=æ¦æ±ï¼ãé»ç³åªæè½¨éãæ²¡æè½®æ¸¡ï¼å·²äºæ¬¡ç¡®è®¤ï¼ï¼è½®æ¸¡é¡µä»
æ¦æ±è¡ï¼å
¨ç=æ¦æ±ï¼ï¼æ é为é»ç³æ©è¡ã |
| | | - åå¸å®¢è¿ï¼åå¸å
å£å¾ãå¸å·è¡å
¬å¼ç¤ºä¾ï¼æ¦æ±ï¼C å=1 æï¼ï¼C6=å
¬äº¤!C11+åºç§!C11+ç½çº¦è½¦!C11+轨é轮渡!C6+轨é轮渡!C15ââå
¬äº¤/åºç§/ç½çº¦è½¦å¼ç¨ç C11 å为该页âå
¶ä¸åå¸å
客è¿éâè¡ï¼è½¨é轮渡å¼è½¨éå C6 ä¸è½®æ¸¡å C15ï¼å¨è½¬éåçå¼ç¨å页åå¸å
å¨è½¬éè¡ï¼å¦åºç§!C12ï¼ãå
¨çè¡=åå¸å·æ±åãæ°æ®æº=å
¬äº¤åå¸å
+åºç§åå¸å
+ç½çº¦è½¦åå¸å
+轨é轮渡ã |
| | |
| | | - ç线å
车å
¨é = å
¶ä¸ä¸ªä½ + å
¶ä½ä¼ä¸é¨åï¼ä¸ªä½åéå
³ç³»ï¼å·²ç¡®è®¤ï¼ã |
| | | |
| | | ## 5 æ°æ®æ¥æºä¸ç³»ç»æ å°ï¼å»ºè®®ï¼ |
| | | - ç线å
车ï¼h2031_enterprise_monthly + passenger_individual_monthlyï¼å®¢è¿é=ä¼ä¸+个ä½ï¼å
¶ä¸ä¸ªä½åç¬è¡ï¼ã |
| | | - å
¬äº¤ï¼city_bus_monthlyï¼æ³¨æåºååå¸å
/å乡忮µå£å¾ï¼å½åç³»ç»æ passenger_chengxiang åå乡ï¼ã |
| | | - åºç§ï¼city_taxi_monthlyï¼æ»é=passenger_volume 客è¿éè¡ï¼åå¸å
=passenger_cityâå
¶ä¸åå¸å
âè¡ï¼ä¸ U402 䏿¥åæºï¼ã |
| | | - ç线å
车ï¼ãå
¬è·¯æ
客è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-1) + ã个ä½å®¢è¿ææ¥è¡¨ãï¼å®¢è¿é=ä¼ä¸+个ä½ï¼å
¶ä¸ä¸ªä½åç¬è¡ï¼ã |
| | | - å
¬äº¤ï¼ãåå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµè¡¨ã(å
¬äº¤ææ¥)ï¼æ³¨æåºååå¸å
/å乡忮µå£å¾ï¼å½åç³»ç»æ passenger_chengxiang åå乡ï¼ã |
| | | - åºç§ï¼ã巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ãï¼æ»é=passenger_volume 客è¿éè¡ï¼åå¸å
=passenger_cityâå
¶ä¸åå¸å
âè¡ï¼ä¸ U402 䏿¥åæºï¼ã |
| | | - ç½çº¦è½¦ï¼æå表è¾åºï¼æ»éè¡=æå客è¿é Cãå
¶ä¸åå¸å
è¡=æå Hãå乡差è¡=æå Iï¼è¾å
¥=é¨çº§è®¢åéä»¶1 17 å¸å·è®¢å + å
¨ç pin + 巡游åºç§ææ¥å¹³åè¿è·ï¼ï¼2026-07 æåç»æå·²ææ¤å£å¾å¡«åæ¯çç½çº¦è½¦é¡µã |
| | | - 轨éè½®æ¸¡ï¼æ¦æ±/é»ç³è½¨éãæ¦æ±è½®æ¸¡ä¸ç¨å¯¼å
¥è¡¨ã |
| | | - è´§è¿ï¼h2032 çè§ä¸è§ä¸æåè¡¨ï¼æ¨¡æ¿_è´§è¿éå¨è½¬é + æå表ï¼ã |
| | | - è´§è¿ï¼ãé路货ç©è¿è¾æåº¦ç产æ
åµè¡¨ã(H203-2) ä¸ãè§ä¸è§ä¸æå表ãï¼æ¥æºï¼æ¨¡æ¿_è´§è¿éå¨è½¬é + æå表ï¼ã |
| | | |
| | | ## 6 éçé®é¢ä¸å¾
å |
| | | 1. #REF! æ®ä½ï¼å¯è§é¡µ ä¸å£å¾æç» AU4/AU97ãè´§è¿ BQ108ãç线å
车 IJ4/JW4/IJ5/JW5/JF28/JF29ï¼åå¨è¿ç¦» 1-7 æä¸»æ°æ®åºç年份/è¾
å©åãä¸å¡çå¤ä¸º å·²å /æ¸
é¤ï¼2026-09-03 11:01 夿¥æä»¶ä»åå¨ï¼ï¼æ¸
餿¹å¼å¾
æç»ç¡®è®¤ï¼ç¨åºæ¸
é¤ç½®ç©ºï¼æäººå·¥å¤çã |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** æ°å¼èå´æ£æ¥ï¼å¦ æ´è½¦å¨ä½ 4â¤ä¸â¤40ï¼ */ |
| | | /** æ°å¼èå´æ£æ¥ï¼æ´è½¦å¨ä½æâå¹³åå¨ä½=æ´è½¦å¨ä½/æ´è½¦æ°âå£å¾å¤å® 4~40 */ |
| | | private AuditResult checkOutRange(AuditRule rule, H2032EnterpriseMonthly report) { |
| | | String[] bounds = rule.getThreshold().split(","); |
| | | if (bounds.length < 2) return null; |
| | | double value = getH2032FieldValue(report, rule.getCheckField()); |
| | | String field = rule.getCheckField(); |
| | | String label = h2032FieldLabel(field); |
| | | double value; |
| | | if ("tonsWhole".equals(field)) { |
| | | double vehicles = report.getVehicleWhole() == null ? 0.0 : report.getVehicleWhole().doubleValue(); |
| | | double tons = nvl(report.getTonsWhole()); |
| | | if (vehicles > 0) { |
| | | value = tons / vehicles; |
| | | label = "æ´è½¦å¹³åå¨ä½(æ´è½¦å¨ä½/æ´è½¦æ°)"; |
| | | } else { |
| | | value = tons; // æ æ´è½¦æ°ä½æå¨ä½æ¶ä»æåå¨ä½å¤å® |
| | | } |
| | | } else { |
| | | value = getH2032FieldValue(report, field); |
| | | } |
| | | double low = Double.parseDouble(bounds[0].trim()); |
| | | double high = Double.parseDouble(bounds[1].trim()); |
| | | if (value > 0 && (value < low || value > high)) { |
| | | return buildResult(rule, report, h2032FieldLabel(rule.getCheckField()) + "=" + fmt(value), |
| | | return buildResult(rule, report, label + "=" + fmt(value), |
| | | "èå´ " + fmt(low) + "~" + fmt(high), "è¶
åºèå´"); |
| | | } |
| | | return null; |
| | |
| | | } |
| | | |
| | | private String fmt(double v) { |
| | | if (v == Math.floor(v) && !Double.isInfinite(v)) { |
| | | if (v == Math.floor(v) && !Double.isInfinite(v) && Math.abs(v) < 1e15) { |
| | | return String.valueOf((long) v); |
| | | } |
| | | return String.valueOf(Math.round(v * 100.0) / 100.0); |
| | | return java.math.BigDecimal.valueOf(v).setScale(2, java.math.RoundingMode.HALF_UP) |
| | | .stripTrailingZeros().toPlainString(); |
| | | } |
| | | |
| | | /** å æ¯/å°æ°å¼ï¼ä¿ç 4 ä½å°æ° */ |
| | | private String fmt4(double v) { |
| | | if (v == Math.floor(v) && !Double.isInfinite(v)) { |
| | | if (v == Math.floor(v) && !Double.isInfinite(v) && Math.abs(v) < 1e15) { |
| | | return String.valueOf((long) v); |
| | | } |
| | | return String.valueOf(Math.round(v * 10000.0) / 10000.0); |
| | | return java.math.BigDecimal.valueOf(v).setScale(4, java.math.RoundingMode.HALF_UP) |
| | | .stripTrailingZeros().toPlainString(); |
| | | } |
| | | |
| | | // ========== H2031 æ
å®¢å®¡æ ¸ ========== |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** ç½çº¦è½¦æ»æ°ï¼æåº¦å
¨ç pinï¼æ¨¡æ¿_ç½çº¦è½¦æ»æ°.xlsxï¼ */ |
| | | @PostMapping("/wycTotal") |
| | | public Result<String> importWycTotal(@RequestParam("file") MultipartFile file, |
| | | @RequestParam("period") String period) { |
| | | try { |
| | | int count = importService.importWycTotal(file, period); |
| | | return Result.ok("ç½çº¦è½¦æ»æ°å¯¼å
¥æå, å
± " + count + " æ"); |
| | | } catch (Exception e) { |
| | | log.error("wycTotal import error", e); |
| | | return Result.error("导å
¥å¤±è´¥: " + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** ç½çº¦è½¦è®¢ååå
¨çæ»éï¼æ¨¡æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxï¼ */ |
| | | @PostMapping("/wycOrder") |
| | | public Result<String> importWycOrder(@RequestParam("file") MultipartFile file, |
| | | @RequestParam("period") String period) { |
| | | try { |
| | | int count = importService.importWycOrder(file, period); |
| | | return Result.ok("ç½çº¦è½¦è®¢ååå
¨çæ»é导å
¥æå, å
± " + count + " æ"); |
| | | } catch (Exception e) { |
| | | log.error("wycOrder import error", e); |
| | | return Result.error("导å
¥å¤±è´¥: " + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** æèµææ¥ï¼å
¨çæ±æ»å¤§è¡¨ï¼ï¼category=客è¿ç«åº/ç©æµååº */ |
| | | @PostMapping("/investment") |
| | | public Result<String> importInvestment(@RequestParam("file") MultipartFile file, |
| New file |
| | |
| | | package com.trafficaudit.dataimport.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** ç½çº¦è½¦è®¢ååå
¨çæ»éæåº¦è¾å
¥ï¼æºï¼æ¨¡æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsx æåº¦è¾å
¥é¡µï¼ */ |
| | | @Data |
| | | @TableName("wyc_order_monthly") |
| | | public class WycOrderMonthly { |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | /** æ¥è¡¨æ yyyy-MM */ |
| | | private String reportPeriod; |
| | | /** B-E å
¨ç pin */ |
| | | private Double pinK; |
| | | @TableField("pin_ck") |
| | | private Double pinCK; |
| | | private Double pinZ; |
| | | @TableField("pin_cz") |
| | | private Double pinCZ; |
| | | /** F 订åå计ï¼åï¼ */ |
| | | private Double orderSum; |
| | | /** G-W 17 å¸å·è®¢åï¼æ RegionUtil.cityList é¡ºåº */ |
| | | private Double orderWuhan; |
| | | private Double orderHuangshi; |
| | | private Double orderShiyan; |
| | | private Double orderYichang; |
| | | private Double orderXiangyang; |
| | | private Double orderEzhou; |
| | | private Double orderJingmen; |
| | | private Double orderXiaogan; |
| | | private Double orderJingzhou; |
| | | private Double orderHuanggang; |
| | | private Double orderXianning; |
| | | private Double orderSuizhou; |
| | | private Double orderEnshi; |
| | | private Double orderXiantao; |
| | | private Double orderQianjiang; |
| | | private Double orderTianmen; |
| | | private Double orderShennong; |
| | | private LocalDateTime createdAt; |
| | | } |
| New file |
| | |
| | | package com.trafficaudit.dataimport.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** ç½çº¦è½¦æ»æ°æåº¦è¾å
¥ï¼æºï¼æ¨¡æ¿_ç½çº¦è½¦æ»æ°.xlsxï¼B-E 为å
¨ç pinï¼ */ |
| | | @Data |
| | | @TableName("wyc_total_monthly") |
| | | public class WycTotalMonthly { |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | /** æ¥è¡¨æ yyyy-MM */ |
| | | private String reportPeriod; |
| | | /** å
¨çç½çº¦è½¦å®¢è¿éï¼ä¸äººæ¬¡ï¼ */ |
| | | private Double pinK; |
| | | /** å
¶ä¸åå¸å
客è¿éï¼ä¸äººæ¬¡ï¼ */ |
| | | @TableField("pin_ck") |
| | | private Double pinCK; |
| | | /** å
¨çç½çº¦è½¦å¨è½¬éï¼ä¸äººå
¬éï¼ */ |
| | | private Double pinZ; |
| | | /** å
¶ä¸åå¸å
å¨è½¬éï¼ä¸äººå
¬éï¼ */ |
| | | @TableField("pin_cz") |
| | | private Double pinCZ; |
| | | private LocalDateTime createdAt; |
| | | } |
| New file |
| | |
| | | package com.trafficaudit.dataimport.mapper; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.trafficaudit.dataimport.entity.WycOrderMonthly; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | @Mapper |
| | | public interface WycOrderMonthlyMapper extends BaseMapper<WycOrderMonthly> {} |
| New file |
| | |
| | | package com.trafficaudit.dataimport.mapper; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.trafficaudit.dataimport.entity.WycTotalMonthly; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | @Mapper |
| | | public interface WycTotalMonthlyMapper extends BaseMapper<WycTotalMonthly> {} |
| | |
| | | import com.trafficaudit.dataimport.entity.CityBusMonthly; |
| | | import com.trafficaudit.dataimport.entity.CityTaxiMonthly; |
| | | import com.trafficaudit.dataimport.entity.CityTaxiAuth; |
| | | import com.trafficaudit.dataimport.entity.WycOrderMonthly; |
| | | import com.trafficaudit.dataimport.entity.WycTotalMonthly; |
| | | import com.trafficaudit.dataimport.entity.ScaleSplitTransport; |
| | | import com.trafficaudit.dataimport.entity.TransportAuthVehicle; |
| | | import com.trafficaudit.dataimport.entity.VehicleTrackMileage; |
| | |
| | | import com.trafficaudit.dataimport.mapper.CityBusMonthlyMapper; |
| | | import com.trafficaudit.dataimport.mapper.CityTaxiMonthlyMapper; |
| | | import com.trafficaudit.dataimport.mapper.CityTaxiAuthMapper; |
| | | import com.trafficaudit.dataimport.mapper.WycOrderMonthlyMapper; |
| | | import com.trafficaudit.dataimport.mapper.WycTotalMonthlyMapper; |
| | | import com.trafficaudit.dataimport.mapper.ScaleSplitTransportMapper; |
| | | import com.trafficaudit.dataimport.mapper.TransportAuthVehicleMapper; |
| | | import com.trafficaudit.dataimport.mapper.VehicleTrackMileageMapper; |
| | |
| | | private CityTaxiMonthlyMapper cityTaxiMapper; |
| | | @Resource |
| | | private CityTaxiAuthMapper cityTaxiAuthMapper; |
| | | @Resource |
| | | private WycTotalMonthlyMapper wycTotalMapper; |
| | | @Resource |
| | | private WycOrderMonthlyMapper wycOrderMapper; |
| | | @Resource |
| | | private SqlSessionFactory sqlSessionFactory; |
| | | |
| | |
| | | List<ScaleSplitTransport> list = new ArrayList<>(); |
| | | int failRows = 0; |
| | | try (Workbook wb = WorkbookFactory.create(file.getInputStream())) { |
| | | int targetMonth = Integer.parseInt(period.split("-")[1]); // ä»
导å
¥ç®æ ææå¨æç页ç¾ï¼1-Nææä»¶æç®æ æå彿/ç´¯è®¡ï¼ |
| | | boolean hasPeriodSheet = false; |
| | | for (int i = 0; i < wb.getNumberOfSheets(); i++) { |
| | | String sn = wb.getSheetAt(i).getSheetName(); |
| | | if (sn != null && (sn.contains("彿") || sn.contains("累计"))) { hasPeriodSheet = true; break; } |
| | | if (sn != null && (sn.contains("彿") || sn.contains("æä»½") || sn.contains("累计"))) { hasPeriodSheet = true; break; } |
| | | } |
| | | if (!hasPeriodSheet) { |
| | | throw new RuntimeException("æéæ°æ®ç±»åãè§ä¸è§ä¸æåã䏿件å
容ä¸ç¬¦ï¼æªæ¾å°å« 彿/累计 ç sheetï¼è¯·ç¡®è®¤æ¯å¦ééäºæ°æ®ç±»å"); |
| | |
| | | Sheet sheet = wb.getSheetAt(i); |
| | | String sheetName = sheet.getSheetName(); |
| | | String periodType = null; |
| | | if (sheetName.contains("彿")) periodType = "MONTH"; |
| | | else if (sheetName.contains("累计")) periodType = "CUMULATIVE"; |
| | | java.util.regex.Matcher mSheetMonth = java.util.regex.Pattern.compile("(\\d{1,2})\\u6708(\\u4efd|\\u7d2f\\u8ba1)").matcher(sheetName); |
| | | if (mSheetMonth.find()) { |
| | | int sheetMonth = Integer.parseInt(mSheetMonth.group(1)); |
| | | if (sheetMonth == targetMonth) { |
| | | periodType = "份".equals(mSheetMonth.group(2)) ? "MONTH" : "CUMULATIVE"; |
| | | } |
| | | } else { |
| | | if (sheetName.contains("彿")) periodType = "MONTH"; |
| | | else if (sheetName.contains("累计")) periodType = "CUMULATIVE"; |
| | | } |
| | | if (periodType == null) continue; |
| | | |
| | | // æ ¡éª sheet å¸å±ï¼ç¬¬2è¡åºå«ãå¸å·/è§ä¸ä¼ä¸è¿è¾éãï¼ç¬¬3è¡å表头åºå«ãå¨è½¬éãæãè´§è¿éãï¼æ©å±å¸å±ï¼ |
| | |
| | | return success; |
| | | } |
| | | |
| | | |
| | | // ========== ç½çº¦è½¦æåº¦è¾å
¥å¯¼å
¥ï¼å
¨ç pin / 订åï¼ ========== |
| | | |
| | | /** ç½çº¦è½¦æ»æ°æåº¦è¾å
¥ï¼æ¨¡æ¿_ç½çº¦è½¦æ»æ°.xlsxï¼sheet1ï¼A å=æä»½æ¥æï¼B=å
¨ç客è¿é C=å
¶ä¸åå¸å
D=å¨è½¬é E=å
¶ä¸åå¸å
å¨è½¬éï¼ãæ´è¡¨ææ¥è¡¨æè¦çã */ |
| | | public synchronized int importWycTotal(MultipartFile file, String period) throws Exception { |
| | | Map<String, WycTotalMonthly> rows = new LinkedHashMap<>(); |
| | | try (Workbook wb = WorkbookFactory.create(file.getInputStream())) { |
| | | Sheet sheet = wb.getSheetAt(0); |
| | | for (int r = 2; r <= sheet.getLastRowNum(); r++) { |
| | | Row row = sheet.getRow(r); |
| | | if (row == null) continue; |
| | | String rp = periodOfCell(row.getCell(0)); |
| | | if (rp == null) continue; |
| | | double pk = dbl(row, 1), pck = dbl(row, 2), pz = dbl(row, 3), pcz = dbl(row, 4); |
| | | if (pk <= 0 && pck <= 0 && pz <= 0 && pcz <= 0) continue; |
| | | WycTotalMonthly item = new WycTotalMonthly(); |
| | | item.setReportPeriod(rp); |
| | | item.setPinK(pk > 0 ? pk : null); |
| | | item.setPinCK(pck > 0 ? pck : null); |
| | | item.setPinZ(pz > 0 ? pz : null); |
| | | item.setPinCZ(pcz > 0 ? pcz : null); |
| | | rows.put(rp, item); |
| | | } |
| | | } |
| | | if (rows.isEmpty()) throw new RuntimeException("æªè¯å«å°æææä»½è¡ï¼A ååºä¸ºæ¥æï¼å¦ 2026-07ï¼ï¼B-E 为å
¨ç客è¿é/åå¸å
/å¨è½¬é/åå¸å
å¨è½¬é"); |
| | | int ok = upsertWycTotal(rows); |
| | | log.info("WycTotal imported: {} periods ok={}", rows.size(), ok); |
| | | return ok; |
| | | } |
| | | |
| | | /** ç½çº¦è½¦è®¢ååå
¨çæ»éï¼æ¨¡æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsx é¦ä¸ªæ°æ® sheetï¼A=æä»½ï¼B-E=å
¨ç pinï¼F=订åå计ï¼G-W=17 å¸å·è®¢åï¼ */ |
| | | public synchronized int importWycOrder(MultipartFile file, String period) throws Exception { |
| | | Map<String, WycOrderMonthly> rows = new LinkedHashMap<>(); |
| | | try (Workbook wb = WorkbookFactory.create(file.getInputStream())) { |
| | | Sheet sheet = wb.getSheetAt(0); |
| | | int head = -1; |
| | | for (int r = 0; r <= Math.min(sheet.getLastRowNum(), 4); r++) { |
| | | Row row = sheet.getRow(r); |
| | | if (row == null) continue; |
| | | String a = getString(row, 0); |
| | | if (a != null && a.contains("æä»½")) { head = r; break; } |
| | | } |
| | | if (head < 0) throw new RuntimeException("æªæ¾å°è¡¨å¤´ï¼A åéå«âæä»½â"); |
| | | for (int r = head + 1; r <= sheet.getLastRowNum(); r++) { |
| | | Row row = sheet.getRow(r); |
| | | if (row == null) continue; |
| | | String rp = periodOfCell(row.getCell(0)); |
| | | if (rp == null) continue; |
| | | double pk = dbl(row, 1), pck = dbl(row, 2), pz = dbl(row, 3), pcz = dbl(row, 4), sum = dbl(row, 5); |
| | | double citySum = 0; |
| | | for (int k = 0; k < 17; k++) citySum += dbl(row, 6 + k); |
| | | if (pk <= 0 && pck <= 0 && pz <= 0 && pcz <= 0 && sum <= 0 && citySum <= 0) continue; |
| | | WycOrderMonthly it = new WycOrderMonthly(); |
| | | it.setReportPeriod(rp); |
| | | it.setPinK(pk > 0 ? pk : null); |
| | | it.setPinCK(pck > 0 ? pck : null); |
| | | it.setPinZ(pz > 0 ? pz : null); |
| | | it.setPinCZ(pcz > 0 ? pcz : null); |
| | | if (sum <= 0 && citySum > 0) sum = citySum; |
| | | it.setOrderSum(sum > 0 ? sum : null); |
| | | it.setOrderWuhan(dblN(row, 6)); |
| | | it.setOrderHuangshi(dblN(row, 7)); |
| | | it.setOrderShiyan(dblN(row, 8)); |
| | | it.setOrderYichang(dblN(row, 9)); |
| | | it.setOrderXiangyang(dblN(row, 10)); |
| | | it.setOrderEzhou(dblN(row, 11)); |
| | | it.setOrderJingmen(dblN(row, 12)); |
| | | it.setOrderXiaogan(dblN(row, 13)); |
| | | it.setOrderJingzhou(dblN(row, 14)); |
| | | it.setOrderHuanggang(dblN(row, 15)); |
| | | it.setOrderXianning(dblN(row, 16)); |
| | | it.setOrderSuizhou(dblN(row, 17)); |
| | | it.setOrderEnshi(dblN(row, 18)); |
| | | it.setOrderXiantao(dblN(row, 19)); |
| | | it.setOrderQianjiang(dblN(row, 20)); |
| | | it.setOrderTianmen(dblN(row, 21)); |
| | | it.setOrderShennong(dblN(row, 22)); |
| | | rows.put(rp, it); |
| | | } |
| | | } |
| | | if (rows.isEmpty()) throw new RuntimeException("æªè¯å«å°æææä»½è¡ï¼A ååºä¸º yyyy-MMï¼B-E å
¨ç pin / F å计 / G-W 17 å¸å·è®¢å"); |
| | | int ok = upsertWyc(rows); |
| | | log.info("WycOrder imported: {} periods ok={}", rows.size(), ok); |
| | | return ok; |
| | | } |
| | | |
| | | private int upsertWyc(Map<String, WycOrderMonthly> rows) { |
| | | int ok = 0, fail = 0; |
| | | for (WycOrderMonthly item : rows.values()) { |
| | | try { |
| | | wycOrderMapper.delete(new LambdaQueryWrapper<WycOrderMonthly>().eq(WycOrderMonthly::getReportPeriod, item.getReportPeriod())); |
| | | wycOrderMapper.insert(item); |
| | | recordBatch("ç½çº¦è½¦è®¢ååå
¨çæ»é", "WYC_ORDER", item.getReportPeriod(), 1, 1, 0, null); |
| | | ok++; |
| | | } catch (Exception e) { |
| | | fail++; |
| | | log.error("WycOrder insert error period={}", item.getReportPeriod(), e); |
| | | } |
| | | } |
| | | return ok; |
| | | } |
| | | |
| | | private int upsertWycTotal(Map<String, WycTotalMonthly> rows) { |
| | | int ok = 0, fail = 0; |
| | | for (WycTotalMonthly item : rows.values()) { |
| | | try { |
| | | wycTotalMapper.delete(new LambdaQueryWrapper<WycTotalMonthly>().eq(WycTotalMonthly::getReportPeriod, item.getReportPeriod())); |
| | | wycTotalMapper.insert(item); |
| | | recordBatch("ç½çº¦è½¦æ»æ°", "WYC_TOTAL", item.getReportPeriod(), 1, 1, 0, null); |
| | | ok++; |
| | | } catch (Exception e) { |
| | | fail++; |
| | | log.error("WycTotal insert error period={}", item.getReportPeriod(), e); |
| | | } |
| | | } |
| | | return ok; |
| | | } |
| | | |
| | | private String periodOfCell(Cell c) { |
| | | if (c == null) return null; |
| | | if (c.getCellType() == CellType.NUMERIC) { |
| | | try { |
| | | double v = c.getNumericCellValue(); |
| | | if (v >= 40000 && v <= 60000) { |
| | | java.util.Date d = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(v); |
| | | java.text.SimpleDateFormat f = new java.text.SimpleDateFormat("yyyy-MM"); |
| | | return f.format(d); |
| | | } |
| | | } catch (Exception ignore) { } |
| | | } |
| | | String s = null; |
| | | try { s = c.getStringCellValue(); } catch (Exception ignore) { } |
| | | if (s != null) { |
| | | java.util.regex.Matcher m = java.util.regex.Pattern.compile("(\\d{4})[-/.å¹´](\\d{1,2})").matcher(s.trim()); |
| | | if (m.find()) return String.format("%04d-%02d", Integer.parseInt(m.group(1)), Integer.parseInt(m.group(2))); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private double dbl(Row row, int idx) { |
| | | Double v = getDecimal(row, idx); |
| | | return v == null ? 0.0 : v; |
| | | } |
| | | |
| | | private Double dblN(Row row, int idx) { |
| | | Double v = getDecimal(row, idx); |
| | | return (v == null || v <= 0) ? null : v; |
| | | } |
| | | |
| | | /** è¿æ¿åºç§è½¦å¸å·æåï¼éè·¯è¿è¾è¯åå·âæ¡£æ¡å·âç»è¥æå·â䏿·å°åï¼å 6 ä½åºå代ç */ |
| | | private static final java.util.regex.Pattern TAXI_REGION_PAT = |
| | | java.util.regex.Pattern.compile("(4290\\d{2}|42(?:0[1-9]|1[0-3]|28)\\d{2})"); |
| | |
| | | case "trackMileage": return new ImportResult(importTrackMileage(file, period), 0, new ArrayList<>()); |
| | | case "freightTurnover": return new ImportResult(importFreightTurnover(file, period), 0, new ArrayList<>()); |
| | | case "scaleSplit": return new ImportResult(importScaleSplit(file, period), 0, new ArrayList<>()); |
| | | case "wycTotal": return new ImportResult(importWycTotal(file, period), 0, new ArrayList<>()); |
| | | case "wycOrder": return new ImportResult(importWycOrder(file, period), 0, new ArrayList<>()); |
| | | default: throw new RuntimeException("䏿¯æç导å
¥ç±»åï¼" + type); |
| | | } |
| | | } |
| | |
| | | /** çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼æ±æ»å·¥ä½ç°¿ P0-P1 骨æ¶ï¼æ´æ¬å¤å¶æ¯çï¼é¡µç¾/å
¬å¼/2025 ç¼åä¿çï¼ */ |
| | | @GetMapping("/export/summaryWorkbook") |
| | | public ResponseEntity<byte[]> exportSummaryWorkbook(@RequestParam("period") String period, |
| | | @RequestParam(value = "mode", defaultValue = "month") String mode) throws Exception { |
| | | @RequestParam(value = "mode", defaultValue = "month") String mode, |
| | | @RequestParam(value = "toMonth", required = false) Integer toMonth) throws Exception { |
| | | logExport("éè·¯è¿è¾éæ±æ»è¡¨.xlsx", period); |
| | | return buildResponse(reportService.exportSummaryWorkbook(period, mode), String.format("çæ_éè·¯è¿è¾éæ±æ»è¡¨_%s.xlsx", period)); |
| | | return buildResponse(reportService.exportSummaryWorkbook(period, mode, toMonth), String.format("çæ_éè·¯è¿è¾éæ±æ»è¡¨_%s.xlsx", period)); |
| | | } |
| | | |
| | | /** çæ_ç½çº¦è½¦å®¢è¿éæå表.xlsxï¼æåº¦ï¼è®¢åéä»¶1 + å
¨ç pin + 巡游åºç§ææ¥ï¼ */ |
| | |
| | | Map<String, Double> h2032Cum = loadH2032FreightCumulative(period); |
| | | ScaleSplitTransport provCum = getProvinceCumulative(period); |
| | | Double total = freightCum(ft.get("æ¹åç"), month); |
| | | Double totalWan = total == null ? null : round(total / 10000.0, 4); |
| | | Double totalWan = total == null ? null : round(total, 4); // 模æ¿åå·²æ¯ä¸å¨ï¼ä¸å ÷10000 |
| | | double above = 0.0; |
| | | for (Double v : h2032Cum.values()) if (v != null) above += v; |
| | | double aboveWan = round(above / 10000.0, 4); |
| | |
| | | * ä¿çå
¨é¨é¡µç¾/çå¼/å
¬å¼/2025 å¹´ç¼åå¼ï¼ä»
æè¡¨å¤´å¹´ä»½å¨æåä¸ºç®æ å¹´ï¼æ°æ®å¡«å
æ P2 èµ·éæ¥æ¥å
¥ã |
| | | */ |
| | | public byte[] exportSummaryWorkbook(String period, String mode) throws Exception { |
| | | return exportSummaryWorkbook(period, mode, null); |
| | | } |
| | | |
| | | /** çæ_éè·¯è¿è¾éæ±æ»è¡¨.xlsxï¼P0-P1 骨æ¶ï¼æ¯æ toMonth è£åªï¼ï¼ |
| | | * 以ãYYYYå¹´Mæéè·¯è¿è¾éæ±æ»è¡¨.xlsxãï¼M ç± period å³å®ï¼ä¸ºæ¯çï¼æåæå¤ä»½æ¯çè¿åæåº¦åï¼ |
| | | * toMonth é空ä¸å°äº M æ¶ï¼æ 8 个å°è´¦/åæé¡µè£å° toMonth æï¼toMonth+1..M ç彿å¼/忝忏
空ãä¿çè¡¨å¤´ï¼ |
| | | * 累计ä¸ç´¯è®¡åæ¯å
¬å¼æ¹ä¸ºæ toMonth æéç®ï¼ï¼ç¨äºâå
çæ 1-6 æã1-7 ææ©åâéªè¯ã */ |
| | | public byte[] exportSummaryWorkbook(String period, String mode, Integer toMonth) throws Exception { |
| | | int year = Integer.parseInt(period.contains("-") ? period.split("-")[0] : period); |
| | | int month = period.contains("-") ? monthOf(period, mode) : 12; |
| | | File template = resolveSummaryMother(period, mode); |
| | |
| | | } |
| | | try (InputStream in = new FileInputStream(template); |
| | | XSSFWorkbook wb = new XSSFWorkbook(in)) { |
| | | File donor = resolveSummaryDonor(year, month); |
| | | if (donor != null) { |
| | | try (InputStream din = new FileInputStream(donor); XSSFWorkbook dwb = new XSSFWorkbook(din)) { |
| | | int restored = restoreSummaryMonthlyBlocks(wb, dwb); |
| | | log.info("æ±æ»å·¥ä½ç°¿æåº¦åè¿å宿ï¼è¡¥é½/è¦çåå
æ ¼æ°={}ï¼æ¯çï¼{}ï¼å¤ä»½æ¯çï¼{}ï¼", restored, template.getName(), donor.getName()); |
| | | } |
| | | } else { |
| | | log.warn("æ±æ»å·¥ä½ç°¿æªæ¾å°åæå¤ä»½æ¯çï¼_å¤ä»½_{}å¹´{}æâ¦ï¼ï¼è¾åºå°ä¿ææ¯çç°ç¶ï¼å¯è½ä¸º 1-4 æéª¨æ¶ï¼", year, month); |
| | | } |
| | | if (toMonth != null && toMonth > 0 && toMonth < month) { |
| | | int trimmed = trimSummaryMonthlySheets(wb, toMonth); |
| | | log.info("æ±æ»å·¥ä½ç°¿è£åªè³ {} æå®æï¼æ¸
空/æ¹ååå
æ ¼æ°={}", toMonth, trimmed); |
| | | } |
| | | dynamicSummaryYear(wb, year); |
| | | applyTwoDecimalFormat(wb); // æ±æ»å¤§è¡¨ä¿ç人工æ¯çå宽/çå¼ï¼ä¸å autoFitï¼é¿å
¬å¼ä¼æå宽顶çï¼ |
| | | if (!wb.getCTWorkbook().isSetCalcPr()) wb.getCTWorkbook().addNewCalcPr(); |
| | | wb.getCTWorkbook().getCalcPr().setFullCalcOnLoad(true); // è¿å/æ¹åå
¬å¼åæå¼å³éç® |
| | | return toBytes(wb); |
| | | } |
| | | } |
| | |
| | | if (a[5] <= 0 && a[2] > 0) a[5] = round(a[3] / a[2], 2); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | /** å®ä½åæå¤ä»½æ¯çï¼æ¸
çåç宿´ææ¯çï¼ï¼ç¨äºæéª¨æ¶æ¯ç缺失ç 5-7 ææåº¦åæå¤ä»½è¿åï¼ |
| | | * ä¸ resolveAnyTemplate ç¸åçç¥ï¼å¨é
ç½®ç®å½ãuser.dir ç¸å¯¹ç®å½ãä¸çº§ç®å½ä¸ä¸ªåéæ ¹ä¸æ«æ */ |
| | | private File resolveSummaryDonor(int year, int month) { |
| | | String rel = summaryTemplateDir; |
| | | while (rel.startsWith("./")) rel = rel.substring(2); |
| | | String[] roots = { |
| | | summaryTemplateDir, |
| | | System.getProperty("user.dir") + "/" + rel, |
| | | System.getProperty("user.dir") + "/../" + rel |
| | | }; |
| | | for (String root : roots) { |
| | | if (root == null || root.trim().isEmpty()) continue; |
| | | File dir = new File(root); |
| | | File[] files = dir.listFiles((d, name) -> |
| | | name.startsWith("_å¤ä»½_") && name.contains(year + "å¹´" + month + "æ") && name.contains("éè·¯è¿è¾éæ±æ»è¡¨")); |
| | | if (files != null && files.length > 0) return files[0]; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** æåæå¤ä»½æ¯çè¿åæåº¦åï¼å¡å¤ä»½æå
å®¹èæ¯çåæ ¼ç¼ºå¤±/å
容ä¸åï¼æ¸
çæ¶è¢«è£æç 5-7 æå¼ä¸ç´¯è®¡å
¬å¼ï¼çåå
æ ¼ï¼æ´æ ¼åå¡«å¹¶è¦ç */ |
| | | private int restoreSummaryMonthlyBlocks(XSSFWorkbook wb, XSSFWorkbook donor) { |
| | | int restored = 0; |
| | | for (int i = 0; i < donor.getNumberOfSheets(); i++) { |
| | | Sheet ds = donor.getSheetAt(i); |
| | | if (ds == null) continue; |
| | | Sheet bs = wb.getSheet(ds.getSheetName()); |
| | | if (bs == null) continue; |
| | | for (int r = ds.getFirstRowNum(); r <= ds.getLastRowNum(); r++) { |
| | | Row dr = ds.getRow(r); |
| | | if (dr == null) continue; |
| | | Row br = bs.getRow(r); |
| | | for (Cell dc : dr) { |
| | | if (dc == null) continue; |
| | | CellType t = dc.getCellType(); |
| | | if (t == CellType.BLANK) continue; |
| | | String dtx = summaryCellText(dc); |
| | | if (dtx == null || dtx.isEmpty()) continue; |
| | | Cell bc = (br == null) ? null : br.getCell(dc.getColumnIndex()); |
| | | if (bc != null && dtx.equals(summaryCellText(bc))) continue; |
| | | Row tr = (bc != null) ? br : bs.getRow(r); |
| | | if (tr == null) tr = bs.createRow(r); |
| | | Cell tc = (bc != null) ? bc : tr.getCell(dc.getColumnIndex()); |
| | | if (tc == null) tc = tr.createCell(dc.getColumnIndex()); |
| | | tc.setBlank(); |
| | | if (t == CellType.FORMULA) { |
| | | String f = dc.getCellFormula(); |
| | | if (f != null) tc.setCellFormula(f); |
| | | } else if (t == CellType.STRING) { |
| | | tc.setCellValue(dc.getStringCellValue()); |
| | | } else if (t == CellType.NUMERIC) { |
| | | tc.setCellValue(dc.getNumericCellValue()); |
| | | } else if (t == CellType.BOOLEAN) { |
| | | tc.setCellValue(dc.getBooleanCellValue()); |
| | | } |
| | | restored++; |
| | | } |
| | | } |
| | | } |
| | | return restored; |
| | | } |
| | | |
| | | /** åå
æ ¼å
å®¹ææ¬åï¼å
¬å¼å¸¦ = åç¼ï¼ï¼ç¨äºè·¨ç°¿æ¯å¯¹ */ |
| | | private String summaryCellText(Cell c) { |
| | | if (c == null) return null; |
| | | switch (c.getCellType()) { |
| | | case FORMULA: { |
| | | String f = c.getCellFormula(); |
| | | return f == null ? "" : "=" + f; |
| | | } |
| | | case STRING: |
| | | return c.getStringCellValue(); |
| | | case NUMERIC: |
| | | return Double.toString(c.getNumericCellValue()); |
| | | case BOOLEAN: |
| | | return Boolean.toString(c.getBooleanCellValue()); |
| | | default: |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | /** æ 8 个å°è´¦/åæé¡µè£åªå° keepMonths æï¼ |
| | | * æåº¦å¼å 2026 å¹´ m æ = 第 3+2*(m-1) åï¼C/E/G/I/K/M/Oï¼ï¼åæ¯å为å
¶åä¸åï¼ |
| | | * 累计 Q å = C+E+...+Oï¼ç´¯è®¡åæ¯ R å忝 = 2025 å¹´åæå T/V/X/Z/AB/AD/AFã |
| | | * è£åª = æ°æ®è¡ï¼å«ç´¯è®¡å
¬å¼ä¸ä»»ä¸ 2026 æåº¦åæå
容ï¼ä¸ keepMonths+1..7 æç彿å¼/忝åå
æ ¼æ¸
空ï¼è¡¨å¤´ä¿çï¼ï¼ |
| | | * å¹¶æè¯¥è¡ç´¯è®¡å
¬å¼å»æå¯¹åº +åï¼ç´¯è®¡åæ¯åæ¯å»æå¯¹åº 2025 åã */ |
| | | private int trimSummaryMonthlySheets(XSSFWorkbook wb, int keepMonths) { |
| | | String[] scope = {" è´§è¿", "ç线å
车", "åå¸å®¢è¿", "å
¬äº¤", "åºç§", "ç½çº¦è½¦", "轨éã轮渡", "ä¸å£å¾æç»"}; |
| | | java.util.Set<String> scopeSet = new java.util.HashSet<>(); |
| | | for (String s : scope) scopeSet.add(s); |
| | | int touched = 0; |
| | | for (int i = 0; i < wb.getNumberOfSheets(); i++) { |
| | | Sheet sh = wb.getSheetAt(i); |
| | | if (sh == null || !scopeSet.contains(sh.getSheetName())) continue; |
| | | for (int r = sh.getFirstRowNum(); r <= sh.getLastRowNum(); r++) { |
| | | Row row = sh.getRow(r); |
| | | if (row == null) continue; |
| | | Cell q = row.getCell(16); // Q å = 累计 |
| | | if (q == null || q.getCellType() != CellType.FORMULA) continue; |
| | | boolean hasMonthly = false; |
| | | for (int m = 1; m <= 7 && !hasMonthly; m++) { |
| | | Cell v = row.getCell(2 + 2 * (m - 1)); // C,E,G,I,K,M,O |
| | | if (v != null && v.getCellType() != CellType.BLANK) hasMonthly = true; |
| | | } |
| | | if (!hasMonthly) continue; // æé¤é¡µé¦/页ä¸è·¨é¡µç¾æ ¡éªå
¬å¼è¡ï¼æ æåº¦å¼ï¼ |
| | | int excelRow = r + 1; // å
¬å¼å
å¼ç¨ä¸º Excel 1-based è¡å· |
| | | for (int m = keepMonths + 1; m <= 7; m++) { |
| | | int valueCol = 2 + 2 * (m - 1); // 2026 彿å¼å |
| | | int yoyCol = valueCol + 1; // 彿忝å |
| | | String vLetter = colLetter(valueCol); |
| | | Cell vc = row.getCell(valueCol); |
| | | if (vc != null) { |
| | | vc.setBlank(); |
| | | touched++; |
| | | } |
| | | Cell yc = row.getCell(yoyCol); |
| | | if (yc != null) { |
| | | yc.setBlank(); |
| | | touched++; |
| | | } |
| | | String fq = q.getCellFormula(); |
| | | if (fq != null && fq.contains("+" + vLetter + excelRow)) { |
| | | q.setCellFormula(fq.replace("+" + vLetter + excelRow, "")); |
| | | touched++; |
| | | } |
| | | Cell rc = row.getCell(17); // R å = ç´¯è®¡åæ¯ |
| | | if (rc != null && rc.getCellType() == CellType.FORMULA) { |
| | | String fr = rc.getCellFormula(); |
| | | int lastCol = 19 + 2 * (m - 1); // 2025 åæå T..AFï¼0-basedï¼T=19,AF=31ï¼ |
| | | String lLetter = colLetter(lastCol); |
| | | String txt = fr; |
| | | if (txt != null && txt.contains("," + lLetter + excelRow)) { |
| | | txt = txt.replace("," + lLetter + excelRow, ""); |
| | | touched++; |
| | | } |
| | | if (txt != null && txt.contains("+" + lLetter + excelRow)) { |
| | | txt = txt.replace("+" + lLetter + excelRow, ""); |
| | | touched++; |
| | | } |
| | | if (txt != null && !txt.equals(fr)) rc.setCellFormula(txt); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return touched; |
| | | } |
| | | |
| | | /** æ±æ»å·¥ä½ç°¿å¹´ä»½å¨æåï¼ä»
æ 2026å¹´ åç¼æ¿æ¢ä¸ºç®æ å¹´ï¼2025/2024 åèåä¸å¨ï¼ */ |
| | |
| | | CellType ct = cell.getCellType(); |
| | | if (ct != CellType.NUMERIC && ct != CellType.FORMULA) continue; |
| | | if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) continue; |
| | | if (ct == CellType.NUMERIC && Math.rint(cell.getNumericCellValue()) == cell.getNumericCellValue()) continue; |
| | | boolean integral = false; |
| | | if (ct == CellType.NUMERIC) { |
| | | integral = Math.rint(cell.getNumericCellValue()) == cell.getNumericCellValue(); |
| | | } else if (cell.getCachedFormulaResultType() == CellType.NUMERIC) { |
| | | integral = Math.rint(cell.getNumericCellValue()) == cell.getNumericCellValue(); |
| | | } |
| | | if (integral) continue; // æ´æ°ä¸æ¾ç¤º .00ï¼å«å
¬å¼ç»æä¸ºæ´æ°çæ ¼ï¼ |
| | | org.apache.poi.ss.usermodel.CellStyle cs = cell.getCellStyle(); |
| | | if (cs == null) continue; |
| | | String f = cs.getDataFormatString(); |
| | |
| | | } |
| | | } |
| | | |
| | | /** æ±æ»è¡¨å¯¼åºåæå
容èªå¨å 宽å宽ï¼åªå 宽ä¸ç¼©çªï¼è·³è¿åå¹¶åå
æ ¼æ é¢ï¼é²é¿æ 颿ååæçï¼ */ |
| | | private void autoFitContentColumns(org.apache.poi.ss.usermodel.Workbook wb) { |
| | | if (wb == null) return; |
| | | org.apache.poi.ss.usermodel.DataFormatter dfmt = new org.apache.poi.ss.usermodel.DataFormatter(); |
| | | for (int s = 0; s < wb.getNumberOfSheets(); s++) { |
| | | org.apache.poi.ss.usermodel.Sheet sh = wb.getSheetAt(s); |
| | | if (sh == null) continue; |
| | | java.util.Set<String> merged = new java.util.HashSet<>(); |
| | | for (org.apache.poi.ss.util.CellRangeAddress ra : sh.getMergedRegions()) { |
| | | for (int r = ra.getFirstRow(); r <= ra.getLastRow(); r++) { |
| | | for (int c = ra.getFirstColumn(); c <= ra.getLastColumn(); c++) { |
| | | merged.add(r + ":" + c); |
| | | } |
| | | } |
| | | } |
| | | int maxCol = -1; |
| | | for (org.apache.poi.ss.usermodel.Row row : sh) { |
| | | if (row == null) continue; |
| | | maxCol = Math.max(maxCol, (int) row.getLastCellNum() - 1); |
| | | } |
| | | if (maxCol < 0) continue; |
| | | int[] need = new int[maxCol + 1]; |
| | | for (org.apache.poi.ss.usermodel.Row row : sh) { |
| | | if (row == null) continue; |
| | | for (org.apache.poi.ss.usermodel.Cell cell : row) { |
| | | int c = cell.getColumnIndex(); |
| | | if (c > maxCol || merged.contains(row.getRowNum() + ":" + c)) continue; |
| | | String txt; |
| | | try { |
| | | txt = dfmt.formatCellValue(cell); |
| | | } catch (Exception ignore) { |
| | | continue; |
| | | } |
| | | if (txt == null || txt.isEmpty()) continue; |
| | | int units = 0; |
| | | for (int i = 0; i < txt.length(); i++) { |
| | | units += isWideChar(txt.charAt(i)) ? 2 : 1; |
| | | } |
| | | if (units > need[c]) need[c] = Math.min(units, 34); // é¿ææ¬ä¸æååæç |
| | | } |
| | | } |
| | | for (int c = 0; c <= maxCol; c++) { |
| | | if (need[c] <= 0) continue; |
| | | int target = Math.min(need[c] + 2, 46) * 256; |
| | | if (target > sh.getColumnWidth(c)) sh.setColumnWidth(c, target); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** CJK / å
¨è§å符æä¸¤å宽度计ï¼è¿ä¼¼ Excel æ¾ç¤ºåå®½ï¼ */ |
| | | private boolean isWideChar(char ch) { |
| | | return (ch >= 0x2E80 && ch <= 0x9FFF) || (ch >= 0xF900 && ch <= 0xFAFF) |
| | | || (ch >= 0xFF00 && ch <= 0xFFEF); |
| | | } |
| | | |
| | | private byte[] toBytes(XSSFWorkbook wb) throws Exception { |
| | | applyTwoDecimalFormat(wb); |
| | | try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { |
| | |
| | | <template> |
| | | SKIP/CHECK (0): TYPE_LABELS upper <template> |
| | | <el-container direction="vertical"> |
| | | <app-header title="交éç»è®¡æ¥è¡¨å®¡æ ¸ç³»ç» - æ°æ®å¯¼å
¥"></app-header> |
| | | <el-container> |
| | |
| | | investCityPassenger: 'å¸å·å表ï¼å®¢è¿ç«åºï¼', investCityLogistics: 'å¸å·å表ï¼ç©æµååºï¼', |
| | | 'INVEST_客è¿ç«åº_CITY': 'å¸å·å表ï¼å®¢è¿ç«åºï¼', 'INVEST_ç©æµååº_CITY': 'å¸å·å表ï¼ç©æµååºï¼', |
| | | cityBus: 'åå¸å
¬äº¤ææ¥', cityTaxi: '巡游åºç§ææ¥', cityTaxiAuth: 'åºç§è½¦è¿æ¿è½¦è¾', |
| | | wycTotal: 'ç½çº¦è½¦æ»æ°', wycOrder: 'ç½çº¦è½¦è®¢ååå
¨çæ»é', |
| | | H2032: 'H203-2ææ¥', H2031: 'H203-1æ
å®¢ææ¥', H204: 'H204è½è壿¥', PASSENGER_AUTH: 'æ
å®¢è¿æ¿è½¦è¾æ°', |
| | | PASSENGER_INDIVIDUAL: '个ä½å®¢è¿é/å¨è½¬é', ENERGY_AUTH: 'è½è车è¾è¿æ¿ä¿¡æ¯', TRANSPORT_AUTH: 'è¿æ¿è½¦è¾', |
| | | TRACK_MILEAGE: '轨迹éç¨', SCALE_SPLIT: 'è§ä¸è§ä¸æå', FREIGHT_TURNOVER: 'è´§è¿éå¨è½¬é', |
| | | INVEST_SYSTEM: 'æèµç³»ç»å¯¼åº', CITY_BUS: 'åå¸å
¬äº¤ææ¥', CITY_TAXI: '巡游åºç§ææ¥', CITY_TAXI_AUTH: 'åºç§è½¦è¿æ¿è½¦è¾' |
| | | INVEST_SYSTEM: 'æèµç³»ç»å¯¼åº', CITY_BUS: 'åå¸å
¬äº¤ææ¥', CITY_TAXI: '巡游åºç§ææ¥', CITY_TAXI_AUTH: 'åºç§è½¦è¿æ¿è½¦è¾', WYC_TOTAL: 'ç½çº¦è½¦æ»æ°', WYC_ORDER: 'ç½çº¦è½¦è®¢ååå
¨çæ»é' |
| | | } |
| | | const BATCH_TYPE_MAP = { |
| | | H2032: 'h2032', TRANSPORT_AUTH: 'transportAuth', TRACK_MILEAGE: 'trackMileage', |
| | |
| | | H2031: 'passengerMonthly', PASSENGER_AUTH: 'passengerAuth', PASSENGER_INDIVIDUAL: 'passengerIndividual', |
| | | H204: 'energyMonthly', ENERGY_AUTH: 'energyAuth', |
| | | CITY_BUS: 'cityBus', CITY_TAXI: 'cityTaxi', CITY_TAXI_AUTH: 'cityTaxiAuth', |
| | | WYC_TOTAL: 'wycTotal', WYC_ORDER: 'wycOrder', |
| | | INVEST_SYSTEM: 'investmentSystem' |
| | | } |
| | | export default { |
| | |
| | | key: 'city', name: 'åå¸å®¢è¿', types: [ |
| | | { value: 'cityBus', label: 'åå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµ' }, |
| | | { value: 'cityTaxi', label: '巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥' }, |
| | | { value: 'cityTaxiAuth', label: 'åºç§è½¦è¿æ¿è½¦è¾' } |
| | | { value: 'cityTaxiAuth', label: 'åºç§è½¦è¿æ¿è½¦è¾' }, |
| | | { value: 'wycTotal', label: 'ç½çº¦è½¦æ»æ°' }, |
| | | { value: 'wycOrder', label: 'ç½çº¦è½¦è®¢ååå
¨çæ»é' } |
| | | ] |
| | | }, |
| | | { |
| | |
| | | investCityLogistics: 'âï¼æ¹éæ«æç®å½ï¼æ 鿍¡æ¿ï¼', |
| | | cityBus: '导å
¥_åå¸å
Œ
±äº¤éæåº¦è¿è¥æ
åµï¼YYYYå¹´Mæï¼.xls/.xlsxï¼ä¼ä¸çº§æç»ï¼åå
Œ
±æ±½çµè½¦å段ï¼', |
| | | cityTaxi: '导å
¥_巡游åºç§æ±½è½¦è¿è¥æå¡æ
嵿æ¥ï¼YYYYå¹´Mæï¼.xlsï¼å¸å·çº§17è¡ï¼', |
| | | cityTaxiAuth: '导å
¥æ¨¡æ¿_åºç§è½¦ä¿¡æ¯(è¿æ¿è½¦è¾ä¿¡æ¯).xlsxï¼è½¦è¾çº§æç»ï¼ç¨äºè¿è¥è½¦æ°å¯¹æ¯ï¼' |
| | | cityTaxiAuth: '导å
¥æ¨¡æ¿_åºç§è½¦ä¿¡æ¯(è¿æ¿è½¦è¾ä¿¡æ¯).xlsxï¼è½¦è¾çº§æç»ï¼ç¨äºè¿è¥è½¦æ°å¯¹æ¯ï¼', |
| | | wycTotal: '模æ¿_ç½çº¦è½¦æ»æ°.xlsxï¼Aå=æä»½ï¼B-E=å
¨ç客è¿é/åå¸å
/å¨è½¬é/åå¸å
å¨è½¬éï¼', |
| | | wycOrder: '模æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsxï¼Aå=æä»½ï¼B-E=å
¨çpinï¼F=订åå计ï¼G-W=17å¸å·è®¢åï¼' |
| | | } |
| | | return map[this.importType] || '' |
| | | }, |
| | |
| | | cityBus: 'åå¸å®¢è¿/çæ_åå¸å
¬äº¤å®¢è¿éåå¸å·æç».xlsx', |
| | | cityTaxi: 'åå¸å®¢è¿/çæ_巡游åºç§å®¢è¿éåå¸å·æç».xlsx', |
| | | cityTaxiAuth: 'åå¸å®¢è¿/导å
¥æ¨¡æ¿_åºç§è½¦ä¿¡æ¯(è¿æ¿è½¦è¾ä¿¡æ¯).xlsx', |
| | | wycTotal: 'åå¸å®¢è¿/模æ¿_ç½çº¦è½¦æ»æ°.xlsx', |
| | | wycOrder: 'åå¸å®¢è¿/模æ¿_ç½çº¦è½¦è®¢ååå
¨çæ»é.xlsx', |
| | | investment: 'æèµ/è¾å
¥/客è¿ï¼å®¢è¿ç«ï¼/æ´æ°_7æå®¢è¿ç«æèµæç»è¡¨ï¼å¸å·æ±æ»å¤§è¡¨ï¼ç»é¢å¯¼ï¼.xlsx', |
| | | investmentLogistics: 'æèµ/è¾å
¥/ç©æµï¼ç©æµååºï¼/æ´æ°_7æç©æµç«åºæèµæç».xls', |
| | | investmentSystem: 'æèµ/模æ¿_æ¥è¯¢ç»æ(æèµç³»ç»-客è¿+ç©æµ 2026.7).xls' |
| | |
| | | investmentSystem: '/import/investmentSystem', |
| | | cityBus: '/import/cityBus', |
| | | cityTaxi: '/import/cityTaxi', |
| | | cityTaxiAuth: '/import/cityTaxiAuth' |
| | | cityTaxiAuth: '/import/cityTaxiAuth', |
| | | wycTotal: '/import/wycTotal', |
| | | wycOrder: '/import/wycOrder' |
| | | } |
| | | return map[t] || '' |
| | | }, |
| | |
| | | <div style="color:#909399;font-size:12px;margin-bottom:6px"> |
| | | å
± {{ total }} æ¡è®°å½ï¼å½å第 {{ page }} 页 |
| | | </div> |
| | | <div class="table-area" ref="tableArea"> |
| | | <el-table :data="records" border v-loading="loading" size="small" style="width:100%" height="100%"> |
| | | <el-table-column v-for="c in columns" :key="c.prop" :prop="c.prop" :label="c.label" :min-width="c.width" show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatCell(scope.row[c.prop]) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="table-wrap" ref="tableWrap"> |
| | | <div class="table-area"> |
| | | <el-table :data="records" border v-loading="loading" size="small" style="width:100%" height="100%"> |
| | | <el-table-column v-for="c in columns" :key="c.prop" :prop="c.prop" :label="c.label" :min-width="c.width" show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatCell(scope.row[c.prop]) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <el-pagination style="margin-top:15px;text-align:right" |
| | | background layout="total, prev, pager, next, sizes" |
| | | :total="total" :current-page.sync="page" :page-size.sync="size" |
| | | :page-sizes="[20, 50, 100]" @current-change="loadData" @size-change="loadData"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-pagination style="margin-top:15px;text-align:right" |
| | | background layout="total, prev, pager, next, sizes" |
| | | :total="total" :current-page.sync="page" :page-size.sync="size" |
| | | :page-sizes="[20, 50, 100]" @current-change="loadData" @size-change="loadData"> |
| | | </el-pagination> |
| | | </el-main> |
| | | </el-container> |
| | | </el-container> |
| | |
| | | }) |
| | | }, |
| | | toggleFullscreen() { |
| | | const el = this.$refs.tableArea |
| | | const el = this.$refs.tableWrap |
| | | if (!document.fullscreenElement) { |
| | | if (el && el.requestFullscreen) el.requestFullscreen() |
| | | else this.$message.warning("æµè§å¨ä¸æ¯æå
¨å±") |
| | |
| | | background: #fff; |
| | | overflow: auto; |
| | | } |
| | | #app .table-wrap:fullscreen { |
| | | padding: 20px; |
| | | background: #fff; |
| | | overflow: auto; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | #app .table-wrap:fullscreen .table-area { |
| | | flex: 1 1 auto; |
| | | min-height: 0; |
| | | } |
| | | #app .table-wrap:fullscreen .el-pagination { |
| | | flex: none; |
| | | } |
| | | </style> |
| | |
| | | <table class="preview-summary" v-if="it.summary && it.summary.length"> |
| | | <tbody> |
| | | <tr v-for="(s, i) in it.summary" :key="i"> |
| | | <td>{{ s.name }}</td> |
| | | <td>{{ s.label }}</td> |
| | | <td><span v-if="s.value === null || s.value === ''" class="cell-empty">ï¼ç©ºï¼</span>{{ fmtVal(s.value) }}</td> |
| | | <td style="white-space:nowrap;color:#909399">{{ s.unit || '' }}</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |