参考框架中以下代码： 
- ruoyi-modules/ruoyi-art/src/main/java/org/dromara/art/domain/ArtSchool.java
- ruoyi-modules/ruoyi-art/src/main/java/org/dromara/art/mapper/ArtSchoolMapper.java
- ruoyi-modules/ruoyi-art/src/main/java/org/dromara/art/service/IArtSchoolService.java
- ruoyi-modules/ruoyi-art/src/main/java/org/dromara/art/service/impl/ArtSchoolServiceImpl.java
- ruoyi-modules/ruoyi-art/src/main/java/org/dromara/art/domain/vo/ArtSchoolVo.java
- ruoyi-modules/ruoyi-art/src/main/java/org/dromara/art/domain/bo/ArtSchoolBo.java
- ruoyi-modules/ruoyi-art/src/main/resources/mapper/art/ArtSchoolMapper.xml
- ruoyi-modules/ruoyi-art/src/main/java/org/dromara/art/controller/
ArtSchoolController.java

一、核心开发目标拆解
    子模块代码架构搭建参照ArtSchool的代码结构，为校区（ArtSchoolCampus）、学院（ArtSchoolCollege）、招生计划（ArtSchoolEnrollPlan）分别创建：
        实体类（Domain）：包含与院校主表的关联字段（schoolId/schoolName）、子信息自有字段；
        BO/VO 类：BO 用于接收前端提交的新增 / 修改参数，VO 用于返回前端展示数据；
        Mapper 接口 + XML：实现子表的 CRUD、根据院校名称 / ID 批量查询 / 删除 / 替换数据；
        Service/ServiceImpl：封装业务逻辑（如根据院校名称匹配主表 ID、批量导入时的替换逻辑）；
        Controller：提供子信息的增删改查、批量导入、关联院校查询等接口。
    前端交互逻辑
        在院校列表页为每行添加「校区管理」「学院管理」「招生计划管理」按钮，点击后携带院校 ID / 名称跳转至对应子信息管理页；
        子信息管理页默认筛选当前院校的子数据，支持新增 / 编辑 / 删除 / 批量导入子信息；
        开发批量导入模板（Excel），模板包含：院校名称（必填，用于匹配主表）、校区信息（多列）、学院信息（多列）、招生计划信息（多列），支持一行数据对应一所院校的多类子信息。
    批量导入核心逻辑
        解析 Excel 模板，先根据「院校名称」查询ArtSchool主表获取院校 ID；
        若院校不存在，可选择「跳过」或「提示报错」；若存在，先删除该院校已有的所有子数据（校区 / 学院 / 招生计划），再批量插入新的子数据（实现「替换已有子数据」）；
        导入过程记录日志（如成功导入条数、失败条数及原因），导入完成后返回结果提示。

