搜索
版本: 1.2 | 发布日期: 07/02/2024
# 引言
aiM18 系统的主要目的是加强数据管理。
有了 aiM18,数据只需输入一次,即可随处查看。
# 目的
阅读本章后,你应该能够:
- 从 aiM18 中检索数据
- 获取模块记录唯一 ID
# 场景
Chris 是 ABC 水果公司的 IT 经理。他负责维护 ABC 水果目录,该目录将进口水果和本地水果分开显示。
市场部经理Jane会不时与Chris联系,以增加不同的新产品。
由于Chris的工作繁重,他经常不能按时发布最新的目录。
这阻碍了Jane提出的推广活动。
Chris决定使用 aiM18 数据搜索Web服务来解决这个问题。
# 参考文档
以下内容演示了如何从 aiM18 获取数据。
更多详情,请参阅 “搜索 ”服务的完整文档。
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/search/search?stSearch=employee&startRow=1&endRow=10")
.get()
.addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
HTTP 请求
GET http://[server]/jsf/rfws/search/search?stSearch=[stSearchName]&startRow=[startRow]&endRow=[endRow]
搜索参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | 必填. 通过 OAuth 获取的访问令牌 |
client_id | String (Header) | 必填. aiM18 授权应用列表中的Client ID |
stSearch | String (Query) | 必填. Lookup 类型, 比如 '员工', 可以在数据字典或 UDF Lookup 中找到。 |
startRow | int (Query) | 搜索的起始行 |
endRow | int (Query) | 搜索的最后一行 |
beId | long (Query) | 如果搜索是 BE 特定的,则需要输入beId |
formatId | long (Query) | 搜索格式 ID |
conds | String (Query) | 请查看 条件详情 |
sorts | String (Query) | 排序字段,以“;”分隔。如果不是升序,请使用“!”;例如:“code;!desc” |
resultFields | String (Query) | 如果要返回某些字段的值,请使用此参数。 |
lookupField | boolean (Query) | 如果值为 true,则结果数据将是没失效、没锁定和已批准的。 |
quickSearchStr | String (Query) | 如果要使用快速搜索,请设定此值。 |
fieldDesc | boolean (Query) | 如果值为 true,将返回字段的名称和mess值。 |
viewDeleted | boolean (Query) | 如果要搜索已删除的数据,请设置此值为 true。 |
# 了解 stSearch
aiM18 数据搜索网络服务完全依赖于 stSearch
参数。
在 aiM18 平台中,stSearch
也被称为Lookup.
Lookup 是 aiM18 中预定义的一种搜索方案,它包括搜索中涉及的表格信息、排序和表格连接。
你可以通过访问 aiM18 中的 Lookup 获取 stSearch code
:
在 aiM18 中,同一个模块可以有多种不同的 stSearch
。有些设置是系统预定义的,有些则可以由用户自定义。
每个模块都提供一个适用于大多数情况的标准 stSearch
。
例如,访问 产品/物料
编辑器,就可以访问该模块使用的标准 stSearch
。
1. 点击 编辑查询
2. 点击 查询
括号中的编号就是我们想要获取的 stSearch code
。
# 建立查询条件
接下来,我们需要准备不同的产品清单,分别显示进口水果和本地水果。
aiM18 数据搜索网络服务允许提供类似 SQL 的 WHERE 子句来过滤数据。
假设 [Series] 是区分产品的字段,我们需要知道它在数据库中对应的列名。
aiM18 提供了一种方便的方法,让你可以直接在界面上了解某个字段对应的数据库列。
首先,你需要在界面设置中启用 [显示字段名称] 选项。
然后,将光标放在要查看的列上,这里是 [Series],系统将显示相应的字段信息。
# 通过编号获取ID
在收集了上述信息后,很容易得出以下条件:
进口水果:
seriesId=equals=IMPORT
本地水果:
seriesId=equals=LOCAL
对于 aiM18 中的所有lookup字段,在构建 “搜索条件”时,我们应使用 “记录 id ”而不是 “记录编号”。
通过编号获取ID Web服务可获取记录id。
查找Series ID 的请求示例
GET `http://[server]/jsf/rfws/entity/getIdByCode/series?menuCode=series&code=IMPORT`
GET `http://[server]/jsf/rfws/entity/getIdByCode/series?menuCode=series&code=LOCAL`
响应示例
{"withMulti":false,"id":"1","withRight":true}
{"withMulti":false,"id":"2","withRight":true}
# 汇总所有步骤
搜索产品 Series = LOCAL
的请求示例
GET http://[server]/jsf/rfws/search/search?stSearch=pro&conds=seriesId=equals=2
响应示例
{
"size":{
"size":4,
"values":[
{"code":"Orange","desc":"Local Orange","iRev":2,"id":8 ...},
{"code":"Banana","desc":"Local Banana","iRev":2,"id":6 ...},
{"code":"Apple","desc":"Local Apple","iRev":2,"id":5 ...},
{"code":"Peach","desc":"Local Peach","iRev":2,"id":7 ...}
]
}
}
# FAQ
1. 我如何知道我必须使用 id 而不是编号?
你可以通过数据字典进行查看。所有带Lookup值的字段都存储了引用 ID。