chore(db): add product brand/alias and brand-level inventory schema

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-07-28 09:16:52 +08:00
1 parent a79dd9f61d
commit 265a4ff4f7
2 files changed
+193 -1

No files matched your search

@@ -0,0 +1,89 @@
-- backend/scripts/migrate_20260727_crm_product_brand_alias.sql
CREATE TABLE IF NOT EXISTS `crm_product_brand` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`brand_name` varchar(100) NOT NULL COMMENT '品牌名称',
`status` char(3) NOT NULL DEFAULT 'on' COMMENT '状态 on/off',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT NULL,
`create_dept_id` varchar(64) NOT NULL DEFAULT '',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`del_flag` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM-产品品牌';
CREATE TABLE IF NOT EXISTS `crm_product_alias` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`alias_name` varchar(200) NOT NULL COMMENT '别名',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
`order_num` int(11) DEFAULT NULL,
`remark` varchar(512) DEFAULT NULL,
`create_by` varchar(64) DEFAULT NULL,
`create_dept_id` varchar(64) NOT NULL DEFAULT '',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`del_flag` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM-产品别名';
ALTER TABLE `crm_quote_product`
ADD COLUMN `brand_mode` varchar(20) DEFAULT NULL COMMENT 'required/any' AFTER `product_name`,
ADD COLUMN `brand_id` varchar(64) DEFAULT NULL COMMENT '指定品牌ID' AFTER `brand_mode`,
ADD COLUMN `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名快照' AFTER `brand_id`;
ALTER TABLE `crm_contract_product`
ADD COLUMN `brand_mode` varchar(20) DEFAULT NULL COMMENT 'required/any' AFTER `product_name`,
ADD COLUMN `brand_id` varchar(64) DEFAULT NULL COMMENT '指定品牌ID' AFTER `brand_mode`,
ADD COLUMN `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名快照' AFTER `brand_id`;
ALTER TABLE `pl_plan_product`
ADD COLUMN `brand_mode` varchar(20) DEFAULT NULL COMMENT 'required/any' AFTER `product_name`,
ADD COLUMN `brand_id` varchar(64) DEFAULT NULL COMMENT '指定品牌ID' AFTER `brand_mode`,
ADD COLUMN `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名快照' AFTER `brand_id`;
CREATE TABLE IF NOT EXISTS `pl_plan_product_brand_qty` (
`id` varchar(64) NOT NULL,
`plan_id` varchar(64) NOT NULL,
`plan_product_id` varchar(64) NOT NULL,
`brand_id` varchar(64) NOT NULL DEFAULT '' COMMENT '空串=无品牌键',
`brand_name` varchar(100) DEFAULT NULL,
`qty` decimal(15,3) NOT NULL DEFAULT '0.000' COMMENT '本品牌归档实际数量',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
`order_num` int(11) DEFAULT NULL,
`remark` varchar(512) DEFAULT NULL,
`create_by` varchar(64) DEFAULT NULL,
`create_dept_id` varchar(64) NOT NULL DEFAULT '',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`del_flag` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_plan_product` (`plan_product_id`),
KEY `idx_plan` (`plan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划产品归档品牌数量';
ALTER TABLE `pl_inventory`
ADD COLUMN `brand_id` varchar(64) NOT NULL DEFAULT '' COMMENT '品牌ID,无品牌为空串' AFTER `product_id`,
ADD COLUMN `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称' AFTER `brand_id`;
ALTER TABLE `pl_inventory` DROP INDEX `uk_product_id`;
ALTER TABLE `pl_inventory` ADD UNIQUE KEY `uk_product_brand` (`tenant_no`,`product_id`,`brand_id`,`del_flag`);
ALTER TABLE `pl_inventory_transaction`
ADD COLUMN `brand_id` varchar(64) NOT NULL DEFAULT '' AFTER `product_id`,
ADD COLUMN `brand_name` varchar(100) DEFAULT NULL AFTER `brand_id`;
ALTER TABLE `pl_inventory_warning`
ADD COLUMN `brand_id` varchar(64) NOT NULL DEFAULT '' AFTER `product_id`,
ADD COLUMN `brand_name` varchar(100) DEFAULT NULL AFTER `brand_id`;
+104 -1
View File
@@ -1029,6 +1029,9 @@ CREATE TABLE `crm_contract_product` (
`contract_id` varchar(64) NOT NULL COMMENT '合同ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`brand_mode` varchar(20) DEFAULT NULL COMMENT 'required/any',
`brand_id` varchar(64) DEFAULT NULL COMMENT '指定品牌ID',
`brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名快照',
`product_no` varchar(50) DEFAULT NULL COMMENT '产品编号',
`category_id` varchar(64) DEFAULT NULL COMMENT '产品分类ID',
`category_name` varchar(100) DEFAULT NULL COMMENT '产品分类名称',
@@ -2015,6 +2018,63 @@ INSERT INTO `crm_product` (`id`, `product_no`, `product_name`, `category_id`, `c
INSERT INTO `crm_product` (`id`, `product_no`, `product_name`, `category_id`, `category_name`, `model`, `unit`, `barcode`, `price`, `cost_price`, `stock`, `low_stock`, `tax_rate`, `is_toxic`, `is_explosive`, `status`, `description`, `images`, `sale_count`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('C9B4E76409104D9DB1B2FA25D7635F3D', 'SXWL007319', '测试产品编号', '1975766458781167617', '无机原料', NULL, NULL, '20260712000004', NULL, NULL, 0, 10, 13.00, 0, 0, 'on', NULL, NULL, 0, 'shanxia2.0', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-07-12 09:43:36', NULL, '2026-07-12 09:43:36', 0);
COMMIT;
-- ----------------------------
-- Table structure for crm_product_alias
-- ----------------------------
DROP TABLE IF EXISTS `crm_product_alias`;
CREATE TABLE `crm_product_alias` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`alias_name` varchar(200) NOT NULL COMMENT '别名',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
`order_num` int(11) DEFAULT NULL,
`remark` varchar(512) DEFAULT NULL,
`create_by` varchar(64) DEFAULT NULL,
`create_dept_id` varchar(64) NOT NULL DEFAULT '',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`del_flag` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM-产品别名';
-- ----------------------------
-- Records of crm_product_alias
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for crm_product_brand
-- ----------------------------
DROP TABLE IF EXISTS `crm_product_brand`;
CREATE TABLE `crm_product_brand` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`brand_name` varchar(100) NOT NULL COMMENT '品牌名称',
`status` char(3) NOT NULL DEFAULT 'on' COMMENT '状态 on/off',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT NULL,
`create_dept_id` varchar(64) NOT NULL DEFAULT '',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`del_flag` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM-产品品牌';
-- ----------------------------
-- Records of crm_product_brand
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for crm_product_category
-- ----------------------------
@@ -2197,6 +2257,9 @@ CREATE TABLE `crm_quote_product` (
`quote_id` varchar(64) NOT NULL COMMENT '报价单ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`brand_mode` varchar(20) DEFAULT NULL COMMENT 'required/any',
`brand_id` varchar(64) DEFAULT NULL COMMENT '指定品牌ID',
`brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名快照',
`product_no` varchar(50) DEFAULT NULL COMMENT '产品编号',
`category_id` varchar(64) DEFAULT NULL COMMENT '产品分类ID',
`category_name` varchar(100) DEFAULT NULL COMMENT '产品分类名称',
@@ -3066,6 +3129,8 @@ DROP TABLE IF EXISTS `pl_inventory`;
CREATE TABLE `pl_inventory` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`brand_id` varchar(64) NOT NULL DEFAULT '' COMMENT '品牌ID,无品牌为空串',
`brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称',
`product_no` varchar(50) NOT NULL COMMENT '产品编号',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`model` varchar(100) DEFAULT NULL COMMENT '规格型号',
@@ -3084,7 +3149,7 @@ CREATE TABLE `pl_inventory` (
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_product_id` (`product_id`),
UNIQUE KEY `uk_product_brand` (`tenant_no`,`product_id`,`brand_id`,`del_flag`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表';
@@ -3101,6 +3166,8 @@ DROP TABLE IF EXISTS `pl_inventory_transaction`;
CREATE TABLE `pl_inventory_transaction` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`brand_id` varchar(64) NOT NULL DEFAULT '',
`brand_name` varchar(100) DEFAULT NULL,
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`transaction_type` varchar(20) NOT NULL COMMENT '事务类型 inbound-入库 outbound-出库',
`plan_id` varchar(64) DEFAULT NULL COMMENT '计划ID',
@@ -3139,6 +3206,8 @@ DROP TABLE IF EXISTS `pl_inventory_warning`;
CREATE TABLE `pl_inventory_warning` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`brand_id` varchar(64) NOT NULL DEFAULT '' COMMENT '品牌ID,无品牌为空串',
`brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`warning_type` varchar(20) NOT NULL COMMENT '预警类型 low-低于最低 high-高于最高',
`current_qty` decimal(15,3) NOT NULL COMMENT '当前库存',
@@ -3536,6 +3605,9 @@ CREATE TABLE `pl_plan_product` (
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`product_no` varchar(50) NOT NULL COMMENT '产品编号',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`brand_mode` varchar(20) DEFAULT NULL COMMENT 'required/any',
`brand_id` varchar(64) DEFAULT NULL COMMENT '指定品牌ID',
`brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名快照',
`model` varchar(100) DEFAULT NULL COMMENT '规格型号',
`unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位',
`category_name` varchar(200) DEFAULT NULL COMMENT '产品分类',
@@ -3671,6 +3743,37 @@ INSERT INTO `pl_plan_product` (`id`, `plan_id`, `product_id`, `product_no`, `pro
INSERT INTO `pl_plan_product` (`id`, `plan_id`, `product_id`, `product_no`, `product_name`, `model`, `unit`, `category_name`, `package_spec`, `delivery_method`, `quantity`, `actual_qty`, `tax_price`, `tax_amount`, `tax_subtotal`, `is_explosive`, `is_toxic`, `purchase_cert_url`, `transport_cert_url`, `legal_use_cert_url`, `inbound_estimate_qty`, `inbound_qty`, `inbound_price`, `inbound_amount`, `outbound_estimate_qty`, `outbound_qty`, `outbound_price`, `outbound_amount`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('FF6353D6EDE44A2391A1D30B35129B08', 'CC2853CC9F7744E7BF34B13D57CC1B42', '2059116006488109057', '2059116006488109057', '98% 工业硫酸', 'AR', 'dun', '其他', '槽罐车', '一票制送到', 20.000, 0.000, 2000.0000, 4601.77, 40000.00, 0, 1, 'pl/plan-cert/202607/05/b16ef57360da45c9bbd6998e08b7c213.pdf', 'pl/plan-cert/202607/11/25888b95be064f45a73acfe46bf16d0d.pdf', NULL, 20.000, NULL, 2000.0000, 40000.00, 20.000, NULL, 2000.0000, 40000.00, 'shanxia2.0', 0, '备注1', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-07-05 23:48:36', 'd3000000000000000000000000000001', '2026-07-11 19:29:41', 0);
COMMIT;
-- ----------------------------
-- Table structure for pl_plan_product_brand_qty
-- ----------------------------
DROP TABLE IF EXISTS `pl_plan_product_brand_qty`;
CREATE TABLE `pl_plan_product_brand_qty` (
`id` varchar(64) NOT NULL,
`plan_id` varchar(64) NOT NULL,
`plan_product_id` varchar(64) NOT NULL,
`brand_id` varchar(64) NOT NULL DEFAULT '' COMMENT '空串=无品牌键',
`brand_name` varchar(100) DEFAULT NULL,
`qty` decimal(15,3) NOT NULL DEFAULT '0.000' COMMENT '本品牌归档实际数量',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
`order_num` int(11) DEFAULT NULL,
`remark` varchar(512) DEFAULT NULL,
`create_by` varchar(64) DEFAULT NULL,
`create_dept_id` varchar(64) NOT NULL DEFAULT '',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`del_flag` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_plan_product` (`plan_product_id`),
KEY `idx_plan` (`plan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划产品归档品牌数量';
-- ----------------------------
-- Records of pl_plan_product_brand_qty
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for pl_plan_transport
-- ----------------------------