C#开发BIMFACE系列32 服务端API之模型对比3:批量获取模型对比状态

时间:2023-01-28 20:55:14

  在《C#开发BIMFACE系列31 服务端API之模型对比2:获取模型对比状态》中介绍了根据对比ID,获取一笔记录的对比状态。由于模型对比是在BIMFACE云端进行的,通常需要5~10分钟,在等待对比的过程中还可以发起更多的模型对比,最后通过接口一次性批量获取模型对比状态 。

该功能与BIMFACE控制台中“图模对比”功能相同

C#开发BIMFACE系列32 服务端API之模型对比3:批量获取模型对比状态

请求地址:POST https://api.bimface.com/compares

说明:应用发起对比以后,可以根据筛选条件,通过该接口批量查询对比状态

参数:

C#开发BIMFACE系列32 服务端API之模型对比3:批量获取模型对比状态

其中 ModelCompareQueryRequest 类如下

 /// <summary>
/// 批量获取模型对比状态的请求参数类
/// </summary>
public class ModelCompareQueryRequest
{
/// <summary>
/// 【必填项】应用的 appKey
/// </summary>
[JsonProperty("appKey")]
public string AppKey { get; set; } /// <summary>
/// 【非必填项】对比后返回的ID,用于获取对比状态或者结果等信息
/// </summary>
[JsonProperty("compareId", NullValueHandling = NullValueHandling.Ignore)]
public long? CompareId { get; set; } /// <summary>
/// 【非必填项】模型对比的类型 rvt(或者igms…​)
/// </summary>
[JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
public string Type { get; set; } /// <summary>
/// 【非必填项】文件名称
/// </summary>
[JsonProperty("fileName", NullValueHandling = NullValueHandling.Ignore)]
public string FileName { get; set; } /// <summary>
/// 【非必填项】模型对应的sourceId。例如:389c28de59ee62e66a7d87ec12692a76
/// </summary>
[JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
public string SourceId { get; set; } /// <summary>
/// 【非必填项】(分页)当前页码
/// </summary>
[JsonProperty("pageNo", NullValueHandling = NullValueHandling.Ignore)]
public int? PageNo { get; set; } /// <summary>
/// 【非必填项】(分页)每页记录数
/// </summary>
[JsonProperty("pageSize", NullValueHandling = NullValueHandling.Ignore)]
public int? PageSize { get; set; } /// <summary>
/// 【非必填项】模型状态码。0(所有) 1(处理中) 99(成功) -1(失败)
/// </summary>
[JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
public short? Status { get; set; } /// <summary>
/// 【非必填项】筛选类型。例如:create_time desc
/// </summary>
[JsonProperty("sortType", NullValueHandling = NullValueHandling.Ignore)]
public string SortType { get; set; } /// <summary>
/// 【非必填项】对比开始时间,格式:yyyy-MM-dd hh:mm:ss
/// </summary>
[JsonProperty("startDate", NullValueHandling = NullValueHandling.Ignore)]
public string StartDate { get; set; } /// <summary>
/// 【非必填项】对比结束时间,格式:yyyy-MM-dd hh:mm:ss
/// </summary>
[JsonProperty("endDate", NullValueHandling = NullValueHandling.Ignore)]
public string EndDate { get; set; }
}

请求 path(示例):https://api.bimface.com/compares

请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"

请求 body(示例):

 {
"appKey" : "appKey",
"compareId" : ,
"endDate" : "string",
"fileName" : "fileName",
"pageNo" : ,
"pageSize" : ,
"sortType" : "sortType",
"sourceId" : "23be51b7e1eb4228bd896ac1a4640c62",
"startDate" : "string",
"status" : ,
"type" : "type"
}

HTTP响应示例(200):

 {
"code" : "success",
"data" : {
"list" : [ {
"compareId" : ,
"cost" : ,
"createTime" : "2017-12-25 16:17:27",
"name" : "compare0001",
"offlineDatabagStatus" : "offlineDatabagStatus",
"priority" : ,
"reason" : "reason",
"sourceId" : "",
"status" : "succcess",
"thumbnail" : [ "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/96.png" ],
"type" : "type",
"workerType" : "workerType"
} ],
"page" : {
"htmlDisplay" : "string",
"nextPage" : ,
"pageNo" : ,
"pageSize" : ,
"prePage" : ,
"startIndex" : ,
"totalCount" : ,
"totalPages" :
}
},
"message" : ""
}

返回体参数说明请参考 ModelCompareBean 类

 public class ModelCompareBean
{
/// <summary>
/// 对比后返回的ID,用于获取对比状态或者结果等信息
/// </summary>
[JsonProperty("compareId", NullValueHandling = NullValueHandling.Ignore)]
public long? CompareId { get; set; } /// <summary>
/// 对比完成的消耗时间,单位是秒
/// </summary>
[JsonProperty("cost", NullValueHandling = NullValueHandling.Ignore)]
public int? Cost { get; set; } /// <summary>
/// 对比开始时间,格式:yyyy-MM-dd hh:mm:ss
/// </summary>
[JsonProperty("createTime", NullValueHandling = NullValueHandling.Ignore)]
public string CreateTime { get; set; } /// <summary>
/// 用户指定对比后的模型的名字
/// </summary>
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
public string Name { get; set; } /// <summary>
/// 离线数据包生成状态。prepare(未生成); processing(生成中); success(生成成功); failed(生成失败)
/// </summary>
[JsonProperty("offlineDatabagStatus", NullValueHandling = NullValueHandling.Ignore)]
public string OfflineDatabagStatus { get; set; } /// <summary>
/// 对比优先级。取值 1、2、3。数字越大,优先级越低。默认为2
/// </summary>
[JsonProperty("priority", NullValueHandling = NullValueHandling.Ignore)]
public int? Priority { get; set; } /// <summary>
/// 若对比失败,返回失败原因
/// </summary>
[JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)]
public string Reason { get; set; } /// <summary>
/// 第三方应用自己的ID
/// </summary>
[JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
public string SourceId { get; set; } /// <summary>
/// 对比状态:prepare(待对比)、processing(对比中)、success(对比成功)、failed(对比失败)
/// </summary>
[JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
public string Status { get; set; } /// <summary>
/// 对比几个缩略图
/// </summary>
[JsonProperty("thumbnail", NullValueHandling = NullValueHandling.Ignore)]
public string[] Thumbnails { get; set; } /// <summary>
/// 模型对比的类型 rvt(或者igms…​)
/// </summary>
[JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
public string Type { get; set; } /// <summary>
/// 处理对比任务的worker类型。model-compare(或者drawing-compare…​)
/// </summary>
[JsonProperty("workerType", NullValueHandling = NullValueHandling.Ignore)]
public string WorkerType { get; set; } /// <summary>返回表示当前对象的字符串。</summary>
/// <returns>表示当前对象的字符串。</returns>
public override string ToString()
{
return this.SerializeToJson();
}

C#实现方法:

 /// <summary>
/// 批量获取模型对比状态
/// </summary>
/// <param name="accessToken">【必填】令牌</param>
/// <param name="request">【必填】批量获取模型对比状态的请求参数</param>
/// <returns></returns>
public virtual ModelCompareQueryResponse GetCompareStatusList(string accessToken, ModelCompareQueryRequest request)
{
//POST https://api.bimface.com/compares
string url = BimfaceConstants.API_HOST + "/compares";
string data = request.SerializeToJson();
BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
ModelCompareQueryResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Post(url, data);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<ModelCompareQueryResponse>();
}
else
{
response = new ModelCompareQueryResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[批量获取模型对比状态]发生异常!", ex);
}
}