待办消息对接-2.0
一、业务场景
该接口用于主动查询每刻单据流程变更所发送的消息。
注:
- 仅支持旗舰版。
- 暂不支持分期单、还款单。
- 在开发之前,请联系每刻集成做企业配置(创建企业库)。
- 查询待办列表接口返回的数据正序(时间从早到晚)。
- 需在每刻报销-设置-系统集成-回调管理下新增回调接口,选择“单据流程变更通知2.0”回调类型,开启该版本待办消息的配置。
- 基础业务流程,请见下图:
- 待办转已办数据说明
- 收到的数据为
- 1、taskId=taskId001,taskAssignee=张三,taskActionType=PROCESSING(创建待办);
- 2、taskId=taskId001,taskAssignee=李四,taskActionType=PROCESSING(创建待办);
- 3、taskId=taskId001,taskAssignee=张三,taskActionType=COMPLETED(创建已办);
- 4、taskId=taskId001,taskAssignee=李四,taskActionType=REMOVED(消除待办);
- 查询到的taskId、taskAssignee一致,但taskActionType不一致的任务(如1、3;2、4),其中taskActionType=COMPLETED(3)为张三的待办转已办任务(代表此节点为该用户操作审批,用于三方系统的已办处理),taskActionType=REMOVED(4)为李四的待办转消除任务(代表或签节点等场景该用户不再需要处理任务,用于三方系统的消除任务处理)。
- 收到的数据为
- 拉取数据时,应在列表接口增加入参status=0查询到所有未被处理的任务。在数据分发/入库处理成功后,应调用状态更新接口更新状态为1(发送成功),防止查询到重复数据。
二、环境地址
生产环境地址:https://todo.maycur.com
测试环境地址:http://8.136.253.237:9088
完整请求地址:${对应环境地址}/${对应业务请求地址}
例:调用测试环境鉴权接口:http://8.136.253.237:9088/api/openapi/auth/login
三、鉴权
接口地址
/api/openapi/auth/login
请求类型
POST
请求参数
请求参数说明:
字段名 | 类型 | 必填性 | 说明 |
---|---|---|---|
appCode | String | 必填 | 鉴权code(集成注册待办企业库后提供) |
timestamp | String | 必填 | 当前系统时间戳,13位毫秒时间戳 |
secret | String | 必填 | 加密鉴权信息 |
secret加密算法:
secret=DigestUtils.sha256Hex(appSecret(集成注册待办企业库后提供) + ":" + appCode(集成注册待办企业库后提供) + ":" + timestamp(13位毫秒时间戳));
请求参数示例:
{
"appCode": "AP3OL****9JPC",
"secret": "3b2d2dee55f114850ee0*******5b4ca181bbe3666e2b457e",
"timestamp": "1684490229417"
}
响应数据
响应数据示例:
{
"code": "200",
"message": "success",
"data": {
"entCode": "EC2012****VN3XQY",
"appCode": "AP3OL****9JPC",
"tokenId": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJPUEVOX0FQSSIsImVudENvZGUiOiJFQzIwMTIxMTFPVk4zWFFZIiwiY2x1c3RlckNvZGUiOiJERVgiLCJleHAiOjE2ODI0MjAzNDgsImp0aSI6Im1heWN1cl9qd3RfaWQifQ.Cy3mGXIK4FNaXEGf_l8mTUTzEw3_W8HBYv3yiaz1638"
}
}
响应参数说明:
字段名 | 类型 | 说明 |
---|---|---|
entCode | String | 企业编码 |
appCode | String | 鉴权code |
tokenId | String | 令牌,需要放在其他接口的header(有效期为30分钟,请勿频繁请求) |
后续操作必须将tokenId放入请求header中。
//header
tokenId:tokenId
四、查询待办列表
接口地址
/api/openapi/callback?pageIndex=1&pageSize=100&uuid={uuid}&status={status}&eventTimeStartAt={eventTimeStartAt}&eventTimeEndAt={eventTimeEndAt}&formCode={formCode}}&taskId={taskId}&taskAssignee={taskAssignee}
请求类型
GET
请求参数
请求参数说明:
字段名 | 类型 | 必填性 | 说明 |
---|---|---|---|
pageIndex | int | 必填 | 分页角标,1为第一页,默认值:1 |
pageSize | int | 必填 | 分页数量,最大值为200,默认值:100 |
uuid | String | 非必填 | 待办唯一ID |
status | String | 非必填 | 代办状态码,默认查询全部状态 (0.未被推送,1.发送成功,2.发送失败) |
eventTimeStartAt | Long | 非必填 | 根据代办生成时间,返回(包括)之后的数据(若不传,则查全量,正序) |
eventTimeEndAt | Long | 非必填 | 根据代办生成时间,返回(包括)之前的数据(若不传,则查全量,正序) |
formCode | String | 非必填 | 单据号 |
taskId | String | 非必填 | 代办任务ID(每刻流程节点ID,可重复) |
taskAssignee | String | 非必填 | 代办任务处理人工号 |
响应数据
响应数据示例:
{
"code": "200",
"message": "请求错误提示信息",
"data": {
"total":2,
"items":[
{
"uuid": "1467735365297360896",
"status": "0",
"taskId": "a4006583-5659-11ec-9245-d6a1901c2c80",
"entCode": "EC21051411IKTDZ5",
"abnormal": false,
"formCode": "MK21120006",
"formName": "aa",
"formType": "PRECONSUME",
"taskName": "部门负责人",
"completed": false,
"coverUser": "15765111190",
"eventTime": 1638770354697,
"procInsId": "a37dc7dc-5659-11ec-9245-d6a1901c2c80",
"submitter": "15765111190",
"createTime": 1638770354953,
"formDataCode": "PC2112061BDG7VNK",
"taskAssignee": "0001",
"coverUserName": "帅博",
"eventScenario": "APPROVAL",
"submitterName": "帅博",
"taskActionType": "PROCESSING",
"formSubTypeName": "出差申请单",
"formSubTypeBizCode": "FT210517XN6L5DS"
},
{
...
}
]
}
}
响应参数
响应参数说明:
字段名 | 类型 | 说明 |
---|---|---|
uuid | String | 待办唯一ID |
taskId | String | 每刻流程的任务ID(对应sso接口procTaskId) |
entCode | String | 公司编码 |
createTime | long | 从消息队列写入数据库的时间 |
status | String | 消息状态(0.未被推送,1.发送成功,2.发送失败) |
serviceType | String | 回调类型(PROCESS_CHANGE_NOTIFY_V2) |
procInsId | String | 每刻流程的实例ID |
submitter | String | 提交人员工号 |
reason | String | 审批意见、驳回理由、撤回理由 |
formType | String | 单据类型: REIMBURSE(报销单) PRECONSUME(申请单) LOAN(借款单) CONTRACT(合同) PAYMENT(付款单) REPAYMENT(还款单) |
formSubTypeName | String | 单据小类名称,企业自定义 |
formSubTypeBizCode | String | 单据小类编码内码,企业自定义 |
coverUser | String | 报销人员工号、申请人员工号、借款人工号 |
formCode | String | 单据号外码 |
formDataCode | String | 单据号内码 |
coverUserName | String | 报销人员姓名、申请人员姓名、借款人姓名 |
taskActionType | String | 任务类: PROCESSING 创建待办(流程新到达节点后会给处理人发送一条此类型任务) COMPLETED 创建已办(某一任务处理人处理成功后,会发送一条此类型任务) REMOVED 消除待办(或签/管理员审批等场景,其他任务处理人处理成功后,会给其余不再需要处理审批任务人员发送一条此类型任务) 通知类(不支持消除): URGE 催办 需要跳转的可以通过associatedTaskId拼接 COMMENT 评论(无taskId) AT @某人(无taskId) BACK_TO_SUBMITTER 驳回至提单人(无taskId) CC 抄送(无taskId) |
completed | boolean | 单据是否已完成 (只有最后一个已办/消除代办/抄送时,此参数才为true) |
abnormal | boolean | 是否异常流程 |
eventScenario | String | 节点类型: APPROVAL--审批 CASHIER_SETTLE--结算 FINANCE_AUDIT--审核 CC--抄送 SIGN--签收 SHARE_PLATFORM--共享审核节点 SUBMITTER--提单人待处理任务 |
formName | String | 表单名称(事由) |
eventTime | String | 事件发生时间(推送时间) |
taskAssignee | String | 该节点任务的单一处理人员工工号 |
taskName | String | 流程节点名称 |
submitterName | String | 提交人姓名 |
legalEntityName. | String | 单据上所选的公司抬头名称 |
legalEntityBizCode | String | 单据上所选的公司抬头业务编码 |
departmentName | String | 单据上所选的承担部门名称 |
departmentBizCode | String | 单据上所选的承担部门业务编码 |
associatedTaskId | String | 用于通知类型需要实现待办功能(有审批按钮)的单据链接,目前适用于催办 |
五、更新待办状态
接口地址
/api/openapi/callback
请求类型
PUT
请求参数:
注意:数组长度最大值为200个,超出时整批失败。
请求参数示例:
{
"items": [
{
"uuid": "1463898256236810240",
"status": "1"
}
]
}
请求参数说明:
字段名 | 类型 | 必填性 | 说明 |
---|---|---|---|
uuid | String | 必填 | 待办唯一ID |
status | String | 必填 | 消息状态(0.未被推送,1.发送成功,2.发送失败) |
响应参数
响应参数示例:
{
"code": "200",
"message": "",
"data": {
"items":[ //错误数据集合
{
"uuid":"1463898256236810240",
"message":"请求错误提示信息"
}
]
}
}
data.items响应参数说明:
字段名 | 类型 | 说明 |
---|---|---|
uuid | String | 修改失败的待办唯一ID |
message | String | 错误提示 |