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

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

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

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

参数:

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

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

请求 body(示例):

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

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

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

请求体参数说明:

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

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

 /// <summary>
/// 批量获取转换状态详情的请求数据
/// </summary>
[Serializable]
public class TranslateQueryRequest
{
public TranslateQueryRequest()
{
FileId = null;
Suffix = null;
FileName = null;
SourceId = null;
PageNo = null;
PageSize = null;
Status = null;
SortType = null;
StartDate = null;
EndDate = null;
} /// <summary>
/// 【必填项】应用的 appKey
/// </summary>
[JsonProperty("appKey")]
public string AppKey { get; set; } /// <summary>
/// 【非必填项】单模型对应的id,例如:1216871503527744
/// </summary>
[JsonProperty("fileId", NullValueHandling = NullValueHandling.Ignore)]
public string FileId { get; set; } /// <summary>
/// 【非必填项】单模型的文件类型。例如:rvt(或者igms,dwg…​)
/// </summary>
[JsonProperty("suffix", NullValueHandling = NullValueHandling.Ignore)]
public string Suffix { get; set; } /// <summary>
/// 【非必填项】单模型的名称。例如:translate-test
/// </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>
/// 【非必填项】模型状态码。1(处理中) 99(成功) -1(失败)
/// </summary>
[JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
public short? Status { get; set; } /// <summary>
/// 【非必填项】筛选类型
/// </summary>
[JsonProperty("sortType", NullValueHandling = NullValueHandling.Ignore)]
public string SortType { get; set; } /// <summary>
/// 【非必填项】开始日期。例如:2019-05-01
/// </summary>
[JsonProperty("startDate", NullValueHandling = NullValueHandling.Ignore)]
public string StartDate { get; set; } /// <summary>
/// 【非必填项】截止日期。例如:2019-05-03
/// </summary>
[JsonProperty("endDate", NullValueHandling = NullValueHandling.Ignore)]
public string EndDate { get; set; }
}

C#实现方法:

 /// <summary>
/// 批量获取转换状态详情
/// </summary>
/// <param name="accessToken">令牌</param>
/// <param name="request">请求体参数对象</param>
/// <returns></returns>
public virtual FileTranslateDetailsResponse GetFileTranslateDetails(string accessToken, TranslateQueryRequest request)
{
// POST https://api.bimface.com/translateDetails
string url = string.Format(BimfaceConstants.API_HOST + "/translateDetails"); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); string data = request.SerializeToJson(); try
{
FileTranslateDetailsResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Post(url,data);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<FileTranslateDetailsResponse>();
}
else
{
response = new FileTranslateDetailsResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[批量获取转换状态详情]发生异常!", ex);
}
}

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

测试
在BIMFACE的控制台中可以看到我们上传的文件列表,共计2个文件。模型状态均为转换成功。

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

 

测试代码如下:

 // 批量获取转换状态详情
protected void btnGetFileTranslateDetails_Click(object sender, EventArgs e)
{
TranslateQueryRequest request = new TranslateQueryRequest
{
AppKey = _appKey //必填项
}; FileConvertApi api = new FileConvertApi();
FileTranslateDetailsResponse response = api.GetFileTranslateDetails(txtAccessToken.Text, request); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data.ToString2();
}

返回的结果实体类如下:

 /// <summary>
/// 批量获取转换状态详情返回的结果类
/// </summary>
[Serializable]
public class FileTranslateDetailsResponse : GeneralResponse<FileTranslateDetailsEntity>
{ }
 [Serializable]
