Appearance
数据模型集成设计
**本文引用的文件** - [device.sql](file://docs/ddl/device.sql) - [store.sql](file://docs/ddl/store.sql) - [workflow.sql](file://docs/ddl/workflow.sql) - [SysDictDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/entity/SysDictDo.java) - [DepartmentDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/entity/DepartmentDo.java) - [FactoryDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/entity/FactoryDo.java) - [DeviceMainMapper.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/java/com/lenovo/lemes/service/dm/device/mapper/DeviceMainMapper.java)目录
引言
本设计文档聚焦于DeviceMate跨模块数据模型集成,围绕“设备管理”与“仓储管理”的数据关联关系展开,明确设备与物料的对应关系、维护工单与库存变更的联动机制、设备报废与库存处置的业务流程;同时解析共享实体(用户、组织机构、字典等)在多模块中的统一建模与一致性保障,并给出数据一致性、事务边界与并发控制策略、数据迁移与版本升级兼容性以及数据同步机制的完整方案。
项目结构
- 后端采用微服务分层:公共模块提供共享实体与通用能力,设备模块负责设备全生命周期数据,仓储模块负责物料与库存数据,工作流模块提供审批与流程能力。
- 前端采用多页面应用(uni-app),通过统一的API网关与后端交互。
- 数据层以PostgreSQL为主,DDL位于docs/ddl目录,包含设备、仓储、工作流三类核心表结构。
图表来源
章节来源
核心组件
- 共享实体(公共模块)
- sys_dict:系统字典,支撑设备与仓储的枚举与状态码统一管理。
- sys_department:组织机构,承载部门维度的归属关系。
- sys_factory:工厂维度,作为跨模块的组织与权限域标识。
- 设备模块
- 设备主数据与关联物料:设备与物料存在直接或间接关联(如备件、易损件),通过设备主数据与物料主数据建立映射。
- 维修/保养工单:触发库存消耗或入库,形成库存流水。
- 仓储模块
- 物料主数据:part_main,作为库存核算与成本统计的基础。
- 库存流水与单据:入库、出库、转移、盘点、报废等单据驱动库存变动。
- 工作流模块
- 审批流程:覆盖维修/报废/转移等关键业务的审批链路,确保合规与可追溯。
章节来源
架构总览
跨模块数据模型集成的关键在于:
- 设备与物料的关联:设备主数据中记录关键部件编码,与part_main建立一对一或多对一映射。
- 维修工单与库存联动:维修/保养工单执行时,根据BOM消耗库存,生成出库单据与库存流水。
- 报废与处置:设备报废单据经审批后,触发物料报废单据,减少库存并产生处置成本。
- 共享实体:sys_user/sys_organization/sys_dictionary在各模块复用,统一字典值与组织层级。
图表来源
- device.sql:384-481
- store.sql:384-481
- workflow.sql:1-70
- SysDictDo.java:1-53
- DepartmentDo.java:1-27
- FactoryDo.java:1-43
详细组件分析
设备与物料的对应关系
- 设备主数据(device_main)与物料主数据(part_main)通过“关键部件编码”建立关联,实现设备与物料的一对一或多对一映射。
- 关联字段建议:
- device_main.part_code → part_main.part_code
- device_main.factory_no → part_main.factory_no
- 关联查询示例路径参考:
图表来源
章节来源
维护工单与库存变更的联动机制
- 维修/保养工单执行时,依据BOM消耗库存,生成出库单据与库存流水。
- 关键流程:
- 创建工单并选择所需物料;
- 执行工单时触发库存扣减;
- 记录库存流水与单据号,支持追溯。
- 单据类型与表结构参考:
- 出库单据:参考仓储模块的出库相关表(如store_out_orders及其明细)。
- 库存流水:stock_detail。
- 审批联动:工作流模块的flow_audit_log记录审批状态与业务单号。
图表来源
章节来源
设备报废与库存处置的业务流程
- 设备报废需经审批,审批通过后生成物料报废单据,减少库存并计入处置成本。
- 关键表:
- 报废单据:part_scrap_orders 及其明细 part_scrap_order_detail。
- 审批记录:workflow.flow_audit_log。
- 流程示意:
图表来源
章节来源
共享实体设计原理
- sys_dict:统一字典值与层级,支撑设备状态、物料控制类型、流程节点类型等跨模块枚举。
- sys_department:组织机构树形结构,承载设备与工单的部门归属。
- sys_factory:工厂维度,作为跨模块的组织域与权限域标识。
图表来源
章节来源
依赖分析
- 设备模块依赖仓储模块的物料主数据与库存流水,用于BOM消耗与库存扣减。
- 仓储模块依赖工作流模块的审批记录,用于单据审批状态与业务单号的关联。
- 公共模块提供共享实体(字典、部门、工厂),被设备、仓储、工作流共同引用。
图表来源
- device.sql:1-3132
- store.sql:1-3132
- workflow.sql:1-564
- SysDictDo.java:1-53
- DepartmentDo.java:1-27
- FactoryDo.java:1-43
章节来源
性能考虑
- 查询优化
- 在高频查询字段(如part_code、device_no、factory_no)建立索引,避免全表扫描。
- 分页查询与条件过滤结合,避免一次性加载大量数据。
- 写入优化
- 批量写入库存流水与单据明细,降低事务开销。
- 对库存扣减与审批状态更新进行原子化处理,减少锁竞争。
- 缓存策略
- 将常用字典值与工厂/部门信息缓存至本地,减少跨模块调用。
- 并发控制
- 使用数据库行级锁或乐观锁,确保库存扣减与状态更新的原子性。
- 对关键业务(如报废审批)设置分布式锁,防止重复提交。
故障排查指南
- 审批状态不一致
- 检查工作流审计日志表,确认business_order_no与业务单据号一致。
- 核对flow_audit_log中的audit_status与业务状态机是否匹配。
- 库存异常
- 对照出入库单据与库存流水,检查是否存在漏记或重复记账。
- 核对part_scrap_orders与part_scrap_order_detail的数量一致性。
- 组织/字典错误
- 确认sys_department与sys_dict的父子关系与dictLevel是否正确。
- 验证factory_no与deptNo/areaNo等维度字段的一致性。
章节来源
结论
通过统一的共享实体与清晰的业务流程设计,DeviceMate实现了设备与仓储的紧密耦合与可追溯性。依托工作流模块的审批能力与数据库层面的事务与并发控制,系统在保证数据一致性的同时,满足了跨模块协同与扩展需求。后续可在缓存与批量处理方面进一步优化性能,并完善监控与告警体系以提升可观测性。
附录
- 数据迁移策略
- 采用数据库版本管理工具(如Liquibase)进行DDL变更与数据迁移。
- 迁移脚本按模块拆分,先迁移公共表,再迁移设备与仓储表,最后迁移工作流表。
- 迁移前进行数据备份与校验,迁移后执行一致性检查。
- 版本升级兼容性
- 新增字段采用默认值与非空约束分离策略,避免破坏现有业务。
- 对历史数据进行补丁式填充,确保旧数据与新逻辑兼容。
- 数据同步机制
- 对于跨模块关键数据(如设备与物料),采用事件驱动或消息队列进行最终一致性同步。
- 对实时性要求高的场景(如库存扣减),采用直连数据库的本地事务保证强一致。