-- 部门管理区域表
|
-- 用于配置每个分公司/部门可管理的地域范围,支持省、市、县/区、详细地址等多级区域
|
|
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. 一个部门可以配置多条区域记录,表示管理多个区域或多个医院
|