CAFECA-IO / iSunFA

Artificial Intelligence in Financial
https://isunfa.com
GNU General Public License v3.0
0 stars 0 forks source link

[FEATURE] - 新增有account Id, account parentId account root id 的seed #3255

Closed TinyMurky closed 2 hours ago

TinyMurky commented 2 hours ago

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

TinyMurky commented 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);
  }
});