```sql
-- ----------------------------
-- Table structure for t_school
-- ----------------------------
DROP TABLE IF EXISTS `t_school`;
CREATE TABLE `t_school` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '学校主键ID',
  `main_code` varchar(32) NOT NULL COMMENT '学校编码（唯一标识，如国标代码）',
  `main_name` varchar(128) NOT NULL COMMENT '学校主名称（官方全称）',
  `short_name` varchar(64) DEFAULT '' COMMENT '学校简称（备用）',
  `school_icon` varchar(512) DEFAULT '' COMMENT '院校图标',
  `province` varchar(32) DEFAULT '' COMMENT '省份',
  `city` varchar(32) DEFAULT '' COMMENT '城市',
  `district` varchar(32) DEFAULT '' COMMENT '区县',
  `university_type` varchar(32) DEFAULT '' COMMENT '大学类型：综合/工科/财经/艺术...',
  `education_level` varchar(16) DEFAULT '' COMMENT '学历层次：本科/专科',
  `school_nature` varchar(16) DEFAULT '' COMMENT '办学性质：公办/民办/中外合作',
  `supervisor_dept` varchar(64) DEFAULT '' COMMENT '主管部门：教育部/工信部/民委...',
  `establish_year` smallint DEFAULT NULL COMMENT '建校时间(年)',
  `campus_area_mu` decimal(12,2) DEFAULT NULL COMMENT '占地面积(亩)',
  `male_ratio` decimal(5,2) DEFAULT NULL COMMENT '男生比例(%)',
  `female_ratio` decimal(5,2) DEFAULT NULL COMMENT '女生比例(%)',
  `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建日期',
  `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新日期',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code` (`main_code`),
  KEY `idx_main_name` (`main_name`),
  KEY `idx_school_region` (`province`,`city`,`district`),
  KEY `idx_school_type` (`university_type`),
  KEY `idx_school_level_nature` (`education_level`,`school_nature`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校基础信息主表';

-- ----------------------------
-- Table structure for t_school_campus
-- ----------------------------
DROP TABLE IF EXISTS `t_school_campus`;
CREATE TABLE `t_school_campus` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint unsigned NOT NULL COMMENT '学校ID',
  `campus_name` varchar(128) NOT NULL COMMENT '校区名称',
  `location` varchar(256) DEFAULT '' COMMENT '校区位置(文本)',
  `address` varchar(256) DEFAULT '' COMMENT '校区地址',
  `lng` decimal(10,6) DEFAULT NULL COMMENT '经度',
  `lat` decimal(10,6) DEFAULT NULL COMMENT '纬度',
  `introduction` text COMMENT '校区介绍',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_school_campus_name` (`school_id`,`campus_name`),
  KEY `idx_campus_school_id` (`school_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校校区表';

-- ----------------------------
-- Table structure for t_school_college
-- ----------------------------
DROP TABLE IF EXISTS `t_school_college`;
CREATE TABLE `t_school_college` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint unsigned NOT NULL COMMENT '学校ID',
  `college_code` varchar(32) DEFAULT '' COMMENT '学院编码(可选)',
  `college_name` varchar(128) NOT NULL COMMENT '学院名称',
  `introduction` text COMMENT '学院介绍',
  `sort_no` int DEFAULT '0' COMMENT '排序',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_school_college_name` (`school_id`,`college_name`),
  KEY `idx_college_school_id` (`school_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校学院(院系)表';

-- ----------------------------
-- Table structure for t_school_detail
-- ----------------------------
DROP TABLE IF EXISTS `t_school_detail`;
CREATE TABLE `t_school_detail` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint unsigned NOT NULL COMMENT '关联学校主表ID',
  `introduction` longtext COMMENT '学校详细介绍（大文本）',
  `address` varchar(256) DEFAULT '' COMMENT '学校地址',
  `contact` varchar(64) DEFAULT '' COMMENT '联系电话',
  `email` varchar(128) DEFAULT '' COMMENT '邮箱',
  `website` varchar(128) DEFAULT '' COMMENT '官网地址',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_school_id` (`school_id`),
  KEY `idx_school_detail_school_id` (`school_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校详细信息表';

-- ----------------------------
-- Table structure for t_school_dorm
-- ----------------------------
DROP TABLE IF EXISTS `t_school_dorm`;
CREATE TABLE `t_school_dorm` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `campus_id` bigint unsigned NOT NULL COMMENT '校区ID',
  `room_size` tinyint DEFAULT NULL COMMENT '几人间(4/6/8...)',
  `bunk_bed_desk` tinyint DEFAULT '0' COMMENT '是否上床下桌(0否1是)',
  `private_bath` tinyint DEFAULT '0' COMMENT '是否独立卫浴(0否1是)',
  `tags` varchar(256) DEFAULT '' COMMENT '宿舍标签(冗余文本：空调/热水/洗衣房...)',
  `description` varchar(512) DEFAULT '' COMMENT '补充说明',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_dorm_campus_id` (`campus_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='校区宿舍条件表';

-- ----------------------------
-- Table structure for t_school_enroll_plan
-- ----------------------------
DROP TABLE IF EXISTS `t_school_enroll_plan`;
CREATE TABLE `t_school_enroll_plan` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint unsigned NOT NULL COMMENT '学校ID',
  `year` smallint NOT NULL COMMENT '年份',
  `province` varchar(32) NOT NULL COMMENT '招生省份',
  `subject_type` varchar(16) DEFAULT '' COMMENT '分科：文/理/综(或物理/历史...)',
  `major_id` bigint unsigned DEFAULT NULL COMMENT '专业ID(可选，有则填)',
  `major_name` varchar(128) NOT NULL COMMENT '专业名称(冗余，没专业ID也能落库)',
  `education_level` varchar(16) DEFAULT '' COMMENT '学历层次：本科/专科',
  `plan_num` int NOT NULL COMMENT '计划数',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_plan_unique` (`school_id`,`year`,`province`,`subject_type`,`major_name`,`education_level`),
  KEY `idx_plan_school_year` (`school_id`,`year`),
  KEY `idx_plan_year_province` (`year`,`province`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校招生计划表';

-- ----------------------------
-- Table structure for t_school_major
-- ----------------------------
DROP TABLE IF EXISTS `t_school_major`;
CREATE TABLE `t_school_major` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint unsigned NOT NULL COMMENT '学校ID(冗余便于查)',
  `college_id` bigint unsigned DEFAULT NULL COMMENT '学院ID',
  `major_code` varchar(32) DEFAULT '' COMMENT '专业编码(可选)',
  `major_name` varchar(128) NOT NULL COMMENT '专业名称',
  `education_level` varchar(16) DEFAULT '' COMMENT '学历层次：本科/专科',
  `duration_years` tinyint DEFAULT NULL COMMENT '学制(3/4/5)',
  `major_category` varchar(32) DEFAULT '' COMMENT '专业类别：工学/理学/...',
  `degree_type` varchar(32) DEFAULT '' COMMENT '学位类型：工学学士/理学学士/...',
  `introduction` text COMMENT '专业介绍',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_college_major_name` (`college_id`,`major_name`),
  KEY `idx_major_school_id` (`school_id`),
  KEY `idx_major_college_id` (`college_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校专业表';

-- ----------------------------
-- Table structure for t_school_major_tag
-- ----------------------------
DROP TABLE IF EXISTS `t_school_major_tag`;
CREATE TABLE `t_school_major_tag` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `major_id` bigint unsigned NOT NULL COMMENT '专业ID',
  `tag_name` varchar(64) NOT NULL COMMENT '标签名称(如：双一流学科/国家级特色专业...)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_major_tag` (`major_id`,`tag_name`),
  KEY `idx_major_tag_name` (`tag_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='专业标签表';

-- ----------------------------
-- Table structure for t_school_media
-- ----------------------------
DROP TABLE IF EXISTS `t_school_media`;
CREATE TABLE `t_school_media` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `biz_type` varchar(32) NOT NULL COMMENT '业务类型：school/campus/college/major/dorm',
  `biz_id` bigint unsigned NOT NULL COMMENT '业务主键ID',
  `media_type` tinyint NOT NULL COMMENT '媒体类型：1-图片 2-视频',
  `url` varchar(512) NOT NULL COMMENT '资源URL',
  `cover_url` varchar(512) DEFAULT '' COMMENT '封面URL(视频可用)',
  `sort_no` int DEFAULT '0' COMMENT '排序',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `idx_media_biz` (`biz_type`,`biz_id`),
  KEY `idx_media_type` (`media_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校媒体资源表(图片/视频)';

-- ----------------------------
-- Table structure for t_school_name
-- ----------------------------
DROP TABLE IF EXISTS `t_school_name`;
CREATE TABLE `t_school_name` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint unsigned NOT NULL COMMENT '关联学校主表ID',
  `name` varchar(64) NOT NULL COMMENT '学校名称（曾用名/别名）',
  `name_type` tinyint NOT NULL COMMENT '名称类型：1-官方全称 2-曾用名 3-别名 4-英文名称',
  PRIMARY KEY (`id`),
  KEY `idx_school_id` (`school_id`),
  KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校多名称表';

-- ----------------------------
-- Table structure for t_school_tag
-- ----------------------------
DROP TABLE IF EXISTS `t_school_tag`;
CREATE TABLE `t_school_tag` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint unsigned NOT NULL COMMENT '关联学校主表ID',
  `tag_name` varchar(32) NOT NULL COMMENT '标签名称（如：985、211、双一流、理工类）',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_school_tag` (`school_id`,`tag_name`),
  KEY `idx_tag_name` (`tag_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学校标签表';
```