inventory.sql 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. -- 设备商品库存表
  2. CREATE TABLE IF NOT EXISTS `t_device_inventory` (
  3. `id` BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)',
  4. `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID(SN号)',
  5. `product_id` BIGINT NOT NULL COMMENT '商品ID(本地)',
  6. `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码(哈哈平台code)',
  7. `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称(冗余)',
  8. `stock` INT NOT NULL DEFAULT 0 COMMENT '当前库存数量',
  9. `shelf_num` INT DEFAULT NULL COMMENT '所在货架层号',
  10. `position` VARCHAR(20) DEFAULT NULL COMMENT '货道位置(left/right)',
  11. `warning_threshold` INT DEFAULT 5 COMMENT '库存预警阈值',
  12. `standard_stock` INT DEFAULT 0 COMMENT '标准库存(来自层模版汇总)',
  13. `last_restock_time` DATETIME DEFAULT NULL COMMENT '最后补货时间',
  14. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  15. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  16. `version` INT DEFAULT 0 COMMENT '乐观锁版本号',
  17. PRIMARY KEY (`id`),
  18. UNIQUE KEY `uk_device_product` (`device_id`, `product_id`),
  19. INDEX `idx_device_id` (`device_id`),
  20. INDEX `idx_product_id` (`product_id`),
  21. INDEX `idx_stock` (`stock`)
  22. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备商品库存表';
  23. -- 库存变动日志表
  24. CREATE TABLE IF NOT EXISTS `t_inventory_log` (
  25. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  26. `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID',
  27. `product_id` BIGINT NOT NULL COMMENT '商品ID',
  28. `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码',
  29. `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称',
  30. `change_type` TINYINT NOT NULL COMMENT '变动类型:1上货增加,2销售减少,3调整增加,4调整减少,5盘点调整',
  31. `change_quantity` INT NOT NULL COMMENT '变动数量(正数增加,负数减少)',
  32. `before_stock` INT NOT NULL COMMENT '变动前库存',
  33. `after_stock` INT NOT NULL COMMENT '变动后库存',
  34. `order_id` VARCHAR(50) DEFAULT NULL COMMENT '关联订单号(销售时)',
  35. `activity_id` VARCHAR(50) DEFAULT NULL COMMENT '关联活动号',
  36. `operator_id` BIGINT DEFAULT NULL COMMENT '操作人ID',
  37. `operator_name` VARCHAR(100) DEFAULT NULL COMMENT '操作人名称',
  38. `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  39. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  40. PRIMARY KEY (`id`),
  41. INDEX `idx_device_id` (`device_id`),
  42. INDEX `idx_product_id` (`product_id`),
  43. INDEX `idx_change_type` (`change_type`),
  44. INDEX `idx_create_time` (`create_time`),
  45. INDEX `idx_order_id` (`order_id`)
  46. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='库存变动日志表';
  47. -- 上货记录表
  48. CREATE TABLE IF NOT EXISTS `t_stock_record` (
  49. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  50. `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID',
  51. `activity_id` VARCHAR(50) DEFAULT NULL COMMENT '哈哈平台活动号',
  52. `stock_type` TINYINT DEFAULT 1 COMMENT '类型:1上货,2补货',
  53. `stocker_id` BIGINT DEFAULT NULL COMMENT '上货员ID',
  54. `stocker_name` VARCHAR(100) DEFAULT NULL COMMENT '上货员名称',
  55. `stocker_phone` VARCHAR(20) DEFAULT NULL COMMENT '上货员电话',
  56. `total_items` INT DEFAULT 0 COMMENT '上货商品种类数',
  57. `total_quantity` INT DEFAULT 0 COMMENT '上货总数量',
  58. `status` TINYINT DEFAULT 1 COMMENT '状态:1进行中,2已完成,3已取消',
  59. `start_time` DATETIME DEFAULT NULL COMMENT '开始时间',
  60. `end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
  61. `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  62. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  63. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  64. PRIMARY KEY (`id`),
  65. INDEX `idx_device_id` (`device_id`),
  66. INDEX `idx_stocker_id` (`stocker_id`),
  67. INDEX `idx_create_time` (`create_time`),
  68. INDEX `idx_activity_id` (`activity_id`)
  69. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货记录表';
  70. -- 上货记录明细表
  71. CREATE TABLE IF NOT EXISTS `t_stock_record_item` (
  72. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  73. `record_id` BIGINT NOT NULL COMMENT '上货记录ID',
  74. `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID',
  75. `product_id` BIGINT NOT NULL COMMENT '商品ID',
  76. `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码',
  77. `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称',
  78. `shelf_num` INT DEFAULT NULL COMMENT '货架层号',
  79. `quantity` INT NOT NULL COMMENT '上货数量',
  80. `before_stock` INT DEFAULT 0 COMMENT '上货前库存',
  81. `after_stock` INT DEFAULT 0 COMMENT '上货后库存',
  82. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  83. PRIMARY KEY (`id`),
  84. INDEX `idx_record_id` (`record_id`),
  85. INDEX `idx_device_product` (`device_id`, `product_id`)
  86. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货记录明细表';
  87. -- 上货员表
  88. CREATE TABLE IF NOT EXISTS `t_stocker` (
  89. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  90. `name` VARCHAR(100) NOT NULL COMMENT '姓名',
  91. `phone` VARCHAR(20) DEFAULT NULL COMMENT '电话',
  92. `employee_id` VARCHAR(50) DEFAULT NULL COMMENT '工号',
  93. `status` TINYINT DEFAULT 1 COMMENT '状态:1启用,0禁用',
  94. `total_tasks` INT DEFAULT 0 COMMENT '累计任务数',
  95. `last_task_time` DATETIME DEFAULT NULL COMMENT '最后任务时间',
  96. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  97. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  98. PRIMARY KEY (`id`),
  99. INDEX `idx_phone` (`phone`),
  100. INDEX `idx_status` (`status`)
  101. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货员表';
  102. -- ==================== 补货员新表(v2 独立账号体系) ====================
  103. -- 补货员表(替代 t_stocker,独立账号体系)
  104. CREATE TABLE IF NOT EXISTS `t_replenisher` (
  105. `id` BIGINT NOT NULL COMMENT '雪花主键',
  106. `name` VARCHAR(50) NOT NULL COMMENT '姓名',
  107. `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
  108. `employee_id` VARCHAR(50) DEFAULT NULL COMMENT '工号',
  109. `wechat_openid` VARCHAR(100) DEFAULT NULL COMMENT '微信OpenID(扫码绑定时回填)',
  110. `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像',
  111. `status` TINYINT DEFAULT 1 COMMENT '状态:1-启用 0-禁用',
  112. `total_tasks` INT DEFAULT 0 COMMENT '累计任务数',
  113. `last_task_time` DATETIME DEFAULT NULL COMMENT '最后任务时间',
  114. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  115. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  116. PRIMARY KEY (`id`),
  117. INDEX `idx_phone` (`phone`),
  118. INDEX `idx_status` (`status`),
  119. INDEX `idx_wechat_openid` (`wechat_openid`)
  120. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补货员表';
  121. -- 补货员-设备关联表
  122. CREATE TABLE IF NOT EXISTS `t_replenisher_device` (
  123. `id` BIGINT NOT NULL COMMENT '雪花主键',
  124. `replenisher_id` BIGINT NOT NULL COMMENT '补货员ID',
  125. `device_id` VARCHAR(50) NOT NULL COMMENT '设备SN号',
  126. `source` VARCHAR(20) DEFAULT 'MANUAL' COMMENT '绑定来源:MANUAL-手动,QR-扫码绑定,SHOP_INHERIT-门店继承',
  127. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  128. PRIMARY KEY (`id`),
  129. UNIQUE KEY `uk_replenisher_device` (`replenisher_id`, `device_id`),
  130. INDEX `idx_device_id` (`device_id`),
  131. INDEX `idx_replenisher_id` (`replenisher_id`)
  132. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补货员-设备关联表';
  133. -- ==================== 迁移脚本(已存在的数据库执行) ====================
  134. -- 添加 standard_stock 字段(标准库存,来自层模版汇总)
  135. ALTER TABLE `t_device_inventory` ADD COLUMN IF NOT EXISTS `standard_stock` INT DEFAULT 0 COMMENT '标准库存(来自层模版汇总)' AFTER `warning_threshold`;