All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
- Hono + TypeScript 后端,连接 MySQL 数据库 - React + Vite + Tailwind 前端 - 车辆资产实时汇总(按车型/品牌型号分组) - 本周交车/还车/替换统计(关联业务单据) - 车牌号详情弹窗 - Dockerfile + Woodpecker CI 流水线 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
88 lines
3.1 KiB
TypeScript
88 lines
3.1 KiB
TypeScript
import dotenv from 'dotenv';
|
|
dotenv.config();
|
|
import mysql from 'mysql2/promise';
|
|
|
|
async function main() {
|
|
const pool = mysql.createPool({
|
|
host: process.env.DB_HOST,
|
|
port: Number(process.env.DB_PORT),
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
database: process.env.DB_NAME,
|
|
});
|
|
|
|
// Check rent_status_check table structure
|
|
const [checkCols] = await pool.query(`
|
|
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT
|
|
FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA='lingniu_prod3' AND TABLE_NAME='tab_truck_rent_status_check'
|
|
ORDER BY ORDINAL_POSITION
|
|
`);
|
|
console.log('=== tab_truck_rent_status_check columns ===');
|
|
for (const c of checkCols as any[]) {
|
|
console.log(` ${c.COLUMN_NAME} (${c.DATA_TYPE}) — ${c.COLUMN_COMMENT || ''}`);
|
|
}
|
|
|
|
// Weekly stats: is_operation set to 1 this week (newly added to operation)
|
|
const [newOp] = await pool.query(`
|
|
SELECT COUNT(*) AS cnt FROM tab_truck
|
|
WHERE is_deleted=0 AND is_operation=1
|
|
AND create_time >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY)
|
|
`);
|
|
console.log('\n=== This week new (by create_time, since last Saturday) ===');
|
|
console.log(JSON.stringify(newOp));
|
|
|
|
// Pending delivery count (status=7)
|
|
const [pending] = await pool.query(`
|
|
SELECT COUNT(*) AS cnt FROM tab_truck
|
|
WHERE is_deleted=0 AND is_operation=1 AND truck_rent_status=7
|
|
`);
|
|
console.log('\n=== Pending delivery (status=7) ===');
|
|
console.log(JSON.stringify(pending));
|
|
|
|
// Weekly deliveries (take_date this week)
|
|
const [delivered] = await pool.query(`
|
|
SELECT COUNT(*) AS cnt FROM tab_truck_status_info
|
|
WHERE is_deleted=0
|
|
AND take_date >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY)
|
|
AND take_date < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY), INTERVAL 7 DAY)
|
|
`);
|
|
console.log('\n=== This week delivered (by take_date) ===');
|
|
console.log(JSON.stringify(delivered));
|
|
|
|
// Weekly returns (return_date this week)
|
|
const [returned] = await pool.query(`
|
|
SELECT COUNT(*) AS cnt FROM tab_truck_status_info
|
|
WHERE is_deleted=0
|
|
AND return_date >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY)
|
|
AND return_date < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY), INTERVAL 7 DAY)
|
|
`);
|
|
console.log('\n=== This week returned (by return_date) ===');
|
|
console.log(JSON.stringify(returned));
|
|
|
|
// return_change_record values
|
|
const [rcValues] = await pool.query(`
|
|
SELECT return_change_record, COUNT(*) AS cnt
|
|
FROM tab_truck_status_info
|
|
WHERE is_deleted=0
|
|
GROUP BY return_change_record
|
|
`);
|
|
console.log('\n=== return_change_record values ===');
|
|
console.log(JSON.stringify(rcValues));
|
|
|
|
// Check aa_temp table
|
|
const [tempCols] = await pool.query(`
|
|
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT
|
|
FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA='lingniu_prod3' AND TABLE_NAME='tab_aa_temp_truck_rent_status'
|
|
ORDER BY ORDINAL_POSITION
|
|
`);
|
|
console.log('\n=== tab_aa_temp_truck_rent_status columns ===');
|
|
for (const c of tempCols as any[]) {
|
|
console.log(` ${c.COLUMN_NAME} (${c.DATA_TYPE}) — ${c.COLUMN_COMMENT || ''}`);
|
|
}
|
|
|
|
await pool.end();
|
|
}
|
|
main();
|