# erpnext_plm **Repository Path**: fwr567/erpnext_plm ## Basic Information - **Project Name**: erpnext_plm - **Description**: https://gitee.com/fwr567/erpnext_plm/ - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: version-16 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-02 - **Last Updated**: 2026-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ERPNext PLM · 产品全生命周期管理 面向 **ERPNext / Frappe v16** 的企业级 PLM 应用。覆盖从产品主数据、版本、生命周期、 EBOM→MBOM、工艺路线、文档中心、CAD 集成、工程变更、配置管理、供应商工程、集成中枢 到数字主线的完整闭环,界面完整汉化。 > **不修改 ERPNext 任何原生代码。** 与原生对象的所有交互均通过 Custom Field > (统一 `plm_` 前缀)与公开 ORM 接口完成,卸载时自动清理,不影响 ERPNext 升级。 > **使用手册**:[使用手册.md](使用手册.md) —— PLM 工程对象(零件 / 工程 BOM / 工艺路线)与 ERPNext 原生物料、BOM、工艺路线、生产工单、生产计划、库存及财务凭证的集成方式与标准操作流程。 --- ## 一、设计原则 | 原则 | 落地方式 | | --- | --- | | 升级安全 | 不 patch 核心、不覆盖原生 DocType;原生字段一律用 `plm_` 前缀 Custom Field 扩展,且为只读 | | 卸载干净 | `before_uninstall` 移除全部 Custom Field 与痕迹 | | 松耦合 | 审批走 `erpnext_bpm`(未安装时自动降级为内置状态机);第三方库延迟导入 | | 可扩展 | 集成中枢采用「抽取 → 转换 → 校验 → 装载 → 审计 → 重试 → 监控」标准管道 | | 全中文 | 1127 条界面字符串译文 + 中文主数据 + 中文工作台 | --- ## 二、模块架构(12 大模块 / 56 个 DocType) ``` ①产品主数据 ── ②版本引擎 ── ③生命周期引擎 │ │ │ ├──────── ④工程 BOM ────── ⑤工艺路线 │ │ ⑥文档中心 ── ⑦CAD 集成 ⑧工程变更 │ │ ⑨配置管理 ── ⑩供应商工程 ── ⑪集成中枢 └──────────── ⑫数字主线 ────────────┘ ``` | # | 模块 | 核心 DocType | | --- | --- | --- | | 1 | 产品主数据 | Engineering Part / Classification / Material | | 2 | 版本引擎 | PLM Version Scheme / Version History | | 3 | 生命周期引擎 | PLM Lifecycle State / Template / Log | | 4 | 工程 BOM | Engineering BOM / BOM Item / Substitute | | 5 | 工艺路线 | PLM Route / Operation / Resource | | 6 | 文档中心 | PLM Document / Type / Revision Log / Access Log | | 7 | CAD 集成 | PLM CAD System / Metadata / Sync Log | | 8 | 工程变更 | ECR / ECN / Deviation + 影响对象 / 行动项 | | 9 | 配置管理 | PLM Feature / Product Configuration / Variant | | 10 | 供应商工程 | Manufacturer Part / Vendor Part / Compliance / PPAP | | 11 | 集成中枢 | Connector / Transformer / Job / Queue / Log / Alert | | 12 | 数字主线 | PLM Thread Link | --- ## 三、关键能力 ### 版本引擎 - **一版一档**:每个版本是独立单据,`is_latest` 标记当前版本,历史永久可追溯。 - 支持字母(A1→A2→B1)、数字(1.0→1.1→2.0)、改版号(A-0→A-1)三种方案,可自定义跳过字母(默认跳过 I O Q S X Z)。 - 发布态对象强制升主版本;可配置「修订已发布对象必须有 ECN」。 ### 生命周期引擎 状态机与业务对象解耦,状态按 `state_type`(Draft / Working / Review / Released / Frozen / Obsolete)解析, 因此状态名称可自由汉化。默认内置 8 状态 13 流转,安装即用。 若检测到 `erpnext_bpm`,审批类流转自动交由 BPM 引擎驱动。 ### EBOM → MBOM - 递归防环、替代料校验、位号数量一致性校验、多级展开与汇总用量。 - EBOM 一键克隆为 MBOM;发布时按配置自动生成 ERP `Item` / `BOM` / `Routing`。 ### 工程变更 ECR → 审批 → ECN → 实施。实施时按「影响对象 × 变更动作」矩阵自动执行: | 变更动作 | 执行操作 | | --- | --- | | Modify / Replace | 创建新版本(可选自动发布) | | Delete / Obsolete | 置为作废 | | Add | 记录为人工步骤 | | No Change | 不处理 | ### 集成中枢 支持 REST / SOAP / Webhook / 数据库 / 文件(SFTP·CSV·Excel) / 消息队列(Kafka·RabbitMQ·RocketMQ·MQTT·Redis)。 内置游标增量同步、去重键、Python 转换与校验脚本、失败重试与退避、死信队列、告警通知。 ### 数字主线 以通用边表 `PLM Thread Link` 记录对象关系,钩子自动捕获原生 `Item` / `BOM` / `Work Order` / `Stock Entry` / `Delivery Note` / `Serial No` 事件, 实现「设计 → 制造 → 交付 → 服务」全链路正反向追溯。 --- ## 四、安装 ```bash cd ~/frappe-bench bench get-app https://gitee.com/fwr567/erpnext_plm --branch version-16 bench --site install-app erpnext_plm bench --site migrate bench build --app erpnext_plm bench --site clear-cache ``` 安装后打开左侧 **PLM** 工作台。将用户语言设为「简体中文」即可获得完整中文界面。 ### 卸载 ```bash bench --site uninstall-app erpnext_plm ``` 卸载会自动清除全部 `plm_` Custom Field,不在 ERPNext 原生对象上留下任何痕迹。 --- ## 五、安装后自动创建的主数据 | 类型 | 内容 | | --- | --- | | 角色 | PLM Manager / Engineer / User / Document Controller / Change Board / Integration Manager | | 生命周期状态 | 草稿 · 设计中 · 样机验证 · 评审中 · 已批准 · 已发布 · 已冻结 · 已作废 | | 生命周期模板 | 标准零件 / BOM / 文档 / 工艺路线 生命周期 | | 版本方案 | 标准字母版本 A1(默认)· 数字版本 1.0 · 改版号 A-0 | | 文档类型 | 二维图纸 · 三维模型 · 装配模型 · 技术规范 · 试验报告 · 作业指导书 · 检验规程 · 产品规格书 · 合规证书 · 产品图片 · 视频文件 · 数控程序 | | CAD 系统 | Creo · SolidWorks · Inventor · NX · CATIA · AutoCAD(默认停用) | | 零件分类 | 机械件 · 电气件 · 电子件 · 软件 · 原材料 · 标准件 · 包装件 | | 工程材料 | Q235 · SS304 · AL6061 · 紫铜 T2 · ABS · PC · PA66 · NBR | --- ## 六、对原生对象的扩展字段 全部为只读 Custom Field,前缀 `plm_`: | 原生 DocType | 扩展字段 | | --- | --- | | Item | `plm_engineering_part` `plm_version` `plm_lifecycle_state` `plm_classification` | | BOM / BOM Item | `plm_engineering_bom` `plm_bom_version` `plm_find_number` `plm_reference_designator` | | Routing / Work Order | `plm_route` `plm_route_version` | | Serial No | `plm_engineering_part` `plm_as_built_version` `plm_as_built_bom` | | Supplier / Manufacturer | `plm_vendor_part_count` `plm_compliance_status` | | Purchase Order Item / Sales Order Item | `plm_engineering_part` `plm_version` | | Quality Inspection | `plm_route_operation` | --- ## 七、定时任务 | 频率 | 任务 | | --- | --- | | 每 5 分钟 | 定时连接器调度 · 集成队列处理 | | 每小时 | CAD 系统轮询 | | 每天 | 版本有效性生效/失效 · 逾期变更行动项升级 · 合规到期提醒 | | 每天(长任务) | 集成日志清理 · 文档校验和核验 | --- ## 八、开发者接口 ```python # 创建新版本 from erpnext_plm import version_engine version_engine.create_revision("Engineering Part", "P-00001", level="Minor") # 生命周期流转 from erpnext_plm import lifecycle lifecycle.run_transition(doc, action="提交评审") # 数字主线 from erpnext_plm.digital_thread import record_link, trace record_link("Engineering Part", part, "Item", item, "Releases To") trace("Engineering Part", part, depth=3) ``` CAD 端可直接调用白名单接口推送元数据: ``` POST /api/method/erpnext_plm.cad.push_metadata { "cad_system": "Creo Parametric", "payload": { "cad_no": "...", ... } } ``` --- ## 九、许可 MIT License · © 2026 fwr567