备份:修复前完整项目快照 2026-04-19
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
const db = require('./backend/db-sqlite');
|
||||
|
||||
async function fixDatabase() {
|
||||
console.log('开始修复云端数据库Schema...');
|
||||
|
||||
const fixes = [
|
||||
// 物流公司表 - 添加缺失的code列
|
||||
`ALTER TABLE logistics_companies ADD COLUMN code TEXT`,
|
||||
|
||||
// 采购订单表 - 添加缺失的列
|
||||
`ALTER TABLE purchase_orders ADD COLUMN project_id INTEGER`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN order_number TEXT`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN supplier_id INTEGER`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN total_amount REAL DEFAULT 0`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN currency TEXT DEFAULT 'CNY'`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN status TEXT DEFAULT 'draft'`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN priority TEXT DEFAULT 'normal'`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN delivery_date TEXT`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN delivery_address TEXT`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN remark TEXT`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN items TEXT`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN created_by TEXT`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN approved_by TEXT`,
|
||||
`ALTER TABLE purchase_orders ADD COLUMN approved_at TIMESTAMP`,
|
||||
|
||||
// 付款计划表 - 添加缺失的列
|
||||
`ALTER TABLE payment_plans ADD COLUMN payment_request_id INTEGER`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN purchase_order_id INTEGER`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN supplier_id INTEGER`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN total_amount REAL DEFAULT 0`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN paid_amount REAL DEFAULT 0`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN currency TEXT DEFAULT 'CNY'`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN status TEXT DEFAULT 'pending'`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN payment_items TEXT`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN plan_number TEXT`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN title TEXT`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN remark TEXT`,
|
||||
`ALTER TABLE payment_plans ADD COLUMN created_by TEXT`,
|
||||
|
||||
// 退库记录表
|
||||
`CREATE TABLE IF NOT EXISTS return_records (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
return_number TEXT UNIQUE,
|
||||
product_id INTEGER,
|
||||
product_name TEXT,
|
||||
quantity REAL DEFAULT 0,
|
||||
unit TEXT DEFAULT '件',
|
||||
unit_price REAL DEFAULT 0,
|
||||
total_price REAL DEFAULT 0,
|
||||
return_date TEXT,
|
||||
reason TEXT,
|
||||
status TEXT DEFAULT 'pending',
|
||||
remark TEXT,
|
||||
created_by TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)`,
|
||||
|
||||
// 采购订单项目表
|
||||
`CREATE TABLE IF NOT EXISTS purchase_order_items (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
order_id INTEGER NOT NULL,
|
||||
product_id INTEGER,
|
||||
product_name TEXT NOT NULL,
|
||||
specification TEXT,
|
||||
unit TEXT DEFAULT '件',
|
||||
quantity REAL DEFAULT 0,
|
||||
unit_price REAL DEFAULT 0,
|
||||
total_price REAL DEFAULT 0,
|
||||
delivery_date TEXT,
|
||||
remark TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (order_id) REFERENCES purchase_orders(id)
|
||||
)`,
|
||||
];
|
||||
|
||||
for (const sql of fixes) {
|
||||
try {
|
||||
await db.query(sql);
|
||||
console.log('✅ 成功:', sql.substring(0, 80));
|
||||
} catch (err) {
|
||||
if (err.message.includes('duplicate column') || err.message.includes('already exists')) {
|
||||
console.log('⏭️ 已存在:', sql.substring(0, 80));
|
||||
} else {
|
||||
console.log('⚠️ 错误:', err.message.substring(0, 80));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 验证
|
||||
const tables = await db.query("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name");
|
||||
console.log('\n当前数据库表:');
|
||||
tables.rows.forEach(r => console.log(' -', r.name));
|
||||
|
||||
// 检查关键表结构
|
||||
for (const table of ['logistics_companies', 'purchase_orders', 'payment_plans']) {
|
||||
const cols = await db.query(`PRAGMA table_info(${table})`);
|
||||
console.log(`\n${table} 列:`, cols.rows.map(r => r.name).join(', '));
|
||||
}
|
||||
|
||||
console.log('\n数据库Schema修复完成!');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
fixDatabase().catch(err => {
|
||||
console.error('修复失败:', err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user