Appearance
仓储管理数据库架构
**本文档引用的文件** - [store.sql](file://docs/ddl/store.sql) - [StockMainDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StockMainDo.java) - [StockMainVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StockMainVo.java) - [StoreInOrderDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreInOrderDetailDo.java) - [StoreOutDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailDo.java) - [StoreOutDetailVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailVo.java) - [StockMainMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StockMainMapper.java) - [StoreInOrderDetailMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StoreInOrderDetailMapper.java) - [StoreOutOrderDetailMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StoreOutOrderDetailMapper.java) - [StockMainServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/store/impl/StockMainServiceImpl.java) - [StockValueStatisticsServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/store/impl/StockValueStatisticsServiceImpl.java) - [StoreMainDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/StoreMainDo.java) - [StoreOutOrdersDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/StoreOutOrdersDo.java)目录
项目概述
本仓储管理数据库架构文档详细描述了设备管理模块中的仓储管理系统设计。该系统涵盖了物料主数据管理、库存控制、入库出库操作以及调拨转移等功能。系统采用分层架构设计,通过MyBatis-Plus进行数据访问层抽象,实现了完整的仓储业务流程管理。
项目结构
仓储管理模块采用分层架构设计,主要包含以下层次:
图表来源
章节来源
核心组件
数据库表结构概览
仓储管理系统包含30+个核心表,涵盖物料管理、库存控制、交易记录等各个方面。主要表结构包括:
物料主数据相关表
part_main: 物料主数据表,存储物料基本信息manufacturer: 制造商信息表supplier: 供应商信息表uom: 计量单位表
库存管理相关表
stock_main: 库存台账主表stock_detail: 库存明细表personal_part_store: 个人物料清单表
交易记录相关表
store_in_orders: 入库单主表store_in_order_detail: 入库单明细表store_out_orders: 出库单主表store_out_order_detail: 出库单明细表store_transfer_orders: 调拨单主表store_transfer_order_tail: 调拨单明细表
章节来源
架构概览
仓储管理系统的整体架构采用分层设计,实现了业务逻辑与数据访问的分离:
图表来源
详细组件分析
物料主数据表 (part_main)
物料主数据表是仓储管理的核心基础表,负责存储所有物料的基本信息:
图表来源
字段详细说明:
| 字段名 | 类型 | 含义 | 默认值 |
|---|---|---|---|
| id | bigint | 自增ID | nextval('store.part_main_id_seq') |
| factory_no | varchar(20) | 工厂代号 | 必填 |
| part_no | varchar(20) | 物料代号 | 必填,唯一 |
| part_code | varchar(50) | 物料编码 | 必填 |
| part_name | varchar(100) | 物料名称 | 必填 |
| spec | varchar(100) | 物料规格 | |
| uom | varchar(20) | 单位 | |
| control_type | smallint | 控制类型 | 必填 |
| price | numeric(10,3) | 价格 | 必填 |
| is_period | smallint | 是否有效期件 | |
| is_life | smallint | 是否寿命件 | |
| max_life | numeric(10,1) | 最大寿命值 | |
| serial_rule | smallint | 序列号生成规则 | 1(自动生成) |
章节来源
库存主表 (stock_main)
库存主表用于维护每个仓库、库区、库位下物料的总体库存情况:
图表来源
字段详细说明:
| 字段名 | 类型 | 含义 | 默认值 |
|---|---|---|---|
| id | bigint | 自增ID | nextval('store.stock_main_id_seq') |
| main_no | varchar(20) | 台账代号 | 必填,唯一 |
| store_no | varchar(20) | 仓库代号 | 必填 |
| store_area_no | varchar(20) | 库区代号 | 必填 |
| store_bin_no | varchar(20) | 库位代号 | 必填 |
| part_no | varchar(20) | 物料代号 | 必填 |
| stock_number | bigint | 库存总数量 | 必填 |
| in_stock_number | bigint | 在库库存 | 必填 |
| stock_other_number | bigint | LSSC库存总数 | 必填 |
章节来源
入库单表 (store_in_orders)
入库单表记录所有物料入库的操作信息:
图表来源
字段详细说明:
| 字段名 | 类型 | 含义 | 默认值 |
|---|---|---|---|
| id | bigint | 自增ID | nextval('store.store_in_orders_id_seq') |
| store_in_order_no | varchar(20) | 入库单号 | 必填,唯一 |
| store_in_type | smallint | 入库类型 | 必填 |
| store_in_status | smallint | 入库状态 | 必填 |
| store_no | varchar(20) | 仓库代号 | |
| excutor | varchar(20) | 执行人 | |
| borrow_user | varchar(20) | 借用人 | |
| return_order_no | varchar(20) | 归还单号 |
章节来源
出库单表 (store_out_orders)
出库单表记录所有物料出库的操作信息:
图表来源
字段详细说明:
| 字段名 | 类型 | 含义 | 默认值 |
|---|---|---|---|
| id | bigint | 自增ID | nextval('store.store_out_orders_id_seq') |
| store_out_order_no | varchar(20) | 出库单号 | 必填,唯一 |
| store_out_type | smallint | 出库类型 | |
| store_out_status | smallint | 出库状态 | |
| store_out_user | varchar(20) | 出库责任人账号 | |
| applicant_name | varchar(20) | 申请人姓名 | |
| apply_total_number | bigint | 申请总数量 | |
| store_out_total_number | bigint | 出库总数量 | |
| personal_application_order_no | varchar(20) | 个人借用领用申请单号 |
章节来源
调拨单表 (store_transfer_orders)
调拨单表记录物料在不同仓库之间的转移操作:
图表来源
字段详细说明:
| 字段名 | 类型 | 含义 | 默认值 |
|---|---|---|---|
| id | bigint | 主键ID | nextval('store.store_transfer_order_id_seq') |
| transfer_order_no | varchar(20) | 调拨单号 | 必填,唯一 |
| transfer_status | smallint | 调拨状态 | |
| out_store_no | varchar(20) | 出库仓库代号 | 必填 |
| in_store_no | varchar(20) | 入库仓库代号 | 必填 |
| transfer_user | varchar(20) | 调拨人账号 | 必填 |
| recipient_user | varchar(20) | 接收人账号 | 必填 |
| transfer_reason | varchar(255) | 调拨原因 |
章节来源
库存明细表 (stock_detail)
库存明细表详细记录每个物料的具体库存信息:
图表来源
字段详细说明:
| 字段名 | 类型 | 含义 | 默认值 |
|---|---|---|---|
| id | bigint | 自增ID | nextval('store.stock_detail_id_seq') |
| main_no | varchar(20) | 台账代号 | 必填 |
| series_number | varchar(20) | 序列号 | |
| case_number | varchar(20) | 箱号 | |
| in_stock_number | bigint | 剩余库存数量 | |
| unit_price | numeric(10,3) | 单价 | |
| useful_life | date | 有效期 | |
| life_time_count | numeric(10,1) | 剩余寿命数 | |
| blocked_number | bigint | 冻结数量 | |
| is_store | smallint | 是否在库标识 | 0(在库) |
| factory_no | varchar(20) | 工厂代号 |
章节来源
依赖关系分析
仓储管理系统的数据依赖关系体现了业务逻辑的层次结构:
图表来源
章节来源
性能考虑
索引优化策略
仓储管理系统采用了多层次的索引策略来确保查询性能:
- 主键索引: 所有表都建立了主键索引,确保唯一性和快速定位
- 唯一约束索引: 关键业务字段如单号、物料编号等建立了唯一索引
- 复合索引: 针对常用查询组合建立了复合索引,如仓库+物料+库位组合
并发控制策略
系统采用了多种并发控制机制:
- 序列化控制: 使用PostgreSQL序列确保主键的唯一性
- 事务隔离: 通过数据库事务保证数据一致性
- 乐观锁: 在关键业务场景中使用版本号控制并发更新
缓存策略
故障排除指南
常见问题诊断
库存不一致问题
- 检查库存明细表与库存主表的数据同步
- 验证交易记录的完整性
- 确认序列号生成规则的一致性
单据状态异常
- 检查单据状态转换逻辑
- 验证审批流程的完整性
- 确认状态字段的默认值设置
并发冲突问题
- 检查事务隔离级别设置
- 验证乐观锁机制的有效性
- 分析死锁产生的可能场景
数据恢复策略
- 备份策略: 定期备份关键业务数据
- 审计日志: 启用详细的数据库审计日志
- 回滚机制: 实现完善的事务回滚能力
结论
仓储管理数据库架构通过合理的表结构设计、严格的约束管理和完善的索引策略,为设备管理模块提供了稳定可靠的数据支撑。系统采用的分层架构设计使得业务逻辑与数据访问分离,便于维护和扩展。通过序列化控制和事务管理确保了数据的一致性和完整性,为后续的功能扩展奠定了良好的基础。