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>
67 lines
2.3 KiB
TypeScript
67 lines
2.3 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,
|
|
});
|
|
|
|
// return_change_record dic
|
|
const [rcDic] = await pool.query(`
|
|
SELECT dic_code, dic_name FROM tab_dic
|
|
WHERE parent_code LIKE '%change%' OR parent_code LIKE '%return%'
|
|
AND is_deleted=0
|
|
ORDER BY parent_code, dic_code
|
|
`);
|
|
console.log('=== return/change dic ===');
|
|
console.log(JSON.stringify(rcDic, null, 2));
|
|
|
|
// Weekly removed: is_operation changed to 0 this week, or is_deleted set to 1
|
|
const [removed] = await pool.query(`
|
|
SELECT COUNT(*) AS cnt FROM tab_truck
|
|
WHERE (is_deleted=1 OR is_operation=0)
|
|
AND update_time >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY)
|
|
`);
|
|
console.log('\n=== This week removed (is_operation=0 or deleted, by update_time) ===');
|
|
console.log(JSON.stringify(removed));
|
|
|
|
// Weekly new: is_operation set to 1 this week
|
|
const [newByUpdate] = await pool.query(`
|
|
SELECT COUNT(*) AS cnt FROM tab_truck
|
|
WHERE is_deleted=0 AND is_operation=1
|
|
AND buy_time >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY)
|
|
`);
|
|
console.log('\n=== This week new (by buy_time) ===');
|
|
console.log(JSON.stringify(newByUpdate));
|
|
|
|
// Replacements this week: return_change_record=3 means replacement?
|
|
const [replaced] = await pool.query(`
|
|
SELECT return_change_record, COUNT(*) AS cnt FROM tab_truck_status_info
|
|
WHERE is_deleted=0
|
|
AND return_change_record IN (2, 3)
|
|
AND update_time >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE())+2 DAY)
|
|
GROUP BY return_change_record
|
|
`);
|
|
console.log('\n=== This week replace records (rc=2,3 by update_time) ===');
|
|
console.log(JSON.stringify(replaced));
|
|
|
|
// Sample recent take_date
|
|
const [recentTake] = await pool.query(`
|
|
SELECT si.truck_id, t.plate_number, si.take_date, si.return_date, si.return_change_record
|
|
FROM tab_truck_status_info si
|
|
JOIN tab_truck t ON t.id = si.truck_id
|
|
WHERE si.is_deleted=0 AND si.take_date IS NOT NULL
|
|
ORDER BY si.take_date DESC LIMIT 5
|
|
`);
|
|
console.log('\n=== Recent deliveries ===');
|
|
console.log(JSON.stringify(recentTake, null, 2));
|
|
|
|
await pool.end();
|
|
}
|
|
main();
|