官方说明
思路
1、获取分页ID
https://api.bimface.com/data/v2/query/paginationContextId
2、循环根据分页ID获取elementIds,直到返回的结果的数量小于1000
https://api.bimface.com/data/v2/files/%s/elementIds
3、根据elementIds获取elements
https://api.bimface.com/data/v2/files/%s/elements
实现
注意:这里有个循环根据分页ID获取elementIds的逻辑,直至获取的结果的数量小于1000.(因为默认查询的分页参数为1000,我这里查询的时候没有传这个参数,所以默认为1000. 假如小于1000证明后面没有更多的结果了)
fileId就是模型主键,HttpClientUtil是我自己封装的工具栏,你可以用其他的。这里只是展示下思路。
public Map<String, Object> getModelElements(String fileId) {
Map<String, Object> headersMap = new HashMap();
headersMap.put("Authorization", String.format("%s %s", "bearer", this.beamfaceAccesstokenService.getAccesstoken()));
HashMap paramMap = new HashMap();
try {
String converResult = HttpClientUtil.httpGetRequest("https://api.bimface.com/data/v2/query/paginationContextId", headersMap, paramMap);
if (converResult == null) {
log.error("调用转换服务失败");
return null;
} else {
Map<String, Object> converResultJson = (Map)JSONUtils.parse(converResult);
List<Map<String, Object>> rs = new ArrayList<>();
if (converResultJson.get("code").toString().equals("success")) {
String contextId = converResultJson.get("data").toString();
paramMap = new HashMap();
paramMap.put("paginationContextId", contextId);
boolean flag = true;
while (flag) {
converResult = HttpClientUtil.httpGetRequest(String.format("https://api.bimface.com/data/v2/files/%s/elementIds", fileId), headersMap, paramMap);
converResultJson = (Map)JSONUtils.parse(converResult);
List<Map<String, Object>> stata = (List<Map<String, Object>>)converResultJson.get("data");
if (stata.size() < 1000) {
flag = false;
}
if (converResultJson.get("code").toString().equals("success")) {
ArrayList<String> elementsIds = (ArrayList)converResultJson.get("data");
JSONObject js = new JSONObject();
js.put("elementIds", elementsIds);
converResult = HttpClientUtil.httpPostRequestByRb(String.format("https://api.bimface.com/data/v2/files/%s/elements", fileId), headersMap, js.toJSONString());
converResultJson = (Map)JSONUtils.parse(converResult);
stata = (List<Map<String, Object>>)converResultJson.get("data");
rs.addAll(stata);
}
}
}
log.info("====={}=====", rs.size());
Map<String, Object> rs2 = new HashMap<>();
rs2.put("code", "success");
rs2.put("data", rs);
return rs2;
}
} catch (URISyntaxException | UnsupportedEncodingException var9) {
log.error(var9.getMessage(), var9);
return null;
}
}