实习需求--智能支付模块(AI SDK)
AI 收款人识别模块。用户上传文件后,系统要通过 AI 提取收款人信息再入库。
先从这个业务的controller入手,其中的第一个方法叫做extractPayeeInfo,里面有三个基本参数,一个是springweb自带的类型multipartfile file,和Sring-filetype,String busiObj,然后进入方法内部,判断file是空的吗,如果是直接返回“请上传文件”,然后再进行判断,如果filetype这个参数不包含“ . ” ,就给加上一个。然后通过BaseParamVO baseParamVO = BeInfoContext.getFiscalQuery();方法来获取财政查询相关的基础参数然后赋值给BaseParamVO baseParamVO,这是一个基础参数值对象,包含了系统中各种基础的财政,组织用户等信息。然后接下来会有这行代码PayeeAccount payeeAccount = payIntelligentAppService.extractPayeeInfo(baseParamVO, file, fileType);这行代码调用支付智能服务,从上传的文件中提取收款人信息,并返回一个包含收款人详细信息的对象然后赋值给payeeAccount这个对象,然后进入下面的判断逻辑如果收款人姓名不为空,就进入下面的数据库查询逻辑,这段的业务意思是,AI智能识别成功 → 提取到了收款人基本信息(账号、姓名、开户行),但是AI无法识别业务属性 → 比如"资金交易对象类型代码"和"资金交易对象类型名称"这些业务层面的分类信息,所以需要查询历史数据 → 通过收款人姓名去查找历史支付记录,推断这次支付可能属于什么业务类型,然后构建sql查询语句,用了一个开源框架imeta,添加查询字段,添加查询条件,然后排序,构建分页,然后通过List date = YdfSpringContext.getYdfBillRepo().queryBySchema(BusiEntityHelper.getClazzByBusiObj(busiObj), querySchema);来执行查询,通过业务对象获取对应的实体类,执行数据库查询,返回符合条件的记录列表,接下来判断如果查询结果不为空,取第一条记录,从历史记录中提取资金交易对象类型代码和名称,将这些补充信息存入PayeeAccount的扩展数据中,最后在返回PayeeAccount
第二个方法extractPayeeInfoByFilePath是根据文件路径来进行解析的,跟上面的基本上一样