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();