35.2 Excel服务器的WebApi对外接口
第三方系统要想通过WebApi调用Excel服务器中数据需先在ES服务器应用中开启WebApi功能。
35.2.1 启用WebApi
设计栏目中选择【WebApi】——【开放接口】,点击【配置】菜单。在“配置开放WebApi接口”窗口中依下图进行配置:勾选“开放WebApi接口,允许外部系统调用 ”,设置AppKey、AppSecret和允许WebApi访问的模板。
35.2.2 勤哲WebApi接口
获取access_token
请求方式:GET
请求地址:http(s)://192.168.1.1/ESWeb/api/GetToken?AppKey=xx&Timestamp=xx&Sign=xx
参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
AppKey | string | 是 | 应用内设置的AppKey |
Timestamp | string | 是 | Unix时间戳,允许时间误差为10分钟 |
Sign | string | 是 | MD5(AppKey + Timestamp + AppSecret) |
权限说明:
每个应用有独立的AppKey和AppSecret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取
返回结果:
{
"errcode":0,
"errmsg":"ok",
"hint":"1718351384016976",
"access_token":"access_token001",
"expires_in":7200
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
errcode | int | 出错返回码,为0表示成功,非0表示调用失败 |
errmsg | string | 返回码提示语 |
hint | string | 本次接口调用记录的唯一标识 |
access_token | string | 获取到的凭证 |
expires_in | int | 凭证的有效时间(秒) |
注意事项:
开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。
access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时)。access_token可能会提前失效,开发者应实现access_token失效时重新获取的逻辑。
公共参数
指在调用业务接口时,都需要传递的参数,放在Header中。
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
AppKey | string | 是 | 应用内设置的AppKey |
ESServer_access_token | string | 是 | 由access_token接口获取 |
Timestamp | string | 是 | Unix时间戳,允许时间误差为10分钟 |
Sign | string | 是 | 签名 |
Sign签名说明:
将公共参数中除了Sign外的所有参数,再加上AppSecret,参数名按照字典排序生成字符串。
例:
排序:
AppKey=AppKey01,AppSecret=ktggjhwoiuwe89fwe8, ESServer_access_token=access_token001,Timestamp=1716973251
加密:只需要把值拼接,然后进行MD5加密
Sign=MD5(AppKey01ktggjhwoiuwe89fwe8access_token0011716973251)
加密完成后,填充到Header的Sign中。
业务接口
1、获取模板数据
请求方式:POST
请求地址:http(s)://192.168.1.1/ESWeb/api/GetReportData
请求Body:
{
"rtName":"订单",
"cond":[
{
"dtName":"订单_主表",
"fldName":"客户名称",
"value":"广州xx设备公司",
"op":"="
},
{
"dtName":"订单_明细",
"fldName":"产品名称",
"value":"镀锌管",
"op":"<>"
}
],
"outerFields":"订单_主表.订单编号,订单_主表.客户名称,订单_明细.产品名称,订单_明细.数量",
"orderBy":"订单_主表.订单日期,订单_主表.订单编号 desc",
"pageSize":50,
"pageNo":1
}
参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
rtName | string | 是 | 模板名称 |
cond.dtName | string | 否 | 数据表名 |
cond.fldName | string | 否 | 数据表字段名 |
cond.value | string | 否 | 字段值,统一用string类型,日期格式为yyyy-MM-dd HH:mm:ss |
cond.op | string | 否 | 取值范围:=|>|<|>=|<=|<>|like,不传默认= |
outerFields | string | 否 | 要查询的字段列表,如果不指定,则查询全部数据表的全部字段,例:订单_主表.订单编号,订单_主表.客户名称,订单_明细.产品名称,订单_明细.数量 |
orderBy | string | 否 | 排序方式,例:订单_主表.订单日期,订单_主表.订单编号 desc,不传默认为填报时间降序 |
pageSize | int | 否 | 每页行数,1~100,默认50 |
pageNo | int | 否 | 页号,0~n,0表示不分页 |
返回结果:
{
"pageNo": 1,
"total": 1,
"records": [
{
"rcId": "RC07052500283",
"dts": [
{
"dtName": "订单_主表",
"datas": [
{
"flds": [
{
"fldName": "订单编号",
"value": "070525010",
"fldType": 2,
"fileName": ""
},
{
"fldName": "客户名称",
"value": "陕西xx电力工程公司",
"fldType": 2,
"fileName": ""
}
]
}
]
},
{
"dtName": "订单_明细",
"datas": [
{
"flds": [
{
"fldName": "产品名称",
"value": "无缝管",
"fldType": 2,
"fileName": ""
},
{
"fldName": "数量",
"value": "1000",
"fldType": 1,
"fileName": ""
}
]
},
{
"flds": [
{
"fldName": "产品名称",
"value": "罗纹钢",
"fldType": 2,
"fileName": ""
},
{
"fldName": "数量",
"value": "500",
"fldType": 1,
"fileName": ""
}
]
}
]
}
]
}
],
"errcode": 0,
"errmsg": "ok",
"hint": "1718351431519170"
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
errcode | int | 出错返回码,为0表示成功,非0表示调用失败 |
errmsg | string | 返回码提示语 |
hint | string | 本次接口调用记录的唯一标识 |
pageNo | int | 当前页号 |
total | int | 总数量 |
records.rcId | string | 表单编号 |
records.dts.dtName | string | 数据表名 |
records.dts.datas.flds.fldName | string | 字段名 |
records.dts.datas.flds.value | string | 字段值,当字段为图片、附件时,返回文件的base64编码 |
records.dts.datas.flds.fldType | int | 字段类型,1:数字,2:文字,3:日期 |
records.dts.datas.flds.fileName | string | 图片、附件字段的文件名 |
2、批量新建表单
请求方式:POST
请求地址:http(s)://192.168.1.1/ESWeb/api/NewCase
请求Body:
{
"rtName": "订单",
"fillerType": 0,
"filler": "admin",
"wfOption": 2,
"wftName": "制单",
"records": [
{
"dts": [
{
"dtName": "订单_主表",
"datas": [
{
"flds": [
{
"fldName": "订单编号",
"value": "070525010",
"fileName": ""
},
{
"fldName": "客户名称",
"value": "陕西xx电力工程公司",
"fileName": ""
}
]
}
]
},
{
"dtName": "订单_明细",
"datas": [
{
"flds": [
{
"fldName": "产品名称",
"value": "无缝管",
"fileName": ""
},
{
"fldName": "数量",
"value": "1000",
"fileName": ""
}
]
},
{
"flds": [
{
"fldName": "产品名称",
"value": "罗纹钢",
"fileName": ""
},
{
"fldName": "数量",
"value": "500",
"fileName": ""
}
]
}
]
}
]
},
{
"dts": [
{
"dtName": "订单_主表",
"datas": [
{
"flds": [
{
"fldName": "订单编号",
"value": "240621010",
"fileName": ""
},
{
"fldName": "客户名称",
"value": "陕西xx电力工程公司",
"fileName": ""
}
]
}
]
},
{
"dtName": "订单_明细",
"datas": [
{
"flds": [
{
"fldName": "产品名称",
"value": "无缝管",
"fileName": ""
},
{
"fldName": "数量",
"value": "1000",
"fileName": ""
}
]
},
{
"flds": [
{
"fldName": "产品名称",
"value": "罗纹钢",
"fileName": ""
},
{
"fldName": "数量",
"value": "500",
"fileName": ""
}
]
}
]
}
]
}
]
}
参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
rtName | string | 是 | 模板名称,例:订单 |
fillerType | int | 是 | 填报人种类,0:指定姓名,1:主表字段表示填报人姓名 |
filler | string | 是 | 填报人,用户姓名或字段名。例:小肖/订单_主表.录入人 |
wfOption | int | 否 | 模板带工作流时,表单的办理状态。1:第一步暂存,2:指定步骤已办理 |
wftName | string | 否 | wfOption为2时,视为完成的节点名称(不能是需手工指定完成人的节点),例:制单 |
records.dts.dtName | string | 是 | 数据表名,例:订单_主表 |
records.dts.datas.flds.fldName | string | 是 | 字段名,例:订单编号 |
records.dts.datas.flds.value | string | 是 | 字段值,图片、附件字段时,传入文件的Base64编码 |
records.dts.datas.flds.fileName | string | 否 | 图片、附件字段时,文件名。 |
返回结果:
{
"errcode": 0,
"errmsg": "ok",
"hint": "1718351431519170"
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
errcode | int | 出错返回码,为0表示成功,非0表示调用失败 |
errmsg | string | 返回码提示语 |
hint | string | 本次接口调用记录的唯一标识 |
3、批量修改表单
请求方式:POST
请求地址:http(s)://192.168.1.1/ESWeb/api/UpdateCase
请求Body:
{
"rtName": "订单",
"records": [
{
"rcId": "rc20240724000003",
"dts": [
{
"dtName": "订单_主表",
"datas": [
{
"flds": [
{
"fldName": "订单编号",
"value": "070525010",
"fileName": ""
},
{
"fldName": "客户名称",
"value": "陕西xx电力工程公司",
"fileName": ""
}
]
}
]
},
{
"dtName": "订单_明细",
"datas": [
{
"flds": [
{
"fldName": "产品名称",
"value": "无缝管",
"fileName": ""
},
{
"fldName": "数量",
"value": "1000",
"fileName": ""
}
]
},
{
"flds": [
{
"fldName": "产品名称",
"value": "罗纹钢",
"fileName": ""
},
{
"fldName": "数量",
"value": "500",
"fileName": ""
}
]
}
]
}
]
},
{
"rcId": "rc20240724000005",
"dts": [
{
"dtName": "订单_主表",
"datas": [
{
"flds": [
{
"fldName": "订单编号",
"value": "240621010",
"fileName": ""
},
{
"fldName": "客户名称",
"value": "陕西xx电力工程公司",
"fileName": ""
}
]
}
]
},
{
"dtName": "订单_明细",
"datas": [
{
"flds": [
{
"fldName": "产品名称",
"value": "无缝管",
"fileName": ""
},
{
"fldName": "数量",
"value": "1000",
"fileName": ""
}
]
},
{
"flds": [
{
"fldName": "产品名称",
"value": "罗纹钢",
"fileName": ""
},
{
"fldName": "数量",
"value": "500",
"fileName": ""
}
]
}
]
}
]
}
]
}
参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
rtName | string | 是 | 模板名称,例:订单 |
records.rcId | string | 是 | 表单编号 |
records.dts.dtName | string | 是 | 数据表名。当要修改的数据表为明细表时,需要给出全量数据,即所有明细数据都需传递,只传递需要更新的字段即可。例:订单_主表 |
records.dts.datas.flds.fldName | string | 是 | 字段名,当要修改的数据表为交叉表时,需要额外添加rn,cn字段。例:订单编号 |
records.dts.datas.flds.value | string | 是 | 字段值,图片、附件字段时,传入文件的Base64编码 |
records.dts.datas.flds.fileName | string | 否 | 图片、附件字段时,文件名。 |
返回结果:
{
"errcode": 0,
"errmsg": "ok",
"hint": "1718351431519170"
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
errcode | int | 出错返回码,为0表示成功,非0表示调用失败 |
errmsg | string | 返回码提示语 |
hint | string | 本次接口调用记录的唯一标识 |
4、批量删除表单
请求方式:POST
请求地址:http(s)://192.168.1.1/ESWeb/api/DeleteCase
请求Body:
{
"rtName": "订单",
"rcIds": "rc20240625000003,rc20240625000005",
"cond": [
{
"dtName": "订单_主表",
"fldName": "客户名称",
"value": "广州xx设备公司",
"op": "="
},
{
"dtName": "订单_主表",
"fldName": "合计金额",
"value": "0",
"op": ">"
}
]
}
参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
rtName | string | 是 | 模板名称 |
rcIds | string | 否 | 表单编号列表,逗号分隔。优先使用此字段确定要删除的表单,此字段为空时,使用cond来确定要删除的表单。 例:rc20240625000003,rc20240625000005 |
cond.dtName | string | 否 | 数据表名 |
cond.fldName | string | 否 | 数据表字段名 |
cond.value | string | 否 | 字段值,统一用string类型,日期格式为yyyy-MM-dd HH:mm:ss |
cond.op | string | 否 | 取值范围:=|>|<|>=|<=|<>|like,不传默认= |
返回结果:
{
"errcode": 0,
"errmsg": "ok",
"hint": "1718351431519170"
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
errcode | int | 出错返回码,为0表示成功,非0表示调用失败 |
errmsg | string | 返回码提示语 |
hint | string | 本次接口调用记录的唯一标识 |
错误码说明
代码 | 说明 |
---|---|
0 | ok |
100 | 时间戳无效或已过期 |
101 | AppKey不存在 |
102 | WebApi未启用 |
103 | Sign签名错误 |
104 | 接口调用频繁,请稍后再试 |
105 | access_token无效或已过期 |
106 | 必填参数未指定或无效 |
107 | 此模板禁止访问 |
108 | pageSize的取值范围是1~100 |
109 | 模板不存在 |
110 | 未找到符合条件的表单 |
999 | 其他错误(根据不同情况返回具体信息) |