铜陵经侦
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.

110 lines
4.9 KiB

4 days ago
-- 案件三色预警:案件快照 + 法律文书抓取 + 活动日志 + 预警单
-- 红色通报一旦触发不可消除
-- 接报案来源:人民检察院通知立案;法院/检察院子项允许普通经侦
ALTER TABLE t_alarm_report DROP CONSTRAINT IF EXISTS t_alarm_report_case_source_check;
ALTER TABLE t_alarm_report ADD CONSTRAINT t_alarm_report_case_source_check
CHECK (case_source IS NULL OR case_source IN (
'party_report',
'admin_transfer',
'court_transfer',
'procuratorate_transfer',
'procuratorate_notify',
'superior_assign',
'work_discovery',
'other_unit_transfer'
));
ALTER TABLE t_alarm_report DROP CONSTRAINT IF EXISTS t_alarm_report_case_source_sub_check;
ALTER TABLE t_alarm_report ADD CONSTRAINT t_alarm_report_case_source_sub_check
CHECK (case_source_sub IS NULL OR case_source_sub IN ('false_litigation', 'other', 'normal'));
INSERT INTO t_dict_data (dict_id, data_value, data_label, remark, sort_order, disabled_flag, create_time, update_time)
SELECT d.dict_id, 'procuratorate_notify', '人民检察院通知立案', '案件来源', 5, false, NOW(), NOW()
FROM t_dict d
WHERE d.dict_code = 'CASE_SOURCE'
AND NOT EXISTS (
SELECT 1 FROM t_dict_data x
WHERE x.dict_id = d.dict_id AND x.data_value = 'procuratorate_notify'
);
UPDATE t_dict_data SET sort_order = 6 WHERE dict_id = (SELECT dict_id FROM t_dict WHERE dict_code = 'CASE_SOURCE') AND data_value = 'superior_assign';
UPDATE t_dict_data SET sort_order = 7 WHERE dict_id = (SELECT dict_id FROM t_dict WHERE dict_code = 'CASE_SOURCE') AND data_value = 'work_discovery';
UPDATE t_dict_data SET sort_order = 8 WHERE dict_id = (SELECT dict_id FROM t_dict WHERE dict_code = 'CASE_SOURCE') AND data_value = 'other_unit_transfer';
INSERT INTO t_dict_data (dict_id, data_value, data_label, remark, sort_order, disabled_flag, create_time, update_time)
SELECT d.dict_id, 'normal', '普通经侦案件', '案件来源子项', 0, false, NOW(), NOW()
FROM t_dict d
WHERE d.dict_code = 'CASE_SOURCE_SUB'
AND NOT EXISTS (
SELECT 1 FROM t_dict_data x
WHERE x.dict_id = d.dict_id AND x.data_value = 'normal'
);
CREATE TABLE IF NOT EXISTS t_case_file (
case_id BIGSERIAL PRIMARY KEY,
case_no VARCHAR(64) NOT NULL,
case_name VARCHAR(200) NOT NULL,
alarm_id BIGINT,
case_source VARCHAR(64),
case_source_sub VARCHAR(64),
handler_name VARCHAR(64),
review_decide_time TIMESTAMP,
accept_time TIMESTAMP,
filing_time TIMESTAMP,
detention_time TIMESTAMP,
arrest_time TIMESTAMP,
residential_time TIMESTAMP,
designated_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_file_no ON t_case_file(case_no) WHERE deleted_flag = FALSE;
CREATE TABLE IF NOT EXISTS t_case_legal_doc (
doc_id BIGSERIAL PRIMARY KEY,
case_id BIGINT NOT NULL,
doc_type VARCHAR(64) NOT NULL,
doc_name VARCHAR(200) NOT NULL,
issue_time TIMESTAMP NOT NULL,
approved_flag BOOLEAN DEFAULT TRUE,
interrogated BOOLEAN DEFAULT FALSE,
seq_no INTEGER DEFAULT 1,
create_time TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_t_case_legal_doc_case ON t_case_legal_doc(case_id, doc_type);
CREATE TABLE IF NOT EXISTS t_case_activity_log (
log_id BIGSERIAL PRIMARY KEY,
case_id BIGINT NOT NULL,
activity_time TIMESTAMP NOT NULL,
activity_title VARCHAR(200) NOT NULL,
operator_name VARCHAR(64),
create_time TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_t_case_activity_case ON t_case_activity_log(case_id, activity_time);
CREATE TABLE IF NOT EXISTS t_case_risk_warning (
warning_id BIGSERIAL PRIMARY KEY,
warning_no VARCHAR(64) NOT NULL,
case_id BIGINT NOT NULL,
rule_code VARCHAR(64) NOT NULL,
track_key VARCHAR(64) NOT NULL,
color VARCHAR(16) NOT NULL,
reason TEXT NOT NULL,
elapsed_days INTEGER,
sticky_red BOOLEAN DEFAULT FALSE,
status VARCHAR(32) NOT NULL DEFAULT 'open',
process_measure TEXT,
process_remark TEXT,
process_user VARCHAR(64),
process_time TIMESTAMP,
trigger_time TIMESTAMP NOT NULL DEFAULT NOW(),
update_time TIMESTAMP DEFAULT NOW()
);
CREATE UNIQUE INDEX IF NOT EXISTS uk_t_case_risk_warning_no ON t_case_risk_warning(warning_no);
CREATE INDEX IF NOT EXISTS idx_t_case_risk_warning_case ON t_case_risk_warning(case_id, rule_code, track_key);
COMMENT ON TABLE t_case_risk_warning IS '案件三色预警:红=问题通报 黄=问题预警 蓝=普通提醒;红色 sticky_red 后不可消除';