C#开发BIMFACE系列14 服务端API之批量获取转换状态详情

系列目录     【已更新最新开发文章,点击查看详细】

上一篇《C#开发BIMFACE系列13 服务端API之获取转换状态》中介绍了根据文件ID查询单个文件的转换状态。

本文介绍批量获取转换状态详情。

 

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

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

参数:

C#开发BIMFACE系列14 服务端API之批量获取转换状态详情_第1张图片

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

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

请求 body(示例):

{
  "appKey" : "appKey",    //必填
  "endDate" : "string",
  "fileId" : 0,
  "fileName" : "fileName",
  "pageNo" : 0,
  "pageSize" : 0,
  "sortType" : "sortType",
  "sourceId" : "d4649ee227e345c8b7f0022342247dec",
  "startDate" : "string",
  "status" : 0,
  "suffix" : "suffix"
}

HTTP响应示例(200):application/octet-stream

{
  "code" : "success",
  "data" : {
    "list" : [ {
      "appKey" : "appKey",
      "cost" : 0,
      "createTime" : "createTime",
      "databagId" : "498bc694854244abab728b20620cbaf9",
      "fileId" : 0,
      "length" : 0,
      "name" : "name",
      "offlineDatabagStatus" : "offlineDatabagStatus",
      "priority" : 0,
      "reason" : "reason",
      "retry" : true,
      "shareToken" : "shareToken",
      "shareUrl" : "shareUrl",
      "sourceId" : "d69620720c63480c9f4808bf442ed96a",
      "status" : "status",
      "supportOfflineDatabag" : true,
      "thumbnail" : [ "string" ],
      "type" : "type"
    } ],
    "page" : {
      "htmlDisplay" : "string",
      "nextPage" : 0,
      "pageNo" : 0,
      "pageSize" : 0,
      "prePage" : 0,
      "startIndex" : 0,
      "totalCount" : 0,
      "totalPages" : 0
    }
  },
  "message" : ""
}

请求体参数说明:

C#开发BIMFACE系列14 服务端API之批量获取转换状态详情_第2张图片

经过测试验证,其中 appKey 是必填项,其余参数非必填。

