该系统服务于集团型制造企业,日均活跃用户 2000+。核心痛点:BOM(物料清单)多层展开接口响应超2秒,且库存流水表数据量过亿,前端页面加载卡顿。
点击空白处退出提示
该系统服务于集团型制造企业,日均活跃用户 2000+。核心痛点:BOM(物料清单)多层展开接口响应超2秒,且库存流水表数据量过亿,前端页面加载卡顿。
ERP系统核心功能可概括为“人、财、物、产、供、销”的一体化管理。
财务模块负责总账、应收应付及成本控制,确保资金流清晰;供应链模块统筹采购、库存与销售,实现物流高效运转;生产模块通过物料需求计划(MRP)管理生产排程与工单。此外,人力资源涵盖考勤薪资,CRM则管理客户全生命周期。这些模块数据互通,能打破信息孤岛,让企业决策更依赖实时数据而非经验。
1. BOM 查询性能优化(后端主导)
问题定位:通过 MySQL 慢查询日志 和 Explain 分析,发现原有代码采用 Java 递归逐层查库,产生严重 N+1 问题,5层 BOM 展开需执行 31 次 SQL,总耗时 2300ms。
我的方案:
将递归逻辑从 Java 层 下沉到数据库层,使用 MySQL 8.0 的 WITH RECURSIVE 递归 CTE 语法,一条 SQL 完成全层级查询。
在 MyBatis-Plus 中自定义 ResultMap,将扁平结果集映射为树形结构。
成果:SQL 执行次数从 31 次降为 1 次,接口响应时间从 2300ms 降至 85ms,生产环境 CPU 使用率下降约 15%。
2. 多租户数据隔离方案(后端参与设计)
业务需求:不同租户(子公司)数据必须严格隔离,且开发阶段业务代码不能感知租户逻辑。
我的方案:
表结构统一增加 tenant_id 字段。
利用 MyBatis-Plus 拦截器,在 SQL 执行前动态拼接 WHERE tenant_id = ? 条件。
配合 ThreadLocal 从当前登录用户上下文获取租户ID,实现 DAO 层代码零侵入。
成果:上线以来 0 起跨租户数据泄露事故,且新业务模块开发效率提升约 30%(无需重复写租户过滤代码)。
3. 前端大数据表格渲染(前端主导)
问题:库存流水日志超 1500万行,后端已分页返回,但单页 500 条渲染 Element Plus 原生表格仍会出现明显卡顿。
我的方案:引入 VXE Table 虚拟滚动,仅渲染可视区域的 DOM 节点。封装通用 DataGrid 组件供团队复用。
成果:表格首屏渲染从 1.5s 降至 200ms,滚动帧率稳定 60fps。




评论