01_ado_rule_config.sql 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. -- 全模块规则配置表草案
  2. -- 状态:评审草案;P29 已在 aidopdev 研发库验证执行
  3. -- 试点:S3 / DELIVERY_GENERATE
  4. CREATE TABLE IF NOT EXISTS ado_rule_profile (
  5. id BIGINT PRIMARY KEY,
  6. module_code VARCHAR(32) NOT NULL COMMENT '模块编码,如 S3/S4/S8/S9',
  7. scenario_code VARCHAR(64) NOT NULL COMMENT '场景编码,如 DELIVERY_GENERATE',
  8. profile_code VARCHAR(64) NOT NULL COMMENT '规则方案编码',
  9. profile_name VARCHAR(128) NOT NULL COMMENT '规则方案名称',
  10. tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '0 表示全局默认',
  11. factory_id BIGINT NOT NULL DEFAULT 0 COMMENT '0 表示租户级或全局',
  12. version INT NOT NULL DEFAULT 1 COMMENT '版本号',
  13. is_enabled TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用',
  14. effective_from DATETIME NULL COMMENT '生效开始时间',
  15. effective_to DATETIME NULL COMMENT '生效结束时间',
  16. remark VARCHAR(500) NULL,
  17. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  18. created_by VARCHAR(64) NULL,
  19. updated_at DATETIME NULL,
  20. updated_by VARCHAR(64) NULL,
  21. UNIQUE KEY uk_rule_profile_code (module_code, scenario_code, profile_code, tenant_id, factory_id, version),
  22. KEY idx_rule_profile_effective (module_code, scenario_code, tenant_id, factory_id, is_enabled, effective_from, effective_to)
  23. ) COMMENT='全模块规则配置方案';
  24. CREATE TABLE IF NOT EXISTS ado_rule_item (
  25. id BIGINT PRIMARY KEY,
  26. profile_id BIGINT NOT NULL COMMENT '规则方案 ID',
  27. rule_code VARCHAR(64) NOT NULL COMMENT '规则编码',
  28. rule_name VARCHAR(128) NOT NULL COMMENT '规则名称',
  29. value_type VARCHAR(32) NOT NULL COMMENT 'string/number/boolean/string_array/number_array/json',
  30. rule_value TEXT NULL COMMENT '规则值,数组和对象使用 JSON',
  31. is_enabled TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用',
  32. sort_no INT NOT NULL DEFAULT 0,
  33. remark VARCHAR(500) NULL,
  34. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  35. created_by VARCHAR(64) NULL,
  36. updated_at DATETIME NULL,
  37. updated_by VARCHAR(64) NULL,
  38. UNIQUE KEY uk_rule_item_code (profile_id, rule_code),
  39. KEY idx_rule_item_profile (profile_id, is_enabled)
  40. ) COMMENT='全模块规则配置项';
  41. CREATE TABLE IF NOT EXISTS ado_rule_schema (
  42. id BIGINT PRIMARY KEY,
  43. module_code VARCHAR(32) NOT NULL,
  44. scenario_code VARCHAR(64) NOT NULL,
  45. rule_code VARCHAR(64) NOT NULL,
  46. rule_name VARCHAR(128) NOT NULL,
  47. value_type VARCHAR(32) NOT NULL,
  48. default_value TEXT NULL COMMENT '默认值,数组和对象使用 JSON',
  49. required TINYINT NOT NULL DEFAULT 0,
  50. validation_rule TEXT NULL COMMENT 'min/max/enum/regex 等 JSON 描述',
  51. ui_control VARCHAR(32) NULL COMMENT 'input/number/switch/multi_select/json',
  52. option_source TEXT NULL COMMENT '静态枚举或数据源说明',
  53. is_enabled TINYINT NOT NULL DEFAULT 1,
  54. sort_no INT NOT NULL DEFAULT 0,
  55. remark VARCHAR(500) NULL,
  56. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  57. created_by VARCHAR(64) NULL,
  58. updated_at DATETIME NULL,
  59. updated_by VARCHAR(64) NULL,
  60. UNIQUE KEY uk_rule_schema_code (module_code, scenario_code, rule_code),
  61. KEY idx_rule_schema_scene (module_code, scenario_code, is_enabled)
  62. ) COMMENT='全模块规则定义';
  63. -- S3 / DELIVERY_GENERATE 默认规则方案
  64. INSERT INTO ado_rule_profile
  65. (id, module_code, scenario_code, profile_code, profile_name, tenant_id, factory_id, version, is_enabled, remark)
  66. VALUES
  67. (1003000000001, 'S3', 'DELIVERY_GENERATE', 'S3_DELIVERY_GENERATE_DEFAULT', 'S3 交货单生成默认规则', 0, 0, 1, 1, 'P10 规则配置试点默认方案')
  68. AS new
  69. ON DUPLICATE KEY UPDATE
  70. profile_name=new.profile_name,
  71. is_enabled=new.is_enabled,
  72. remark=new.remark,
  73. updated_at=CURRENT_TIMESTAMP;
  74. -- S3 / DELIVERY_GENERATE 规则定义
  75. INSERT INTO ado_rule_schema
  76. (id, module_code, scenario_code, rule_code, rule_name, value_type, default_value, required, validation_rule, ui_control, option_source, is_enabled, sort_no, remark)
  77. VALUES
  78. (1003000000101, 'S3', 'DELIVERY_GENERATE', 'quotaRequiredTotal', '货源配额要求合计', 'number', '100', 1, '{"min":0,"max":100}', 'number', NULL, 1, 10, '货源配额合计校验目标值'),
  79. (1003000000102, 'S3', 'DELIVERY_GENERATE', 'quotaTolerance', '配额误差容忍', 'number', '0.0001', 1, '{"min":0}', 'number', NULL, 1, 20, '配额合计误差容忍'),
  80. (1003000000103, 'S3', 'DELIVERY_GENERATE', 'poBuyerCodes', '普通 PO 可用采购组', 'string_array', '["110","160","170"]', 1, NULL, 'multi_select', 'static:110,160,170', 1, 30, '普通 PO 采购组白名单'),
  81. (1003000000104, 'S3', 'DELIVERY_GENERATE', 'doUsages', 'DO 可用供应类别', 'string_array', '["标准","VMI","委外加工"]', 1, NULL, 'multi_select', 'static:标准,VMI,委外加工', 1, 40, 'DO 可用用途白名单'),
  82. (1003000000105, 'S3', 'DELIVERY_GENERATE', 'defaultLeadDays', '默认提前期天数', 'number', '1', 1, '{"min":0}', 'number', NULL, 1, 50, '货源提前期缺失或小于等于 0 时使用'),
  83. (1003000000106, 'S3', 'DELIVERY_GENERATE', 'enablePackagingRoundUp', '启用包装量向上取整', 'boolean', 'true', 1, NULL, 'switch', NULL, 1, 60, '是否按 packaging_qty 圆整'),
  84. (1003000000107, 'S3', 'DELIVERY_GENERATE', 'shortageCreatePr', 'PO 不足自动生成 PR', 'boolean', 'true', 1, NULL, 'switch', NULL, 1, 70, '采购单不足时是否生成 PR'),
  85. (1003000000108, 'S3', 'DELIVERY_GENERATE', 'enablePrMerge', '启用 PR 合并', 'boolean', 'true', 1, NULL, 'switch', NULL, 1, 80, '是否启用本次生成 PR 合并'),
  86. (1003000000109, 'S3', 'DELIVERY_GENERATE', 'enableRequireGoodsToPo', '启用要货令转 DO/PO', 'boolean', 'true', 1, NULL, 'switch', NULL, 1, 90, '是否将 IsRequireGoods=1 的 PR 转 DO/PO'),
  87. (1003000000110, 'S3', 'DELIVERY_GENERATE', 'enableExternalPushTracking', '启用外部事务写入', 'boolean', 'true', 1, NULL, 'switch', NULL, 1, 100, '是否写 QadTracking;P22 为保持现有 P5 行为默认开启')
  88. AS new
  89. ON DUPLICATE KEY UPDATE
  90. rule_name=new.rule_name,
  91. value_type=new.value_type,
  92. default_value=new.default_value,
  93. required=new.required,
  94. validation_rule=new.validation_rule,
  95. ui_control=new.ui_control,
  96. option_source=new.option_source,
  97. is_enabled=new.is_enabled,
  98. sort_no=new.sort_no,
  99. remark=new.remark,
  100. updated_at=CURRENT_TIMESTAMP;
  101. -- S3 / DELIVERY_GENERATE 默认规则项
  102. INSERT INTO ado_rule_item
  103. (id, profile_id, rule_code, rule_name, value_type, rule_value, is_enabled, sort_no, remark)
  104. VALUES
  105. (1003000000201, 1003000000001, 'quotaRequiredTotal', '货源配额要求合计', 'number', '100', 1, 10, NULL),
  106. (1003000000202, 1003000000001, 'quotaTolerance', '配额误差容忍', 'number', '0.0001', 1, 20, NULL),
  107. (1003000000203, 1003000000001, 'poBuyerCodes', '普通 PO 可用采购组', 'string_array', '["110","160","170"]', 1, 30, NULL),
  108. (1003000000204, 1003000000001, 'doUsages', 'DO 可用供应类别', 'string_array', '["标准","VMI","委外加工"]', 1, 40, NULL),
  109. (1003000000205, 1003000000001, 'defaultLeadDays', '默认提前期天数', 'number', '1', 1, 50, NULL),
  110. (1003000000206, 1003000000001, 'enablePackagingRoundUp', '启用包装量向上取整', 'boolean', 'true', 1, 60, NULL),
  111. (1003000000207, 1003000000001, 'shortageCreatePr', 'PO 不足自动生成 PR', 'boolean', 'true', 1, 70, NULL),
  112. (1003000000208, 1003000000001, 'enablePrMerge', '启用 PR 合并', 'boolean', 'true', 1, 80, NULL),
  113. (1003000000209, 1003000000001, 'enableRequireGoodsToPo', '启用要货令转 DO/PO', 'boolean', 'true', 1, 90, NULL),
  114. (1003000000210, 1003000000001, 'enableExternalPushTracking', '启用外部事务写入', 'boolean', 'true', 1, 100, 'P22 为保持现有 P5 行为默认开启;生产切换前仍需确认 QadTracking 消费机制')
  115. AS new
  116. ON DUPLICATE KEY UPDATE
  117. rule_name=new.rule_name,
  118. value_type=new.value_type,
  119. rule_value=new.rule_value,
  120. is_enabled=new.is_enabled,
  121. sort_no=new.sort_no,
  122. remark=new.remark,
  123. updated_at=CURRENT_TIMESTAMP;