Java开源协同办公项目:数据中心,自定义查询语句使用教程
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开源协同办公项目:数据中心,自定义查询语句使用教程的更多相关文章
- vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询
vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询 基于element Transfer http://element-cn.eleme.io/#/zh-CN/comp ...
- mybatis 自定义查询语句
通过mybatis插件生成的mapper文件只有基本的增.删.改.查.汇总.但是实际使用场景中,总是有各种需要连表.汇总.分组查询的需求,那我们一般都通过自定义查询语句去实现. 有时候会有表结构更改的 ...
- 转: 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- 关于EF中实体和数据表以及查询语句映射的问题
关于EF中实体和数据表以及查询语句映射的问题? 很多人在使用的时候分不清楚 实体字段应该少于等于(数据库中的表字段或者SQL查询中的临时字段).这样在查询或者添加修改都不会出现问题 如果实体的字段大于 ...
- 自定义查询语句SpringData
虽然官方的API中给我们提供了很多关键字的查询,但是还是不够灵活,因为我们在项目中,会遇见奇葩的业务,我们需要用SpringData中的一个@Query注解. 使用@Query自定义查询 这种查询可以 ...
- Java开源电商项目比較
这里比較的都是国外的开源项目,备选项目有: Smilehouse Workspace.Pulse.Shopizer.ofbiz.bigfish.broadleaf 1.Smilehouse Works ...
- 开源协同办公平台部署教程:O2OA PAAS平台部署
一.镜像制作1.将安装介质o2server-5.0.3-linux.zip上传至镜像制作服务器上.(上传目录为/paas/xxhpaas/moka/o2oa)2.使用unzip命令解压安装包,参考命令 ...
- Spring Data Jpa 使用@Query标注自定义查询语句
https://blog.csdn.net/daniel7443/article/details/51159865 https://blog.csdn.net/pp_fzp/article/detai ...
随机推荐
- 如何查看Oracle SID即instance_name 和 dbname区别
SID 和 instance_name是一个实例名字db_name 是数据库名字搞清两个概念,数据库和实例 实例:实例是数据库启动时初始化的一组进程和内存结构 数据库:数据库则指的是用户存储数据的一 ...
- npm ERR! Error: tunneling socket could not be established的解决问题
一般是代理问题 可以通过在命令行运行下列命令解决: npm run server npm run webdriver-update
- 3 Python相对路径地址的的一个问题
构建程序xiaojie_test.py import os from xxx.yyy import test test() 同目录下构建一个目录xxx,并且目录中有/tmp/results/graph ...
- PyTorch 进行 Neural-Transfer
PyTorch 进行 Neural-Transfer 1.简介 本文讲解如何实现由 Leon A. Gatys,Alexander S. Ecker和Matthias Bethge提出的Neural- ...
- A100 Tensor核心可加速HPC
A100 Tensor核心可加速HPC HPC应用程序的性能需求正在迅速增长.众多科学研究领域的许多应用程序都依赖于双精度(FP64)计算. 为了满足HPC计算快速增长的计算需求,A100 GPU支持 ...
- python+selenium基础篇,三种等待方式,显示、隐式、强制等待
1.显示等待: from selenium import webdriver from time import sleep from selenium.webdriver.support.ui imp ...
- 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
一.背景 人脸识别是近年来最热门的计算机视觉领域的应用之一,而且现在已经出现了非常多的人脸识别算法,如:DeepID.FaceNet.DeepFace等等.人脸识别被广泛应用于景区.客运.酒店.办公室 ...
- fiddler选项卡-Filters(过滤)
Filter filter的意思是过滤,在fiddler中,它可以用来过滤请求,使得session列表能够更加精准的展现抓到的数据流,而不是杂乱的一堆. 1.filter的界面 2.界面详解 1.Us ...
- 3、Java基础语法(下):程序流程控制
程序流程控制 从键盘获取不同类型的变量: 使用Scanner类,具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = ...
- UF_DRF 制图符号标注尺寸
Open C uc5530uc5531uc5532uc5533uc5534uc5540uc5541uc5542uc5543uc5550uc5551uc5563uc5566uf5505uf5506uf5 ...