O2OA提供的数据管理中心,可以让用户通过配置的形式完成对数据的汇总,统计和数据分组展现,查询和搜索数据形成列表数据展现。也支持用户配置独立的数据表来适应特殊的业务的数据存储需求。本文主要介绍如何在O2OA中开发和配置自定义数据查询语句JPQL及对应的视图。

Statement

查询语句是建立在数据表基数上的查询语句配置。配置查询语句后,在应用中可调用执行。

对系统表,目前支持流程平台的待办、已办、待阅、已阅、流程实例、已完成流程实例和阅读的查询操作;还支持内容管理平台的文档查询操作。

对自建表,支持查询、更新和删除操作。

入口

点系统的左上角图标->应用->数据中心平台->具体应用->查询配置打开

查询语句的后台服务

http://{hostip}:20020/x_query_assemble_surface/jest/index.html

查询语句执行依托的后台服务是“executeV2”,如下图

参数说明

uri 参数:

flag: 查询语句的id/名称/别名

mode: data表示获取匹配的具体数据,返回的数据在data标签;count表示获取匹配的数据条目数,返回的数据在 count标签;all表示同时获取count和data数据。

page: 需要返回数据的页码。

size: 每页的数量。

body参数:

filterList: 参见api文档说明 https://www.o2oa.net/api/global.html#StatementFilter

parameter: 过滤条件值参数,对查询语句where语句的形如":person"的参数部分进行赋值有以下规则:

  • 参数名称为下列值时,后台自动赋值:person(当前人),identityList(当前人身份列表),unitList(当前人所在直接组织), unitAllList(当前人所在所有组织), groupList(当前人所在群组)。
  • 如果对比的是日期时间,值为 "{ts '2021-04-29 11:01:01'}";如果对比的是日期,值为"{d '2021-04-29'}";如果对比的是时间,值为 "{t '11:01:01'}"。
  • 如果运算符用的是 like, noLike,模糊查询,值为 "%{value}%"。

查询语句

语法

查询语句用的是JPA JPQL语句,如 :

select o from tableName o where o.name='zhangsan'

了解JPQL语句可以点击链接查看:https://www.objectdb.com/java/jpa/query/jpql/structure

动态传参

查询语句中的where语句的值可以使用json传入

如:

查询语句的设计为

select o from tableName o where o.name=:n

在调用查询语句服务的时候传入 json

{
"n" : "zhangsan"
}

则最终在后台拼接成的语句为

select o from tableName o where o.name='zhangsan'

了解JPQL语句动态传参可以点击链接查看:https://www.objectdb.com/java/jpa/query/parameter

也可以看本文档的parameter说明,点击查看。

查询配置详细项

语句配置

本区域配置完成后,就可以在服务中使用查询语句。

配置项

内容

说明

如何创建语句

直接编写JPQL创建语句

如:

SELECT o FROM tempCard  o where o.isBranch=:n

通过脚本创建语句

可以在查询语句和总数语句中使用脚本编写,可以通过返回字符串,如:

return "SELECT o FROM tempCard  o where o.isBranch=:n"

另外,在脚本中,可以使用parameters获取传入的parameter参数,见本文的“查询语句的后台服务->参数说明->body参数->parameter”。

访问对象类型

系统表

指平台创建的表,选择此项后,支持流程平台的待办、已办、待阅、已阅、流程实例、已完成流程实例和阅读的查询操作;还支持内容管理平台的文档查询操作。

自建表

指二次开发人员在数据中心中创建的"数据表"

语句类型

JPQL语句类型

访问对象类型选择“系统表”时,支持select。

访问对象类型选择“自建表”时,支持select\update\delete。

数据表

数据库表名称

 

字段

 

帮助在语句编辑区域插入字段,不保存至后台。

查询语句

查询数据表记录内容的语句

后台服务“executeV2”返回的data标签。

总数语句

查询数据表记录条数的语句

后台服务“executeV2”返回的count标签。

在进行分页查询的时候,可以在第一次查询执行,翻页的时候不执行,以节省服务器资源。

