jcbt_scholarship_quota_management.sql 6.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. -- ========================================
  2. -- 奖学金名额分配模块 - 数据库建表脚本
  3. -- 创建时间: 2025-01-27
  4. -- 模块: ruoyi-jcbt
  5. -- 说明: 按批次进行名额分配管理
  6. -- ========================================
  7. USE hzdyjs_xg;
  8. -- 删除已存在的表(开发环境)
  9. DROP TABLE IF EXISTS `jcbt_scholarship_quota_adjustment`;
  10. DROP TABLE IF EXISTS `jcbt_scholarship_quota`;
  11. -- =====================================================
  12. -- 1. 名额分配主表
  13. -- =====================================================
  14. CREATE TABLE `jcbt_scholarship_quota` (
  15. `id` BIGINT(20) NOT NULL COMMENT '主键ID',
  16. `batch_id` BIGINT(20) NOT NULL COMMENT '批次ID',
  17. `scholarship_type_id` BIGINT(20) NOT NULL COMMENT '奖学金类型ID',
  18. `allocation_level` VARCHAR(20) NOT NULL COMMENT '分配级别:UNIVERSITY-全校,COLLEGE-学院,MAJOR-专业,CLASS-班级',
  19. `target_dept_id` BIGINT(20) DEFAULT NULL COMMENT '目标部门ID(学院/专业/班级)',
  20. `parent_quota_id` BIGINT(20) DEFAULT NULL COMMENT '上级名额ID(层级分配)',
  21. `total_quota` INT NOT NULL DEFAULT 0 COMMENT '总名额',
  22. `used_quota` INT NOT NULL DEFAULT 0 COMMENT '已使用名额',
  23. `reserved_quota` INT NOT NULL DEFAULT 0 COMMENT '预留名额',
  24. `available_quota` INT NOT NULL DEFAULT 0 COMMENT '可用名额',
  25. `allocation_rule` TEXT DEFAULT NULL COMMENT '分配规则(JSON格式)',
  26. `allocation_basis` VARCHAR(500) DEFAULT NULL COMMENT '分配依据说明',
  27. `allocation_method` VARCHAR(20) DEFAULT 'MANUAL' COMMENT '分配方式:MANUAL-手动分配,AUTO-自动分配,PROPORTIONAL-按比例分配',
  28. `is_adjustable` TINYINT(1) DEFAULT 1 COMMENT '是否可调整:0-否,1-是',
  29. `is_locked` TINYINT(1) DEFAULT 0 COMMENT '是否锁定:0-否,1-是',
  30. `status` VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE-生效,INACTIVE-失效,PENDING-待审核',
  31. `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  32. `tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID',
  33. `create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门',
  34. `create_by` BIGINT(20) DEFAULT NULL COMMENT '创建者',
  35. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  36. `update_by` BIGINT(20) DEFAULT NULL COMMENT '更新者',
  37. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  38. `deleted` TINYINT(1) DEFAULT 0 COMMENT '删除标记:0-正常,1-删除',
  39. PRIMARY KEY (`id`),
  40. UNIQUE KEY `uk_batch_type_dept` (`batch_id`, `scholarship_type_id`, `target_dept_id`, `deleted`),
  41. INDEX `idx_batch_level` (`batch_id`, `allocation_level`),
  42. INDEX `idx_dept_quota` (`target_dept_id`, `total_quota`),
  43. INDEX `idx_parent_quota` (`parent_quota_id`),
  44. INDEX `idx_tenant_status` (`tenant_id`, `status`, `deleted`)
  45. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='奖学金名额分配表';
  46. -- =====================================================
  47. -- 2. 名额调整记录表
  48. -- =====================================================
  49. CREATE TABLE `jcbt_scholarship_quota_adjustment` (
  50. `id` BIGINT(20) NOT NULL COMMENT '主键ID',
  51. `quota_id` BIGINT(20) NOT NULL COMMENT '名额分配ID',
  52. `adjustment_type` VARCHAR(20) NOT NULL COMMENT '调整类型:INCREASE-增加,DECREASE-减少,TRANSFER-转移',
  53. `from_quota_id` BIGINT(20) DEFAULT NULL COMMENT '源名额ID(转移时使用)',
  54. `to_quota_id` BIGINT(20) DEFAULT NULL COMMENT '目标名额ID(转移时使用)',
  55. `adjustment_amount` INT NOT NULL COMMENT '调整数量',
  56. `before_total` INT NOT NULL COMMENT '调整前总名额',
  57. `after_total` INT NOT NULL COMMENT '调整后总名额',
  58. `adjustment_reason` VARCHAR(500) NOT NULL COMMENT '调整原因',
  59. `approval_status` VARCHAR(20) DEFAULT 'PENDING' COMMENT '审批状态:PENDING-待审批,APPROVED-已通过,REJECTED-已拒绝',
  60. `approval_user_id` BIGINT(20) DEFAULT NULL COMMENT '审批人ID',
  61. `approval_time` DATETIME DEFAULT NULL COMMENT '审批时间',
  62. `approval_remark` VARCHAR(500) DEFAULT NULL COMMENT '审批备注',
  63. `tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID',
  64. `create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门',
  65. `create_by` BIGINT(20) DEFAULT NULL COMMENT '创建者',
  66. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  67. `update_by` BIGINT(20) DEFAULT NULL COMMENT '更新者',
  68. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  69. `deleted` TINYINT(1) DEFAULT 0 COMMENT '删除标记:0-正常,1-删除',
  70. PRIMARY KEY (`id`),
  71. INDEX `idx_quota_id` (`quota_id`),
  72. INDEX `idx_adjustment_type` (`adjustment_type`, `approval_status`),
  73. INDEX `idx_from_to_quota` (`from_quota_id`, `to_quota_id`),
  74. INDEX `idx_tenant` (`tenant_id`, `deleted`)
  75. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='名额调整记录表';
  76. -- =====================================================
  77. -- 3. 添加外键约束(可选,根据实际情况)
  78. -- =====================================================
  79. -- ALTER TABLE `jcbt_scholarship_quota`
  80. -- ADD CONSTRAINT `fk_quota_batch` FOREIGN KEY (`batch_id`) REFERENCES `jcbt_scholarship_batch` (`id`);
  81. -- ALTER TABLE `jcbt_scholarship_quota`
  82. -- ADD CONSTRAINT `fk_quota_type` FOREIGN KEY (`scholarship_type_id`) REFERENCES `jcbt_scholarship_type` (`id`);
  83. -- ALTER TABLE `jcbt_scholarship_quota_adjustment`
  84. -- ADD CONSTRAINT `fk_adjustment_quota` FOREIGN KEY (`quota_id`) REFERENCES `jcbt_scholarship_quota` (`id`);
  85. -- =====================================================
  86. -- 4. 验证表创建
  87. -- =====================================================
  88. SHOW TABLES LIKE 'jcbt_scholarship_quota%';
  89. DESCRIBE jcbt_scholarship_quota;
  90. DESCRIBE jcbt_scholarship_quota_adjustment;