-- 产品创建:195 / 196 / 198 -- 背景: -- 下单页「产品类型」下拉读取 mes_product_cate(status='0')。 -- 目前主数据只有 CZ060 / CZ061,缺少 195 / 196 / 198 三种产品, -- 下单时无法选择,订单-计划-产品链路无法按产品区分。 -- 本脚本: -- 1) 以 CZ060 的模板作为 195/196/198 的默认生产模板(取不到时用任一启用模板兜底); -- 2) 幂等创建 195/196/198 三条产品类型:已存在则更新名称/模板/状态,不存在则插入; -- 3) 输出校验结果。 -- 说明: -- - sn 与 title 均为 195/196/198,下单下拉直接显示产品编号; -- - cate=0 表示产品(1=零件); -- - 可重复执行,不会产生重复数据; -- - 执行后无需重启,下单页刷新即可看到三种产品。 -- ---------- 1. 取默认模板 ---------- SET @template_id = (SELECT template_id FROM mes_product_cate WHERE sn = 'CZ060' LIMIT 1); SET @template_id = IFNULL(NULLIF(@template_id, ''), (SELECT id FROM mes_template WHERE status = '0' ORDER BY update_date DESC LIMIT 1)); -- ---------- 2. 幂等创建三种产品 ---------- INSERT INTO `mes_product_cate` (`id`, `title`, `sn`, `status`, `template_id`, `create_by`, `create_date`, `update_by`, `update_date`, `cate`) SELECT '2026102100000195', '195', '195', '0', @template_id, 'system', NOW(), 'system', NOW(), 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mes_product_cate` WHERE `sn` = '195'); INSERT INTO `mes_product_cate` (`id`, `title`, `sn`, `status`, `template_id`, `create_by`, `create_date`, `update_by`, `update_date`, `cate`) SELECT '2026102100000196', '196', '196', '0', @template_id, 'system', NOW(), 'system', NOW(), 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mes_product_cate` WHERE `sn` = '196'); INSERT INTO `mes_product_cate` (`id`, `title`, `sn`, `status`, `template_id`, `create_by`, `create_date`, `update_by`, `update_date`, `cate`) SELECT '2026102100000198', '198', '198', '0', @template_id, 'system', NOW(), 'system', NOW(), 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mes_product_cate` WHERE `sn` = '198'); -- 已存在时校正名称、模板、状态,保证脚本可重复执行 UPDATE `mes_product_cate` SET `title` = `sn`, `status` = '0', `template_id` = IFNULL(NULLIF(@template_id, ''), `template_id`), `cate` = 0, `update_by` = 'system', `update_date` = NOW() WHERE `sn` IN ('195', '196', '198'); -- ---------- 3. 校验 ---------- -- 3.1 三种产品应各有一条,且 status=0、template_id 非空 SELECT `id`, `title`, `sn`, `status`, `template_id`, `cate` FROM `mes_product_cate` WHERE `sn` IN ('195', '196', '198') ORDER BY `sn`; -- 3.2 模板缺失检查(应为 0 行) SELECT `sn`, `title`, `template_id` FROM `mes_product_cate` WHERE `sn` IN ('195', '196', '198') AND (`template_id` IS NULL OR `template_id` = ''); SELECT '产品 195/196/198 创建完成' AS message;