| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- -- ============================================================================
- -- S7 FQC 成品检验全链路 · 阶段 1A · P0 基础设施迁移
- -- 内容:① 报检/检验单幂等 UNIQUE(G3) ② SQLSERVER 入站实体 status→0 切源护栏(P0)
- -- ③ 检规↔物料映射桥表(G1,不改原始 qms_ccjygf.wlbm)
- -- 幂等:全部 IF-NOT-EXISTS 守卫,可重复执行。
- -- 迁移前已实测三处 UNIQUE 目标 0 冲突、桥表不存在。
- -- 占位名:提交那刻 rename 为正式 1.0.<next>.sql 并登记 csproj Copy。
- -- ============================================================================
- -- ---- ① qms_fqcbj: 报检单号租户内唯一 ----
- SET @exist := (SELECT COUNT(1) FROM information_schema.statistics
- WHERE table_schema=DATABASE() AND table_name='qms_fqcbj' AND index_name='uk_qms_fqcbj_tenant_billno');
- SET @sql := IF(@exist=0,
- 'ALTER TABLE qms_fqcbj ADD UNIQUE KEY uk_qms_fqcbj_tenant_billno (tenant_id, FBILLNO)',
- 'SELECT 1');
- PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
- -- ---- ② qms_qcpp_inspbill: 检验单号租户内唯一 ----
- SET @exist := (SELECT COUNT(1) FROM information_schema.statistics
- WHERE table_schema=DATABASE() AND table_name='qms_qcpp_inspbill' AND index_name='uk_qms_qcpp_inspbill_tenant_billno');
- SET @sql := IF(@exist=0,
- 'ALTER TABLE qms_qcpp_inspbill ADD UNIQUE KEY uk_qms_qcpp_inspbill_tenant_billno (tenant_id, FBILLNO)',
- 'SELECT 1');
- PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
- -- ---- ③ qms_qcpp_inspbill: 一个报检(lydjbh=报检FBILLNO, hid=报检id)只生成一张检验单(G3 DB层幂等) ----
- SET @exist := (SELECT COUNT(1) FROM information_schema.statistics
- WHERE table_schema=DATABASE() AND table_name='qms_qcpp_inspbill' AND index_name='uk_qms_qcpp_inspbill_source');
- SET @sql := IF(@exist=0,
- 'ALTER TABLE qms_qcpp_inspbill ADD UNIQUE KEY uk_qms_qcpp_inspbill_source (tenant_id, lydjbh, hid)',
- 'SELECT 1');
- PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
- -- ---- ④ 切源护栏:FQC 三个 SQLSERVER 入站实体 status→0(就位不启用),防 RunSourceSwitchFull 覆盖 DOP 写入 ----
- UPDATE mdp_entity SET status=0
- WHERE entity_code IN ('S7_FQC_TASK_SQLSERVER','S7_FQC_RESULT_SQLSERVER','S7_FQC_RESULT_DETAIL_SQLSERVER')
- AND status<>0;
- -- ---- ⑤ 检规↔标准物料 派生映射桥表(G1)。不改原始 qms_ccjygf.wlbm,此表为派生+人工订正层 ----
- CREATE TABLE IF NOT EXISTS ado_s7_fqc_spec_material_map (
- id BIGINT NOT NULL COMMENT '主键(雪花)',
- tenant_id BIGINT NOT NULL COMMENT '租户Id',
- jygfid BIGINT NOT NULL COMMENT '检规主表 qms_ccjygf.id',
- wjbh VARCHAR(100) NULL COMMENT '检规文件编号(冗余便于查)',
- bb VARCHAR(50) NULL COMMENT '检规版本',
- seq INT NULL COMMENT 'wlbm 内序号',
- raw_token VARCHAR(200) NULL COMMENT 'wlbm 拆出的原始 token',
- cleaned_token VARCHAR(200) NULL COMMENT '分隔符归一后 token',
- material_code VARCHAR(100) NULL COMMENT '匹配到的 ItemMaster.ItemNum(EXACT/MANUAL 时有值)',
- match_status VARCHAR(30) NOT NULL DEFAULT 'NOT_FOUND' COMMENT 'EXACT/RANGE_EXPANDED/GLUE_UNRESOLVED/NOT_FOUND/MANUAL',
- normalized_effective_date DATETIME NULL COMMENT '规范化生效日期(源 sxrq 清洗,原值不改)',
- note VARCHAR(500) NULL COMMENT '备注/unresolved 原因',
- is_manual TINYINT NOT NULL DEFAULT 0 COMMENT '1=人工维护绑定',
- status TINYINT NOT NULL DEFAULT 1 COMMENT '1启用 0停用',
- create_time DATETIME NULL COMMENT '创建时间',
- create_user_id BIGINT NULL COMMENT '创建人',
- update_time DATETIME NULL COMMENT '更新时间',
- update_user_id BIGINT NULL COMMENT '更新人',
- PRIMARY KEY (id),
- UNIQUE KEY uk_fqc_spec_map (tenant_id, jygfid, raw_token, is_manual),
- KEY idx_fqc_spec_map_mat (tenant_id, material_code, status),
- KEY idx_fqc_spec_map_jygf (tenant_id, jygfid)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='S7 FQC 检规↔标准物料 派生映射桥(不改源 wlbm)';
|