59 lines
2.9 KiB
SQL
59 lines
2.9 KiB
SQL
-- bms_product 增加失效日期;产品/国家明细 status:0待生效 1已生效 2已失效
|
|
SET NAMES utf8mb4;
|
|
|
|
-- 1) 产品主表增加 expire_date
|
|
ALTER TABLE bms_product
|
|
ADD COLUMN expire_date date DEFAULT NULL COMMENT '产品失效日期(空=长期;下一版生效日=本版失效日)' AFTER effective_date;
|
|
|
|
ALTER TABLE bms_product
|
|
MODIFY COLUMN status char(1) NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效';
|
|
|
|
-- 2) 国家明细增加 status
|
|
ALTER TABLE bms_product_country
|
|
ADD COLUMN status char(1) NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效' AFTER expire_date;
|
|
|
|
-- 3) 按同代码下一版生效日回填产品失效日
|
|
UPDATE bms_product p
|
|
INNER JOIN (
|
|
SELECT p1.product_id,
|
|
(SELECT MIN(p2.effective_date)
|
|
FROM bms_product p2
|
|
WHERE p2.product_code = p1.product_code
|
|
AND p2.effective_date IS NOT NULL
|
|
AND p1.effective_date IS NOT NULL
|
|
AND p2.effective_date > p1.effective_date) AS next_eff
|
|
FROM bms_product p1
|
|
) t ON t.product_id = p.product_id
|
|
SET p.expire_date = t.next_eff
|
|
WHERE p.expire_date IS NULL AND t.next_eff IS NOT NULL;
|
|
|
|
-- 4) 按生效/失效日期回写 status
|
|
UPDATE bms_product
|
|
SET status = CASE
|
|
WHEN expire_date IS NOT NULL AND expire_date <= CURDATE() THEN '2'
|
|
WHEN effective_date IS NULL OR effective_date > CURDATE() THEN '0'
|
|
ELSE '1'
|
|
END;
|
|
|
|
UPDATE bms_product_country
|
|
SET status = CASE
|
|
WHEN expire_date IS NOT NULL AND expire_date <= CURDATE() THEN '2'
|
|
WHEN effective_date IS NULL OR effective_date > CURDATE() THEN '0'
|
|
ELSE '1'
|
|
END;
|
|
|
|
-- 5) 字典值 ACTIVE/PENDING/EXPIRED 改为 1/0/2
|
|
DELETE FROM sys_dict_data WHERE dict_type = 'bms_product_effect_status' AND dict_value IN ('ACTIVE', 'PENDING', 'EXPIRED');
|
|
|
|
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
|
SELECT 1, N'已生效', '1', 'bms_product_effect_status', '', 'success', 'Y', '0', 'admin', sysdate(), N'1 已生效'
|
|
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_product_effect_status' AND dict_value = '1');
|
|
|
|
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
|
SELECT 2, N'待生效', '0', 'bms_product_effect_status', '', 'warning', 'N', '0', 'admin', sysdate(), N'0 待生效'
|
|
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_product_effect_status' AND dict_value = '0');
|
|
|
|
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
|
SELECT 3, N'已失效', '2', 'bms_product_effect_status', '', 'info', 'N', '0', 'admin', sysdate(), N'2 已失效'
|
|
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_product_effect_status' AND dict_value = '2');
|