schedule_factor.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 id = element.id;
  38. const insertObj = {
  39. id: id,
  40. bsm: element.bsm,
  41. name: element.name,
  42. level: element.level,
  43. parent_id: parentId,
  44. order_index: index,
  45. status: 1,
  46. condition_info: JSON.stringify(element.condition_info),
  47. }
  48. if ((insertObj.bsm === null || insertObj.bsm === ``) && element.children.length == 0) {
  49. continue;
  50. }
  51. // 生成数据库的插入语句
  52. 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}')`;
  53. console.log(insertSql);
  54. const res = await pool.query(insertSql);
  55. if (element.children && element.children.length > 0) {
  56. await importItems(element.children, id);
  57. }
  58. }
  59. }
  60. importFactor("./data/schedule/factor_info.json")