You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
6.7 KiB
151 lines
6.7 KiB
|
4 days ago
|
-- 案件监督:负面清单巡查 + 周调度
|
||
|
|
-- 1) t_case_file 补业务分类/创建单位/办案单位/案件状态
|
||
|
|
-- 2) 周调度主表 + 案件快照 + 参会人员
|
||
|
|
-- 3) 案件监督改为目录并挂两个子菜单及功能权限
|
||
|
|
|
||
|
|
-- ========== 案件快照补字段 ==========
|
||
|
|
ALTER TABLE t_case_file ADD COLUMN IF NOT EXISTS biz_category VARCHAR(32) DEFAULT '经侦';
|
||
|
|
ALTER TABLE t_case_file ADD COLUMN IF NOT EXISTS create_dept VARCHAR(128);
|
||
|
|
ALTER TABLE t_case_file ADD COLUMN IF NOT EXISTS handle_dept VARCHAR(128);
|
||
|
|
ALTER TABLE t_case_file ADD COLUMN IF NOT EXISTS case_status VARCHAR(32) DEFAULT 'investigating';
|
||
|
|
|
||
|
|
COMMENT ON COLUMN t_case_file.biz_category IS '业务系统分类:经侦/刑侦等';
|
||
|
|
COMMENT ON COLUMN t_case_file.create_dept IS '创建单位';
|
||
|
|
COMMENT ON COLUMN t_case_file.handle_dept IS '办案单位';
|
||
|
|
COMMENT ON COLUMN t_case_file.case_status IS '案件状态:pending_filing/investigating/closed/withdrawn';
|
||
|
|
|
||
|
|
UPDATE t_case_file
|
||
|
|
SET biz_category = COALESCE(NULLIF(biz_category, ''), '经侦'),
|
||
|
|
case_status = COALESCE(NULLIF(case_status, ''), 'investigating')
|
||
|
|
WHERE deleted_flag = FALSE;
|
||
|
|
|
||
|
|
-- ========== 周调度 ==========
|
||
|
|
CREATE TABLE IF NOT EXISTS t_case_weekly_schedule (
|
||
|
|
schedule_id BIGSERIAL PRIMARY KEY,
|
||
|
|
schedule_no VARCHAR(64) NOT NULL,
|
||
|
|
schedule_content TEXT,
|
||
|
|
status VARCHAR(32) NOT NULL DEFAULT 'draft',
|
||
|
|
create_user_id BIGINT,
|
||
|
|
create_user_name VARCHAR(64),
|
||
|
|
push_time TIMESTAMP,
|
||
|
|
lock_time TIMESTAMP,
|
||
|
|
create_time TIMESTAMP DEFAULT NOW(),
|
||
|
|
update_time TIMESTAMP DEFAULT NOW(),
|
||
|
|
deleted_flag BOOLEAN DEFAULT FALSE
|
||
|
|
);
|
||
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uk_t_case_weekly_schedule_no
|
||
|
|
ON t_case_weekly_schedule(schedule_no) WHERE deleted_flag = FALSE;
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_t_case_weekly_schedule_status
|
||
|
|
ON t_case_weekly_schedule(status) WHERE deleted_flag = FALSE;
|
||
|
|
|
||
|
|
COMMENT ON TABLE t_case_weekly_schedule IS '案件周调度:draft未推送 / pending_confirm待确认 / confirmed全员确认已锁定';
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS t_case_weekly_schedule_case (
|
||
|
|
item_id BIGSERIAL PRIMARY KEY,
|
||
|
|
schedule_id BIGINT NOT NULL,
|
||
|
|
case_id BIGINT NOT NULL,
|
||
|
|
case_no VARCHAR(64) NOT NULL,
|
||
|
|
case_name VARCHAR(200) NOT NULL,
|
||
|
|
create_dept VARCHAR(128),
|
||
|
|
handle_dept VARCHAR(128),
|
||
|
|
case_status VARCHAR(32),
|
||
|
|
accept_time TIMESTAMP,
|
||
|
|
sort_no INTEGER DEFAULT 0,
|
||
|
|
create_time TIMESTAMP DEFAULT NOW()
|
||
|
|
);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_t_case_weekly_schedule_case_sid
|
||
|
|
ON t_case_weekly_schedule_case(schedule_id);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS t_case_weekly_schedule_member (
|
||
|
|
member_id BIGSERIAL PRIMARY KEY,
|
||
|
|
schedule_id BIGINT NOT NULL,
|
||
|
|
employee_id BIGINT NOT NULL,
|
||
|
|
employee_name VARCHAR(64),
|
||
|
|
confirmed_flag BOOLEAN DEFAULT FALSE,
|
||
|
|
confirm_time TIMESTAMP,
|
||
|
|
create_time TIMESTAMP DEFAULT NOW()
|
||
|
|
);
|
||
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uk_t_case_weekly_schedule_member
|
||
|
|
ON t_case_weekly_schedule_member(schedule_id, employee_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_t_case_weekly_schedule_member_emp
|
||
|
|
ON t_case_weekly_schedule_member(employee_id, confirmed_flag);
|
||
|
|
|
||
|
|
-- ========== 菜单:案件监督改为目录 ==========
|
||
|
|
UPDATE t_menu
|
||
|
|
SET menu_type = 1,
|
||
|
|
component = NULL,
|
||
|
|
path = '/case-management/supervision',
|
||
|
|
update_time = NOW()
|
||
|
|
WHERE menu_name = '案件监督'
|
||
|
|
AND path = '/case-management/supervision'
|
||
|
|
AND deleted_flag = 0;
|
||
|
|
|
||
|
|
-- 旧功能点挂在原页面上,改为目录后下线
|
||
|
|
UPDATE t_menu f
|
||
|
|
SET deleted_flag = TRUE,
|
||
|
|
update_time = NOW()
|
||
|
|
FROM t_menu p
|
||
|
|
WHERE p.menu_name = '案件监督'
|
||
|
|
AND p.path = '/case-management/supervision'
|
||
|
|
AND p.deleted_flag = 0
|
||
|
|
AND f.parent_id = p.menu_id
|
||
|
|
AND f.menu_type = 3
|
||
|
|
AND f.deleted_flag = 0
|
||
|
|
AND f.web_perms IN (
|
||
|
|
'case:query',
|
||
|
|
'case-supervision:query',
|
||
|
|
'case-supervision:add',
|
||
|
|
'case-supervision:view',
|
||
|
|
'case-supervision:supervise'
|
||
|
|
);
|
||
|
|
|
||
|
|
INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component,
|
||
|
|
frame_flag, cache_flag, visible_flag, disabled_flag,
|
||
|
|
perms_type, icon, deleted_flag, create_user_id, create_time, update_time)
|
||
|
|
SELECT v.menu_name, 2, p.menu_id, v.sort_num, v.path, v.component,
|
||
|
|
false, false, true, false, 1, NULL, false, 1, NOW(), NOW()
|
||
|
|
FROM t_menu p
|
||
|
|
CROSS JOIN (VALUES
|
||
|
|
('负面清单巡查', 1, '/case-management/supervision/negative-list',
|
||
|
|
'/business/case-management/negative-list.vue'),
|
||
|
|
('周调度', 2, '/case-management/supervision/weekly-schedule',
|
||
|
|
'/business/case-management/weekly-schedule.vue')
|
||
|
|
) AS v(menu_name, sort_num, path, component)
|
||
|
|
WHERE p.menu_name = '案件监督'
|
||
|
|
AND p.path = '/case-management/supervision'
|
||
|
|
AND p.deleted_flag = 0
|
||
|
|
AND NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.path = v.path AND x.deleted_flag = 0);
|
||
|
|
|
||
|
|
-- 功能权限
|
||
|
|
INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, frame_flag, cache_flag,
|
||
|
|
visible_flag, disabled_flag, perms_type, api_perms, web_perms,
|
||
|
|
context_menu_id, deleted_flag, create_user_id, create_time, update_time)
|
||
|
|
SELECT v.menu_name, 3, c.menu_id, v.sort_num, false, false, true, false, 1,
|
||
|
|
v.perms, v.perms, c.menu_id, false, 1, NOW(), NOW()
|
||
|
|
FROM t_menu c
|
||
|
|
CROSS JOIN (VALUES
|
||
|
|
('查询', 10, 'negative-list:query', '/case-management/supervision/negative-list'),
|
||
|
|
('查询', 10, 'weekly-schedule:query', '/case-management/supervision/weekly-schedule'),
|
||
|
|
('新增', 20, 'weekly-schedule:add', '/case-management/supervision/weekly-schedule'),
|
||
|
|
('查看', 30, 'weekly-schedule:view', '/case-management/supervision/weekly-schedule'),
|
||
|
|
('推送', 40, 'weekly-schedule:push', '/case-management/supervision/weekly-schedule'),
|
||
|
|
('确认', 50, 'weekly-schedule:confirm', '/case-management/supervision/weekly-schedule'),
|
||
|
|
('打印', 60, 'weekly-schedule:print', '/case-management/supervision/weekly-schedule')
|
||
|
|
) AS v(menu_name, sort_num, perms, child_path)
|
||
|
|
WHERE c.path = v.child_path
|
||
|
|
AND c.deleted_flag = 0
|
||
|
|
AND NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.web_perms = v.perms AND x.deleted_flag = 0);
|
||
|
|
|
||
|
|
-- 原有「案件监督」权限的角色同步绑定子菜单及功能点
|
||
|
|
INSERT INTO t_role_menu (role_id, menu_id)
|
||
|
|
SELECT DISTINCT rm.role_id, c.menu_id
|
||
|
|
FROM t_role_menu rm
|
||
|
|
JOIN t_menu p ON p.menu_id = rm.menu_id
|
||
|
|
JOIN t_menu c ON c.parent_id = p.menu_id AND c.deleted_flag = 0 AND c.menu_type IN (2, 3)
|
||
|
|
WHERE p.menu_name = '案件监督'
|
||
|
|
AND p.path = '/case-management/supervision'
|
||
|
|
AND p.deleted_flag = 0
|
||
|
|
AND NOT EXISTS (
|
||
|
|
SELECT 1 FROM t_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = c.menu_id
|
||
|
|
);
|