schedule_factor.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const fs = require('fs');
  2. const turf = require('@turf/turf');
  3. const wkx = require('wkx');
  4. const Database = require('./db');
  5. const moment = require('moment');
  6. const uuid = require('uuid');
  7. const pool = new Database({
  8. host: '192.168.100.30',
  9. database: 'real3d',
  10. user: 'postgres',
  11. password: 'postgis',
  12. port: 5432,
  13. });
  14. async function importFactor(inFilePath) {
  15. // 连接到数据库,设置模式
  16. await pool.connect();
  17. await pool.setSchema('base');
  18. try {
  19. // 同步读取GeoJSON文件
  20. const data = fs.readFileSync(inFilePath, 'utf8');
  21. // 清空表 base.t_fzss_fzxz_factor
  22. const deleteSql = `delete from t_fzss_fzxz_factor`;
  23. await pool.query(deleteSql);
  24. // 解析GeoJSON数据
  25. const dataInfos = JSON.parse(data);
  26. importItems(dataInfos, "");
  27. console.log("插入因子成功")
  28. } catch (err) {
  29. console.error('操作GeoJSON文件时出错:', err);
  30. }
  31. }
  32. async function importItems(insertItems, parentId) {
  33. for (let index = 0; index < insertItems.length; index++) {
  34. const element = insertItems[index];
  35. // 生成uuid并且去掉下划线
  36. const id = uuid.v4().replace(/-/g, "");
  37. const insertObj = {
  38. id: id,
  39. bsm: element.bsm,
  40. name: element.name,
  41. level: element.level,
  42. parent_id: parentId,
  43. order_index: index,
  44. status: 1,
  45. condition_info: JSON.stringify(element.condition_info),
  46. }
  47. // 生成数据库的插入语句
  48. const insertSql = `insert into t_fzss_fzxz_factor (id,bsm,name,level,parent_id,order_index,status,condition_info) values('${insertObj.id}','${insertObj.bsm}','${insertObj.name}',${insertObj.level},'${insertObj.parent_id}',${insertObj.order_index},${insertObj.status},'${insertObj.condition_info}')`;
  49. console.log(insertSql);
  50. const res = await pool.query(insertSql);
  51. if (element.children && element.children.length > 0) {
  52. await importItems(element.children, id);
  53. }
  54. }
  55. }
  56. importFactor("./data/schedule/factor_info.json")