7.3 KiB
SMT-ERP
SMT-ERP 是面向瑞银电子马来西亚(SMT)分公司的私有化 ERP 系统,服务于吉隆坡分公司的进销存、生产、财务和内部管理场景。
项目以 SMT 为首个落地试点,面向人员规模不超过 100 人的海外分公司建设,后续可复制到其他海外分公司。系统部署在 SMT 本地机房,核心业务数据由企业自主掌控。
项目目标
围绕“总部生产完成 → 调拨至 SMT → SMT 包装/组装 → 交付客户 → 收款”的业务链路,建立从订单、调拨、库存、生产到财务的闭环管理,解决库存依赖 Excel、审批依赖线下纸质流程以及业务账与财务账不一致等问题。
系统重点支持:
- TNB(马来西亚国家电力公司)订单及二级市场订单管理
- 总部调拨、SMT 本地包材采购和到货管理
- 包装 BOM、生产工单、领料、报工和完工入库
- 批次(LOT NO)与电表序列号(S/N From - S/N To)全流程追溯
- 销售出库、客户签收、应收应付、成本核算和财务报表
- 钉钉国际版审批集成,以及 SMT 与 Reallin 的数据互通
当前项目结构
SMT_ERP/
├── smtERP-boot/ # Java 后端服务
│ ├── src/main/java/ # 控制器、业务逻辑、数据访问和系统配置
│ ├── src/main/resources/
│ │ ├── application.yml
│ │ └── mapper_xml/ # MyBatis XML 映射
│ └── docs/ # 初始化及数据库升级脚本
├── smtERP-web/ # Web 前端
│ ├── src/api/ # 后端接口封装
│ ├── src/views/ # 业务页面
│ └── src/components/ # 通用组件
├── LICENSE
└── README.md
技术架构
| 层级 | 当前实现 |
|---|---|
| 前端 | Vue 2.7.16、Vue Router 3、Vuex 3、Ant Design Vue 1.5.2、Axios |
| 后端 | Java 11、Spring Boot 2.0.0.RELEASE、Maven |
| 持久层 | MyBatis-Plus 3.0.7.1、MyBatis XML Mapper |
| 数据库 | MySQL 8.0.33 驱动,默认数据库名 jsh_erp |
| 缓存 | Redis |
| 接口文档 | Springfox Swagger 2.7.0、Swagger Bootstrap UI |
| 部署 | SMT 本地机房私有化部署,可运行于 Windows 或 Linux |
需求文档规划的 Vue 3 属于后续技术演进方向;当前仓库前端仍以 Vue 2.7.16 为准。后端编译版本以
smtERP-boot/pom.xml中的<java.version>11</java.version>为准。
业务规划
第一阶段:核心业务闭环
- 销售管理:客户、报价、TNB/二级市场订单、交货计划、发货、签收、销售对账。
- 采购管理:总部调拨申请与接收、本地包材采购、供应商、采购入库和对账。
- 生产管理:包装 BOM、包装工单、领料、生产报工、质检、完工入库和生产进度。
- 仓储管理:多仓库、入库、出库、批次、序列号、库存账、库存预警、盘点和库存规划。
- 审批与数据互通:接入钉钉国际版审批,并规划 SMT 与 Reallin 的业务数据同步。
第二阶段:内部信息化管理
将当前线下 Excel 管理内容逐步搬到线上,覆盖考勤、请假、培训、资产、费用及其他内部管理事项。
财务与合规重点
- 以人民币作为主要结算币种,同时支持本地采购使用 MYR(马来西亚林吉特)记录。
- 财务年度为每年 3 月 1 日至次年 3 月 31 日。
- 支持应收、应付、总账、费用、成本、发票和资产负债表/利润表等报表。
- 财务核算遵循马来西亚当地业务要求,预留 MFRS、SST 及电子发票相关能力。
- 发票录入需满足清关及货运文件齐全等前置条件,并支持跨期入账和电子发票提交时间窗口控制。
开发环境
- JDK 11
- Maven 3.6+(以本机 Maven 版本为准)
- Node.js 及 npm/yarn
- MySQL 8.0+
- Redis 6.x+
- IntelliJ IDEA 或其他 Java IDE
本地运行
1. 初始化数据库
创建 MySQL 数据库后,执行:
smtERP-boot/docs/jsh_erp.sql
后续升级脚本按版本和实际需求执行,数据库升级记录见 smtERP-boot/docs/。
2. 配置后端
编辑 smtERP-boot/src/main/resources/application.yml,至少确认以下配置:
- MySQL 地址、数据库名、用户名和密码
- Redis 地址、端口和密码
- 文件上传目录及目录权限
- 服务端口和上下文路径
请勿在生产环境直接使用仓库中的示例密码,并避免将真实密码提交到 Git。
3. 启动后端
cd smtERP-boot
mvn spring-boot:run
后端默认地址:http://localhost:27210/jshERP-boot
4. 启动前端
cd smtERP-web
npm install
npm run serve
前端开发地址:http://localhost:27200。开发服务器会将 /jshERP-boot 请求代理到 http://localhost:27210。
SMT 其他入库同步
外部平台可调用 POST /jshERP-boot/smtInbound/sync,请求头为
Content-Type: application/json,请求体示例:
[
{
"docNo": "SM2503070001",
"businessDate": "2025-03-07 00:00:00.000",
"materialCode": "C.4.T.0.00562",
"materialName": "MD-4GVIII(VB)",
"specification": "MD-4GVIII(VB)",
"qtyPriceAmount": 50,
"finallyPrice": "324",
"totalNetMoney": "14336.280000000",
"totalMoney": "16200.000000000",
"sourceDocNo": "SH2503070002"
}
]
接口按 docNo 去重:未审核单据会被整单覆盖,已审核单据会跳过,并在
auditedDocNos 中返回冲突单号。Excel 导入使用同一规则。其他入库审核通过时,
系统以 materialCode 作为 ERP 条码创建或更新商品,并将库存写入“成品仓库”。
5. 构建
cd smtERP-web
npm run build
cd ../smtERP-boot
mvn clean package
构建生成的 target/、dist/、压缩包、node_modules/ 和运行日志不会纳入版本库。
部署说明
系统采用 SMT 本地机房部署模式,建议由 SMT 开发与 IT 人员共同负责部署和日常维护,总部系统信息部提供架构、集成和技术支持。
生产部署至少应完成:
- 准备 Java 11 运行环境、MySQL、Redis 和 Web 服务器/反向代理。
- 初始化数据库并按发布版本执行升级脚本。
- 使用生产数据库、Redis、文件目录和外部接口配置替换示例配置。
- 配置前端静态文件、后端服务、反向代理、备份和日志轮转。
- 上线前验证登录、权限、库存、单据、审批回调和数据同步链路。
组织与协作
SMT 当前组织包括财务部、市场部、技术部、生产部和行政部门,系统权限设计需结合部门、岗位、仓库和数据范围进行隔离。
- SMT 项目管理:Hafiz
- SMT 开发、需求收集和日常运维:Aziman
- SMT 机房、网络和部署支持:Haslim
- 总部架构、核心模块、钉钉国际版集成和技术支持:总部系统信息部
- 需求提交渠道:Reallin 售后服务平台
版本与状态
当前仓库是 SMT-ERP 的开发基线,已包含现有进销存、财务、生产、报表、系统管理等基础代码。需求文档中的钉钉国际版审批、SMT 与 Reallin 数据互通、完整序列号追溯及第二阶段内部信息化能力,按项目迭代计划逐步建设。
需求依据:SMT(马来西亚)ERP 系统需求文档 v1.7(2026-08-21)。
许可证
本项目遵循 Apache License 2.0,详见 LICENSE。