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 个月