核心服务
版本: 1.0 | 发布日期: 14/8/2018
# 实体的 CRUD Web 服务
一个实体是指 aiM18 模块中的一条记录,aiM18提供了以下与实体相关的Web服务:
- 创建
- 读取
- 更新
- 删除
# 创建实体
获取一个特定模块的空SqlEntity
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/entity/create/employee?menuCode=employee")
.post()
.addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
POST http://[server]/jsf/rfws/entity/create/[module]?menuCode=[menuCode]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth 获取的访问令牌 |
client_id | String (Header) | **必填.**在aiM18 [授权应用列表]中的Client ID |
module | String (Path) | **必填.**模块类型,可以在数据字典里找到 |
menuCode | String (Query) | **必填.**菜单编号,例如‘员工’,可以在数据字典中找到 |
param | json String (Query) | 特殊操作的附加参数 |
# 结果
如果 API 运行成功,响应状态码将为 200,然后它将返回一个空的 SqlEntity。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个空的SqlEntity |
fail | Header(error_id=1) | 采用JSON数组格式描述的多种错误 |
fail | Header(error_info) | 一个CheckMsg JSON 数组 |
# 读取实体
获取特定模块的现有 SQLEntity。
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/entity/read/employee?menuCode=employee&id=1")
.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/entity/read/[module]?menuCode=[menuCode]&id=[id]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth 获取的访问令牌 |
client_id | String (Header) | **必填.**在aiM18 [授权应用列表]中的Client ID |
module | String (Path) | **必填.**模块类型,例如‘员工’,可以在数据字典中找到 |
menuCode | String (Query) | **必填.**菜单编号,例如‘员工’,可以在数据字典中找到 |
id | long (Query) | **必填.**实体的id |
param | json String (Query) | 特殊操作的附加参数 |
iRev | int (Query) | 如果要读取实体的旧版本,请设定此值。如果要读取一个已删除实体,请设定该实体的 id 和 iRev 。 |
# 结果
如果 API 运行成功,响应状态码将是 200,然后它将返回该模块的一个正确 SqlEntity。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个正确的SqlEntity |
fail | Header(error_id=1) | 采用JSON数组格式描述的多种错误 |
fail | Header(error_info) | 一个 CheckMsg JSON 数组 |
# 保存实体
将 SqlEntity 保存到特定模块。
OkHttpClient client = new OkHttpClient();
MediaType jsonMT = MediaType.parse("application/json; charset=utf-8");
RequestBody rb = RequestBody.create(jsonMT,
"[Simplified Entity JSON]" or "array of [Simplified Entity JSON]");
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/entity/s/save/employee?menuCode=employee")
.put(formBody)
.addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
PUT http://[server]/jsf/rfws/entity/s/save/[module]?menuCode=[menuCode]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth 获取的访问令牌 |
client_id | String (Header) | **必填.**在aiM18 [授权应用列表]中的Client ID |
module | String (Path) | **必填.**模块类型,例如‘员工’,可以在数据字典中找到 |
menuCode | String (Query) | **必填.**菜单编号,例如‘员工’,可以在数据字典中找到 |
param | jsonString (Query) | 特殊操作的附加参数 |
entity | jsonString (Query) | 简化的实体 JSON,结构请参考下文。请注意,JSON需要使用 URL 编码. |
entitys_in_entity | String (Body) | 简化的实体 JSON,结构请参考下文。建议在请求体中传实体 JSON。如果要处理多个实体,请传一个简化的实体 JSON 数组。 |
# 简化的实体JSON
{
"employeepic": {
"values": []
},
"employee_attach": {
"values": []
},
"employee": {
"values": [
{"code": "000171","desc": "abcd"}
]
}
}
- JSON 包含模块中不同表的对象,每个表都包含一个 “values ”JSON 数组,用于指定表中每个字段的值。
- 模块的主表是必要的。关于哪个表是主表,用户可以参考数据字典。
- 如果未提供表格或字段值,则不会保存。
# 结果
如果 API 运行成功,响应状态码将是 200,然后它将返回此 SqlEntity 的正确 ID。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 所保存的SqlEntity的ID |
fail | Header(error_id=1) | 采用JSON数组格式描述的多种错误 |
fail | Header(error_info) | 一个CheckMsg JSON 数组 |
# 删除实体
从特定模块删除 SqlEntity。
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/entity/delete/employee?menuCode=employee&id=1")
.delete()
.addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
DELETE http://[server]/jsf/rfws/entity/delete/[module]?menuCode=[menuCode]&id=[id]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth 获取的访问令牌 |
client_id | String (Header) | **必填.**在aiM18 [授权应用列表]中的Client ID |
module | String (Path) | **必填.**模块类型,例如‘员工’,可以在数据字典中找到 |
menuCode | String (Query) | **必填.**菜单编号,例如‘员工’,可以在数据字典中找到 |
id | long (Query) | **必填.**实体的id |
param | json String (Query) | 特殊操作的附加参数 |
# 结果
如果 API 运行成功,响应状态码将是 200。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Status | 状态码是 200 |
fail | Header(error_id=1) | 采用JSON数组格式描述的多种错误 |
fail | Header(error_info) | 一个CheckMsg JSON 数组 |
# 通过编号获取ID的Web服务
通过用模块中的单据编号获取实体 ID.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/entity/getIdByCode/employee?menuCode=employee&code=001")
.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/entity/getIdByCode/[module]?menuCode=[menuCode]&code=[record code]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth 获取的访问令牌 |
client_id | String (Header) | **必填.**在aiM18 [授权应用列表]中的Client ID |
module | String (Path) | **必填.**模块类型,例如‘员工’,可以在数据字典中找到 |
menuCode | String (Query) | 模块的菜单编号,可在数据字典中找到 |
code | string (Query) | **必填.**单据的编号 |
beId | int (Query) | 如果模块是特定BE的,则需要提供 beID。BE 在 aiM18 中指企业法人,即勾选 BE 复选框的[部门]记录。 |
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回一个 JSON 对象。JSON 对象包括 id、withRight 和 withMulti。id 的类型是 long。withRight 和 withMulti 的类型是布尔型。withRight 为 true 时,表示当前用户可以访问此单据。withMulti 为 true 时,表示有两个或更多单据使用此编号。
如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个JSON 对象包括 id、withRight 和 withMulti。 |
fail | Header(error_id=1) | 采用JSON数组格式描述的多种错误 |
fail | Header(error_info) | 一个CheckMsg JSON 数组 |
# 数据搜索Web服务
使用lookup类型在 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。 |
# 条件详情
Conds 格式:
Id=lessThan=5=and=id=largerOrEqual=3=or=(name=contains =ss=or=name=contains=bb)
意思是:
Id<5 and id >=3 or (name like ‘%ss%’ or name like ‘%bb%’)
请使用这些格式来编写 conds:
("equal", "="),
("unequal", "<>"),
("largerThan", ">"),
("lessThan", "<"),
("largerOrEqual", ">="),
("lessOrEqual", "<="),
("contains", "like"),
("doseNotContain", "notlike"),
("in", "in"),
("notIn", "notin"),
("startWith", "like"),
("endWith", "like");
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回一个SqlTable。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个SqlTable |
fail | Header(error_info) | 一个CheckMsg JSON数组 |
# 附件Web服务
# 获取附件列表
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/attach/getAttach?module=dept&stSearch=dept&code=ADMIN")
.get()
.addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
GET http://127.0.0.1:8080/jsf/rfws/attach/getAttach?module=[module Name]&stSearch=[stSearch code]&code=[recod's code]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | string (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | string (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
module | string (Query) | **必填.**目标 FM/交易单据的模块编号 |
code | string (Query) | **必填.**目标 FM/交易单据的编号 |
stSearch | string (Query) | 默认 = 模块,StSearchinfo,供系统使用 |
beId | long (Query) | 如果模块是特定BE的,则需要提供 beID。BE 在 aiM18 中指企业法人,即勾选 BE 复选框的[部门]记录。 |
# 结果
类型 | 位置(error_id) | 说明 |
---|---|---|
success | Body | 一个 json 数组 |
json 数组示例
[
{"needPassword":"false",
"code":"M18_GZWZ2017050801-FIXED.docx",
"fileSize":823092.0,
"author":"admin",
"createUser":"admin",
"remark":"",
"id":9,
"createUid":5,
"desc":"M18_GZWZ2017050801-FIXED",
"createDate":"2017/07/04 10:52:25",
"tags":""},
{"needPassword":"true",
"code":"M18_GZWZ2017051801.docx",
"fileSize":108683.0,
"author":"admin",
"createUser":"admin",
"remark":"",
"id":10,
"createUid":5,
"desc":"M18_GZWZ2017051801",
"createDate":"2017/07/04 10:52:25",
"tags":""}
]
参数名称 | 含义 |
---|---|
id | 附件ID |
code | 附件编号 |
desc | 附件标题 |
fileSize | 附件的文件大小 |
author | 附件的作者 |
tags | 附件的标签 |
remark | 附件的备注 |
createUser | 创建附件的用户名 |
createUid | 创建附件的用户ID |
createDate | 附件的创建日期 |
needPassword | 文件是否用密码加密 |
# 获取附件文件
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/attach/getFile?module=dept&stSearch=dept&code=ADMIN&id=10")
.get()
.addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
GET http://127.0.0.1:8080/jsf/rfws/attach/getFile?module=[module Name]&stSearch=[stSearch code]&code=[recod's code]&id=[Attachment ID]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | string (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | string (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
module | string (Query) | **必填.**目标 FM/交易单据的模块编号 |
stSearch | string (Query) | 默认 = 模块, StSearchinfo,供系统使用 |
code | string (Query) | 目标 FM/交易单据的编号 |
Id | string (Query) | **必填.**附件ID |
password | string (Query) | 文件使用密码加密时必须填写。附件的密码。此密码需要加密。 |
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回一个文件。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个文件 |
fail | Header(error_info) | 一个CheckMsg JSON数组 |
# 上传附件文件
OkHttpClient client = new OkHttpClient();
File file = new File("C:\\script.txt");
MediaType mt = MediaType.parse("application/octet-stream");
RequestBody rb = RequestBody.create(mt, file);
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/attach/upload?module=dept&stSearch=dept&code=ADMIN&fileName=script.text&title=attachment&author=aa&tags=program;aiM18;script&remark=aabbcc")
.post(rb)
.addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
POST http://127.0.0.1:8080/jsf/rfws/attach/upload?module=[module Name]&stSearch=[stSearch code]&code=[recod's code]&fileName=[Attachment’s filename]&title=[file name]&author=[user name]&tags=[tags]&remark=[remark]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | string (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | string (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
module | string (Query) | **必填.**目标 FM/交易单据的模块编号 |
stSearch | string (Query) | 默认 = 模块, StSearchinfo,供系统使用 |
code | string (Query) | 目标 FM/交易单据的编号 |
fileName | string (Query) | **必填.**附件的文件名称 |
title | string (Query) | **必填.**文件名(将用作附件编号,与当前系统逻辑相同) |
author | string (Query) | 默认 = 当前用户的用户名。附件作者 |
tags | string (Query) | 附件标签 |
remark | string (Query) | 附件备注 |
overwrite | boolean (Query) | 是否替换记录中第一个文件名相同的附件。如果设置为 “true”,将搜索当前附件列表,并替换第一个匹配的具有相同附件编号的附件。如果设为 false,则会一直追加到附件列表中。 |
password | string (Query) | 密码是否需要加密 |
beId | long (Query) | 如果模块是特定BE的,则需要提供 beID。BE 在 aiM18 中指企业法人,即勾选 BE 复选框的[部门]记录。 |
# 结果
如果 API 运行成功,响应状态码将是 200。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 状态码200 |
fail | Header(error_info) | 一个CheckMsg |
# 传输文件密码的方法
请注意,附件模块支持对文件进行密码加密。如果用户想通过密码对文件进行加密或解密,为了安全起见,用户需要先对密码进行加密。我们的系统使用 AES 模式对Web服务传输的密码进行加密。
以下是示例代码:
private static Key aesKey = new SecretKeySpec("Mac02017Dms02017".getBytes(), "AES");
public static String encryptDmsTransferPassword(String password) {
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
// encrypt the text
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
byte[] encrypted = cipher.doFinal(password.getBytes());
return DatatypeConverter.printHexBinary(encrypted);
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
# 通知Web服务
# 获取通知列表
获取系统通知列表
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/sysAlert/getList?rowLimit=10&page=1&readMode=2")
.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/sysAlert/getList?rowLimit=[no. of row]&page=[pagination]&readMode=[readMode]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | String (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
rowLimit | int (Query) | 行数,默认 = 5 |
page | int (Query) | 通知列表的分页,默认 = 1 |
readMode | int (Query) | 读取状态 0 = 全部, 1 = 已读, 2 = 未读 |
count | boolean (Query) | 如果 count 为 true,则返回通知的计数 |
# 通过用户ID获取通知列表
通过用户ID获取系统通知列表
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/sysAlert/getAlertList?uid=1&rowLimit=10&page=1")
.post()
.addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
POST http://[server]/jsf/rfws/sysAlert/getAlertList?uid=[uid]&rowLimit=[no. of row]&page=[pagination]&readMode=[readMode]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | String (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
uid | long (Query) | **必填.**用户ID |
rowLimit | int (Query) | 行数,默认 = 5 |
page | int (Query) | 通知列表的分页,默认 = 1 |
readMode | int (Query) | 读取状态 0 = 全部, 1 = 已读, 2 = 未读 |
count | boolean (Query) | 如果 count 为 true,则返回通知的计数 |
# 结果
如果 API 运行成功,将返回一个 SqlTable。如果 count 为 true,则将返回通知的计数。
位置 | 说明 |
---|---|
Body | 一个sqlTable json string |
Header | 如果 count 为 true,返回通知的计数 |
# 获取通知
获取系统通知
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/sysAlert/get?alertId=1")
.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/sysAlert/getList?alertId=[id of alert record]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | String (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
alertId | long (Path) | **必填.**通知记录的id |
# 结果
如果 API 运行成功,它将返回一个 SqlTable。
位置 | 说明 |
---|---|
Body | 一个 SqlTable JSON string |
# 公告 Web 服务
# 获取公告列表
获取系统公告列表
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/ancm/getAncmList?page=1&pageSize=50&orderField=ancmDate&orderAsc=DESC&readMode=0")
.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/ancm/getAncmList?page=[pagination]&pageSize=[pageSize]&orderField=[order field]&orderAsc=[order type]&readMode=[read mode]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | String (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
pageSize | int (Path) | **必填.**页面大小 |
page | int (Query) | **必填.**公告列表的分页 |
readMode | int (Query) | 读取状态 0 = 全部, 1 = 已读, 2 = 未读 |
orderField | string (Query) | 使用哪个字段进行排序。 |
orderAsc | String (Query) | 排序类型,值可以是 ASC 或 DESC。默认为 DESC。 |
excludeIds | String (Query) | 使用此值排除某些公告。可以是一个 id,也可以是多个 id。如果是两个或多个 id,id 之间必须用 , 分隔。 |
getCount | boolean (Query) | 如果 getCount 为 true,则返回公告的计数 |
quickSearch | String (Query) | 如果该值不为空,则可用于搜索标题、公开日期和重要性 |
# 结果
如果 API 运行成功,它将返回一个 SqlTable。如果 getCount 为 true,则将返回公告列表的计数。如果 getCount 为 false,则将返回公告列表的信息。
位置 | 说明 |
---|---|
Body | 一个 SqlTable JSON string |
# 获取公告
获取系统公告
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/ancm/read?ancmId=1")
.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/ancm/read?ancmId=[id of announcementrecord]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | String (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
ancmId | long (Path) | **必填.**公告记录的id |
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回一个SqlEntity。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个 SqlEntity JSON string |
fail | Header(error_info) | 一个 CheckMsg JSON 数组 |
# 一查到底 - 获取相关记录
给定一条记录,返回与该记录相关的所有其他记录。
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/telescope/getRelatedRecord/user/2")
.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/telescope/getRelatedRecord/{lookupType}/{recordId}
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | String (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
lookupType | String (Path) | **必填.**搜索类型 |
recordId | long (Path) | **必填.**源记录id |
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回一个JSON。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
[
{
"ids": [
1,
114
],
"lastModifyDate": 1553229061000,
"module": "dept",
"moduleDisplay": "Department"
},
{
"ids": [
182,
120
],
"lastModifyDate": 1555925150000,
"module": "employee",
"moduleDisplay": "Employee"
}
]
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个SqlEntity JSON string |
fail | Header(error_info) | 一个CheckMsg JSON 数组 |
# 一查到底 - 通过语音指令获取结果
一查到底 NPL 触发器,根据移动应用程序设置返回匹配的一查到底结果。
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/telescope/telescopeNlp?tags=staff&tags=Jacky")
.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/telescope/telescopeNlp?tags={keyword}
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | String (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | String (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
tags | String (Query) | **必填.**搜索关键词 |
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回一个JSON。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
{
"stSearch": "employee",
"formatFieldDesc": {
"code": "",
"desc__lang": "Name(Current Language)",
"iRev": "Inner Version",
"lastModifyDate": "Last Modified Time",
"employee.lastModifyUid.simpleUser.desc__lang": "Last Modified By(Current Language)",
"id": "",
"desc": ""
},
"size": 2,
"stSearchDisplay": "Employee",
"values": [
{
"code": "Havid0012",
"desc__lang": "Raindrop_en",
"iRev": 11,
"lastModifyDate": "2019-04-22 17:27:57",
"employee.lastModifyUid.simpleUser.desc__lang": "Raindrop_en",
"id": 382,
"desc": "Raindrop_en",
"st_desc": "Raindrop_en",
"st_id": 382,
"st_code": "Havid0012"
},
{
"code": "Havid0018",
"desc__lang": "B",
"iRev": 8,
"lastModifyDate": "2019-04-22 17:27:57",
"employee.lastModifyUid.simpleUser.desc__lang": "Raindrop_en",
"id": 398,
"desc": "B",
"st_desc": "B",
"st_id": 398,
"st_code": "Havid0018"
}
],
"fieldDesc": {
"code": "Code",
"st_id": "st_id",
"st_code": "st_code",
"desc__lang": "Name(Current Language)",
"st_desc": "st_desc",
"employee.lastModifyUid.simpleUser.desc__lang": "Name(Current Language)",
"iRev": "Inner Version",
"id": "Key ID",
"lastModifyDate": "Last Modified Time",
"desc": "Name"
}
}
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个 SqlEntity JSON string |
fail | Header(error_info) | 一个 CheckMsg JSON 数组 |
# 文件打印Web服务
# 获取PDF 文件
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/jrPrint/fetchPdf?menuCode=employee&recId=1")
.post()
.addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
POST http://127.0.0.1:8080/jsf/rfws/jrPrint/fetchPdf?menuCode=[Menu code]&recId=[Record Id]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | string (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | string (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
menuCode | string (Query) | **必填.**菜单编号,如 “员工”,可在数据字典中找到 |
recId | long (Query) | **必填.**实体的id |
printOptionId | long (Query) | 打印选项id |
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回一个文件。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | 一个文件 |
fail | Header(error_info) | 一个CheckMsg JSON 数组 |
# 上传图片 Web服务
OkHttpClient client = new OkHttpClient();
File file = new File("C:\\Sample.jpg");
MediaType mt = MediaType.parse("application/jpg");
RequestBody rb = RequestBody.create(mt, file);
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/jsf/rfws/image/uploadImage?imgName=Sample.jpg")
.post(rb)
.addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
.addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
# HTTP 请求
POST http://127.0.0.1:8080/jsf/rfws/image/uploadImage?imgName=[Image Name]
# 参数
名字 | 类型 | 说明 |
---|---|---|
authorization | string (Header) | **必填.**通过 OAuth2 获取的访问令牌 |
client_id | string (Header) | **必填.**在[授权应用列表]中注册时,由 aiM18 生成 |
imgName | string (Query) | 图片名字 |
# 结果
如果 API 运行成功,响应状态码将是 200,然后会返回 imgCode。 如果 API 运行失败,响应状态码将是 400,然后将返回 CheckMsg。你可以在响应头中,从关键字为 “error_info ”中获取一个 CheckMsg JSON 数组。
类型 | 位置 | 说明 |
---|---|---|
success | Body | imgCode |
fail | Header(error_info) | 一个CheckMsg JSON 数组 |