OpenAPI方式上传图片并给单据图片字段赋值

1 业务背景
现场想通过openapi传外部系统图片到星瀚单据的图片字段,例如,物料的图片字段

2 思路与方案
操作API(零代码)方式目前是不能完全支持。
1、需要通过自定义api的方式先上传图片的文件服务器
// 先获取图片上传服务
FileService imageFileService = FileServiceFactory.getImageFileService();
// 字节流转文件流
InputStream input = new ByteArrayInputStream(file1.getFileData());
// 构造FileItem对象
FileItem var1 = new FileItem("文件名","相对路径","文件流");
// 上传图片
String path = imageFileService.upload(var1);
2、自定义api返回图片的path,赋值给单据的图片字段

3 实现过程
1、创建自定义api插件类,编写相关代码,参考:文件流处理接口
@ApiController(value = "dev", desc = "自定义API Demo样例2")
@ApiMapping(value = "wfb/upload")
public class CustomUploadFileController {
@ApiPostMapping(value = "/uploadImage", desc = "上传文件流")
public CustomApiResult<String> uploadFile(@NotNull @ApiParam("订单号") String billNo, @ApiParam("文件流") OpenApiFile file1) {
if (StringUtil.isEmpty(billNo) || file1 == null || file1.getFileData() == null) {
//手动设置http状态码406
ServiceApiContext.getResponse().setHttpStatus(HttpStatus.NOT_ACCEPTABLE.getStatusCode());
//返回失败错误码:errorCode:900101(业务自行约定) & status=false
return CustomApiResult.fail("900101", "订单号billNo及文件流file1不能为空。");
}
//构造相对路径:租户id/账户id/日期/202407/应用编码/单据编码/images/uuid/文件名
StringBuffer relativePath = new StringBuffer();
RequestContext requestContext = RequestContext.get();
relativePath.append(requestContext.getTenantId());
relativePath.append("/");
relativePath.append(requestContext.getAccountId());
relativePath.append("/");
relativePath.append("0703");
relativePath.append("/");
relativePath.append("kdec_case01");
relativePatOpenAPI方式上传图片并给单据图片字段赋值
1 业务背景现场想通过openapi传外部系统图片到星瀚单据的图片字段,例如,物料的图片字段2 思路与方案操作API(零代码)方式目前是不能完...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