对应封装的请求实体类为:

 1 /// 
 2 ///  批量获取转换状态详情的请求数据
 3 /// 
 4 [Serializable]
 5 public class TranslateQueryRequest
 6 {
 7     public TranslateQueryRequest()
 8     {
 9         FileId = null;
10         Suffix = null;
11         FileName = null;
12         SourceId = null;
13         PageNo = null;
14         PageSize = null;
15         Status = null;
16         SortType = null;
17         StartDate = null;
18         EndDate = null;
19     }
20 
21     /// 
22     /// 【必填项】应用的 appKey
23     /// 
24     [JsonProperty("appKey")]
25     public string AppKey { get; set; }
26 
27     /// 
28     /// 【非必填项】单模型对应的id,例如:1216871503527744
29     /// 
30     [JsonProperty("fileId", NullValueHandling = NullValueHandling.Ignore)]
31     public string FileId { get; set; }
32 
33     /// 
34     /// 【非必填项】单模型的文件类型。例如:rvt(或者igms,dwg…​)
35     /// 
36     [JsonProperty("suffix", NullValueHandling = NullValueHandling.Ignore)]
37     public string Suffix { get; set; }
38 
39     /// 
40     /// 【非必填项】单模型的名称。例如:translate-test
41     /// 
42     [JsonProperty("fileName", NullValueHandling = NullValueHandling.Ignore)]
43     public string FileName { get; set; }
44 
45     /// 
46     /// 【非必填项】模型对应的sourceId。例如:389c28de59ee62e66a7d87ec12692a76
47     /// 
48     [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
49     public string SourceId { get; set; }
50 
51     /// 
52     /// 【非必填项】页码
53     /// 
54     [JsonProperty("pageNo",NullValueHandling = NullValueHandling.Ignore)]
55     public int? PageNo { get; set; }
56 
57     /// 
58     /// 【非必填项】每页返回数目
59     /// 
60     [JsonProperty("pageSize", NullValueHandling = NullValueHandling.Ignore)]
61     public int? PageSize { get; set; }
62 
63     /// 
64     /// 【非必填项】模型状态码。1(处理中) 99(成功) -1(失败)
65     /// 
66     [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
67     public short? Status { get; set; }
68 
69     /// 
70     /// 【非必填项】筛选类型
71     /// 
72     [JsonProperty("sortType", NullValueHandling = NullValueHandling.Ignore)]
73     public string SortType { get; set; }
74 
75     /// 
76     /// 【非必填项】开始日期。例如:2019-05-01
77     /// 
78     [JsonProperty("startDate", NullValueHandling = NullValueHandling.Ignore)]
79     public string StartDate { get; set; }
80 
81     /// 
82     /// 【非必填项】截止日期。例如:2019-05-03
83     /// 
84     [JsonProperty("endDate", NullValueHandling = NullValueHandling.Ignore)]
85     public string EndDate { get; set; }
86 }

C#实现方法:

 1 /// 
 2 /// 批量获取转换状态详情
 3 /// 
 4 /// 令牌
 5 /// 请求体参数对象
 6 /// 
 7 public virtual FileTranslateDetailsResponse GetFileTranslateDetails(string accessToken, TranslateQueryRequest request)
 8 {
 9     // POST https://api.bimface.com/translateDetails
10     string url = string.Format(BimfaceConstants.API_HOST + "/translateDetails");
11 
12     BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
13     headers.AddOAuth2Header(accessToken);
14 
15     string data = request.SerializeToJson();
16   
17     try
18     {
19         FileTranslateDetailsResponse response;
20 
21         HttpManager httpManager = new HttpManager(headers);
22         HttpResult httpResult = httpManager.Post(url,data);
23         if (httpResult.Status == HttpResult.STATUS_SUCCESS)
24         {
25             response = httpResult.Text.DeserializeJsonToObject();
26         }
27         else
28         {
29             response = new FileTranslateDetailsResponse
30             {
31                 Message = httpResult.RefText
32             };
33         }
34 
35         return response;
36     }
37     catch (Exception ex)
38     {
39         throw new Exception("[批量获取转换状态详情]发生异常!", ex);
40     }
41 }

其中调用到的 httpManager.Post() 方法,请参考《C# HTTP系列》

测试
在BIMFACE的控制台中可以看到我们上传的文件列表,共计2个文件。模型状态均为转换成功。
C#开发BIMFACE系列14 服务端API之批量获取转换状态详情_第3张图片

调用上面的GetFileTranslateDetails()方法测试批量查询转换状态:

  C#开发BIMFACE系列14 服务端API之批量获取转换状态详情_第4张图片

测试代码如下:

 1 // 批量获取转换状态详情
 2 protected void btnGetFileTranslateDetails_Click(object sender, EventArgs e)
 3 {
 4     TranslateQueryRequest request = new TranslateQueryRequest
 5     {
 6         AppKey = _appKey  //必填项
 7     };
 8 
 9     FileConvertApi api = new FileConvertApi();
10     FileTranslateDetailsResponse response = api.GetFileTranslateDetails(txtAccessToken.Text, request);
11 
12     txtResult.Text = response.Code.ToString2()
13                    + Environment.NewLine
14                    + response.Message.ToString2()
15                    + Environment.NewLine
16                    + response.Data.ToString2();
17 }

返回的结果实体类如下:

1 /// 
2 ///  批量获取转换状态详情返回的结果类
3 /// 
4 [Serializable]
5 public class FileTranslateDetailsResponse : GeneralResponse
6 {
7 
8 }
 1 [Serializable]
 2 public class FileTranslateDetailsEntity
 3 {
 4     [JsonProperty("list")]
 5     public Detail[] Details { get; set; }
 6 
 7     [JsonProperty("page")]
 8     public Page Page { get; set; }
 9 
10     /// 返回表示当前对象的字符串。
11     /// 表示当前对象的字符串。
12     public override string ToString()
13     {
14         StringBuilder sb = new StringBuilder();
15         if (Details != null && Details.Length > 0)
16         {
17             for (var i = 0; i < Details.Length; i++)
18             {
19                 Detail detail = Details[i];
20 
21                 StringBuilder sbThumbnails = new StringBuilder();
22                 string[] thumbnails = detail.Thumbnails;
23                 if (thumbnails != null && thumbnails.Length > 0)
24                 {
25                     foreach (var thumbnail in thumbnails)
26                     {
27                         sbThumbnails.Append(thumbnail + ";");
28                     }
29                 }
30 
31                 sb.AppendLine(String.Format("\r\nDetail{0}\r\nappKey={1}, cost={2}, createTime={3}, databagId={4}, fileId={5}, length={6}, name={7}, "
32                                           + "offlineDatabagStatus={8}, priority={9}, reason={10}, retry={11}, shareToken={12}, shareUrl={13}, sourceId={14}, status={15}, supportOfflineDatabag={16}, "
33                                           + "type={17}, thumbnails={18}",
34                                             (i + 1), detail.AppKey, detail.Cost, detail.CreateTime, detail.DatabagId, detail.FileId, detail.Length, detail.Name,
35                                             detail.OfflineDatabagStatus, detail.Priority, detail.Reason, detail.Retry, detail.ShareToken, detail.ShareUrl, detail.SourceId, detail.Status, detail.SupportOfflineDatabag,
36                                             detail.Type, sbThumbnails));
37             }
38         }
39 
40         sb.AppendLine("\r\npage");
41         sb.AppendLine(string.Format("prePage={0}, nextPage={1}, pageNo={2}, pageSize={3}, startIndex={4}, totalCount={5}, totalPages={6}",
42                                     Page.PrePage, Page.NextPage, Page.PageNo, Page.PageSize, Page.StartIndex, Page.TotalCount, Page.TotalPages));
43 
44         return string.Format("FileTranslateDetailsEntity [\r\n{0}\r\n]", sb);
45     }
46 }
  1 /// 
  2 /// 转换状态详情
  3 /// 
  4 [Serializable]
  5 public class Detail
  6 {
  7     /// 
  8     ///  应用的 appkey
  9     /// 
 10     [JsonProperty("appKey")]
 11     public string AppKey { get; set; }
 12 
 13     ///     
 14     /// 任务耗时(单位:秒)
 15     /// 
 16     [JsonProperty("cost")]
 17     public int Cost { get; set; }
 18 
 19     /// 
 20     ///  创建时间
 21     /// 
 22     [JsonProperty("createTime")]
 23     public string CreateTime { get; set; }
 24 
 25     /// 
 26     ///  数据包id。例如:70b8c10b686061525420fc240bf48aca
 27     /// 
 28     [JsonProperty("databagId")]
 29     public string DatabagId { get; set; }
 30 
 31     /// 
 32     ///  模型的fileId。例如:1609858191716512
 33     /// 
 34     [JsonProperty("fileId")]
 35     public long? FileId { get; set; }
 36 
 37     /// 
 38     ///  文件长度(单位:字节)
 39     /// 
 40     [JsonProperty("length")]
 41     public long? Length { get; set; }
 42 
 43     /// 
 44     ///  集成模型的名称,例如:integrate-test
 45     /// 
 46     [JsonProperty("name")]
 47     public string Name { get; set; }
 48 
 49     /// 
 50     /// 离线数据包生成状态:prepare(未生成) processing(生成中) success(生成成功) failed(生成失败)
 51     /// 
 52     [JsonProperty("offlineDatabagStatus")]
 53     public string OfflineDatabagStatus { get; set; }
 54 
 55     /// 
 56     /// 任务优先级。 数字越大,优先级越低。1, 2, 3。
 57     /// 
 58     [JsonProperty("priority")]
 59     public short? Priority { get; set; }
 60 
 61     /// 
 62     /// 若转换失败,返回失败原因。转换成功时,返回空字符串
 63     /// 
 64     [JsonProperty("reason")]
 65     public string Reason { get; set; }
 66 
 67     /// 
 68     /// 重试,true(或者false)
 69     /// 
 70     [JsonProperty("retry")]
 71     public bool? Retry { get; set; }
 72 
 73     /// 
 74     /// 分享码。例如:3c476c55
 75     /// 
 76     [JsonProperty("shareToken")]
 77     public string ShareToken { get; set; }
 78 
 79     /// 
 80     /// 分享链接。例如:https://api.bimface.com/preview/3c476c55
 81     /// 
 82     [JsonProperty("shareUrl")]
 83     public string ShareUrl { get; set; }
 84 
 85     /// 
 86     /// 模型对应的sourceId。该字段暂时空置
 87     /// 
 88     [JsonProperty("sourceId")]
 89     public string SourceId { get; set; }
 90 
 91     /// 
 92     /// 模型状态,processing(处理中) success(成功) failed(失败)
 93     /// 
 94     [JsonProperty("status")]
 95     public string Status { get; set; }
 96 
 97     /// 
 98     /// 是否支持离线数据包,true(或者false)
 99     /// 
100     [JsonProperty("supportOfflineDatabag")]
101     public bool? SupportOfflineDatabag { get; set; }
102 
103     /// 
104     ///  模型的缩略图,该字段暂时空置
105     /// 
106     [JsonProperty("thumbnail")]
107     public string[] Thumbnails { get; set; }
108 
109     /// 
110     /// 转换类型。例如:rvt-translate(或者igms-translate…​)
111     /// 
112     [JsonProperty("type")]
113     public string Type { get; set; }
114 }
 1 /// 
 2 ///  返回总记录的分页信息
 3 /// 
 4 [Serializable]
 5 public class Page
 6 {
 7     /// 
 8     ///  下一页码
 9     /// 
10     [JsonProperty("nextPage")]
11     public int NextPage { get; set; }
12 
13     /// 
14     ///  当前页码
15     /// 
16     [JsonProperty("pageNo")]
17     public int PageNo { get; set; }
18 
19     /// 
20     ///  每页条目数
21     /// 
22     [JsonProperty("pageSize")]
23     public int PageSize { get; set; }
24 
25     /// 
26     ///  上一页码
27     /// 
28     [JsonProperty("prePage")]
29     public int PrePage { get; set; }
30 
31     /// 
32     ///  起始索引数
33     /// 
34     [JsonProperty("startIndex")]
35     public int StartIndex { get; set; }
36 
37     /// 
38     ///  条目总数
39     /// 
40     [JsonProperty("totalCount")]
41     public int TotalCount { get; set; }
42 
43     /// 
44     ///  页码总数
45     /// 
46     [JsonProperty("totalPages")]
47     public int TotalPages { get; set; }
48 }
 
系列目录     【已更新最新开发文章,点击查看详细】
 

你可能感兴趣的:(C#开发BIMFACE系列14 服务端API之批量获取转换状态详情)