# 事后报备查询接口
# 1.概述
接入企业通过调用接口,查询美团企业版的事后报备数据。
# 2.接口基本信息
| 名称 | 描述 |
|---|---|
| 请求方式 | POST |
| 调用地址 | 测试环境:https://waimai-openapi.apigw.test.meituan.com/api/sqt/open/post/report/query 正式环境:https://bep-openapi.meituan.com/api/sqt/open/post/report/query |
| 调用方 | 客户平台 |
| 响应方 | 美团企业版 |
| 响应超时时间 | 5秒 |
| 调用限频 | 100次/分钟,10w次/天 |
# 2.1.请求体
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| accessKey | String | 是 | 美团企业版分配给客户的接入秘钥 | |
| content | String | 是 | UgxoCGPQIzoP | 请求体内容,将请求参数JSON序列化后进行加密的结果值, 参照:签名实例 |
# content加密前数据结构
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| ts | Long | 是 | 1617085650321 | 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 |
| entId | Long | 是 | 12345 | 企业ID |
| reportNoList | List<String> | 否 | ["REP123456789"] | 报备单号列表 |
| minSubmitTime | Long | 否 | 1617085650321 | 最小报备提交时间,13位时间戳 |
| maxSubmitTime | Long | 否 | 1617085650321 | 最大报备提交时间,13位时间戳,提交时间跨度不超过30天 |
| minFirstSubmitTime | Long | 否 | 1617085650321 | 最小报备首次提交时间,13位时间戳 |
| maxFirstSubmitTime | Long | 否 | 1617085650321 | 最大报备首次提交时间,13位时间戳,提交时间跨度不超过30天 |
| reportWorkflowStatus | Integer | 否 | 60 | 报备单状态(10-待提交,20-审批中,30-已驳回,40-已撤回,60-已通过),为空则查出所有状态报备单 |
| pageNum | Integer | 是 | 1 | 页码 |
| pageSize | Integer | 是 | 20 | 每页记录数,1~100之间的正整数 |
# 2.2.响应参数
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| traceId | String | 是 | 56a0af18ae30a168d4006c7c | 日志查询ID,用于排查问题 |
| status | Integer | 是 | 0 | 接口响应编码,返回0为同步成功,返回其他则有报错,编码枚举值和解决方案详见第四章 |
| msg | String | 否 | 错误描述信息 | |
| data | String | 是 | UgxoCGPQIzoP | 响应数据,将响应参数JSON序列化后进行加密的结果值,解密秘钥使用secretKey参数 |
# data解密后数据结构
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| pageNum | Integer | 是 | 1 | 当前页码,最小为1 |
| pageSize | Integer | 是 | 20 | 当前页返回条数 |
| totalPages | Integer | 是 | 23 | 总页数 |
| totalCount | Long | 是 | 468 | 总数量 |
| result | List<PostReportOpenApiDTO> | 否 | 事后报备分页列表 |
PostReportOpenApiDTO字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| reportNo | String | 是 | REP20230921031532083615 | 美团企业版报备单号 |
| reportName | String | 否 | 商务用餐报备 | 报备单名称 |
| workflowStatus | Integer | 是 | 60 | 报备单状态(10-待提交,20-审批中,30-已驳回,40-已撤回,60-已通过) |
| submitType | Integer | 是 | 1 | 报备提交方式(1-手动,2-自动,3-自动生成手动提交) |
| staffIdentifier | String | 是 | 13912345678 | 提交人唯一标识(手机号/工号等,取决于企业设置) |
| staffName | String | 是 | 张三 | 提交人姓名 |
| orgNamePath | String | 是 | 集团-公司-部门 | 所在部门名称链,从根目录返回,即企业名称-一级部门- …… -员工所在部门 |
| modifyTime | Long | 是 | 1672502400000 | 最新更新时间,13位时间戳 |
| invoiceTitle | String | 是 | 深圳美团科技有限公司 | 企业发票抬头 |
| reportTotalAmount | String | 是 | 23.45 | 报备总额(元) |
| auditRecordList | List<PostReportAuditRecordOpenApiDTO> | 否 | 审批日志 | |
| reportFormList | List<PostReportFormOpenApiDTO> | 否 | 报备表单自定义组件 | |
| reportItemList | List<PostReportItemOpenApiDTO> | 否 | 报备费用项信息 | |
| closedStatus | Integer | 是 | 1 | 报备是否已关单,1-关单,0-未关单 |
PostReportAuditRecordOpenApiDTO字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| operateTime | Long | 是 | 1617085650321 | 审批操作时间 |
| operateRecordDesc | String | 是 | 张三-驳回-考勤不合规 | 【操作人-动作类型-补充描述】,如李四-提交,张三-通过等 |
PostReportItemOpenApiDTO字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| reportItemId | Long | 是 | 1003 | 费用项ID |
| reportItemAmount | String | 是 | 567.89 | 报备费用项金额 |
| applyNo | String | 是 | 97865 | 申请单号 |
| externalApplyNo | String | 否 | SQ-0089765 | 外部申请单号 |
| rulePackNameList | List<String> | 是 | 员工加班用餐规则 | 关联规则包名称 |
| orderList | List<PostReportItemOrderOpenApiDTO> | 否 | 关联订单列表 | |
| reportItemFormInfo | List<PostReportFormOpenApiDTO> | 否 | 费用项表单自定义组件 | |
| repastCategory | String | 否 | 业务会餐 | 费用关联用餐申请的用餐场景 |
PostReportItemOrderOpenApiDTO字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| sqtOrderId | Long | 是 | 1704779722468134979 | 美团企业版订单号 |
| tagList | List<PostReportTagOpenApiDTO> | 否 | 费用项订单的业务标签 |
PostReportTagOpenApiDTO字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| tagCode | String | 是 | 1001 | 标签编码 |
| tagName | String | 是 | 考勤合规 | 标签名称 |
| tagValue | String | 是 | 1 | 标签值 |
PostReportFormOpenApiDTO字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| title | String | 是 | 补充说明 | 自定义组件标题 |
| type | Integer | 是 | 1 | 自定义组件类型 |
| content | String | 是 | 员工填写的补充说明 | 自定义组件内容,详见自定义组件内容说明 |
# 自定义组件内容说明
| 组件类型 | content类型 | 内容描述 |
|---|---|---|
| 文本框、选择组件 | String | 文本框组件、选人组件均为字符串组件,内容为用户填写的信息 |
| 附件组件 | List<String> | 用户上传附件的下载链接列表 |
| 选人组件 | PersonSelectOpenApiDTO | 选人组件中的用户信息 |
| 酒水组件 | DrinkOpenApiDTO | 酒水信息 |
| Veeva拜访信息 | VeevaOpenApiDTO | Veeva拜访信息 |
PersonSelectOpenApiDTO
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| innerParticipants | List<StaffInfo> | 是 | 1001 | 标签编码 |
| outerParticipants | List<GuestInfo> | 是 | 考勤合规 | 标签名称 |
| consumptionPerPerson | String | 是 | 1 | 标签值 |
| tagList | List<FormTagDTO> | 是 | 1 | 标签值 |
StaffInfo
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| staffId | Long | 是 | 123456 | 美团企业版员工唯一Id |
| staffName | String | 是 | 张三 | 内部员工姓名 |
| staffIdentifier | String | 是 | C1234 | 员工唯一识别号,对应的值是entStaffNum、staffEmail或者staffPhone其中一个字段 |
GuestInfo
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| guestId | String | 是 | 123456 | 美团企业版外部人员Id |
| guestName | String | 是 | 张三 | 外部人员姓名 |
| guestPhone | String | 否 | 15712311234 | 外部人员手机号 |
| guestCompany | String | 否 | 北京大学第三医院 | 外部人员公司或医院名称 |
| guestOrg | String | 否 | 骨科 | 外部人员部门或科室名称 |
| guestHcpId | String | 否 | CN-123456 | 外部参会人HcpId |
| guestLabelName | String | 否 | 医生 | 外部参会人类型 |
FormTagDTO
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| tagName | String | 是 | 外部参会人不足2人 | 选人组件超规内容 |
DrinkOpenApiDTO
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| drinkAmount | String | 是 | 123.21 | 酒水金额 |
| drinkExceed | Integer | 是 | 1 | 0-未超标 1-超标 |
| drinkExceedReason | String | 否 | 酒水价格高 | 超标说明 |
| drinkPercent | String | 是 | 12.50 | 酒水占比 |
VeevaOpenApiDTO
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| visitId | String | 是 | CN-123456 | veeva拜访Id |
| visitTime | String | 是 | 2023-12-12 | 拜访时间 |
| hospitalName | String | 是 | 北京大学第三医院 | 拜访医院名称 |
# 3.示例
# 3.1.请求示例
# 3.1.1.请求示例
{
"accessKey":"B3KSWLDSKSKDMJ",
"content":"UgxoCGPQIzoP"
}
# 3.1.2.请求参数content解析
{
"ts": 1673404978000,
"entId": 101734,
"minSubmitTime": 1617085650321,
"maxSubmitTime": 1617085950321,
"reportWorkflowStatus": 60,
"pageNum": 1,
"pageSize": 30
}
# 3.2.响应示例
# 3.2.1.响应结果
{
"traceId":"56a0af18ae30a168d4006c7c",
"status":0,
"msg":"同步成功",
"data":"UgJn07uNgW7S7fJK0R0xVbaLxoCGPQIzoP"
}
# 3.2.2.响应参数data解析
{
"pageNum": 1,
"pageSize": 20,
"totalCount": 2,
"result": [
{
"reportNo": "REP20230627111358828492",
"reportName": "商务宴请",
"workflowStatus": 60,
"submitType": 1,
"modifyTime": 1687835639000,
"staffIdentifier": "N1",
"staffName": "xx事后报备测试",
"orgNamePath": "集团-公司-事后报备测试部门",
"invoiceTitle": "测试抬头",
"reportTotalAmount": "5000",
"auditRecordList": [
{
"operateTime": 1687835639000,
"operateRecordDesc": "xx提交"
},
{
"operateTime": 1688439825000,
"operateRecordDesc": "yy通过"
}
],
"reportFormList": [
],
"reportItemList": [
{
"reportItemId": "1673530080321605667",
"reportItemAmount": "5000",
"applyNo": null,
"externalApplyNo": null,
"orderList": [
{
"sqtOrderId": "1673529998230687805",
"tagList": [
]
}
],
"rulePackNameList": [
"商务宴请"
],
"reportItemFormInfo": [
]
}
]
},
{
"reportNo": "REP20230619120224117569",
"reportName": "商务宴请",
"workflowStatus": 60,
"submitType": 1,
"modifyTime": 1687448135000,
"staffIdentifier": "N1",
"staffName": "xx",
"orgNamePath": "集团-公司-事后报备测试部门",
"invoiceTitle": "测试抬头",
"reportTotalAmount": "10000",
"auditRecordList": [
{
"operateTime": 1687147345000,
"operateRecordDesc": "xx提交"
},
{
"operateTime": 1687147367000,
"operateRecordDesc": "yy驳回"
},
{
"operateTime": 1687147455000,
"operateRecordDesc": "xx重新提交"
},
{
"operateTime": 1688439840000,
"operateRecordDesc": "zz通过"
}
],
"reportFormList":
[
{
"title": "补充说明",
"content": null
},
{
"title": "补充附件",
"content": ""
}
]
,
"reportItemList": [
{
"reportItemId": "1671904771348369458",
"reportItemAmount": "10000",
"applyNo": null,
"externalApplyNo": null,
"orderList": [
{
"sqtOrderId": "1670643092803293229",
"tagList": [
]
}
],
"rulePackNameList": [
"商务宴请"
],
"reportItemFormInfo": [
{
"title": "报备人手机",
"content": "1231",
"type":1
},
{
"title": "费用时间",
"content": "23",
"type":1
},
{
"title": "小票",
"content": "[\"http://b-sqt.bep.test.sankuai.com/api/attachment/download/appendFile?fileId=1670643612586455041\"]",
"type":2
},
{
"title": "参会人",
"content": "{\"innerParticipants\":[{\"staffId\":6862443,\"staffName\":\"张三\",\"staffIdentifier\":\"123456\"}],\"outerParticipants\":[{\"guestName\":\"李四\",\"guestCompany\":\"航天中心医院 - 皮肤科\",\"guestHcpId\":\"CN-12345678HCP\"},{\"guestName\":\"李四\",\"guestCompany\":\"航天中心医院 - 皮肤科\",\"guestHcpId\":\"CN-12345678HCP\"},{\"guestName\":\"李四\",\"guestCompany\":\"航天中心医院 - 皮肤科\",\"guestHcpId\":\"CN-12345678HCP\"},{\"guestName\":\"李四\",\"guestCompany\":\"航天中心医院 - 皮肤科\",\"guestHcpId\":\"CN-12345678HCP\"},{\"guestName\":\"李四\",\"guestCompany\":\"航天中心医院 - 皮肤科\",\"guestHcpId\":\"CN-12345678HCP\"}],\"consumptionPerPerson\":\"12.25\",\"tagList\":[\"人均超10元\"]}",
"type": 3
},
{
"title": "酒水信息",
"content": "{\"hasDrink\":false,\"drinkAmount\":\"0\",\"drinkExceed\":false,\"drinkExceedReason\":\"\",\"drinkPercent\":\"0.00\"}",
"type": 4
},
{
"title": "Veeva",
"content": "{\"visitId\":\"I0123456\",\"visitTime\":\"2023-12-27\",\"hospitalName\":\"航天中心医院 - 皮肤科\"}",
"type": 6
},
]
}
]
}
],
"totalPages": 1,
"pageNo": 1
}
# 4.错误码
# 4.1.公共错误码
详见:公共错误编码
# 4.2.业务错误码
| 错误码 | 错误描述 | 解决方案 |
|---|---|---|
| 40201001 | 查询时间范围错误 | 请检查查询的时间范围 |
| 40201002 | 报备单状态不存在 | 请检查输入的报备单状态是否正确 |
| 40202000 | 业务异常 | 请根据错误信息自查错误原因 |
| 40203000 | 未知错误,请联系美团侧研发 | 请提供响应结果中的traceId参数,联系客户经理进行排查 |
# 5.代码示例
依赖SDK包地址:SDK下载地址
{
private static final String invokeUrl = "https://waimai-openapi.apigw.test.meituan.com/api/sqt/open/post/report/query";
private static SqtClient sqtClient = null;
static {
// 初始化SqtClient,只需要初始化一次即可
// entId,accessKey,secretKey需要根据不同环境动态的设置获取
sqtClient = new SqtClient.Builder()
.setEntId(CommonConstants.entId)
.setAccessKey(CommonConstants.accessKey)
.setSecretKey(CommonConstants.secretKey)
.build();
}
public static void main(String[] args) throws MtSqtException {
QueryPostReportPageRequest queryPostReportPageRequest = new QueryPostReportPageRequest();
queryPostReportPageRequest.setEntId(100991L);
queryPostReportPageRequest.setTs(System.currentTimeMillis());
queryPostReportPageRequest.setMinSubmitTime(1688140800000L);
queryPostReportPageRequest.setMaxSubmitTime(1693929600000L);
queryPostReportPageRequest.setReportWorkflowStatus(60);
queryPostReportPageRequest.setPageNum(1);
queryPostReportPageRequest.setPageSize(20);
BaseApiResponse<QueryPostReportPageResponse> response = sqtClient.invokeApi(invokeUrl, queryPostReportPageRequest, null, null);
// 响应结果为空处理
if (response == null) {
// 处理响应结果为空情况
// ...
}
// 获取结果
if (ResponseStatusEnum.SUCCESS.getCode().intValue() == response.getStatus()) {
// 成功
QueryPostReportPageResponse realData = response.getRealData();
// 处理业务逻辑
// ...
} else {
// 处理失败场景
handleRespFailResult(response);
}
}
private static void handleRespFailResult(BaseApiResponse<QueryPostReportPageResponse> response) {
// 访问频率过高
if (ResponseStatusEnum.HIGH_FREQUENCY_ACCESS.getCode().intValue() == response.getStatus()) {
// 解决方案参照:https://h5.dianping.com/app/bep-docs/open-platform-doc/guide/rate_limiting.html
}
// 访问次数超过配额
if (ResponseStatusEnum.EXCEED_ACCESS_NUMBER.getCode().intValue() == response.getStatus()) {
// 解决方案参照:https://h5.dianping.com/app/bep-docs/open-platform-doc/guide/rate_limiting.html
}
// 其它失败场景
}
}
# 6. 附录
# 6.1 报备标签类型
| 标签代码 | 标签名称 | 标签值 |
|---|---|---|
| 1001 | 考勤合规 | 1-考勤正常 2-考勤异常 |
# 6.2 自定义组件类型
| 自定义组件类型 | 自定义组件类型说明 |
|---|---|
| 1 | 字符串类型组件 |
| 2 | 附件类型组件 |
| 3 | 选人组件 |
| 4 | 酒水信息组件 |
| 6 | Veeva拜访信息组件 |
# 7.版本记录
| 版本号 | 版本日期 | 更新内容 |
|---|---|---|
| v1.0 | 2023-09-02 | 新增接口 |
| v1.1 | 2023-12-28 | 1.入参新增报备单号列表、首次提交时间范围 2.返回报备关单状态 3.返回费用项关联的用餐场景 4.新增组件内容说明 |
← 用车申请单详情列表查询 我的审批列表查询 →