行业场景
1. 立项原因
BMS 立项的核心,是解决连锁零售供应链中物流费用规则分散、人工核算成本高、账单缺少统一口径、异常费用难追溯等问题。平台将计费规则、费用明细、应收应付账单、调整汇总、对账结算和异常补偿集中管理,形成从业务发生到财务结算的闭环,降低错算、漏算、重复计费和跨系统数据不一致风险。
2. 行业场景与业务背景
系统面向连锁零售、仓储配送和供应链物流场景,连接上游订单、仓储、运输和履约业务系统,以及下游物流服务商、承运商、骑手、货主、客户和财务结算体系。
物流费用受经营组织、物流中心、门店、配送距离、重量、车型、时段、合同、服务类型等因素影响,计费规则复杂且经常调整。BMS 通过统一计费、应收应付管理、对账调整和运维补偿,支撑多组织、多场景、多结算对象的持续运营。
功能介绍
1. 具体功能模块
- 计费引擎管理:劳务费计费表、业务场景转换费用规则、运费分摊规则。
- 业务单据管理:劳务费单据查询、重新计费、按条件重算、导入导出。
- 应付账单管理:应付手工单、费用列表、应付调整单、应付汇总单、账单生成。
- 应收账单管理:应收手工单、应收费用、应收调整单、应收汇总单、结算状态管理。
- 报表与运营管理:履约补贴计费报表、骑手月结、模拟计费、批量配送计费、运输费批量重算、结算编码修改、新店未计费数据处理。
- 杂项收款管理:杂项收款查询、优惠金额修改、重新推送、版本控制和操作日志查看。
2. 主要功能描述
平台主链路为:规则与费率匹配 → 自动计费 → 生成费用明细 → 生成应收应付账单 → 调整与汇总 → 对账结算 → 异常重算与重推。
计费引擎支持公式化配置、应收应付费率匹配、参考价兜底、配送距离计算和缓存;运费分摊支持硬比例、门店数、装载件数、托盘数和有效耗材数五种方式。账单模块支持手工补录、费用调整、汇总、状态流转、批量生成和结算跟踪。
项目实现
1. 我负责的具体任务
- 负责或参与应收、应付手工单 CRUD,以及物流中心与会计主体联动、费用明细、调整单、汇总单和账单生成等核心结算流程。
- 参与计费引擎能力建设,包括配送费 2.0、罚扣款计费、一口参考价、节假日服务费、运输服务费精度处理、参考里程计算及正式距离数据兜底。
- 负责杂项收款优惠金额修改后重推功能,实现状态校验、金额校验、并发控制、版本递增、重新推送和完整日志记录。
- 参与海星分库分表接入、TraceId 链路追踪、ES 接口日志、批量异步预提、汇总单预提死锁治理及历史动态数据源清理。
- 参与 BMS 前端页面改造与前后端联调,支持新 BMS 页面接入现有业务门户。
2. 技术栈与架构
- 前端:React 17、TypeScript、Umi 3.5、Middle 组件体系、Less。
- 后端:Java 8、Spring Boot 2.x、Dubbo、MyBatis-Plus、MySQL。
- 中间件:Redis/Redisson、RocketMQ、ElasticJob、Apollo、Kafka 日志采集。
- 数据与监控:海星分片组件、SkyWalking、ELK。
- 架构:按计费引擎、结算、计费中心、任务调度、EDI、文件服务等职责拆分;结算服务采用 API、Application、Domain、Facade、Infrastructure 分层,服务间通过 Dubbo 通信,使用消息、定时任务和补偿机制处理异步业务。
3. 实现亮点
- 基于 QLExpress 实现规则驱动计费,将计费公式与代码解耦,支持业务快速调整。
- 将规则、费率、费用明细、账单、调整、汇总和结算串联,形成完整财务结算闭环。
- 通过 Redis 缓存、批量任务、异步处理和分库分表提升高频计费与大批量账单处理能力。
- 对跨系统推送采用状态校验、幂等控制、版本号、失败重试和操作日志,保证数据可追踪、可恢复。
- 结合 TraceId、结构化日志和 SkyWalking 提升跨服务问题定位效率。
4. 主要难点
- 计费因子和合同规则多,需处理规则优先级、缺失费率、参考价兜底及金额精度问题。
- BMS 与 YC、财务等系统存在跨系统一致性要求,需要处理本地事务、远程调用失败和重复推送。
- 大批量计费、预提和账单生成需要兼顾幂等、并发、死锁、失败重试与执行进度。
- 分库分表迁移需要兼容历史 SQL、数据路由和多组织隔离,同时不能改变既有业务语义。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论