JsonImporter.template.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // ___classname___ JSON数据导入程序
  2. // ___datetime_now___ 由 JsonImportGen.js 自动生成,请勿手动修改
  3. // 输入输出参数格式化
  4. input = INPUT;
  5. try {
  6. input = decodeURIComponent(input);
  7. } catch (e) { }
  8. try {
  9. input = base64.decode(input);
  10. } catch (e) { }
  11. try {
  12. input = JSON.parse(input);
  13. input = JSON.parse(input);
  14. } catch (e) { }
  15. output = {};
  16. testcfg = {};
  17. try {
  18. testcfg = JSON.parse(etcd.get("/api/test.json"));
  19. } catch (e) { }
  20. function teststoredfs() {
  21. // 输入JSON临时存入DFS
  22. dir = "/opt___classname___";
  23. d = new Date();
  24. d.setMinutes(d.getMinutes() - d.getTimezoneOffset());
  25. dtm = d.toJSON().replace(/[\-\:\.TZ ]/mg, "");
  26. fn = dir + "/" + dtm;
  27. if (input.id) {
  28. fn += "." + input.id;
  29. } else {
  30. fn += "_" + _.random(0, 1000000);
  31. }
  32. fn += ".json";
  33. dfs.write(fn, JSON.stringify(input, " ", 4));
  34. output.filename = fn;
  35. // 刪除旧交件
  36. files = dfs.readdir(dir);
  37. dt = Date.now() - 1000 * 3600 * 24 * 10;
  38. for (var i = files.length - 1; i >= 0; i--) {
  39. if (files[i].mtime < dt) {
  40. dfs.remove(files[i].fullname);
  41. files.splice(i, 1);
  42. }
  43. }
  44. // 留最后10个
  45. files.sort(function (a, b) { return a.mtime - b.mtime; });
  46. for (var i = 0; i < files.length - 10; i++) {
  47. dfs.remove(files[i].fullname);
  48. }
  49. }
  50. // 主执行阶段
  51. try {
  52. if (!input["--testing--"]) {
  53. if (testcfg.storedfs) {
  54. teststoredfs();
  55. }
  56. if (testcfg.checkfields) {
  57. eval(dfs.read("/script/matrix/utils/ajs/checkfields.js"));
  58. var newkeys = checkfields(input, ___field_map___);
  59. if (newkeys) {
  60. eval(dfs.read("/script/matrix/utils/ajs/JsonImporterFuncs.js"));
  61. var result = runServerJS("/matrix/utils/ajs/InitJsonImporter.js", { classname: "___classname___" });
  62. for (var k in result) {
  63. output[k] = result[k];
  64. }
  65. output.newkeys = newkeys;
  66. throw ("ok");
  67. }
  68. }
  69. }
  70. // 数据合法性检查
  71. if (___datacheck___) { }
  72. // mql定义
  73. mql = `___mql___`;
  74. // 执行mql
  75. ret = odb.mql(mql, ___values___);
  76. // 打印完成信息
  77. output.info = ___datainfo___;
  78. log.info(output.info);
  79. } catch (e) {
  80. if (e != "ok") {
  81. if (typeof (e) == "object") {
  82. output.error = e;
  83. } else if (typeof (e) == "string") {
  84. output.error = "插库错误:" + e;
  85. } else {
  86. output.error = JSON.stringify(e);
  87. }
  88. log.error(output.error);
  89. }
  90. }
  91. // 返回输出信息
  92. OUTPUT = output;