1.0.455.sql 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. -- S6 Phase 1C · 过程检验录入 + 数值/非数值判定 + 结果聚合(幂等)
  2. -- 原则:快照(config)不可变;结果(execution)分离到独立表。仅 UATAdminA 租户 838257186181189 补 Golden sample_count。
  3. -- ============ ① 样本量 sample_count:源检规明细 + 快照明细各加一列 ============
  4. SET @e := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='qms_gcjygfzb' AND COLUMN_NAME='sample_count');
  5. SET @s := IF(@e=0, 'ALTER TABLE qms_gcjygfzb ADD COLUMN sample_count INT NULL COMMENT ''要求样本量(判定完成用)''', 'SELECT 1');
  6. PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
  7. SET @e := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s6_process_inspection_snapshot_line' AND COLUMN_NAME='sample_count');
  8. SET @s := IF(@e=0, 'ALTER TABLE ado_s6_process_inspection_snapshot_line ADD COLUMN sample_count INT NULL COMMENT ''冻结的要求样本量''', 'SELECT 1');
  9. PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
  10. -- ============ ② Golden 样本量(租户 838):NUMERIC 项 3 个样本、NON_NUMERIC 项 1 个 ============
  11. SET @T := 838257186181189;
  12. UPDATE qms_gcjygfzb SET sample_count=3 WHERE tenant_id=@T AND lrlx='NUMERIC' AND (sample_count IS NULL OR sample_count=0);
  13. UPDATE qms_gcjygfzb SET sample_count=1 WHERE tenant_id=@T AND lrlx='NON_NUMERIC' AND (sample_count IS NULL OR sample_count=0);
  14. -- 回填既有快照明细的 sample_count(按 source_line_id 对齐源检规明细;只补空值)
  15. UPDATE ado_s6_process_inspection_snapshot_line sl
  16. JOIN qms_gcjygfzb z ON z.id = sl.source_line_id AND z.tenant_id = sl.tenant_id
  17. SET sl.sample_count = z.sample_count
  18. WHERE sl.tenant_id=@T AND (sl.sample_count IS NULL OR sl.sample_count=0) AND z.sample_count IS NOT NULL;
  19. -- ============ ③ 过程检验结果-头(可变执行结果,与快照分离)============
  20. CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_result (
  21. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  22. tenant_id BIGINT NOT NULL,
  23. bill_id BIGINT NOT NULL,
  24. work_order_no VARCHAR(100) NULL,
  25. item_code VARCHAR(100) NULL,
  26. status VARCHAR(20) NOT NULL DEFAULT 'IN_PROGRESS' COMMENT 'NOT_STARTED/IN_PROGRESS/COMPLETED',
  27. overall_result VARCHAR(16) NULL COMMENT 'PASS/FAIL/PENDING/INVALID',
  28. inspector_id BIGINT NULL,
  29. inspector_name VARCHAR(100) NULL,
  30. started_at DATETIME NULL,
  31. completed_at DATETIME NULL,
  32. create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  33. update_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  34. UNIQUE KEY uk_s6_result_bill (tenant_id, bill_id)
  35. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 过程检验结果-头';
  36. -- ============ ④ 过程检验结果-明细(逐样本;UK 保证幂等)============
  37. CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_result_item (
  38. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  39. tenant_id BIGINT NOT NULL,
  40. bill_id BIGINT NOT NULL,
  41. result_id BIGINT NOT NULL,
  42. snapshot_line_id BIGINT NOT NULL,
  43. result_type VARCHAR(20) NULL COMMENT '冻结自快照 NUMERIC/NON_NUMERIC',
  44. sample_index INT NOT NULL,
  45. actual_numeric DECIMAL(18,6) NULL,
  46. actual_non_numeric VARCHAR(8) NULL COMMENT 'OK/NG',
  47. judgement VARCHAR(16) NULL COMMENT 'PASS/FAIL/INVALID(后端计算)',
  48. remark VARCHAR(500) NULL,
  49. inspector_id BIGINT NULL,
  50. inspection_time DATETIME NULL,
  51. create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  52. update_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  53. UNIQUE KEY uk_s6_result_item (bill_id, snapshot_line_id, sample_index),
  54. KEY idx_s6_result_item (tenant_id, bill_id)
  55. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 过程检验结果-明细(逐样本)';