-- 部门管理区域表 -- 用于配置每个分公司/部门可管理的地域范围,支持省、市、县/区、详细地址等多级区域 CREATE TABLE IF NOT EXISTS `sys_dept_region` ( `region_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '区域ID', `dept_id` bigint(20) NOT NULL COMMENT '部门ID', `province` varchar(100) DEFAULT NULL COMMENT '省份', `city` varchar(100) DEFAULT NULL COMMENT '城市', `area` varchar(100) DEFAULT NULL COMMENT '县/区', `address` varchar(255) DEFAULT NULL COMMENT '详细地址(可选)', `hospital_name` varchar(255) DEFAULT NULL COMMENT '指定医院名称(可选,用于精确匹配特定医院)', `region_type` varchar(20) DEFAULT 'AREA' COMMENT '区域类型:AREA-地域范围,HOSPITAL-指定医院', `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`region_id`), KEY `idx_dept_id` (`dept_id`), KEY `idx_province` (`province`), KEY `idx_city` (`city`), KEY `idx_area` (`area`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门管理区域表'; -- 插入示例数据 -- 广州总部:管理整个广州市 INSERT INTO `sys_dept_region` (`dept_id`, `province`, `city`, `area`, `region_type`, `remark`, `create_time`) SELECT dept_id, '广东省', '广州市', NULL, 'AREA', '广州总部管理整个广州市', NOW() FROM sys_dept WHERE dept_name LIKE '%广州总%' AND parent_id = 100 LIMIT 1; -- 黄埔分公司:管理黄埔区 INSERT INTO `sys_dept_region` (`dept_id`, `province`, `city`, `area`, `region_type`, `remark`, `create_time`) SELECT dept_id, '广东省', '广州市', '黄埔区', 'AREA', '黄埔分公司管理黄埔区', NOW() FROM sys_dept WHERE dept_name LIKE '%黄埔%' AND parent_id = 100 LIMIT 1; -- 深圳分公司:管理整个深圳市 INSERT INTO `sys_dept_region` (`dept_id`, `province`, `city`, `area`, `region_type`, `remark`, `create_time`) SELECT dept_id, '广东省', '深圳市', NULL, 'AREA', '深圳分公司管理整个深圳市', NOW() FROM sys_dept WHERE dept_name LIKE '%深圳%' AND parent_id = 100 LIMIT 1; -- 省二医分公司:仅管理指定医院 INSERT INTO `sys_dept_region` (`dept_id`, `province`, `city`, `hospital_name`, `region_type`, `remark`, `create_time`) SELECT dept_id, '广东省', '广州市', '广东省第二人民医院', 'HOSPITAL', '省二医分公司仅管理省二医及相关医院', NOW() FROM sys_dept WHERE dept_name LIKE '%省二医%' AND parent_id = 100 LIMIT 1; INSERT INTO `sys_dept_region` (`dept_id`, `province`, `city`, `hospital_name`, `region_type`, `remark`, `create_time`) SELECT dept_id, '广东省', '广州市', '省二医', 'HOSPITAL', '省二医分公司仅管理省二医及相关医院(简称匹配)', NOW() FROM sys_dept WHERE dept_name LIKE '%省二医%' AND parent_id = 100 LIMIT 1; -- 说明: -- 1. region_type = 'AREA' 表示按地域范围管理 -- - 可以配置省、市、县/区,支持层级匹配 -- - province、city、area 都为 NULL 表示不限制 -- - 只配置 province 表示管理整个省 -- - 配置 province + city 表示管理该省的某个市 -- - 配置 province + city + area 表示管理该市的某个区 -- -- 2. region_type = 'HOSPITAL' 表示按指定医院管理 -- - hospital_name 字段用于精确或模糊匹配医院名称 -- - 可以为同一个部门配置多条医院记录 -- -- 3. 一个部门可以配置多条区域记录,表示管理多个区域或多个医院