wlzboy
4 天以前 c098f1e3a3e052aa3d65584aae6dc003a70d75ad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
-- 部门管理区域表
-- 用于配置每个分公司/部门可管理的地域范围,支持省、市、县/区、详细地址等多级区域
 
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. 一个部门可以配置多条区域记录,表示管理多个区域或多个医院