fix: 简化周统计SQL去掉子查询,添加debug接口
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -367,9 +367,20 @@ async function getWeeklyStats(): Promise<WeeklyStats> {
|
|||||||
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck WHERE is_deleted=0 AND is_operation=1 AND truck_rent_status=7`),
|
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck WHERE is_deleted=0 AND is_operation=1 AND truck_rent_status=7`),
|
||||||
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck WHERE is_deleted=0 AND is_operation=1 AND create_time >= ${WEEK_START_SQL} AND create_time < ${WEEK_END_SQL}`),
|
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck WHERE is_deleted=0 AND is_operation=1 AND create_time >= ${WEEK_START_SQL} AND create_time < ${WEEK_END_SQL}`),
|
||||||
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck WHERE (is_operation=0 OR is_deleted=1) AND update_time >= ${WEEK_START_SQL} AND update_time < ${WEEK_END_SQL}`),
|
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck WHERE (is_operation=0 OR is_deleted=1) AND update_time >= ${WEEK_START_SQL} AND update_time < ${WEEK_END_SQL}`),
|
||||||
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM (${DELIVERED_SQL}) t WHERE t.handover_date >= ${WEEK_START_SQL} AND t.handover_date < ${WEEK_END_SQL}`),
|
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck_rent_take take
|
||||||
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM (${RETURNED_SQL}) t WHERE t.handover_date >= ${WEEK_START_SQL} AND t.handover_date < ${WEEK_END_SQL}`),
|
LEFT JOIN tab_truck_rent_task task ON task.id = take.truck_rent_task_id
|
||||||
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM (${REPLACED_SQL}) t WHERE t.handover_date >= ${WEEK_START_SQL} AND t.handover_date < ${WEEK_END_SQL}`),
|
WHERE take.is_deleted=0 AND take.take_name IS NOT NULL
|
||||||
|
AND task.task_type=1 AND task.task_status=1 AND take.update_time IS NOT NULL
|
||||||
|
AND take.handover_date >= ${WEEK_START_SQL} AND take.handover_date < ${WEEK_END_SQL}`),
|
||||||
|
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck_rent_return r
|
||||||
|
LEFT JOIN tab_truck_rent_task task ON task.id = r.truck_rent_task_id
|
||||||
|
WHERE r.is_deleted=0 AND r.return_date IS NOT NULL
|
||||||
|
AND r.return_date >= ${WEEK_START_SQL} AND r.return_date < ${WEEK_END_SQL}`),
|
||||||
|
pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck_rent_take take
|
||||||
|
LEFT JOIN tab_truck_rent_task task ON task.id = take.truck_rent_task_id
|
||||||
|
WHERE take.is_deleted=0 AND take.take_name IS NOT NULL
|
||||||
|
AND task.task_type=3 AND task.task_status=1 AND take.update_time IS NOT NULL
|
||||||
|
AND take.handover_date >= ${WEEK_START_SQL} AND take.handover_date < ${WEEK_END_SQL}`),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
cachedWeeklyStats = {
|
cachedWeeklyStats = {
|
||||||
@@ -606,8 +617,38 @@ app.get('/weekly-detail', async (c) => {
|
|||||||
// GET /api/vehicles/refresh — force cache refresh
|
// GET /api/vehicles/refresh — force cache refresh
|
||||||
app.get('/refresh', async (c) => {
|
app.get('/refresh', async (c) => {
|
||||||
lastFetchTime = 0;
|
lastFetchTime = 0;
|
||||||
|
weeklyStatsLastFetch = 0;
|
||||||
const vehicles = await getVehicles();
|
const vehicles = await getVehicles();
|
||||||
return c.json({ message: 'Cache refreshed', count: vehicles.length });
|
return c.json({ message: 'Cache refreshed', count: vehicles.length });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// GET /api/vehicles/debug — debug weekly date range and raw counts
|
||||||
|
app.get('/debug', async (c) => {
|
||||||
|
const [[dateRange]] = await pool.query<any[]>(`SELECT
|
||||||
|
${WEEK_START_SQL} AS week_start,
|
||||||
|
${WEEK_END_SQL} AS week_end,
|
||||||
|
CURDATE() AS today,
|
||||||
|
WEEKDAY(CURDATE()) AS weekday`);
|
||||||
|
const [[deliveredAll]] = await pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck_rent_take take
|
||||||
|
LEFT JOIN tab_truck_rent_task task ON task.id = take.truck_rent_task_id
|
||||||
|
WHERE take.is_deleted=0 AND take.take_name IS NOT NULL AND task.task_type=1 AND task.task_status=1`);
|
||||||
|
const [[deliveredRecent]] = await pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck_rent_take take
|
||||||
|
LEFT JOIN tab_truck_rent_task task ON task.id = take.truck_rent_task_id
|
||||||
|
WHERE take.is_deleted=0 AND take.take_name IS NOT NULL AND task.task_type=1 AND task.task_status=1
|
||||||
|
AND take.handover_date >= ${WEEK_START_SQL} AND take.handover_date < ${WEEK_END_SQL}`);
|
||||||
|
const [[latestTake]] = await pool.query<any[]>(`SELECT MAX(take.handover_date) AS latest FROM tab_truck_rent_take take
|
||||||
|
LEFT JOIN tab_truck_rent_task task ON task.id = take.truck_rent_task_id
|
||||||
|
WHERE take.is_deleted=0 AND take.take_name IS NOT NULL AND task.task_type=1 AND task.task_status=1`);
|
||||||
|
const [[returnedRecent]] = await pool.query<any[]>(`SELECT COUNT(*) AS cnt FROM tab_truck_rent_return r
|
||||||
|
WHERE r.is_deleted=0 AND r.return_date IS NOT NULL
|
||||||
|
AND r.return_date >= ${WEEK_START_SQL} AND r.return_date < ${WEEK_END_SQL}`);
|
||||||
|
const [[latestReturn]] = await pool.query<any[]>(`SELECT MAX(r.return_date) AS latest FROM tab_truck_rent_return r WHERE r.is_deleted=0 AND r.return_date IS NOT NULL`);
|
||||||
|
|
||||||
|
return c.json({
|
||||||
|
weekRange: dateRange,
|
||||||
|
delivered: { total: deliveredAll[0]?.cnt, thisWeek: deliveredRecent[0]?.cnt, latestDate: latestTake[0]?.latest },
|
||||||
|
returned: { thisWeek: returnedRecent[0]?.cnt, latestDate: latestReturn[0]?.latest },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
export default app;
|
export default app;
|
||||||
|
|||||||
Reference in New Issue
Block a user