样例:SELECT count(o.id) FROM tempCard o where o.isBranch=:n

测试语句

左侧

用json的方式传入语句中的参数

右侧

根据左侧参数执行的结果

视图

以配置的形式可视化展现数据

详细配置见下一小节。

视图配置

视图支持查询语句的可视化展现。具有列式、分页、查询等功能。

基本属性:

配置项

内容

说明

名称

视图名称

 

别名

视图别名

 

视图样式

 

选择后可切换不同的视图样式风格

显示序号

 

是否显示每列的序号,分页每页序号延续编号

每页行数

填写数字

每页返回的页数

隐藏操作条

 

是否显示操作条

操作运行的脚本api可以查看:链接

选择

无、单选、多选

单选表示可以在视图中选中一行。

多选表示可以在视图中选中多行,并且分页后选中的行值会被保留。

脚本中获取选中行API查看:链接

无选择隐藏首列

 

选择设置为“无”的时候,是否隐藏系统默认创建的首列。

无数据显示

 

当返回的数据为空时,视图上显示的文本。

默认选中行脚本

视图加载每一行的时候运行

可以在脚本中使用this.target获取当前行。

this.target.data 为当前行数据

this.target.node 为当前行DOM节点

this.target.row 为当前行对应的平台类对象

this.target.view 为当前视图的平台类对象。

结果return true 表示选中。

如:下面的脚本判断数据中的person和登录用户中文名称匹配即选中。

if(this.target.data.person ==this.session.user.name){

return true;

}

过滤配置:

过滤配置分为“作为默认过滤条件”和“作为自定义过滤”。

作为默认过滤条件为加载视图的时候作为过滤条件。

作为自定义过滤是用户选择条件后点击查询的过滤条件。

默认过滤条件

配置项

内容

说明

标题

过滤标题

 

参数

过滤的参数

和查询语句中形如 :field的where条件,见上图。

数据类型

   

输入

可以填写固定值,或者系统提供的一些默认公式,比如点击“当前人”,系统会填上@person。

脚本

脚本API请查看链接,this.target指向当前视图的平台类对象。

自定义过滤条件

配置项

内容

说明

选择

 

可选择对应表的所有字段,选择后在标题、路径、数据类型中自动填写数据。不保存在后台

标题

过滤标题

 

路径

表别名.字段名

见上图。

数据类型

   

用户输入

在使用界面提供输入框让用户输入。

可选

脚本API请查看链接,this.target指向当前视图的平台类对象。

返回格式为:

return [ "选项文本1|选项值1", "选项文本2|选项值2"]

样式配置

当在视图的基本配置中切换“视图样式”后,会替换成对应的css代码,可以修改代码呈现不同的视图界面。

样式名称

说明

container

表格容器样式

table

表格样式

titleTr

标题行样式

titleTd

标题单元格样式

contentTr

内容行样式

contentSelectedTr

选中的内容行样式

contentTd

内容单元格样式

checkboxNode

多选节点样式

checkedCheckboxNode

选中的多选节点样式

radioNode

单选节点样式

checkedRadioNode

选中的单选节点样式

noDataTextNode

视图无数据时显示的节点样式

tableProperties

表格属性

事件配置

视图在加载或执行过程中的事件。

样式名称

说明

 

queryLoad

视图加载前执行

可以使用脚本计算单元格的内容。api可以查看:链接

this.target 指向当前视图的平台类对象。

postLoad

视图,包括视图界面和当前页数据加载后执行

postLoadPageData

加载当前页数据后,画出界面内容前执行,跳页后也会执行

postLoadPage

加载当前页内容后执行,跳页后也会执行

queryLoadItemRow

加载每行之前执行

可以使用脚本计算单元格的内容。api可以查看:链接

this.target 指向当前行的平台类对象。

postLoadItemRow

加载每行之后执行

selectRow

选择行后执行

可以使用脚本计算单元格的内容。api可以查看:链接

this.event指向当前行的平台类对象。

unselectRow

取消选择行后执行

视图列配置

基本属性:

配置项

内容

说明

