Files
SMT-ERP/README.md
yuanh 27eaa65c46 上传文件至「/」
init smt erp project
2026-10-13 11:59:58 +04:00

7.3 KiB
Raw Blame History

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> 为准。

业务规划

第一阶段:核心业务闭环

  1. 销售管理:客户、报价、TNB/二级市场订单、交货计划、发货、签收、销售对账。
  2. 采购管理:总部调拨申请与接收、本地包材采购、供应商、采购入库和对账。
  3. 生产管理:包装 BOM、包装工单、领料、生产报工、质检、完工入库和生产进度。
  4. 仓储管理:多仓库、入库、出库、批次、序列号、库存账、库存预警、盘点和库存规划。
  5. 审批与数据互通:接入钉钉国际版审批,并规划 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 人员共同负责部署和日常维护,总部系统信息部提供架构、集成和技术支持。

生产部署至少应完成:

  1. 准备 Java 11 运行环境、MySQL、Redis 和 Web 服务器/反向代理。
  2. 初始化数据库并按发布版本执行升级脚本。
  3. 使用生产数据库、Redis、文件目录和外部接口配置替换示例配置。
  4. 配置前端静态文件、后端服务、反向代理、备份和日志轮转。
  5. 上线前验证登录、权限、库存、单据、审批回调和数据同步链路。

组织与协作

SMT 当前组织包括财务部、市场部、技术部、生产部和行政部门,系统权限设计需结合部门、岗位、仓库和数据范围进行隔离。

  • SMT 项目管理:Hafiz
  • SMT 开发、需求收集和日常运维:Aziman
  • SMT 机房、网络和部署支持:Haslim
  • 总部架构、核心模块、钉钉国际版集成和技术支持:总部系统信息部
  • 需求提交渠道:Reallin 售后服务平台

版本与状态

当前仓库是 SMT-ERP 的开发基线,已包含现有进销存、财务、生产、报表、系统管理等基础代码。需求文档中的钉钉国际版审批、SMT 与 Reallin 数据互通、完整序列号追溯及第二阶段内部信息化能力,按项目迭代计划逐步建设。

需求依据:SMT(马来西亚)ERP 系统需求文档 v1.7(2026-08-21)。

许可证

本项目遵循 Apache License 2.0,详见 LICENSE。