Skip to content

仓储管理数据库架构

**本文档引用的文件** - [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)

目录

  1. 项目概述
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

项目概述

本仓储管理数据库架构文档详细描述了设备管理模块中的仓储管理系统设计。该系统涵盖了物料主数据管理、库存控制、入库出库操作以及调拨转移等功能。系统采用分层架构设计,通过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)

物料主数据表是仓储管理的核心基础表,负责存储所有物料的基本信息:

图表来源

字段详细说明:

字段名类型含义默认值
idbigint自增IDnextval('store.part_main_id_seq')
factory_novarchar(20)工厂代号必填
part_novarchar(20)物料代号必填,唯一
part_codevarchar(50)物料编码必填
part_namevarchar(100)物料名称必填
specvarchar(100)物料规格
uomvarchar(20)单位
control_typesmallint控制类型必填
pricenumeric(10,3)价格必填
is_periodsmallint是否有效期件
is_lifesmallint是否寿命件
max_lifenumeric(10,1)最大寿命值
serial_rulesmallint序列号生成规则1(自动生成)

章节来源

库存主表 (stock_main)

库存主表用于维护每个仓库、库区、库位下物料的总体库存情况:

图表来源

字段详细说明:

字段名类型含义默认值
idbigint自增IDnextval('store.stock_main_id_seq')
main_novarchar(20)台账代号必填,唯一
store_novarchar(20)仓库代号必填
store_area_novarchar(20)库区代号必填
store_bin_novarchar(20)库位代号必填
part_novarchar(20)物料代号必填
stock_numberbigint库存总数量必填
in_stock_numberbigint在库库存必填
stock_other_numberbigintLSSC库存总数必填

章节来源

入库单表 (store_in_orders)

入库单表记录所有物料入库的操作信息:

图表来源

字段详细说明:

字段名类型含义默认值
idbigint自增IDnextval('store.store_in_orders_id_seq')
store_in_order_novarchar(20)入库单号必填,唯一
store_in_typesmallint入库类型必填
store_in_statussmallint入库状态必填
store_novarchar(20)仓库代号
excutorvarchar(20)执行人
borrow_uservarchar(20)借用人
return_order_novarchar(20)归还单号

章节来源

出库单表 (store_out_orders)

出库单表记录所有物料出库的操作信息:

图表来源

字段详细说明:

字段名类型含义默认值
idbigint自增IDnextval('store.store_out_orders_id_seq')
store_out_order_novarchar(20)出库单号必填,唯一
store_out_typesmallint出库类型
store_out_statussmallint出库状态
store_out_uservarchar(20)出库责任人账号
applicant_namevarchar(20)申请人姓名
apply_total_numberbigint申请总数量
store_out_total_numberbigint出库总数量
personal_application_order_novarchar(20)个人借用领用申请单号

章节来源

调拨单表 (store_transfer_orders)

调拨单表记录物料在不同仓库之间的转移操作:

图表来源

字段详细说明:

字段名类型含义默认值
idbigint主键IDnextval('store.store_transfer_order_id_seq')
transfer_order_novarchar(20)调拨单号必填,唯一
transfer_statussmallint调拨状态
out_store_novarchar(20)出库仓库代号必填
in_store_novarchar(20)入库仓库代号必填
transfer_uservarchar(20)调拨人账号必填
recipient_uservarchar(20)接收人账号必填
transfer_reasonvarchar(255)调拨原因

章节来源

库存明细表 (stock_detail)

库存明细表详细记录每个物料的具体库存信息:

图表来源

字段详细说明:

字段名类型含义默认值
idbigint自增IDnextval('store.stock_detail_id_seq')
main_novarchar(20)台账代号必填
series_numbervarchar(20)序列号
case_numbervarchar(20)箱号
in_stock_numberbigint剩余库存数量
unit_pricenumeric(10,3)单价
useful_lifedate有效期
life_time_countnumeric(10,1)剩余寿命数
blocked_numberbigint冻结数量
is_storesmallint是否在库标识0(在库)
factory_novarchar(20)工厂代号

章节来源

依赖关系分析

仓储管理系统的数据依赖关系体现了业务逻辑的层次结构:

图表来源

章节来源

性能考虑

索引优化策略

仓储管理系统采用了多层次的索引策略来确保查询性能:

  1. 主键索引: 所有表都建立了主键索引,确保唯一性和快速定位
  2. 唯一约束索引: 关键业务字段如单号、物料编号等建立了唯一索引
  3. 复合索引: 针对常用查询组合建立了复合索引,如仓库+物料+库位组合

并发控制策略

系统采用了多种并发控制机制:

  1. 序列化控制: 使用PostgreSQL序列确保主键的唯一性
  2. 事务隔离: 通过数据库事务保证数据一致性
  3. 乐观锁: 在关键业务场景中使用版本号控制并发更新

缓存策略

故障排除指南

常见问题诊断

  1. 库存不一致问题

    • 检查库存明细表与库存主表的数据同步
    • 验证交易记录的完整性
    • 确认序列号生成规则的一致性
  2. 单据状态异常

    • 检查单据状态转换逻辑
    • 验证审批流程的完整性
    • 确认状态字段的默认值设置
  3. 并发冲突问题

    • 检查事务隔离级别设置
    • 验证乐观锁机制的有效性
    • 分析死锁产生的可能场景

数据恢复策略

  1. 备份策略: 定期备份关键业务数据
  2. 审计日志: 启用详细的数据库审计日志
  3. 回滚机制: 实现完善的事务回滚能力

结论

仓储管理数据库架构通过合理的表结构设计、严格的约束管理和完善的索引策略,为设备管理模块提供了稳定可靠的数据支撑。系统采用的分层架构设计使得业务逻辑与数据访问分离,便于维护和扩展。通过序列化控制和事务管理确保了数据的一致性和完整性,为后续的功能扩展奠定了良好的基础。