diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/convert/DocConvertController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/convert/DocConvertController.java new file mode 100644 index 0000000..b518c45 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/convert/DocConvertController.java @@ -0,0 +1,93 @@ +package com.heyu.api.controller.convert; + + +import com.heyu.api.baidu.handle.convert.BDocConvertHandle; +import com.heyu.api.baidu.handle.convert.BGetRequestResultHandle; +import com.heyu.api.baidu.request.convert.BGetRequestResultRequest; +import com.heyu.api.baidu.response.convert.BDocConvertResp; +import com.heyu.api.baidu.response.convert.BGetRequestResultResp; +import com.heyu.api.data.annotation.CacheResult; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.R; +import com.heyu.api.data.utils.StringUtils; +import com.heyu.api.request.convert.DocConvertReq; +import com.heyu.api.resp.convert.DocConvertRequestResp; +import com.heyu.api.resp.convert.DocConvertResultResp; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/*** + * https://console.bce.baidu.com/support/?_=1740667714316×tamp=1742711719154#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E6%99%BA%E8%83%BD%E6%96%87%E6%A1%A3%E5%88%86%E6%9E%90&api=rest%2F2.0%2Focr%2Fv1%2Fdoc_convert%2Frequest&method=post + * + *文档格式转换-提交请求 + * + * + * 接口描述 + * 原图文转换器API版产品,现已更名为「文档格式转换」。 + * + * 可识别图片/PDF文档版面布局,提取文字内容,并转换为保留原文档版式的Word、Excel文档,方便二次编辑和复制,可支持含表格、印章、水印、手写等内容的文档。满足文档格式转换、企业档案电子化等信息管理需求。如需直接使用在线工具,可到智能文档分析平台-文档格式转换使用。在线工具和API版的额度为共享互通。 + * + * 在线工具「智能文档分析平台-文档格式转换」已支持**「PDF -> 双层PDF/双层OFD」、「OFD -> 双层OFD/Word/Excel」** 转换类型,API版开发中,敬请期待。 + * + * 文档格式转换API版为异步接口,需要先调用提交请求接口获取 task_id,然后调用获取结果接口进行结果轮询,建议提交请求后 5~10 秒轮询。 + * + * + * + */ +@Slf4j +@RestController +@RequestMapping("/convert") +@NotIntercept +public class DocConvertController { + + + @Autowired + private BDocConvertHandle bDocConvertHandle; + + + @Autowired + private BGetRequestResultHandle bGetRequestResultHandle; + + + @RequestMapping("/doc") + @CacheResult + public R doc(DocConvertReq request) { + ApiR bR = null; + if (StringUtils.isBlank(request.getTaskId())) { + DocConvertResultResp resp = new DocConvertResultResp(); + BGetRequestResultRequest bGetRequestResultRequest = new BGetRequestResultRequest(); + bGetRequestResultRequest.setTaskId(request.getTaskId()); + bR = bGetRequestResultHandle.handle(bGetRequestResultRequest); + + BGetRequestResultResp bGetRequestResultResp = (BGetRequestResultResp) bR.getData(); + BGetRequestResultResp.ResultDTO resultDTO = bGetRequestResultResp.getResult(); + resp.setTaskId(resultDTO.getTaskId()); + resp.setRetCode(resultDTO.getRetCode()); + resp.setRetMsg(resultDTO.getRetMsg()); + resp.setPercent(resultDTO.getPercent()); + resp.setCreateTime(resultDTO.getCreateTime()); + resp.setStartTime(resultDTO.getStartTime()); + resp.setEndTime(resultDTO.getEndTime()); + if (resultDTO.getResultData() != null) { + resp.setExcel(resultDTO.getResultData().getExcel()); + resp.setWord(resultDTO.getResultData().getWord()); + } + return R.ok().setData(resp); + } else { + DocConvertRequestResp resp = new DocConvertRequestResp(); + bR = bDocConvertHandle.handle(request); + if (bR.isSuccess()) { + BDocConvertResp bDocConvertResp = (BDocConvertResp) bR.getData(); + BDocConvertResp.ResultDTO resultDTO = bDocConvertResp.getResult(); + resp.setTaskId(resultDTO.getTaskId()); + return R.ok().setData(resp); + } + } + return R.error(bR.getErrorMsg()); + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/convert/DocConvertReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/convert/DocConvertReq.java new file mode 100644 index 0000000..9365220 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/convert/DocConvertReq.java @@ -0,0 +1,18 @@ +package com.heyu.api.request.convert; + + +import com.heyu.api.baidu.request.convert.BDocConvertRequest; +import lombok.Data; + +@Data +public class DocConvertReq extends BDocConvertRequest { + + + /*** + * 通过taskId 来拿数据 + */ + private String taskId; +} + + + diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/convert/DocConvertRequestResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/convert/DocConvertRequestResp.java new file mode 100644 index 0000000..baab655 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/convert/DocConvertRequestResp.java @@ -0,0 +1,13 @@ +package com.heyu.api.resp.convert; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class DocConvertRequestResp extends BaseResp { + + /*** + * 任务id + */ + private String taskId; +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/convert/DocConvertResultResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/convert/DocConvertResultResp.java new file mode 100644 index 0000000..d4873ec --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/convert/DocConvertResultResp.java @@ -0,0 +1,20 @@ +package com.heyu.api.resp.convert; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class DocConvertResultResp extends BaseResp { + + private String taskId; // 该文件对应请求的task_id + private Integer retCode; // 识别状态,1:任务未开始;2:进行中;3:已完成 + private String retMsg; // 识别状态信息:任务未开始;进行中;已完成 + private Integer percent; // 文档转换进度(百分比) + private String createTime; // 任务创建时间 + private String startTime; // 任务开始时间 + private String endTime; // 任务结束时间 + private String word; // 还原后的word文件的下载地址,文件识别失败时返回"" + private String excel; // 还原后的Excel文件的下载地址,若文档中没有表格则返回"" + + +}