-- 部门管理区域表
-- 用于配置每个分公司/部门可管理的地域范围，支持省、市、县/区、详细地址等多级区域

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. 一个部门可以配置多条区域记录，表示管理多个区域或多个医院
