1.0.155.sql 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. -- ──────────────────────────────────────────────────────────────────────
  2. -- S0-CONTRACT-REVIEW-CYCLE-PI-CONFIG-SYNC-1
  3. -- 1. 主表 S0ContractReviewCycle 现有 10 行 stage_code 从 CR1-CR5 → 语义编码
  4. -- (opinion_review/feedback/second_review/leader_opinion/sign)。
  5. -- 并在 std_hours=0 时填初值(8/12/8/10/2),不覆盖用户已配置的非零值。
  6. -- 2. 新建 S0ContractReviewCycleBreakdown 下钻配置表。
  7. -- 3. 新建 S0ContractReviewCycleSyncFlag 工厂级同步开关表。
  8. -- 4. seed 意见反馈下钻 6 行(3 组 × 2 现有工厂)。
  9. --
  10. -- 幂等:
  11. -- - UPDATE WHERE 子句迁移后不匹配 → 第二次执行空操作;
  12. -- - std_hours 附加 AND std_hours=0 守卫,保留用户后续编辑;
  13. -- - CREATE TABLE IF NOT EXISTS;
  14. -- - INSERT IGNORE 跳过 (factory, parent_stage, group) 唯一冲突。
  15. -- ──────────────────────────────────────────────────────────────────────
  16. -- 1a. PI 初值填入(仅当 std_hours=0 时;保留用户已配置的非零值)
  17. UPDATE `S0ContractReviewCycle` SET `std_hours` = 8 WHERE `stage_code` = 'CR1' AND `std_hours` = 0;
  18. UPDATE `S0ContractReviewCycle` SET `std_hours` = 12 WHERE `stage_code` = 'CR2' AND `std_hours` = 0;
  19. UPDATE `S0ContractReviewCycle` SET `std_hours` = 8 WHERE `stage_code` = 'CR3' AND `std_hours` = 0;
  20. UPDATE `S0ContractReviewCycle` SET `std_hours` = 10 WHERE `stage_code` = 'CR4' AND `std_hours` = 0;
  21. UPDATE `S0ContractReviewCycle` SET `std_hours` = 2 WHERE `stage_code` = 'CR5' AND `std_hours` = 0;
  22. -- 1b. stage_code 语义化迁移(无条件,迁移后再跑空操作)
  23. UPDATE `S0ContractReviewCycle` SET `stage_code` = 'opinion_review' WHERE `stage_code` = 'CR1';
  24. UPDATE `S0ContractReviewCycle` SET `stage_code` = 'feedback' WHERE `stage_code` = 'CR2';
  25. UPDATE `S0ContractReviewCycle` SET `stage_code` = 'second_review' WHERE `stage_code` = 'CR3';
  26. UPDATE `S0ContractReviewCycle` SET `stage_code` = 'leader_opinion' WHERE `stage_code` = 'CR4';
  27. UPDATE `S0ContractReviewCycle` SET `stage_code` = 'sign' WHERE `stage_code` = 'CR5';
  28. -- 2a. 下钻配置表
  29. CREATE TABLE IF NOT EXISTS `S0ContractReviewCycleBreakdown` (
  30. `rec_id` BIGINT NOT NULL AUTO_INCREMENT,
  31. `company_ref_id` BIGINT NOT NULL,
  32. `factory_ref_id` BIGINT NOT NULL,
  33. `domain_code` VARCHAR(50) NULL,
  34. `parent_stage_code` VARCHAR(50) NOT NULL,
  35. `group_code` VARCHAR(50) NOT NULL,
  36. `group_name` VARCHAR(200) NOT NULL,
  37. `std_hours` DECIMAL(6,2) NOT NULL DEFAULT 0,
  38. `order_no` INT NOT NULL DEFAULT 1,
  39. `is_active` TINYINT(1) NOT NULL DEFAULT 1,
  40. `create_user` VARCHAR(100) NULL,
  41. `create_time` DATETIME NOT NULL,
  42. `update_user` VARCHAR(100) NULL,
  43. `update_time` DATETIME NULL,
  44. PRIMARY KEY (`rec_id`),
  45. UNIQUE KEY `uk_S0CRCBreakdown_factory_parent_group` (`factory_ref_id`, `parent_stage_code`, `group_code`),
  46. KEY `idx_S0CRCBreakdown_factory_parent` (`factory_ref_id`, `parent_stage_code`)
  47. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合同评审周期下钻配置(按 parent_stage_code 分组)';
  48. -- 2b. 工厂级同步开关表
  49. CREATE TABLE IF NOT EXISTS `S0ContractReviewCycleSyncFlag` (
  50. `rec_id` BIGINT NOT NULL AUTO_INCREMENT,
  51. `company_ref_id` BIGINT NOT NULL,
  52. `factory_ref_id` BIGINT NOT NULL,
  53. `domain_code` VARCHAR(50) NULL,
  54. `is_sync_enabled` TINYINT(1) NOT NULL DEFAULT 0,
  55. `create_user` VARCHAR(100) NULL,
  56. `create_time` DATETIME NOT NULL,
  57. `update_user` VARCHAR(100) NULL,
  58. `update_time` DATETIME NULL,
  59. PRIMARY KEY (`rec_id`),
  60. UNIQUE KEY `uk_S0CRCSyncFlag_factory` (`factory_ref_id`)
  61. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合同评审周期同步开关(工厂级一行)';
  62. -- 3. 意见反馈下钻 seed(3 组 × 2 现有工厂 = 6 行),INSERT IGNORE 跳过唯一冲突
  63. INSERT IGNORE INTO `S0ContractReviewCycleBreakdown` (
  64. `company_ref_id`, `factory_ref_id`, `domain_code`, `parent_stage_code`,
  65. `group_code`, `group_name`, `std_hours`, `order_no`, `is_active`,
  66. `create_user`, `create_time`
  67. ) VALUES
  68. (1329900200001, 1329900200002, NULL, 'feedback', 'market', '市场部', 4.80, 1, 1, 'system', NOW()),
  69. (1329900200001, 1329900200002, NULL, 'feedback', 'tech_presales', '技术售前组', 4.20, 2, 1, 'system', NOW()),
  70. (1329900200001, 1329900200002, NULL, 'feedback', 'planning', '综合计划', 3.00, 3, 1, 'system', NOW()),
  71. (1329900200001, 1329900200003, NULL, 'feedback', 'market', '市场部', 4.80, 1, 1, 'system', NOW()),
  72. (1329900200001, 1329900200003, NULL, 'feedback', 'tech_presales', '技术售前组', 4.20, 2, 1, 'system', NOW()),
  73. (1329900200001, 1329900200003, NULL, 'feedback', 'planning', '综合计划', 3.00, 3, 1, 'system', NOW());