列标题

视图标题列上的文本

 

列名

视图列名称

 

默认值

 

对应列无内容时的值

打开文档

打开文档

点击该列时是否打开文档

打开文档脚本(优先于id路径)

点击该单元格时运行的脚本,api可以查看:链接

this.target指向单元格的平台类对象,this.target.data指向当前行的数据。

id路径

当查询语句的表是内容管理或者是流程时可以使用,

Id是(cms文档id/流程work id)相对单条数据的路径。

如查询语句返回的是数组,那么填写的是"document id/work id"所在的下标。

如查询语句返回的是对象,那么填写"document id/work id"所在的标签名称。

选择路径

 

正确填写了查询语句,再测试语句或刷新视图数据可显示(刷新)选择路径。选择以后自动在数据路径上填写路径名称,不在后台保存。

数据路径

 

指该列相对单条数据的路径。比如 0,title,或 0.title。

如查询语句返回的是数组,那么填写的是该列值所在的下标。

如查询语句返回的是对象,那么填写该列值所在的标签名称。

隐藏

 

是否隐藏该列

组织对象

 

是否为组织对象,如果选是,会把全称转换成中文名称显示。

如:“张三@zhangshan@P” 显示成 “张三”。

HTML值

 

如果选择是,那么使用innerHTML给单元格赋值,否则使用innerText给单元格赋值。

显示脚本

 

可以使用脚本计算单元格的内容。api可以查看:链接

this.target.value 为当前单元格数据路径的值。

this.target.data 为当前行数据

this.target.json 为当前行的配置

this.target.node 为当前行当前个DOM对象

this.target.row 为当前行的平台类对象。

使用 return "xx" 返回单元格内容。

单元格样式配置:

样式名称

说明

标题单元格样式

标题单元格样式

标题单元格属性

表格样式

内容单元格样式

内容单元格样式

内容单元格属性

内容单元格属性

单元格事件配置

视图在加载或执行过程中的事件。

样式名称

说明

事件上下文

loadTitle

加载标题单元格后执行的事件

api可以查看:链接

this.target.data 为当前行数据

this.target.json 为当前行的配置

this.target.node 为当前行当前个DOM对象

this.target.row 为当前行的平台类对象。

loadContent

加载内容单元格后执行的事件

click

点击单元格的事件

mousedown

按下鼠标时执行

mouseup

鼠标还原时执行

mouseover

鼠标经过时执行

mouseout

鼠标移除时执行

使用

在脚本中使用查询语句

直接调用后台服务查询数据

filterList 和 parameter 参数见本文“查询语句的后台服务->参数说明->body参数”。

o2.Actions.load("x_query_assemble_surface").StatementAction.executeV2(
statementFlag, //语句id、语句名称或语句别名
mode, //执行模式:data|count|all
page, //页码,数字
size, //每页条数
{
filterList: [],
parameter: {}
}, //请求的json
function(json){
//json为执行結果
},
function(xhr){
//如果返回错误,在这里处理
},
async //同步还是异步
)

使用平台封装好的api查询数据

参见api https://www.o2oa.net/api/module-statement.html#.execute

使用平台封装好的api选择数据

参见api https://www.o2oa.net/api/module-statement.html#.select

表单和页面中的查询视图组件

可以在内容管理表单、流程管理表单或门户页面中嵌入查询视图组件,用来显示数据。

表单中的选择视图组件

可以在内容管理表单、流程管理表单嵌入选择视图组件,用来选择数据。

