Appearance
数据库设计
**本文引用的文件** - [device.sql](file://docs/ddl/device.sql) - [store.sql](file://docs/ddl/store.sql) - [workflow.sql](file://docs/ddl/workflow.sql) - [README.md](file://lemes-cloud/lemes-business-devicemate/README.md) - [AGENTS.md](file://lemes-cloud/lemes-business-devicemate/AGENTS.md) - [FrameworkController.java](file://lemes-cloud/lemes-framework/lemes-framework-datasource/src/main/java/com/lenovo/lemes/datasource/api/FrameworkController.java) - [OpenApiController.java](file://lemes-cloud/lemes-framework/lemes-framework-datasource/src/main/java/com/lenovo/lemes/datasource/api/OpenApiController.java) - [DataBaseAdapterService.java](file://lemes-cloud/lemes-framework/lemes-framework-datasource/src/main/java/com/lenovo/lemes/datasource/adapter/DataBaseAdapterService.java) - [MaintenancePlansMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/device/MaintenancePlansMapper.java)目录
简介
本文件为 DeviceMate 项目的数据库设计文档,聚焦设备管理相关的数据库表结构与业务实体,涵盖设备台账、维护计划、工单流程、库存管理等核心领域。文档从数据模型、关系与索引策略、规范化与性能优化、扩展性规划、迁移与一致性保障等方面进行系统化阐述,并提供 DDL 脚本与数据字典参考,帮助数据库管理员与后端开发者高效落地与运维。
项目结构
DeviceMate 采用多模块微服务架构,数据库层面以“设备”“仓储”“流程”三大域划分,分别对应设备域的台账与维护、仓储域的库存与出入库、流程域的审批与任务编排。各服务通过动态数据源路由实现按租户/业务域隔离的数据访问。
图表来源
章节来源
核心组件
本节梳理与设备管理密切相关的数据库表与职责边界,重点覆盖以下主题:
- 设备域:线体/制程/产品线/机型、库存台账与明细、盘点与KPI统计
- 仓储域:物料主数据、库区库位、入库单据与明细、胶水场景、个人借还/调拨/报损、挪用归还
- 流程域:流程配置、节点配置、流程日志与审计、用户与角色
章节来源
架构概览
DeviceMate 的数据库层由 PostgreSQL 提供支撑,通过动态数据源框架实现多租户/多域隔离访问。框架层提供数据源枚举与适配器,支持不同数据库类型的差异化处理;业务层通过 MyBatis-Plus Mapper 访问具体域的数据源。
图表来源
- FrameworkController.java:32-48
- OpenApiController.java:411-429
- DataBaseAdapterService.java:27-46
- MaintenancePlansMapper.java:14-15
详细组件分析
设备域:线体/制程/产品线/机型
- 线体(line):承载产线信息,含工厂/产线/制程/有效性等字段,支持逻辑删除。
- 制程(process):定义制程维度,用于设备与工艺关联。
- 产品线(product_line):产品线维度,支撑库存与统计。
- 机型(product_model):机型维度,绑定产品线与品牌。
图表来源
章节来源
设备域:库存台账与明细
- 库存台账(stock_main):按台账维度聚合库存数量,含仓库/库区/库位/物料/产品线等。
- 库存明细(stock_detail):按序列号/箱号/包装等细粒度记录,支持有效期、寿命数、冻结数量等。
- 盘点单(stock_check_orders)与明细(stock_check_detail):支持盘点执行、差异记录与结果入账。
- KPI与价值统计(stock_kpi_statistics/stock_value_statistics):按工厂/仓库/产品线统计成本与产出。
图表来源
章节来源
仓储域:物料主数据与安全库存
- 物料主数据(part_main):物料编码/名称/规格/UOM/控制类型/价格/有效期/寿命等关键属性。
- 安全库存(safe_stock):按工厂/仓库/物料设定上下限与安全库存阈值。
图表来源
章节来源
仓储域:库区库位与库存结构
- 库区(store_area):仓库下的库区划分,含类型与位置。
- 库位(store_bin):库区下的具体储位,含类型与位置。
- 通过上述层级与库存台账/明细形成完整的仓储定位与数量管理。
图表来源
章节来源
仓储域:入库与胶水场景
- 入库单据:入库单(store_in_orders)与明细(store_in_order_detail),支持序列号/箱号/包装/单价/有效期/寿命数/PO/PR/借用单等。
- 锡膏胶水场景:基础属性(paste_glue_base)、入库(paste_glue_in_order)、入库明细(paste_glue_in_order_detail)、库存(paste_glue_store)、过站记录(paste_glue_station_records)。
图表来源
- store.sql:2367-2393
- store.sql:2269-2365
- store.sql:608-688
- store.sql:865-902
- store.sql:690-723
- store.sql:784-797
章节来源
- store.sql:2367-2393
- store.sql:2269-2365
- store.sql:608-688
- store.sql:865-902
- store.sql:690-723
- store.sql:784-797
仓储域:个人借还/调拨/报损与挪用归还
- 个人借还:申请/借用订单(personal_apply_borrow_orders)与明细(personal_apply_borrow_order_detail)。
- 个人归还:归还订单(personal_part_return_orders)与明细(personal_part_return_order_detail)。
- 个人调拨:调拨订单(personal_transfer_orders)与明细(personal_transfer_order_detail)。
- 个人报损:报损订单(personal_report_damage_orders)与明细(personal_report_damage_order_detail)。
- 个人物料清单(personal_part_store):按用户/仓库/库区/库位/物料聚合持有数量与有效期。
- 挪用归还记录(store_borrow_give_back_record):跨产线/仓库的物料挪用与归还追踪。
图表来源
- store.sql:1024-1104
- store.sql:973-1022
- store.sql:1159-1215
- store.sql:1106-1157
- store.sql:1497-1562
- store.sql:1436-1493
- store.sql:1372-1431
- store.sql:1305-1367
- store.sql:1217-1300
- store.sql:2216-2267
章节来源
- store.sql:1024-1104
- store.sql:973-1022
- store.sql:1159-1215
- store.sql:1106-1157
- store.sql:1497-1562
- store.sql:1436-1493
- store.sql:1372-1431
- store.sql:1305-1367
- store.sql:1217-1300
- store.sql:2216-2267
流程域:流程配置与审计
- 流程配置(flow_business_config/flow_node_config):业务码到流程图映射与节点顺序。
- 流程日志与审计(flow_log/flow_audit_log):流程推进与审批轨迹。
- 用户与角色(flow_user/flow_user_role):用户、角色与层级(工厂/部门)。
- 事件与资源(flw_* 表族):Flowable 引擎的事件、通道、批处理等元数据。
图表来源
- workflow.sql:111-146
- workflow.sql:276-325
- workflow.sql:198-274
- workflow.sql:1-70
- workflow.sql:327-363
- workflow.sql:365-411
章节来源
- workflow.sql:111-146
- workflow.sql:276-325
- workflow.sql:198-274
- workflow.sql:1-70
- workflow.sql:327-363
- workflow.sql:365-411
工单流程:设备维护与维修
- 维护计划:通过作业调度器访问设备域数据源,执行周期性维护任务。
- 工单流程:结合流程域的节点配置与审计日志,实现审批与执行闭环。
图表来源
章节来源
依赖分析
- 服务间依赖:设备域与仓储域通过物料主数据与库存台账建立强关联;流程域为设备/仓储相关单据提供审批与审计能力。
- 数据依赖:个人借还/调拨/报损均依赖个人物料清单(PPS)作为唯一关联;胶水场景依赖基础属性与入库单据形成库存。
- 外部依赖:动态数据源框架负责多租户/多域隔离;Flowable 引擎提供流程编排能力。
图表来源
章节来源
性能考量
- 索引策略
- 统计表(part_cost_statistics/stock_kpi_statistics):对(id)建立索引,提升聚合查询性能。
- 个人物料清单(personal_part_store):对(user_no)建立索引,加速用户资产查询。
- 报损/调拨/归还单据:对(order_no)建立索引,提升单据检索效率。
- 查询模式
- 设备域:按工厂/产品线/机型维度的聚合统计,建议使用物化视图或定期汇总表。
- 仓储域:高频的库存明细与出入库明细,建议按仓区/库位/物料维度分区或分表。
- 写入优化
- 入库/出库/调拨批量写入,减少事务粒度;对序列(seq)设置合理上限,避免溢出。
- 缓存与异步
- 常用字典(如控制类型/ABC分类)可缓存;流程日志与审计可异步落库。
故障排查指南
- 数据源枚举
- 通过框架控制器列举可用数据源,确认当前主数据源与租户映射。
- 表结构查询
- 通过开放接口查询指定数据源下的表结构,辅助诊断字段缺失或版本不一致问题。
- 数据库类型适配
- 适配器根据驱动名区分数据库类型,确保 SQL 语法兼容性。
- 日志与审计
- 流程日志与审计日志记录关键节点与审批轨迹,便于回溯与定位问题。
章节来源
结论
DeviceMate 的数据库设计围绕“设备+仓储+流程”三大域展开,通过清晰的实体划分、严格的逻辑删除与索引策略、以及动态数据源隔离,实现了高内聚低耦合的数据架构。配合流程域的审批与审计能力,能够满足设备管理从台账到工单、从库存到胶水场景的全链路需求。建议在生产环境中持续完善分区/分表、缓存与异步化策略,并加强变更管控与一致性校验。
附录
- DDL 脚本
- 设备域 DDL:device.sql
- 仓储域 DDL:store.sql
- 流程域 DDL:workflow.sql
- 数据字典
- 设备域:线体/制程/产品线/机型、库存台账/明细、盘点与KPI统计
- 仓储域:物料主数据/安全库存、库区库位、入库单据与明细、胶水场景、个人借还/调拨/报损、挪用归还
- 流程域:流程配置/节点、流程日志/审计、用户/角色、事件与资源
- 迁移与一致性
- 使用 Liquibase/Flyway 等工具管理 DDL 版本;对关键表增加唯一约束与外键,确保数据一致性。
- 对历史数据进行清洗与归档,保留审计轨迹;对序列进行容量评估与滚动重置策略。