| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- -- ============================================================================
- -- S7-FQC-UAT-GOLDEN-FIXTURE-1 · UATA-A01 解锁
- --
- -- 目标:为 UATTEST_CHL 落一套最小 FQC 成品检规,使报检 FQCBJ202609020001
- -- (物料 3121C0035)可经 FqcApplyService.GenerateInspection 生成检验单,
- -- 并同时覆盖 NUMERIC 自动判定 / NON_NUMERIC 人工确认两条分支。
- --
- -- ⚠️⚠️⚠️ UAT TEST FIXTURE ONLY ⚠️⚠️⚠️
- -- ⚠️ NON-PRODUCTION FQC SPEC
- -- ⚠️ 下方所有尺寸、公差、技术要求、检验方法均为 UAT 夹具占位值,
- -- ⚠️ 不是「上底(45PUL)」的真实工艺规范,禁止用于任何生产判定或对外交付。
- -- ⚠️ Numeric limits exist only to exercise the NUMERIC / NON_NUMERIC UAT branches.
- --
- -- 写入范围(INSERT 6 行 · UPDATE 0 · DELETE 0 · DDL 0):
- -- qms_ccjygf 1 行 UATA-FQC-3121C0035 / A.0
- -- qms_ccjygfzb 4 行 xh=1..4
- -- ado_s7_fqc_spec_material_map 1 行 3121C0035 → 上述检规(MANUAL / is_manual=1)
- --
- -- 明确不碰:
- -- · 租户 797403760988229 的 68 条 qms_ccjygf / 1053 条 qms_ccjygfzb / 1554 条桥表行
- -- · UATTEST_CHL 现有 3 条 qms_fqcjygf(UATD-FQC-001..003)—— 归并属后续独立批次
- -- · 默认租户 1300000000001 全部数据
- -- 本脚本对 797 与默认租户 WRITE = 0。
- --
- -- 关键物理事实(Phase A 实测,2026-09-02):
- -- · qms_ccjygf / qms_ccjygfzb **零索引、无 PRIMARY KEY、无任何唯一约束**
- -- → DB 层完全不防重,幂等只能靠业务键 NOT EXISTS 自证
- -- · qms_ccjygf 业务键取 tenant_id + wjbh + bb(797 侧有 8 组历史重复,故为「意图键」非「已强制键」)
- -- · qms_ccjygfzb 归属 = glid + tenant_id(FqcApplyService.cs:231 / FqcSpecRuleService.cs:70-73 双条件)
- -- · ado_s7_fqc_spec_material_map 有 UNIQUE uk_fqc_spec_map(tenant_id, jygfid, raw_token, is_manual)
- -- · match_status='MANUAL' 是**运行链路可消费**状态
- -- (FqcSpecMaterialMapService.cs:257 `match_status IN ('EXACT','MANUAL')`;
- -- 797 侧已有同形态真实行 id=838738227814474 / 1A0049H)
- -- · lrlx 仅 'NUMERIC' / 'NON_NUMERIC' 合法(FqcApplyService.cs:237 兜底校验)
- -- · 797 侧 lrlx 与上下限当前 100% 为 NULL → 本 fixture 是全库首次 NUMERIC 自动判定样本
- --
- -- ID BLOCK(固定确定性区间,已实测三表在 3000000000000020000..29999 collision = 0)
- -- master 3000000000000020001
- -- detail 3000000000000021001 .. 021004
- -- map 3000000000000022001
- -- ============================================================================
- SET @dst := (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
- WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1 LIMIT 1);
- SET @fixture_note := 'UAT TEST FIXTURE - NON-PRODUCTION SPEC';
- -- ===========================================================================
- -- 1 · qms_ccjygf 检规主表 1 行
- -- 幂等键:tenant_id + wjbh + bb
- -- FK 闭合:目标租户 ItemMaster 必须已有 3121C0035(与 Bind() 运行期校验同口径)
- -- ===========================================================================
- INSERT INTO qms_ccjygf (id, tenant_id, wjbh, bb, cpmc, cpxh, sxrq, wlbm, fj)
- SELECT 3000000000000020001, @dst, 'UATA-FQC-3121C0035', 'A.0',
- '上底(45PUL)', '5PUL', '2026-09-01 00:00:00', '3121C0035', NULL
- WHERE @dst IS NOT NULL
- AND EXISTS (SELECT 1 FROM ItemMaster i WHERE i.tenant_id = @dst AND i.ItemNum = '3121C0035')
- AND NOT EXISTS (SELECT 1 FROM qms_ccjygf x WHERE x.tenant_id = @dst
- AND x.wjbh = 'UATA-FQC-3121C0035' AND x.bb = 'A.0');
- -- 回绑真实 master id(不假定 ID BLOCK 一定被采用:若主表已存在则取既有行)
- SET @master := (SELECT id FROM qms_ccjygf
- WHERE tenant_id = @dst AND wjbh = 'UATA-FQC-3121C0035' AND bb = 'A.0' LIMIT 1);
- -- ===========================================================================
- -- 2 · qms_ccjygfzb 检规明细 4 行
- -- 幂等键:tenant_id + glid + xh
- -- 列语义依据 FqcApplyService.cs:229-262 的快照读取集(未被快照消费的列不写):
- -- xh / jyxm / UpperToleranceLimit→sx / LowerToleranceLimit→xx / lrlx /
- -- jsyq / jyyqsbgj / jyff / jytk / jsbz / cyfa / jl / SizeSpecifications
- -- isDisplay / isPeel / bztk 留 NULL,与 797 侧 1040/1053 行现状一致
- -- Remarks 承载 fixture 标识(qms_ccjygf 主表无任何备注列,故标识只落明细 + 本注释)
- --
- -- ⚠️ 下表 44.5/45.5/2.8/3.2 为 UAT 占位公差,非真实工艺标准。
- -- ===========================================================================
- INSERT INTO qms_ccjygfzb
- (id, tenant_id, glid, xh, jyxm, lrlx, UpperToleranceLimit, LowerToleranceLimit,
- SizeSpecifications, jsyq, jyyqsbgj, jyff, jytk, jsbz, cyfa, jl, Remarks)
- SELECT c.new_id, @dst, @master, c.xh, c.jyxm, c.lrlx, c.up, c.lo,
- c.sz, c.jsyq, c.jyyqsbgj, c.jyff, c.jytk, c.jsbz, c.cyfa, c.jl, @fixture_note
- FROM (
- SELECT 3000000000000021001 AS new_id, '1' AS xh, '外观' AS jyxm, 'NON_NUMERIC' AS lrlx,
- NULL AS up, NULL AS lo, NULL AS sz,
- '表面无划伤、无毛刺、无变形,色泽均匀(UAT 占位技术要求)' AS jsyq,
- NULL AS jyyqsbgj, '目视检查' AS jyff, NULL AS jytk,
- 'UAT 夹具基准,非真实工艺标准' AS jsbz, 'S-2;AQL2.5' AS cyfa, NULL AS jl
- UNION ALL SELECT 3000000000000021002, '2', '外形尺寸(长)', 'NUMERIC',
- '45.5', '44.5', '45.0±0.5 mm',
- '长度 45.0±0.5 mm(UAT 占位公差)',
- '游标卡尺', '游标卡尺测量', NULL,
- 'UAT 夹具基准,非真实工艺标准', 'S-2;AQL2.5', NULL
- UNION ALL SELECT 3000000000000021003, '3', '厚度', 'NUMERIC',
- '3.2', '2.8', '3.0±0.2 mm',
- '厚度 3.0±0.2 mm(UAT 占位公差)',
- '千分尺', '千分尺测量', NULL,
- 'UAT 夹具基准,非真实工艺标准', 'S-2;AQL2.5', NULL
- UNION ALL SELECT 3000000000000021004, '4', '标识/包装', 'NON_NUMERIC',
- NULL, NULL, NULL,
- '标签内容与实物一致,包装完好无破损(UAT 占位技术要求)',
- NULL, '目视核对', NULL,
- 'UAT 夹具基准,非真实工艺标准', 'S-2;AQL2.5', NULL
- ) c
- WHERE @dst IS NOT NULL AND @master IS NOT NULL
- AND NOT EXISTS (SELECT 1 FROM qms_ccjygfzb z
- WHERE z.tenant_id = @dst AND z.glid = @master AND z.xh = c.xh);
- -- ===========================================================================
- -- 3 · ado_s7_fqc_spec_material_map 桥表 1 行
- -- 幂等键:tenant_id + material_code + jygfid
- -- (DB 侧另有 UNIQUE uk_fqc_spec_map(tenant_id, jygfid, raw_token, is_manual) 兜底)
- -- match_status='MANUAL' + is_manual=1 + status=1
- -- → 被 ResolveInternalAsync 消费(FqcSpecMaterialMapService.cs:256-258)
- -- → 且 is_manual=1 使其不会被 Rebuild 的 `DELETE ... is_manual=0`(:114)清掉
- -- normalized_effective_date 与主表 sxrq 经 NormalizeDate 后等价(2026-09-01)
- -- ===========================================================================
- INSERT INTO ado_s7_fqc_spec_material_map
- (id, tenant_id, jygfid, wjbh, bb, seq, raw_token, cleaned_token, material_code,
- match_status, normalized_effective_date, note, is_manual, status, create_time, create_user_id)
- SELECT 3000000000000022001, @dst, @master, 'UATA-FQC-3121C0035', 'A.0', 0,
- '3121C0035', '3121C0035', '3121C0035',
- 'MANUAL', '2026-09-01 00:00:00', 'UAT TEST FIXTURE - UATA-A01', 1, 1, NOW(), NULL
- WHERE @dst IS NOT NULL AND @master IS NOT NULL
- AND EXISTS (SELECT 1 FROM ItemMaster i WHERE i.tenant_id = @dst AND i.ItemNum = '3121C0035')
- AND NOT EXISTS (SELECT 1 FROM ado_s7_fqc_spec_material_map m
- WHERE m.tenant_id = @dst AND m.material_code = '3121C0035' AND m.jygfid = @master);
|