Closed TinyMurky closed 2 hours ago
const fs = require('node:fs');
// 使用 fs 讀取 CSV 檔案
const csvFilePath = './account.csv';
const csvContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' });
// 將 CSV 內容按行分割並解析
const data = csvContent.split(/\r?\n/).map((line) => line.split(','))
;
// 建立一個 Map 來儲存帳戶資料
const accountMap = new Map();
data.forEach((row) => {
if (row.length < 15) return; // 確保資料列有足夠的欄位,避免意外錯誤
accountMap.set(row[6].replace(/"/g, ''), {
id: parseInt(row[0].replace(/"/g, '').slice(4)) + 1000, // 移除雙引號
companyId: parseInt(row[1].replace(/"/g, '')), // 移除雙引號
system: row[2].replace(/"/g, ''), // 移除雙引號
type: row[3].replace(/"/g, ''), // 移除雙引號
debit: row[4].replace(/"/g, '') === "True", // 移除雙引號
liquidity: row[5].replace(/"/g, '') === "True", // 移除雙引號
code: row[6].replace(/"/g, ''), // 移除雙引號
name: row[7].replace(/"/g, ''), // 移除雙引號
forUser: row[8].replace(/"/g, '') === "True", // 移除雙引號
level: parseInt(row[9].replace(/"/g, '')), // 移除雙引號
parentCode: row[10].replace(/"/g, ''), // 移除雙引號
rootCode: row[11].replace(/"/g, ''), // 移除雙引號
parentId: -1, // 預設值
rootId: -1, // 預設值
createdAt: parseInt(row[12].replace(/"/g, '')), // 移除雙引號
updatedAt: parseInt(row[13].replace(/"/g, '')), // 移除雙引號
deleteAt: null
});
});
// 更新 parentId 和 rootId
accountMap.forEach((value, key) => {
const parent = accountMap.get(value.parentCode);
const root = accountMap.get(value.rootCode);
console.log(key, value.parentCode, parent);
value.parentId = parent ? parent.id : -1;
value.rootId = root ? root.id : -1;
accountMap.set(key, value);
});
// 將結果寫入 JSON 檔案
const outputFilePath = './account_new.json';
const content = JSON.stringify([...accountMap.values()], null, 2); // 格式化 JSON 內容
fs.writeFile(outputFilePath, content, (err) => {
if (err) {
console.error('Error writing file:', err);
} else {
console.log('File written successfully:', outputFilePath);
}
});
Summary
新增有account Id, account parentId account root id 的seed
Tasks
新增有account Id, account parentId account root id 的seed
Dependencies
No response
Other Dependencies
No response
Additional Notes
No response