文件上传识别笔记、及反馈结构


做了一版文件上传识别的功能,用于报销系统。

踩了一些坑,记录下可行的实践。

需求:上传图片或局端版式文件,识别出发票信息,一张图可能有多张发票。

流程

上传 | 识别 | 入库。

入参

file
fileName # 其实可以没有,file本身就自带文件名

出参

success # 成功失败标志
message # 提示信息
fileId # 上传的文件id
fileName # 文件名
infoList # 发票列表

  • code # 发票代码
  • number # 发票号码
  • oneSuccess # 单张提示信息
  • oneMessage # 单张提示信息

关于出参的处理。
success如果为false,直接展示文件名及提示信息即可。 # 例如调用识别接口报错
sucess如果为true,遍历infoList,根据单张的success来判断。# 例如单张票已报销过

版式文件覆盖逻辑

场景:
一开始传的是图片,后来拿到了版式,很明显,版式才是最正确的文件。
那么版式要覆盖。

这里分为几个场景。

1、无此发票 # 新增报销
2、有此发票 已有版式
3、有此发票 没有版式(有图片或连图片也没有)
4、有此发票 已有版式 新文件是版式
5、有此发票 没有版式 新文件不是版式

上面场景是从最全考虑,实际可以归纳为:
1、无此发票。# 新增报销
2、==有此发票 没有版式 新文件是版式 ==# 只有这种情况需要覆盖
3、其他因为不涉及覆盖,所以都直接提示已报销即可。

当然,如果后来的版式是覆盖的逻辑,也可以为:
1、无此发票。# 新增报销
2、有此发票 新文件是版式 # 和上面的区别是,只要新文件是版式,那么就覆盖
3、其他因为不涉及覆盖,所以都直接提示已报销即可。

反馈结构

反馈结构最初的场景是一对多,例如一个文件多个业务。
每个业务都有单独的成功失败标志,所以不能用最外层的成功标志和提示信息。

一个文件多个业务

前端或业务系统对接时,其实可以不管最外层成功标志如何,只有list有数据,就循环展示list数据即可。

总成功场景

因为肯定是for循环,单条异常单独处理了。
如果单条成功,list.add(oneSuccess);
如果单挑失败,list.add(oneError);

总失败场景

这里说的是总失败场景。
那么返回信息里面补一条错误对象。
Arrays.asList(oneError);

一个文件一个业务

和上面的区别就是没有for循环。

成功场景

list.add(oneSuccess);

失败场景

Arrays.asList(oneError);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值