فهرست منبع

Merge branch 'feature/Statement_xscript' into 'wrdp'

Merge of feature/Statement_xscript  添加查询语句相关的运行环境API to wrdp

See merge request o2oa/o2oa!2028
蔡祥熠 5 سال پیش
والد
کامیت
bd758ac1ad

+ 56 - 11
o2web/source/o2_core/o2/xScript/CMSEnvironment.js

@@ -697,22 +697,67 @@ MWF.xScript.CMSEnvironment = function(ev){
 
     this.statement = {
         "execute": function (statement, callback, async) {
-            var filterList = { "filterList": (statement.filter || null) };
-            MWF.Actions.get("x_query_assemble_surface").executeStatement(statement.view, statement.application, filterList, function (json) {
-                var data = {
-                    "grid": json.data.grid,
-                };
-                if (callback) callback(data);
-            }, null, async);
+            var parameter = this.parseParameter(statement.parameter);
+            var filterList = this.parseFilter(statement.filter, parameter);
+            var obj = {
+                "filterList": filterList,
+                "parameter" : parameter
+            };
+            MWF.Actions.load("x_query_assemble_surface").StatementAction.executeV2(
+                statement.name, statement.mode || "data", statement.page || 1, statement.pageSize || 20, obj,
+                function (json) {
+                    if (callback) callback(json);
+                }, null, async);
+        },
+        parseFilter : function( filter, parameter ){
+            if( typeOf(filter) !== "array" )return [];
+            var filterList = [];
+            ( filter || [] ).each( function (d) {
+                var parameterName = d.path.replace(/\./g, "_");
+                var value = d.value;
+                if( d.comparison === "like" || d.comparison === "notLike" ){
+                    if( value.substr(0, 1) !== "%" )value = "%"+value;
+                    if( value.substr(value.length-1,1) !== "%" )value = value+"%";
+                    parameter[ parameterName ] = value; //"%"+value+"%";
+                }else{
+                    if( d.formatType === "dateTimeValue" || d.formatType === "datetimeValue"){
+                        value = "{ts '"+value+"'}"
+                    }else if( d.formatType === "dateValue" ){
+                        value = "{d '"+value+"'}"
+                    }else if( d.formatType === "timeValue" ){
+                        value = "{t '"+value+"'}"
+                    }
+                    parameter[ parameterName ] = value;
+                }
+                d.value = parameterName;
+
+                filterList.push( d );
+            }.bind(this));
+            return filterList;
+        },
+        parseParameter : function( obj ){
+            if( typeOf(obj) !== "object" )return {};
+            var parameter = {};
+            //传入的参数
+            for( var p in obj ){
+                var value = obj[p];
+                if( typeOf( value ) === "date" ){
+                    value = "{ts '"+value.format("db")+"'}"
+                }
+                parameter[ p ] = value;
+            }
+            return parameter;
         },
         "select": function (statement, callback, options) {
-            if (statement.statement) {
+            if (statement.name) {
+                // var parameter = this.parseParameter(statement.parameter);
+                // var filterList = this.parseFilter(statement.filter, parameter);
                 var statementJson = {
-                    "application": statement.application || _form.json.application,
-                    "statementName": statement.statement || "",
+                    "statementId": statement.name || "",
                     "isTitle": (statement.isTitle === false) ? "no" : "yes",
                     "select": (statement.isMulti === false) ? "single" : "multi",
-                    "filter": statement.filter
+                    "filter": statement.filter,
+                    "parameter": statement.parameter
                 };
                 if (!options) options = {};
                 options.width = statement.width;

+ 56 - 11
o2web/source/o2_core/o2/xScript/Environment.js

@@ -866,22 +866,67 @@ MWF.xScript.Environment = function(ev){
 
     this.statement = {
         "execute": function (statement, callback, async) {
-            var filterList = { "filterList": (statement.filter || null) };
-            MWF.Actions.get("x_query_assemble_surface").execute(statement.view, statement.application, filterList, function (json) {
-                var data = {
-                    "grid": json.data.grid,
-                };
-                if (callback) callback(data);
-            }, null, async);
+            var parameter = this.parseParameter(statement.parameter);
+            var filterList = this.parseFilter(statement.filter, parameter);
+            var obj = {
+                "filterList": filterList,
+                "parameter" : parameter
+            };
+            MWF.Actions.load("x_query_assemble_surface").StatementAction.executeV2(
+                statement.name, statement.mode || "data", statement.page || 1, statement.pageSize || 20, obj,
+                function (json) {
+                    if (callback) callback(json);
+                }, null, async);
+        },
+        parseFilter : function( filter, parameter ){
+            if( typeOf(filter) !== "array" )return [];
+            var filterList = [];
+            ( filter || [] ).each( function (d) {
+                var parameterName = d.path.replace(/\./g, "_");
+                var value = d.value;
+                if( d.comparison === "like" || d.comparison === "notLike" ){
+                    if( value.substr(0, 1) !== "%" )value = "%"+value;
+                    if( value.substr(value.length-1,1) !== "%" )value = value+"%";
+                    parameter[ parameterName ] = value; //"%"+value+"%";
+                }else{
+                    if( d.formatType === "dateTimeValue" || d.formatType === "datetimeValue"){
+                        value = "{ts '"+value+"'}"
+                    }else if( d.formatType === "dateValue" ){
+                        value = "{d '"+value+"'}"
+                    }else if( d.formatType === "timeValue" ){
+                        value = "{t '"+value+"'}"
+                    }
+                    parameter[ parameterName ] = value;
+                }
+                d.value = parameterName;
+
+                filterList.push( d );
+            }.bind(this));
+            return filterList;
+        },
+        parseParameter : function( obj ){
+            if( typeOf(obj) !== "object" )return {};
+            var parameter = {};
+            //传入的参数
+            for( var p in obj ){
+                var value = obj[p];
+                if( typeOf( value ) === "date" ){
+                    value = "{ts '"+value.format("db")+"'}"
+                }
+                parameter[ p ] = value;
+            }
+            return parameter;
         },
         "select": function (statement, callback, options) {
-            if (statement.statement) {
+            if (statement.name) {
+                // var parameter = this.parseParameter(statement.parameter);
+                // var filterList = this.parseFilter(statement.filter, parameter);
                 var statementJson = {
-                    "application": statement.application || _form.json.application,
-                    "statementName": statement.statement || "",
+                    "statementId": statement.name || "",
                     "isTitle": (statement.isTitle === false) ? "no" : "yes",
                     "select": (statement.isMulti === false) ? "single" : "multi",
-                    "filter": statement.filter
+                    "filter": statement.filter,
+                    "parameter": statement.parameter
                 };
                 if (!options) options = {};
                 options.width = statement.width;

+ 56 - 11
o2web/source/o2_core/o2/xScript/PageEnvironment.js

@@ -753,22 +753,67 @@ MWF.xScript.PageEnvironment = function (ev) {
 
     this.statement = {
         "execute": function (statement, callback, async) {
-            var filterList = { "filterList": (statement.filter || null) };
-            MWF.Actions.get("x_query_assemble_surface").execute(statement.view, statement.application, filterList, function (json) {
-                var data = {
-                    "grid": json.data.grid,
-                };
-                if (callback) callback(data);
-            }, null, async);
+            var parameter = this.parseParameter(statement.parameter);
+            var filterList = this.parseFilter(statement.filter, parameter);
+            var obj = {
+                "filterList": filterList,
+                "parameter" : parameter
+            };
+            MWF.Actions.load("x_query_assemble_surface").StatementAction.executeV2(
+                statement.name, statement.mode || "data", statement.page || 1, statement.pageSize || 20, obj,
+                function (json) {
+                    if (callback) callback(json);
+                }, null, async);
+        },
+        parseFilter : function( filter, parameter ){
+            if( typeOf(filter) !== "array" )return [];
+            var filterList = [];
+            ( filter || [] ).each( function (d) {
+                var parameterName = d.path.replace(/\./g, "_");
+                var value = d.value;
+                if( d.comparison === "like" || d.comparison === "notLike" ){
+                    if( value.substr(0, 1) !== "%" )value = "%"+value;
+                    if( value.substr(value.length-1,1) !== "%" )value = value+"%";
+                    parameter[ parameterName ] = value; //"%"+value+"%";
+                }else{
+                    if( d.formatType === "dateTimeValue" || d.formatType === "datetimeValue"){
+                        value = "{ts '"+value+"'}"
+                    }else if( d.formatType === "dateValue" ){
+                        value = "{d '"+value+"'}"
+                    }else if( d.formatType === "timeValue" ){
+                        value = "{t '"+value+"'}"
+                    }
+                    parameter[ parameterName ] = value;
+                }
+                d.value = parameterName;
+
+                filterList.push( d );
+            }.bind(this));
+            return filterList;
+        },
+        parseParameter : function( obj ){
+            if( typeOf(obj) !== "object" )return {};
+            var parameter = {};
+            //传入的参数
+            for( var p in obj ){
+                var value = obj[p];
+                if( typeOf( value ) === "date" ){
+                    value = "{ts '"+value.format("db")+"'}"
+                }
+                parameter[ p ] = value;
+            }
+            return parameter;
         },
         "select": function (statement, callback, options) {
-            if (statement.statement) {
+            if (statement.name) {
+                // var parameter = this.parseParameter(statement.parameter);
+                // var filterList = this.parseFilter(statement.filter, parameter);
                 var statementJson = {
-                    "application": statement.application || _form.json.application,
-                    "statementName": statement.statement || "",
+                    "statementId": statement.name || "",
                     "isTitle": (statement.isTitle === false) ? "no" : "yes",
                     "select": (statement.isMulti === false) ? "single" : "multi",
-                    "filter": statement.filter
+                    "filter": statement.filter,
+                    "parameter": statement.parameter
                 };
                 if (!options) options = {};
                 options.width = statement.width;

+ 53 - 6
o2web/source/o2_core/o2/xScript/ViewEnvironment.js

@@ -669,21 +669,67 @@ MWF.xScript.ViewEnvironment = function (ev) {
 
     this.statement = {
         "execute": function (statement, callback, async) {
-            var obj = { "filterList": (statement.filterList || []), parameter : (statement.parameter || {}) };
+            var parameter = this.parseParameter(statement.parameter);
+            var filterList = this.parseFilter(statement.filter, parameter);
+            var obj = {
+                "filterList": filterList,
+                "parameter" : parameter
+            };
             MWF.Actions.load("x_query_assemble_surface").StatementAction.executeV2(
                 statement.name, statement.mode || "data", statement.page || 1, statement.pageSize || 20, obj,
                 function (json) {
                     if (callback) callback(json);
                 }, null, async);
         },
+        parseFilter : function( filter, parameter ){
+            if( typeOf(filter) !== "array" )return [];
+            var filterList = [];
+            ( filter || [] ).each( function (d) {
+                var parameterName = d.path.replace(/\./g, "_");
+                var value = d.value;
+                if( d.comparison === "like" || d.comparison === "notLike" ){
+                    if( value.substr(0, 1) !== "%" )value = "%"+value;
+                    if( value.substr(value.length-1,1) !== "%" )value = value+"%";
+                    parameter[ parameterName ] = value; //"%"+value+"%";
+                }else{
+                    if( d.formatType === "dateTimeValue" || d.formatType === "datetimeValue"){
+                        value = "{ts '"+value+"'}"
+                    }else if( d.formatType === "dateValue" ){
+                        value = "{d '"+value+"'}"
+                    }else if( d.formatType === "timeValue" ){
+                        value = "{t '"+value+"'}"
+                    }
+                    parameter[ parameterName ] = value;
+                }
+                d.value = parameterName;
+
+                filterList.push( d );
+            }.bind(this));
+            return filterList;
+        },
+        parseParameter : function( obj ){
+            if( typeOf(obj) !== "object" )return {};
+            var parameter = {};
+            //传入的参数
+            for( var p in obj ){
+                var value = obj[p];
+                if( typeOf( value ) === "date" ){
+                    value = "{ts '"+value.format("db")+"'}"
+                }
+                parameter[ p ] = value;
+            }
+            return parameter;
+        },
         "select": function (statement, callback, options) {
-            if (statement.statement) {
+            if (statement.name) {
+                // var parameter = this.parseParameter(statement.parameter);
+                // var filterList = this.parseFilter(statement.filter, parameter);
                 var statementJson = {
-                    "application": statement.application || _form.json.application,
-                    "statementName": statement.statement || "",
+                    "statementId": statement.name || "",
                     "isTitle": (statement.isTitle === false) ? "no" : "yes",
                     "select": (statement.isMulti === false) ? "single" : "multi",
-                    "filter": statement.filter
+                    "filter": statement.filter,
+                    "parameter": statement.parameter
                 };
                 if (!options) options = {};
                 options.width = statement.width;
@@ -872,7 +918,8 @@ MWF.xScript.ViewEnvironment = function (ev) {
         "selectAll" : function () { return _form.selectAll(); },
         "unSelectAll" : function () { return _form.unSelectAll(); },
         "getSelectedData" : function () { return _form.getSelectedData(); },
-        "setFilter" : function ( filter ) { return _form.setFilter(filter); },
+        "setFilter" : function ( filter, callback ) { return _form.setFilter(filter, callback); },
+        "setStatementFilter" : function ( filter , parameter, callback) { return _form.setFilter(filter, parameter, callback); },
         "switchView" : function ( options ) { return _form.switchView(options); },
         "switchStatement" : function ( options ) { if(_form.switchStatement)_form.switchStatement(options) ; },
         "reload" : function () { _form.reload(); },

+ 25 - 19
o2web/source/x_component_query_Query/Statement.js

@@ -53,6 +53,7 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
         if (this.json.view){
             this.viewJson = JSON.decode(this.json.view);
             this.statementJson = this.json;
+            this.statementJson.viewJson = this.viewJson;
             if (callback) callback();
         }else{
             this.getView(callback);
@@ -181,6 +182,7 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
     },
     loadParameter : function(){
         this.parameter = {};
+        debugger;
         var parameter = this.json.parameter ? Object.clone(this.json.parameter) : {};
         //系统默认的参数
         ( this.viewJson.parameterList || [] ).each( function (f) {
@@ -189,36 +191,31 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
                 value = parameter[ f.parameter ];
                 delete parameter[ f.parameter ];
             }
-            debugger;
             if( typeOf( value ) === "date" ){
                 value = value.format("db");
             }
             if( f.valueType === "script" ){
                 value = this.Macro.exec( f.valueScript ? f.valueScript.code : "", this);
             }else{
-                //var user = layout.user;
+                var user = layout.user;
                 switch ( f.value ) {
                     case "@person":
-                    case "person":
-                        //value = user.distinguishedName;
+                        value = user.distinguishedName;
                         break;
                     case "@identityList":
-                    case "identityList":
-                        //value =  user.identityList.map( function (d) {
-                        //    return d.distinguishedName;
-                        //});
+                        value =  user.identityList.map( function (d) {
+                           return d.distinguishedName;
+                        });
                         break;
                     case "@unitList":
-                    case "unitList":
-                        //o2.Actions.load("x_organization_assemble_express").UnitAction.listWithPerson({ "personList" : [user.distinguishedName] }, function (json) {
-                        //    value = json.unitList;
-                        //}, null, false);
+                        o2.Actions.load("x_organization_assemble_express").UnitAction.listWithPerson({ "personList" : [user.distinguishedName] }, function (json) {
+                           value = json.unitList;
+                        }, null, false);
                         break;
                     case "@unitAllList":
-                    case "unitAllList":
-                        //o2.Actions.load("x_organization_assemble_express").UnitAction.listWithIdentitySupNested({ "personList" : [user.distinguishedName] }, function (json) {
-                        //    value = json.unitList;
-                        //}, null, false);
+                        o2.Actions.load("x_organization_assemble_express").UnitAction.listWithIdentitySupNested({ "personList" : [user.distinguishedName] }, function (json) {
+                           value = json.unitList;
+                        }, null, false);
                         break;
                     case "@year":
                         value = (new Date().getFullYear()).toString();
@@ -260,9 +257,9 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
         for( var p in parameter ){
             var value = parameter[p];
             if( typeOf( value ) === "date" ){
-                value = "{ts '"+value+"'}"
+                value = "{ts '"+value.format("db")+"'}"
             }
-            parameter[ p ] = value;
+            this.parameter[ p ] = value;
         }
     },
     loadCurrentPageData: function( callback, async, type ){
@@ -332,6 +329,7 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
             this.json.application = json.data.query;
             //this.json = Object.merge(this.json, json.data);
             this.statementJson = json.data;
+            this.statementJson.viewJson = this.viewJson;
             if (callback) callback();
         }.bind(this));
     },
@@ -480,7 +478,15 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
     },
     //搜索相关结束
     getStatementInfor : function () {
-        return this.json;
+        debugger;
+        return this.statementJson;
+    },
+    getPageInfor : function(){
+        return {
+            pages : this.pages,
+            perPageCount : this.json.pageSize,
+            currentPageNumber : this.currentPage
+        };
     },
     switchStatement : function (json) {
         this.switchView(json);

+ 3 - 0
o2web/source/x_component_query_StatementDesigner/Main.js

@@ -112,12 +112,15 @@ MWF.xApplication.query.StatementDesigner.Main = new Class({
         this.statementListNode = new Element("div", {
             "styles": this.css.statementListNode
         }).inject(this.node);
+
         this.designerNode = new Element("div", {
             "styles": this.css.designerNode
         }).inject(this.node);
+
         this.contentNode = new Element("div", {
             "styles": this.css.contentNode
         }).inject(this.node);
+        this.formContentNode = this.contentNode;
     },
     loadStatementListNodes: function(){
         this.statementListTitleNode = new Element("div", {

+ 1 - 0
o2web/source/x_component_query_ViewDesigner/Main.js

@@ -231,6 +231,7 @@ MWF.xApplication.query.ViewDesigner.Main = new Class({
 		this.contentNode = new Element("div", {
 			"styles": this.css.contentNode
 		}).inject(this.node);
+        this.formContentNode = this.contentNode;
 	},
 
     //loadViewListNodes-------------------------------

+ 3 - 2
o2web/source/x_component_query_ViewDesigner/Property.js

@@ -929,6 +929,7 @@ MWF.xApplication.query.ViewDesigner.Property = MWF.FVProperty = new Class({
         }
     },
     loadActionArea: function () {
+        debugger;
         MWF.xApplication.process = MWF.xApplication.process || {};
         MWF.APPFD = MWF.xApplication.process.FormDesigner = MWF.xApplication.process.FormDesigner || {};
         MWF.xDesktop.requireApp("process.FormDesigner", "lp." + o2.language, null, false);
@@ -952,7 +953,7 @@ MWF.xApplication.query.ViewDesigner.Property = MWF.FVProperty = new Class({
                 // actionEditor.load(this.module.defaultToolBarsData);
 
                 var actionEditor = new MWF.xApplication.process.FormDesigner.widget.ActionsEditor(node, this.designer, this.data, {
-                    "maxObj": this.propertyNode.parentElement.parentElement.parentElement,
+                    "maxObj": this.propertyNode.parentElement.parentElement,
                     "noEditShow": true,
                     "noReadShow": true,
                     "onChange": function () {
@@ -972,7 +973,7 @@ MWF.xApplication.query.ViewDesigner.Property = MWF.FVProperty = new Class({
             MWF.xDesktop.requireApp("process.FormDesigner", "widget.ActionsEditor", function () {
 
                 var actionEditor = new MWF.xApplication.process.FormDesigner.widget.ActionsEditor(node, this.designer, this.data, {
-                    "maxObj": this.propertyNode.parentElement.parentElement.parentElement,
+                    "maxObj": this.propertyNode.parentElement.parentElement,
                     "isSystemTool": true,
                     "systemToolsAddress": "../x_component_query_ViewDesigner/$View/toolbars.json",
                     "noCreate": true,