public class FileTranslateDetailsEntity
{
[JsonProperty("list")]
public Detail[] Details { get; set; } [JsonProperty("page")]
public Page Page { get; set; } /// <summary>返回表示当前对象的字符串。</summary>
/// <returns>表示当前对象的字符串。</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
if (Details != null && Details.Length > )
{
for (var i = ; i < Details.Length; i++)
{
Detail detail = Details[i]; StringBuilder sbThumbnails = new StringBuilder();
string[] thumbnails = detail.Thumbnails;
if (thumbnails != null && thumbnails.Length > )
{
foreach (var thumbnail in thumbnails)
{
sbThumbnails.Append(thumbnail + ";");
}
} sb.AppendLine(String.Format("\r\nDetail{0}\r\nappKey={1}, cost={2}, createTime={3}, databagId={4}, fileId={5}, length={6}, name={7}, "
+ "offlineDatabagStatus={8}, priority={9}, reason={10}, retry={11}, shareToken={12}, shareUrl={13}, sourceId={14}, status={15}, supportOfflineDatabag={16}, "
+ "type={17}, thumbnails={18}",
(i + ), detail.AppKey, detail.Cost, detail.CreateTime, detail.DatabagId, detail.FileId, detail.Length, detail.Name,
detail.OfflineDatabagStatus, detail.Priority, detail.Reason, detail.Retry, detail.ShareToken, detail.ShareUrl, detail.SourceId, detail.Status, detail.SupportOfflineDatabag,
detail.Type, sbThumbnails));
}
} sb.AppendLine("\r\npage");
sb.AppendLine(string.Format("prePage={0}, nextPage={1}, pageNo={2}, pageSize={3}, startIndex={4}, totalCount={5}, totalPages={6}",
Page.PrePage, Page.NextPage, Page.PageNo, Page.PageSize, Page.StartIndex, Page.TotalCount, Page.TotalPages)); return string.Format("FileTranslateDetailsEntity [\r\n{0}\r\n]", sb);
}
}
 /// <summary>
/// 转换状态详情
/// </summary>
[Serializable]
public class Detail
{
/// <summary>
/// 应用的 appkey
/// </summary>
[JsonProperty("appKey")]
public string AppKey { get; set; } /// <summary>
/// 任务耗时(单位:秒)
/// </summary>
[JsonProperty("cost")]
public int Cost { get; set; } /// <summary>
/// 创建时间
/// </summary>
[JsonProperty("createTime")]
public string CreateTime { get; set; } /// <summary>
/// 数据包id。例如:70b8c10b686061525420fc240bf48aca
/// </summary>
[JsonProperty("databagId")]
public string DatabagId { get; set; } /// <summary>
/// 模型的fileId。例如:1609858191716512
/// </summary>
[JsonProperty("fileId")]
public long? FileId { get; set; } /// <summary>
/// 文件长度(单位:字节)
/// </summary>
[JsonProperty("length")]
public long? Length { get; set; } /// <summary>
/// 集成模型的名称,例如:integrate-test
/// </summary>
[JsonProperty("name")]
public string Name { get; set; } /// <summary>
/// 离线数据包生成状态:prepare(未生成) processing(生成中) success(生成成功) failed(生成失败)
/// </summary>
[JsonProperty("offlineDatabagStatus")]
public string OfflineDatabagStatus { get; set; } /// <summary>
/// 任务优先级。 数字越大,优先级越低。1, 2, 3。
/// </summary>
[JsonProperty("priority")]
public short? Priority { get; set; } /// <summary>
/// 若转换失败,返回失败原因。转换成功时,返回空字符串
/// </summary>
[JsonProperty("reason")]
public string Reason { get; set; } /// <summary>
/// 重试,true(或者false)
/// </summary>
[JsonProperty("retry")]
public bool? Retry { get; set; } /// <summary>
/// 分享码。例如:3c476c55
/// </summary>
[JsonProperty("shareToken")]
public string ShareToken { get; set; } /// <summary>
/// 分享链接。例如:https://api.bimface.com/preview/3c476c55
/// </summary>
[JsonProperty("shareUrl")]
public string ShareUrl { get; set; } /// <summary>
/// 模型对应的sourceId。该字段暂时空置
/// </summary>
[JsonProperty("sourceId")]
public string SourceId { get; set; } /// <summary>
/// 模型状态,processing(处理中) success(成功) failed(失败)
/// </summary>
[JsonProperty("status")]
public string Status { get; set; } /// <summary>
/// 是否支持离线数据包,true(或者false)
/// </summary>
[JsonProperty("supportOfflineDatabag")]
public bool? SupportOfflineDatabag { get; set; } /// <summary>
/// 模型的缩略图,该字段暂时空置
/// </summary>
[JsonProperty("thumbnail")]
public string[] Thumbnails { get; set; } /// <summary>
/// 转换类型。例如:rvt-translate(或者igms-translate…​)
/// </summary>
[JsonProperty("type")]
public string Type { get; set; }
}
 /// <summary>
