ERP系统 - http://47.104.0.159/portal/portal产品系统

我要开发同款
proginn16333318312026年05月06日
11阅读

技术信息

语言技术
JavaNginxMavenVueTypeScript
系统类型
WebWindows
行业分类
工业互联网

作品详情

行业场景

该系统服务于集团型制造企业,日均活跃用户 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。

示例图片

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

评论