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


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

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

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

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

    参数:

     其中 ModelCompareQueryRequest 类如下

     1 /// <summary>
     2 ///  批量获取模型对比状态的请求参数类
     3 /// </summary>
     4 public class ModelCompareQueryRequest
     5 {
     6     /// <summary>
     7     /// 【必填项】应用的 appKey
     8     /// </summary>
     9     [JsonProperty("appKey")]
    10     public string AppKey { get; set; }
    11 
    12     /// <summary>
    13     /// 【非必填项】对比后返回的ID,用于获取对比状态或者结果等信息
    14     /// </summary>
    15     [JsonProperty("compareId", NullValueHandling = NullValueHandling.Ignore)]
    16     public long? CompareId { get; set; }
    17 
    18     /// <summary>
    19     ///  【非必填项】模型对比的类型 rvt(或者igms…​)
    20     /// </summary>
    21     [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
    22     public string Type { get; set; }
    23 
    24     /// <summary>
    25     /// 【非必填项】文件名称
    26     /// </summary>
    27     [JsonProperty("fileName", NullValueHandling = NullValueHandling.Ignore)]
    28     public string FileName { get; set; }
    29 
    30     /// <summary>
    31     ///  【非必填项】模型对应的sourceId。例如:389c28de59ee62e66a7d87ec12692a76
    32     /// </summary>
    33     [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
    34     public string SourceId { get; set; }
    35 
    36     /// <summary>
    37     /// 【非必填项】(分页)当前页码
    38     /// </summary>
    39     [JsonProperty("pageNo", NullValueHandling = NullValueHandling.Ignore)]
    40     public int? PageNo { get; set; }
    41 
    42     /// <summary>
    43     /// 【非必填项】(分页)每页记录数
    44     /// </summary>
    45     [JsonProperty("pageSize", NullValueHandling = NullValueHandling.Ignore)]
    46     public int? PageSize { get; set; }
    47 
    48     /// <summary>
    49     ///  【非必填项】模型状态码。0(所有) 1(处理中) 99(成功) -1(失败)
    50     /// </summary>
    51     [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
    52     public short? Status { get; set; }
    53 
    54     /// <summary>
    55     /// 【非必填项】筛选类型。例如:create_time desc
    56     /// </summary>
    57     [JsonProperty("sortType", NullValueHandling = NullValueHandling.Ignore)]
    58     public string SortType { get; set; }
    59 
    60     /// <summary>
    61     /// 【非必填项】对比开始时间,格式:yyyy-MM-dd hh:mm:ss
    62     /// </summary>
    63     [JsonProperty("startDate", NullValueHandling = NullValueHandling.Ignore)]
    64     public string StartDate { get; set; }
    65 
    66     /// <summary>
    67     /// 【非必填项】对比结束时间,格式:yyyy-MM-dd hh:mm:ss
    68     /// </summary>
    69     [JsonProperty("endDate", NullValueHandling = NullValueHandling.Ignore)]
    70     public string EndDate { get; set; }
    71 }
    View Code

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

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

    请求 body(示例):

     1 {
     2   "appKey" : "appKey",
     3   "compareId" : 0,
     4   "endDate" : "string",
     5   "fileName" : "fileName",
     6   "pageNo" : 0,
     7   "pageSize" : 0,
     8   "sortType" : "sortType",
     9   "sourceId" : "23be51b7e1eb4228bd896ac1a4640c62",
    10   "startDate" : "string",
    11   "status" : 0,
    12   "type" : "type"
    13 }

    HTTP响应示例(200):

     1 {
     2   "code" : "success",
     3   "data" : {
     4     "list" : [ {
     5       "compareId" : 1248756572307264,
     6       "cost" : 0,
     7       "createTime" : "2017-12-25 16:17:27",
     8       "name" : "compare0001",
     9       "offlineDatabagStatus" : "offlineDatabagStatus",
    10       "priority" : 2,
    11       "reason" : "reason",
    12       "sourceId" : "123223223212",
    13       "status" : "succcess",
    14       "thumbnail" : [ "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/96.png" ],
    15       "type" : "type",
    16       "workerType" : "workerType"
    17     } ],
    18     "page" : {
    19       "htmlDisplay" : "string",
    20       "nextPage" : 0,
    21       "pageNo" : 0,
    22       "pageSize" : 0,
    23       "prePage" : 0,
    24       "startIndex" : 0,
    25       "totalCount" : 0,
    26       "totalPages" : 0
    27     }
    28   },
    29   "message" : ""
    30 }

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

     1 public class ModelCompareBean
     2 {
     3     /// <summary>
     4     /// 对比后返回的ID,用于获取对比状态或者结果等信息
     5     /// </summary>
     6     [JsonProperty("compareId", NullValueHandling = NullValueHandling.Ignore)]
     7     public long? CompareId { get; set; }
     8 
     9     /// <summary>
    10     ///  对比完成的消耗时间,单位是秒
    11     /// </summary>
    12     [JsonProperty("cost", NullValueHandling = NullValueHandling.Ignore)]
    13     public int? Cost { get; set; }
    14 
    15     /// <summary>
    16     /// 对比开始时间,格式:yyyy-MM-dd hh:mm:ss
    17     /// </summary>
    18     [JsonProperty("createTime", NullValueHandling = NullValueHandling.Ignore)]
    19     public string CreateTime { get; set; }
    20 
    21     /// <summary>
    22     /// 用户指定对比后的模型的名字
    23     /// </summary>
    24     [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
    25     public string Name { get; set; }
    26 
    27     /// <summary>
    28     ///  离线数据包生成状态。prepare(未生成); processing(生成中); success(生成成功); failed(生成失败)
    29     /// </summary>
    30     [JsonProperty("offlineDatabagStatus", NullValueHandling = NullValueHandling.Ignore)]
    31     public string OfflineDatabagStatus { get; set; }
    32 
    33     /// <summary>
    34     /// 对比优先级。取值 1、2、3。数字越大,优先级越低。默认为2
    35     /// </summary>
    36     [JsonProperty("priority", NullValueHandling = NullValueHandling.Ignore)]
    37     public int? Priority { get; set; }
    38 
    39     /// <summary>
    40     ///  若对比失败,返回失败原因
    41     /// </summary>
    42     [JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)]
    43     public string Reason { get; set; }
    44 
    45     /// <summary>
    46     ///  第三方应用自己的ID
    47     /// </summary>
    48     [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
    49     public string SourceId { get; set; }
    50 
    51     /// <summary>
    52     ///  对比状态:prepare(待对比)、processing(对比中)、success(对比成功)、failed(对比失败)
    53     /// </summary>
    54     [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
    55     public string Status { get; set; }
    56 
    57     /// <summary>
    58     ///  对比几个缩略图
    59     /// </summary>
    60     [JsonProperty("thumbnail", NullValueHandling = NullValueHandling.Ignore)]
    61     public string[] Thumbnails { get; set; }
    62 
    63     /// <summary>
    64     /// 模型对比的类型 rvt(或者igms…​)
    65     /// </summary>
    66     [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
    67     public string Type { get; set; }
    68 
    69     /// <summary>
    70     /// 处理对比任务的worker类型。model-compare(或者drawing-compare…​)
    71     /// </summary>
    72     [JsonProperty("workerType", NullValueHandling = NullValueHandling.Ignore)]
    73     public string WorkerType { get; set; }
    74 
    75     /// <summary>返回表示当前对象的字符串。</summary>
    76     /// <returns>表示当前对象的字符串。</returns>
    77     public override string ToString()
    78     {
    79         return this.SerializeToJson();
    80     }

    C#实现方法:

     1 /// <summary>
     2 ///  批量获取模型对比状态
     3 /// </summary>
     4 /// <param name="accessToken">【必填】令牌</param>
     5 /// <param name="request">【必填】批量获取模型对比状态的请求参数</param>
     6 /// <returns></returns>
     7 public virtual ModelCompareQueryResponse GetCompareStatusList(string accessToken, ModelCompareQueryRequest request)
     8 {
     9     //POST https://api.bimface.com/compares
    10     string url = BimfaceConstants.API_HOST + "/compares";
    11     string data = request.SerializeToJson();
    12     BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
    13     headers.AddOAuth2Header(accessToken);
    14 
    15     try
    16     {
    17         ModelCompareQueryResponse response;
    18 
    19         HttpManager httpManager = new HttpManager(headers);
    20         HttpResult httpResult = httpManager.Post(url, data);
    21         if (httpResult.Status == HttpResult.STATUS_SUCCESS)
    22         {
    23             response = httpResult.Text.DeserializeJsonToObject<ModelCompareQueryResponse>();
    24         }
    25         else
    26         {
    27             response = new ModelCompareQueryResponse
    28             {
    29                 Message = httpResult.RefText
    30             };
    31         }
    32 
    33         return response;
    34     }
    35     catch (Exception ex)
    36     {
    37         throw new Exception("[批量获取模型对比状态]发生异常!", ex);
    38     }
    39 }
  • 相关阅读:
    使用Intent传递类对象
    C#中关于类的序列化
    Android 中使用内存监测工具Heap,及内存分析工具 MAT
    Android Framework 记录之一
    Android 2.3发短信详细流程
    AIDL原理解析
    eclipse 快捷键
    什么时候加上android.intent.category.DEFAULT和LAUNCHER
    Monkey测试简介
    Phone状态的监听机制
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/12396001.html
Copyright © 2020-2023  润新知