libf 2 jaren geleden
bovenliggende
commit
168e0b55bf
3 gewijzigde bestanden met toevoegingen van 25 en 14 verwijderingen
  1. 15 7
      ajs/JsonImporter.template.js
  2. 6 4
      ajs/JsonImporterFuncs.js
  3. 4 3
      ajs/checkfields.js

+ 15 - 7
ajs/JsonImporter.template.js

@@ -22,7 +22,9 @@ try {
 function teststoredfs() {
     // 输入JSON临时存入DFS
     dir = "/opt___classname___";
-    dtm = new Date().toJSON().replace(/[\-\:\.TZ ]/mg, "");
+    d = new Date();
+    d.setMinutes(d.getMinutes() - d.getTimezoneOffset());
+    dtm = d.toJSON().replace(/[\-\:\.TZ ]/mg, "");
     fn = dir + "/" + dtm;
     if (input.id) {
         fn += "." + input.id;
@@ -35,29 +37,35 @@ function teststoredfs() {
     // 刪除旧交件
     files = dfs.readdir(dir);
     dt = Date.now() - 1000 * 3600 * 24 * 10;
-    for (i = 0; i < files.length; i++) {
+    for (var i = files.length - 1; i >= 0; i--) {
         if (files[i].mtime < dt) {
             dfs.remove(files[i].fullname);
+            files.splice(i, 1);
         }
     }
     // 留最后10个
     files.sort(function (a, b) { return a.mtime - b.mtime; });
-    for (i = 0; i < files.length - 10; i++) {
+    for (var i = 0; i < files.length - 10; i++) {
         dfs.remove(files[i].fullname);
     }
 }
 // 主执行阶段
 try {
     if (!input["--testing--"]) {
-        if (testcfg.stoedfs) {
+        if (testcfg.storedfs) {
             teststoredfs();
         }
         if (testcfg.checkfields) {
             eval(dfs.read("/script/matrix/utils/ajs/checkfields.js"));
-            if (!checkfields(input, ___field_map___)) {
+            var newkeys = checkfields(input, ___field_map___);
+            if (newkeys) {
                 eval(dfs.read("/script/matrix/utils/ajs/JsonImporterFuncs.js"));
-                output = runServerJS("/matrix/utils/ajs/InitJsonImporter.js", {classname: "___classname___"});
-                throw("ok");
+                var result = runServerJS("/matrix/utils/ajs/InitJsonImporter.js", { classname: "___classname___" });
+                for (var k in result) {
+                    output[k] = result[k];
+                }
+                output.newkeys = newkeys;
+                throw ("ok");
             }
         }
     }

+ 6 - 4
ajs/JsonImporterFuncs.js

@@ -327,7 +327,9 @@ function generateJsonImporterJS(input) {
         sjsfn = sjsfn.replace(/\.js$/, "");
         output.file = sjsfn;
 
-        dtm = new Date().toJSON();
+        d = new Date();
+        d.setMinutes(d.getMinutes() - d.getTimezoneOffset());
+        dtm = d.toJSON().replace(/T/, " ").replace(/Z/,"");
         mql = "insert into " + input.classname + " (\n";
         mql_values = ") values (\n";
         mql_end = ")";
@@ -389,13 +391,13 @@ function generateJsonImporterJS(input) {
             switch (clsfields[xk].ftype) {
                 case "text":
                 case "varchar":
-                    if (typeof (v) == "object") {
+                    if (v && typeof (v) == "object") {
                         values += "JSON.stringify(";
                         values += "input." + k + ", \" \", 4)" + fsep;
                         values += JSON.stringify(v, " ", 4).replace(/^/mg, "            // ").replace(/            /, " ");
                     } else {
-                        values += "\"\"+";
-                        values += "input." + k + fsep;
+                        values += "input." + k + "?"
+                        values += "input." + k + ":''" + fsep;
                         values += ("" + v).replace(/^/mg, "            // ").replace(/            /, " ");
                     }
                     break;

+ 4 - 3
ajs/checkfields.js

@@ -1,9 +1,10 @@
 
-function checkfields(data, fieldmap) {
+function checkfields(data, fieldmap)  {
+    var newkeys = "";
     for (var k in data) {
         if (!fieldmap[k]) {
-            return false;
+            newkeys += k + ",";
         }
     }
-    return true;
+    return newkeys;
 }