1.0.564.verify.sql 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. -- 1.0.564.verify.sql — 每条 SELECT 必须返回真值。
  2. -- 库位角色表已建出
  3. SELECT COUNT(*) = 1
  4. FROM information_schema.tables
  5. WHERE table_schema = DATABASE()
  6. AND table_name = 'mdp_location_role';
  7. -- 隔离表已补原因列
  8. SELECT COUNT(*) = 1
  9. FROM information_schema.columns
  10. WHERE table_schema = DATABASE()
  11. AND table_name = 'mdp_std_inv_trans_unmapped'
  12. AND column_name = 'unmapped_reason';
  13. -- 角色取值只允许中立枚举
  14. SELECT COUNT(*) = 0
  15. FROM mdp_location_role
  16. WHERE location_role NOT IN ('INSPECT','MATERIAL','SEMI','LINE','FG','SCRAP','OTHER','UNKNOWN');
  17. -- 待检仓口径到位(无 1000 库位时也算通过)
  18. SELECT (SELECT COUNT(*) FROM mdp_location_role WHERE location = '1000') = 0
  19. OR (SELECT COUNT(*) FROM mdp_location_role WHERE location = '1000' AND location_role <> 'INSPECT' AND role_source <> 'MANUAL') = 0;
  20. -- trans_type 只允许 12 个中立阶段码或 NULL
  21. SELECT COUNT(*) = 0
  22. FROM mdp_std_inv_trans
  23. WHERE trans_type IS NOT NULL
  24. AND trans_type NOT IN ('MAT_RECEIPT','MAT_IQC_RELEASE','MAT_PUTAWAY','MAT_PICK','MAT_ISSUE','MAT_LINE','FG_RECEIPT','FG_PUTAWAY','FG_PICK','FG_SHIP','FG_PROD_RECEIPT','FG_FQC_RELEASE');
  25. -- 非阶段码不得残留在隔离表
  26. SELECT COUNT(*) = 0
  27. FROM mdp_std_inv_trans_unmapped
  28. WHERE src_trans_type_raw IN ('inv-frz','inv-unfrz');
  29. -- 隔离原因只允许三类
  30. SELECT COUNT(*) = 0
  31. FROM mdp_std_inv_trans_unmapped
  32. WHERE unmapped_reason NOT IN ('PENDING_VERIFY','LOCATION_ROLE_UNCONFIGURED','UNKNOWN_CODE');
  33. -- 已映射成功的行不得留在隔离表
  34. SELECT COUNT(*) = 0
  35. FROM mdp_std_inv_trans_unmapped u
  36. JOIN mdp_std_inv_trans t
  37. ON t.tenant_id = u.tenant_id AND t.source_system = u.source_system AND t.src_rec_id = u.src_rec_id
  38. WHERE t.trans_type IS NOT NULL;