diff --git a/src/modules/energy/ElectricDaily.tsx b/src/modules/energy/ElectricDaily.tsx index 6998de2..93f4fef 100644 --- a/src/modules/energy/ElectricDaily.tsx +++ b/src/modules/energy/ElectricDaily.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { ChevronRight } from 'lucide-react'; +import { ChevronRight, Plug } from 'lucide-react'; import { motion, AnimatePresence } from 'motion/react'; import TrendBadge from './TrendBadge'; import { fetchElectricMonthly } from './api'; @@ -48,7 +48,27 @@ export default function ElectricDaily() { ))} + {/* 外部数据对接中 友好空状态 */} + {customer === 'external' && months !== null && months.length === 0 && ( + +
+ + + +
+
数据对接中…
+
+ 外部充电账单正在与合作方系统打通,上线后此处将展示完整数据 +
+
+ )} + {/* 月份分组表 */} + {!(customer === 'external' && months !== null && months.length === 0) && (
月份 / 日期 @@ -122,6 +142,7 @@ export default function ElectricDaily() { ); })}
+ )}
); } diff --git a/src/modules/energy/HydrogenDaily.tsx b/src/modules/energy/HydrogenDaily.tsx index 8dbac33..b2c5897 100644 --- a/src/modules/energy/HydrogenDaily.tsx +++ b/src/modules/energy/HydrogenDaily.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo, useState } from 'react'; -import { ChevronRight } from 'lucide-react'; +import { ChevronRight, Plug } from 'lucide-react'; import { motion, AnimatePresence } from 'motion/react'; import { BarChart, Bar, XAxis, YAxis, ResponsiveContainer, Cell, Tooltip } from 'recharts'; import TrendBadge from './TrendBadge'; @@ -75,6 +75,25 @@ export default function HydrogenDaily() { ))} + {/* 外部数据对接中 友好空状态 */} + {customer === 'external' && rows !== null && rows.length === 0 && ( + +
+ + + +
+
数据对接中…
+
+ 外部加氢账单正在与合作方系统打通,上线后此处将展示完整数据 +
+
+ )} + {/* 时段加氢量柱图 */} {trendData.length > 0 && (
@@ -116,7 +135,8 @@ export default function HydrogenDaily() {
)} - {/* 表格 */} + {/* 表格(外部空数据时不渲染,由上方友好空状态替代) */} + {!(customer === 'external' && rows !== null && rows.length === 0) && (
{/* 表头 */}
@@ -193,6 +213,7 @@ export default function HydrogenDaily() { ); })}
+ )}
); } diff --git a/src/server/routes/energy/index.ts b/src/server/routes/energy/index.ts index c39399d..e36c807 100644 --- a/src/server/routes/energy/index.ts +++ b/src/server/routes/energy/index.ts @@ -13,9 +13,10 @@ const ELECTRIC_LOCAL = `DATE_ADD(charging_start_time, INTERVAL 8 HOUR)`; type CustomerKind = 'external' | 'lingniu' | 'all'; +// 外部/我司判定:truck_id 为空 = 外部;truck_id 非空 = 我司(羚牛车辆) function customerClause(field: string, customer: CustomerKind): string { - if (customer === 'lingniu') return `${field} IS NULL`; - if (customer === 'external') return `${field} IS NOT NULL`; + if (customer === 'external') return `${field} IS NULL`; + if (customer === 'lingniu') return `${field} IS NOT NULL`; return '1=1'; } @@ -44,11 +45,11 @@ app.get('/hydrogen/overview', async (c) => { THEN hydrogen_quantity ELSE 0 END) AS yearKg, SUM(CASE WHEN YEAR(${HYDROGEN_LOCAL}) = YEAR(CURDATE()) THEN cost_expense ELSE 0 END) AS yearFee, - SUM(CASE WHEN YEAR(${HYDROGEN_LOCAL}) = YEAR(CURDATE()) AND customer_id IS NULL + SUM(CASE WHEN YEAR(${HYDROGEN_LOCAL}) = YEAR(CURDATE()) AND truck_id IS NOT NULL THEN hydrogen_quantity ELSE 0 END) AS ourYearKg, - SUM(CASE WHEN YEAR(${HYDROGEN_LOCAL}) = YEAR(CURDATE()) AND customer_id IS NULL + SUM(CASE WHEN YEAR(${HYDROGEN_LOCAL}) = YEAR(CURDATE()) AND truck_id IS NOT NULL THEN cost_expense ELSE 0 END) AS ourYearFee, - SUM(CASE WHEN YEAR(${HYDROGEN_LOCAL}) = YEAR(CURDATE()) AND customer_id IS NOT NULL + SUM(CASE WHEN YEAR(${HYDROGEN_LOCAL}) = YEAR(CURDATE()) AND truck_id IS NULL THEN hydrogen_quantity ELSE 0 END) AS customerYearKg, SUM(CASE WHEN DATE_FORMAT(${HYDROGEN_LOCAL}, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m') THEN hydrogen_quantity ELSE 0 END) AS monthKg, @@ -58,9 +59,9 @@ app.get('/hydrogen/overview', async (c) => { THEN hydrogen_quantity ELSE 0 END) AS todayKg, SUM(CASE WHEN DATE(${HYDROGEN_LOCAL}) = CURDATE() THEN cost_expense ELSE 0 END) AS todayFee, - SUM(CASE WHEN customer_id IS NULL + SUM(CASE WHEN truck_id IS NOT NULL THEN hydrogen_quantity ELSE 0 END) AS lingniuBornKg, - SUM(CASE WHEN customer_id IS NULL + SUM(CASE WHEN truck_id IS NOT NULL THEN cost_expense ELSE 0 END) AS lingniuBornFee FROM tab_energy_hydrogen_bill WHERE is_deleted = 0 AND hydrogen_time >= ?`, @@ -154,7 +155,7 @@ app.get('/hydrogen/daily', async (c) => { 'b.is_deleted = 0', `b.hydrogen_time >= '${HYDROGEN_MIN_DATE}'`, rangeClause(`b.hydrogen_time + INTERVAL 8 HOUR`, range), - customerClause('b.customer_id', customer), + customerClause('b.truck_id', customer), ].join(' AND '); // 站点级聚合(每日 × 每站)。前端组装成 day → stations @@ -343,7 +344,7 @@ app.get('/electric/monthly', async (c) => { const where = [ 'is_deleted = 0', - customerClause('customer_id', customer), + customerClause('truck_id', customer), ].join(' AND '); // 取最近 6 个月