/// 返回总记录的分页信息
/// </summary>
[Serializable]
public class Page
{
/// <summary>
/// 下一页码
/// </summary>
[JsonProperty("nextPage")]
public int NextPage { get; set; } /// <summary>
/// 当前页码
/// </summary>
[JsonProperty("pageNo")]
public int PageNo { get; set; } /// <summary>
/// 每页条目数
/// </summary>
[JsonProperty("pageSize")]
public int PageSize { get; set; } /// <summary>
/// 上一页码
/// </summary>
[JsonProperty("prePage")]
public int PrePage { get; set; } /// <summary>
/// 起始索引数
/// </summary>
[JsonProperty("startIndex")]
public int StartIndex { get; set; } /// <summary>
/// 条目总数
/// </summary>
[JsonProperty("totalCount")]
public int TotalCount { get; set; } /// <summary>
/// 页码总数
/// </summary>
[JsonProperty("totalPages")]
public int TotalPages { get; set; }
}
 
 

C#开发BIMFACE系列14 服务端API之批量获取转换状态详情的更多相关文章

  1. C#开发BIMFACE系列40 服务端API之模型集成

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...

  2. C#开发BIMFACE系列41 服务端API之模型对比

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...

  3. C#开发BIMFACE系列42 服务端API之图纸对比

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...

  4. C#开发BIMFACE系列43 服务端API之图纸拆分

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一 ...

  5. C#开发BIMFACE系列44 服务端API之计算图纸对比差异项来源自哪个图框

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>.<C#开发BIMFACE系列43 ...

  6. C#开发BIMFACE系列46 服务端API之离线数据包下载及结构详解

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数 ...

  7. C#开发BIMFACE系列6 服务端API之获取文件信息

    在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...

  8. C#开发BIMFACE系列4 服务端API之源上传文件

    在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...

  9. C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...

随机推荐

  1. 计时器(Chronometer)、标签(TabHost)

    计时器(Chronometer) 方法 描述 public Chronometer(Context context)[构造方法] 创建Chronometer对象 public long getBase ...

  2. 关于STM32F103+ESP8266+阿里云过程之修改SDK连接至阿里云(二)

    继上篇的阿里云物联云平台设置之后,接下来的工作就是对安信可官方给的sdk进行修改 安信可ESP系列集成环境,SDK,aliyun_mqtt_app,下载地址在上一篇博客,https://www.cnb ...

  3. Linux常用的命令及使用方法

    1.请用命令查出ifconfig命令程序的绝对路径 [root@localhost ~]# which ifconfig(ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令) / ...

  4. mule发布调用webservice

    mule发布webservice 使用mule esb消息总线发布和调用webservice都非常精简,mule包装了所有操作,你只需要拖控件配置就可以,下面讲解mule发布: 1.下面是flow,h ...

  5. 测试通过mweb进行发布Title

    MWeb 是专业的 Markdown 写作.记笔记.静态博客生成软件,目前已支持 Mac,iPad 和 iPhone.MWeb 有以下特色: 软件本身: 使用原生的 macOS 技术打造,追求与系统的 ...

  6. 当下最流行的微服务与spring cloud,你搞清楚了吗?

    微服务架构:Spring-Cloud 什么是微服务? 微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库. 比 如:项目里面有User模块和Power模块, ...

  7. 【Python】狂蟒来袭 | 使用Anaconda搭建Python开发环境

    这段时间转了一个小圈圈,发现又回来了,瞎忙.想要学习数据挖掘的小伙伴一定得对机器学习有所了解吧,我之前看过几页周志华老师的西瓜书,但终没能坚持下来. 人生处处是起点,什么时候都不晚.记此笔记以分享与督 ...

  8. ZDog:简单便捷好玩的的3D设计和动画制作库

    各位老铁,我灰太狼又又又回来了,嘿嘿!!!!最近在忙所以有日子没写博客了,今天带大家看个好玩的东西 这个东西是今天偶尔看到的,是啥呢,难道是漂亮的小姐姐吗?当然是......不可能的了,这个东西其实就 ...

  9. ORACLE中添加删除主键

    本文转自:http://blog.chinaunix.net/uid-17079336-id-2832443.html 1.创建表的同时创建主键约束(1)无命名create table student ...

  10. js-EventLoop

    1.浏览器事件环 eventLoop是由js的宿主环境(浏览器)来实现的 事件循环可以简单的描述为以下四个步骤 1.函数入栈,当Stack中执行到异步任务的时候,就将他丢给WebAPIs,接着执行同步 ...