Java开源协同办公项目:数据中心,自定义查询语句使用教程的更多相关文章

  1. vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询

    vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询 基于element Transfer http://element-cn.eleme.io/#/zh-CN/comp ...

  2. mybatis 自定义查询语句

    通过mybatis插件生成的mapper文件只有基本的增.删.改.查.汇总.但是实际使用场景中,总是有各种需要连表.汇总.分组查询的需求,那我们一般都通过自定义查询语句去实现. 有时候会有表结构更改的 ...

  3. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  4. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  5. 关于EF中实体和数据表以及查询语句映射的问题

    关于EF中实体和数据表以及查询语句映射的问题? 很多人在使用的时候分不清楚 实体字段应该少于等于(数据库中的表字段或者SQL查询中的临时字段).这样在查询或者添加修改都不会出现问题 如果实体的字段大于 ...

  6. 自定义查询语句SpringData

    虽然官方的API中给我们提供了很多关键字的查询,但是还是不够灵活,因为我们在项目中,会遇见奇葩的业务,我们需要用SpringData中的一个@Query注解. 使用@Query自定义查询 这种查询可以 ...

  7. Java开源电商项目比較

    这里比較的都是国外的开源项目,备选项目有: Smilehouse Workspace.Pulse.Shopizer.ofbiz.bigfish.broadleaf 1.Smilehouse Works ...

  8. 开源协同办公平台部署教程:O2OA PAAS平台部署

    一.镜像制作1.将安装介质o2server-5.0.3-linux.zip上传至镜像制作服务器上.(上传目录为/paas/xxhpaas/moka/o2oa)2.使用unzip命令解压安装包,参考命令 ...

  9. Spring Data Jpa 使用@Query标注自定义查询语句

    https://blog.csdn.net/daniel7443/article/details/51159865 https://blog.csdn.net/pp_fzp/article/detai ...

随机推荐

  1. final 修饰符

    修饰属性,方法,类 1.修饰属性 属性只能被赋值一次 基本类型:值不能改变 引用类型:引用不可以被修改 2.修饰方法 表示方法不可以被重写,但可以被子类访问 3.修饰类 表示类不可以被继承 //fin ...

  2. ADAS可行驶区域道路积水反光区域的识别算法

    ADAS可行驶区域道路积水反光区域的识别算法 Water logging area reflecting recognition algorithm for ADAS 1. 工程概要 1.1  概述: ...

  3. NVIDIA数据中心深度学习产品性能

    NVIDIA数据中心深度学习产品性能 在现实世界的应用程序中部署AI,需要训练网络以指定的精度融合.这是测试AI系统的最佳方法-准备将其部署在现场,因为网络随后可以提供有意义的结果(例如,对视频流正确 ...

  4. 机器学习PAL数据可视化

    机器学习PAL数据可视化 本文以统计全表信息为例,介绍如何进行数据可视化. 前提条件 完成数据预处理,详情请参见数据预处理. 操作步骤 登录PAI控制台. 在左侧导航栏,选择模型开发和训练 >  ...

  5. MySQL必知必会笔记——查询的基础知识

    查询基础知识 第七章 数据过滤 组合where子句 MySQL允许给出多个WHERE子句.这些子 句可以两种方式使用:以AND子句的方式或OR子句的方式使用. AND操作符 可使用AND操作符给WHE ...

  6. Centos7 安装 Keepalived

    目标: Keeplaived 简单模拟测试一下Nginx 故障切换前言:C7 默认的 1.3.5 似乎有点问题,改装 keepalived-2.0.7 1:安装 Nginx 和确认 (略)2:安装配置 ...

  7. 【NX二次开发】判断部件是否已修改(判断部件是否需要保存)UF_PART_is_modified();

    判断部件是否已修改(判断部件是否需要保存)UF_PART_is_modified(); 注意:函数需要输入原型,不要输入事例.事例转原型:UF_ASSEM_ask_prototype_of_occ() ...

  8. 深入理解Spring的两大特征(IOC和AOP)

    一.spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很 ...

  9. redis学习第一天

    不同于其他的常用关系型数据库,redis是一个非常轻便,体积小,存放键值对的数据库,常用于构建高性能,可扩展的Web应用程序. 这是我第一次接触redis,之前没有使用过,只听说过.因为刚毕业,找工作 ...

  10. 根据所处位置提取单元格内容的函数(left、right、mid)和查找字符串位于单元格内容第几位的函数(find)

    1.从左到右提取:left(value,num_chars) 注释:value为操纵单元格,num_chars表示截取的字符的数量 2.从右往左提取:right(value,num_chars) 注释 ...