根据时间窗滚动查询变动的通用对象信息
POST
/TenantBaseExternal/api/v5/CommonMetaObject/GetByTimeWindow
2.主要用于全量数据查询
3.支持对象列表:法人公司(Corporation),组织类型(OrganizationType),组织层级(OrganizationLevel),任职类型(ServiceType),异动类型(EmpTransitionType),变动原因(EmpChangeReason),人员来源(EmploymentSource),人员类别(EmploymentType),用工形式(EmploymentForm),离职去向(DimissionWhereabouts)
2.每批次数据量必须小于等于300
3.滚动查询有过期时间限制。两次滚动查询接口调用间隔不能超出10秒,超出间隔后,查不到下批次数据。故必须通过while循环查出全部数据后再处理具体业务。
4.滚动查询不能跳页,拿了第一页后要拿第三页,滚动查询不支持
5. 滚动查询不能回跳,拿了第三页之后要跳回第二页,滚动查询不支持
6.使用滚动查询而非分页查询,是为了防止大批量获取数据时,深分页导致超时
2.默认排序条件:若排序参数为空,则默认先按照创建时间升序
错误码示例
"scrollId": null,
"isLastData": false,
"total": 0,
"data": null,
"code": "417",
"message": "MetaObjectName不能为空"
}
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://openapi.italent.cn/TenantBaseExternal/api/v5/CommonMetaObject/GetByTimeWindow' \
--header 'Content-Type: application/json' \
--data-raw '//示例请求参数
{
"metaObjectName": "Corporation",//对象名称
"timeWindowQueryType":1,//时间窗查询类型
"startTime":"2021-01-01",//时间范围开始时间
"stopTime":"2021-03-21",//时间范围结束时间
"capacity":100,//每批次数目
"columns":["Name","OId","StartDate"],//查询列
"extQueries": [//自定义字段查询条件
{
"fieldName": "extExtQueryFloat_127666_832132060",
"queryType": 5,//等于
"values": [
"1"
]
},
{
"fieldName": "extExtQueryText_127666_1870946722",
"queryType": 6,//不等于
"values": [
"文本1"
]
},
{
"fieldName": "extExtQueryInt_127666_637453549",
"queryType": 7,//区间
"values": [
"1",
"1000"
],
"includeLowerValue": true,//包含最小值
"includeUpperValue": false//不包含最大值
}
],
"isWithDeleted": false,
"enableTranslate": true,//开启数据源自动翻译功能
"sort":{"Name":1},//排序
"scrollId":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAVrsaUWdnVycEd3OEFRRm02aEpHRFZQZ2htdw=="//本批次的ScrollId
}
------------------------------------------------------
//do-while调用Scroll接口示例
var allData = new List<XXXQueryV5ResultDTO>();//用于保存全部数据
string scrollId = null;//下批次滚动ID
bool isOver;//是否完成
int totalCount = 0;//数据总数
do
{
//请求参数,注意:scrollId参数,第一次是空,后续为上次结果返回的ScrollId
XXXTimeWindowScrollQueryV5Args args = new XXXTimeWindowScrollQueryV5Args
(
DateTime.Now.AddMonths(-1).Date,//时间范围开始时间
DateTime.Now.Date,//时间范围结束时间
scrollId,//本批次的ScrollId,第一次查询为空,后续为上次结果返回的ScrollId
100 //每批次数目
);
//调用API,注意判断响应结果是否成功后再处理
var result = provider.GetByTimeWindow(args);
if(result!=“200”)
break;//调用接口失败,需要记录错误日志信息便于后续排查
isOver = result.IsLastData;//是否结束
scrollId = result.ScrollId;//注意:scrollId赋值后供下次循环使用
if (result.Data.Count>0)
allData.AddRange(result.Data);
if (totalCount == 0)
totalCount = result.Total;
}
while (isOver != true);'
响应示例响应示例
{
"scrollId": "string",
"isLastData": true,
"total": 0,
"data": [
{
"fields": {
"property1": {},
"property2": {}
}
}
],
"code": "string",
"message": "string"
}
请求参数
Body 参数application/json
返回响应
修改于 2021-10-13 10:54:24