移动网络成本智慧分析系统产品系统

我要开发同款
proginn19400360832026年10月09日
3阅读

技术信息

语言技术
Java、Kafka、ElasticSearch、Docker、RabbitMQ
系统类型
Web
行业分类
项目任务、企业服务

作品详情

行业场景

通信运营商在为网络成本(电费、租费、塔费、维修费等七类费用)做结算管理时,长期依赖人工对上游业务系统输出的各类结算凭证进行稽核。人工稽核普遍存在三方面痛点:
- 效率低:凭证数量庞大,逐单人工比对耗时严重,结算周期被大幅拉长;
- 易出错:涉及金额、签字、盖章等多维度核对,人工判断容易遗漏或误判;
- 合规风险高:无法对稽核过程形成完整留痕与统一规范,一旦出现疏漏难以追溯责任。
基于上述问题,本项目立项旨在用自动化稽核取代人工稽核,建立一套可度量、可留痕、可追溯的智能费用稽核平台,从源头提升结算合规性与效率,降低运营成本与风险。

功能介绍

后台稽核模块是系统的核心,采用消息驱动架构,整体流程如下:
1. 数据同步:用户先在网络成本分析系统中上传对应的附件与结算数据,数据经 RocketMQ 发送到后台,后台据此与用户端系统的数据进行比较;
2. 数据过滤:接收消息后进行过滤,剔除已废弃、已稽核过的单子,避免对同一条数据及废弃单据重复稽核;
3. 行为处置:构建稽核订单并发起稽核,依据业务类型与结算类型选择对应的稽核处理器;
4. OCR识别:调用 OCR 服务识别发票、合同、结算确认单等文件,自动提取关键信息;
5. 规则稽核:执行具体稽核规则,包括 Excel 规模数据比对、结算金额三方比对、签字盖章检查等;
6. 结果落库:保存稽核结果到数据库,供前端查询展示。
前端展示模块则围绕稽核全流程提供可视化操作,覆盖查询、查看、审批与导出等能力,最终形成"平台自动稽核 + 人工审批兜底"的闭环。

项目实现

在本项目中我主要负责以下几个核心任务
- 设计过滤机制并实现幂等性消费:先依据稽核单状态过滤掉已废弃或已稽核过的单子,再通过附件 id 与消息 key 判断是否已处理;以附件 id 的 key 作为分布式锁,有效防止重复稽核。
- 基于策略模式完成业务路由:将不同业务路由到不同专业的稽核服务,支持各费用类型独立扩容。
- 封装 OCR 识别功能:完成发票、合同等文件的自动识别与关键信息提取,这是本项目的主要难点。
- 处理金额精度控制:金额比对涉及三方数据,统一使用 BigDecimal 计算,过程保留 10 位小数精度,最终展示四舍五入到 2 位小数。
- (附加)JVM 调优实践:私下定位并修复一处页面查询的内存溢出问题,将多次循环查库改为一次查库 + Stream 流式计算分类,并掌握了 OOM 时 dump 文件的自动输出与工具分析定位方法。
实现亮点
- 幂等消费设计:通过稽核单状态 + 附件 id + 消息 key + 分布式锁,多维度防止重复稽核,保证数据一致;
- OCR 并行与稳定性优化:采用 CompletableFuture 并行识别(5 个并发线程池),并设置 5 分钟超时、3 次重试、OCR 结果复用(相同文件直接使用历史识别结果),显著提升稽核吞吐量;
- 规则可配置化:支持各地市自定义稽核规则与责任人,签字盖章等不稳定的 OCR 识别结果通过灵活规则配置兜底;
- JVM 调优手札:通过 dump 文件 + 工具分析定位 OOM 根源,改一次查库 + Stream 流式分类替代循环查库,根治内存溢出。
实现难点
- OCR 识别本身:OCR 一直是本系统最大瓶颈,数据量增大时易超时且识别慢,需要并行化、超时重试与结果复用三管齐下
- 多模态稽核比对:Excel 规模数据比对、结算金额三方比对、签字核对、盖章检查等规则相互交织,精度与稳定性要求高

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论