o2oa api: statement | o2oa开发平台-游戏厅捕鱼达人

module

您可以通过statement对象,获取执行查询语句或者对查询结果进行选择。

syntax

//您可以在流程表单、内容管理表单、门户页面或视图中,通过this来获取statement对象,如下:
var statement = this.statement;

source

methods

static

execute(statement, callback, asyncopt) → {promise}

执行指定的查询语句。

syntax

this.statement.execute(statement, callback, async);
//返回promise对象后处理
var promise = this.statement.execute( statement );
promise.then(function(data){
    //data 为返回的数据。
})

parameters

  • statement object

    要执行的查询语句的信息。数据格式如下:

    以下的filter参数参考statementfilter, parameter参数参考statementparameter
    
    {
     "name" : "tesstatement", //(string)必选,查询配置的名称、别名或id
     "mode" : "all", //(string)必选,“all”、“data”或者“count”,all表示同时执行查询语句和总数语句,data表示执行查询语句,count表示执行总数语句
     "page" : 1, //(number)可选,当前页码,默认为1
     "pagesize" : 20, //(number)可选,每页的数据条数,默认为20
     "filter": [ //(array)可选,对查询进行过滤的条件。json数组格式,每个数组元素描述一个过滤条件,每个元素数据格式如下:
          {
              "path":"o.title", //查询语句格式为jpql使用o.title,为原生sql中使用xtitle
              "comparison":"like",
              "value":"关于",
              "formattype":"textvalue"
          }
     ],
     parameter : {
          "person" : "", //参数名称为下列值时,后台默认赋值,person(当前人),identitylist(当前人身份列表),unitlist(当前人所在直接组织), unitalllist(当前人所在所有组织), grouplist(当前人所在群组),rolelist(当前人拥有的角色)。v8.0以后系统自动解析,不需要再传这类参数。
          "starttime" : (new date("2020-01-01")), //如果对比的是日期,需要传入 date 类型
          "applicationname" : "%test%", //如果运算符用的是 like, nolike,模糊查询
          "processname" : "test流程", //其他写确定的值
          "?1": "关于" //v8.0后查询语句支持问号加数字的传参
        }
    }
    
  • callback function

    访问成功后的回调函数

  • async boolean

    同步或异步调用。true:异步;false:同步。默认为true。

returns

  • promise

    返回promise

examples

//获取“task”查询中的数据
//查询语句为 select o from task o where (o.person = :person) and (o.starttime > :starttime) and (o.applicationname like :applicationname) and (o.processname = :processname)
//总数语句为 select count(o.id) from task o where (o.person = :person) and (o.starttime > :starttime) and (o.applicationname like :applicationname) and (o.processname = :processname)
//过滤条件为标题o.title包含包含(like))“7月”。
this.statement.execute({
 "name": "task",
 "mode" : "all",
 "filter": [
     {
     "path":"o.title", //查询语句格式为jpql使用o.title,为原生sql中使用xtitle
     "comparison":"like",
     "value":"7月",
     "formattype":"textvalue"
     }
],
"parameter" : {
    "person" : "", //参数名称为下列值时,后台默认赋值,person(当前人),identitylist(当前人身份列表),unitlist(当前人所在直接组织), unitalllist(当前人所在所有组织), grouplist(当前人所在群组),rolelist(当前人拥有的角色)。v8.0以后系统自动解析,不需要再传这类参数。
    "starttime" : (new date("2020-01-01")), //如果对比的是日期,需要传入 date 类型
    "applicationname" : "%test%", //如果运算符用的是 like, nolike,模糊查询
    "processname" : "test流程", //其他写确定的值
    "?1": "关于" //v8.0后查询语句支持问号加数字的传参
  }
}, function(json){
 var count = json.count; //总数语句执行后返回的数字
 var list = json.data; //查询语句后返回的数组
  //......
});
//同上,使用返回值接收参数
var promise = this.statement.execute({
 "name": "task",
 "mode" : "all",
 "filter": [
     {
     "path":"o.title", //查询语句格式为jpql使用o.title,为原生sql中使用xtitle
     "comparison":"like",
     "value":"7月",
     "formattype":"textvalue"
     }
],
"parameter" : {
    "person" : "", //参数名称为下列值时,后台默认赋值,person(当前人),identitylist(当前人身份列表),unitlist(当前人所在直接组织), unitalllist(当前人所在所有组织), grouplist(当前人所在群组),rolelist(当前人拥有的角色)。v8.0以后系统自动解析,不需要再传这类参数。
    "starttime" : (new date("2020-01-01")), //如果对比的是日期,需要传入 date 类型
    "applicationname" : "%test%", //如果运算符用的是 like, nolike,模糊查询
    "processname" : "test流程", //其他写确定的值
   "?1": "关于" //v8.0后查询语句支持问号加数字的传参
  }
});
promise.then(function(json){
 var count = json.count; //总数语句执行后返回的数字
 var list = json.data; //查询语句后返回的数组
  //......
})

source

static

select(statement, callback)

如果查询的类型是"select",并且配置了查询视图,可以通过本方法进行数据选择。

syntax

this.statement.select(statement, callback);

parameters

  • statement object

    要访问的查询配置的信息。数据格式如下:

    以下的filter参数参考statementfilter, parameter参数参考statementparameter
    
    {
     "name" : "tesstatement", //(string)必选,查询配置的名称、别名或id
     "istitle" : true, //(boolean)可选,是否显示视图标题。默认true
     "ismulti" : true,  //(boolean)可选,是否允许多选。默认true
     "width" : 700, //(number)可选,选择框的宽度。默认700
     "height" : 400,  //(number)可选,选择框的高度。默认400
     "caption" : "标题", //(string)可选,选择框的标题
     "filter": [ //(array)可选,对查询进行过滤的条件。json数组格式,每个数组元素描述一个过滤条件,每个元素数据格式如下:
          {
              "path":"o.title", //查询语句格式为jpql使用o.title,为原生sql中使用xtitle
              "comparison":"like",
              "value":"关于",
              "formattype":"textvalue"
          }
     ],
     parameter : {
          "person" : "", //参数名称为下列值时,后台默认赋值,person(当前人),identitylist(当前人身份列表),unitlist(当前人所在直接组织), unitalllist(当前人所在所有组织), grouplist(当前人所在群组),rolelist(当前人拥有的角色)。v8.0以后系统自动解析,不需要再传这类参数。
          "starttime" : (new date("2020-01-01")), //如果对比的是日期,需要传入 date 类型
          "applicationname" : "%test%", //如果运算符用的是 like, nolike,模糊查询
          "processname" : "test流程", //其他写确定的值
          "?1": "关于" //v8.0后查询语句支持问号加数字的传参
        }
    }
    
  • callback function

    访问成功后的回调函数

example

this.statement.select({
    "name": "物业材料查询",     //查询的名称
    "ismulti": false,           //只允许单选
}, function(items) {
    //如果选择了某个数据,将数据赋值给表单输入框
    if (items.length) {
        //物料名称,表单中输入框名为“materialname”, 查询语句返回的字段名为“ylmc”
        this.data.materialname = items[0].ylmc;
        //规格,表单中输入框名为“specification”, 查询语句返回的字段名为“gg”
        this.data.specification = items[0].gg;
        //单价,表单中输入框名为“price”, 查询语句返回的字段名为“dj”
        this.data.price = items[0].dj;
    }
}.bind(this));

source

网站地图