sub_project.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const BaseUtil = require('./baseUtils');
  2. const querySql = BaseUtil.querySql;
  3. const uuid = require('node-uuid');
  4. const getInsertSql = function (tableName, data) {
  5. const column = [], query = [], value = [];
  6. for (const prop in data) {
  7. column.push(prop);
  8. query.push('?');
  9. value.push(data[prop]);
  10. }
  11. return [`INSERT INTO ${tableName} (${column.join(',')}) VALUES (${query.join(',')})`, value]
  12. };
  13. const syncBudget = async function(budget, order) {
  14. try {
  15. const subProject = {
  16. id: uuid.v4(), project_id: budget.pid, tree_pid: '-1', tree_level: 1, tree_order: order,
  17. name: budget.name, user_id: budget.user_id, rela_tender: budget.rela_tender,
  18. is_folder: 0, budget_id: budget.id,
  19. };
  20. const [subProjSql, subProjSqlParam] = getInsertSql('zh_sub_project', subProject);
  21. await querySql(subProjSql, subProjSqlParam);
  22. const permission = await querySql('SELECT * FROM zh_budget_permission WHERE bid = ?', [budget.id]);
  23. for (const p of permission) {
  24. const np = {
  25. id: uuid.v4(), spid: subProject.id, pid: budget.pid, uid: p.uid,
  26. budget_permission: p.permission, manage_permission: '1'
  27. };
  28. const [pSql, pSqlParam] = getInsertSql('zh_sub_project_permission', np);
  29. await querySql(pSql, pSqlParam);
  30. }
  31. } catch (err) {
  32. console.log(err);
  33. }
  34. };
  35. const doComplete = async function() {
  36. try {
  37. const project = await querySql('Select * From zh_project');
  38. for (const p of project) {
  39. console.log(`Update Project ${p.code}(${p.id}):`);
  40. const budget = await querySql('SELECT * FROM zh_budget where pid = ?', [p.id]);
  41. for (const [i, b] of budget.entries()) {
  42. console.log(`Sync Budget ${b.name}(${b.id})`);
  43. await syncBudget(b, i + 1);
  44. }
  45. }
  46. } catch (err) {
  47. console.log(err);
  48. }
  49. BaseUtil.closePool();
  50. };
  51. const doCompleteTest = async function(code) {
  52. try {
  53. const project = await querySql('Select * From zh_project where code = ?', [code]);
  54. for (const p of project) {
  55. console.log(`Update Project ${p.code}(${p.id}):`);
  56. const budget = await querySql('SELECT * FROM zh_budget where pid = ?', [p.id]);
  57. for (const [i, b] of budget.entries()) {
  58. console.log(`Sync Budget ${b.name}(${b.id})`);
  59. await syncBudget(b, i + 1);
  60. }
  61. }
  62. } catch (err) {
  63. console.log(err);
  64. }
  65. BaseUtil.closePool();
  66. };
  67. const projectCode = process.argv[3];
  68. if (projectCode) {
  69. doCompleteTest(projectCode);
  70. } else {
  71. doComplete()
  72. }