xlcp-backend/sql/prison_init.sql
tangweijie 76bdb3a931 feat: 新增AI监控仪表盘功能和监管对象位置字段
- 新增AI监控仪表盘相关接口(监狱概况统计、重点人员查询)
- 新增监管对象位置字段(province/city/district)到各DO实体
- 新增重点人员页面相关VO(FocusPersonPageReqVO、FocusPersonVO)
- 新增AI监控入口菜单SQL脚本
- 新增监管对象位置升级SQL脚本
- 完善监控仪表盘服务实现(实时数据、统计分析、风险预警)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 00:17:53 +08:00

269 lines
16 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================
-- XL监狱综合管理平台 - 数据库初始化脚本
-- ============================================
-- 罪犯信息表
CREATE TABLE IF NOT EXISTS `prison_prisoner` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '罪犯ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
`name` varchar(50) NOT NULL COMMENT '姓名',
`gender` tinyint NOT NULL COMMENT '性别1-男 2-女',
`birthday` date DEFAULT NULL COMMENT '出生日期',
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
`ethnicity` varchar(50) DEFAULT NULL COMMENT '民族',
`native_place` varchar(100) DEFAULT NULL COMMENT '籍贯',
`education` tinyint DEFAULT NULL COMMENT '文化程度1-文盲 2-小学 3-初中 4-高中 5-中专 6-大专 7-本科 8-硕士 9-博士',
`occupation` varchar(50) DEFAULT NULL COMMENT '入狱前职业',
`address` varchar(500) DEFAULT NULL COMMENT '家庭住址',
`crime` varchar(200) NOT NULL COMMENT '罪名',
`sentence_years` int DEFAULT 0 COMMENT '刑期(年)',
`sentence_months` int DEFAULT 0 COMMENT '刑期(月)',
`life_imprisonment` tinyint DEFAULT 0 COMMENT '是否无期0-否 1-是',
`death_sentence_reprieve` tinyint DEFAULT 0 COMMENT '是否死缓0-否 1-是',
`court_name` varchar(100) DEFAULT NULL COMMENT '判决法院',
`judgment_date` date DEFAULT NULL COMMENT '判决日期',
`judgment_no` varchar(50) DEFAULT NULL COMMENT '判决书编号',
`original_sentence` varchar(100) DEFAULT NULL COMMENT '原判刑期',
`imprisonment_date` date DEFAULT NULL COMMENT '入狱日期',
`release_date` date DEFAULT NULL COMMENT '释放日期',
`release_type` tinyint DEFAULT 0 COMMENT '释放类型0-未知 1-刑满释放 2-假释 3-保外就医 4-减刑 5-暂予监外执行 6-特赦 7-死亡 8-其他',
`release_reason` varchar(500) DEFAULT NULL COMMENT '释放原因',
`photo` varchar(512) DEFAULT NULL COMMENT '照片URL',
`supervision_level` tinyint DEFAULT 2 COMMENT '监管等级1-严管 2-普管 3-宽管',
`risk_level` tinyint DEFAULT 1 COMMENT '风险等级1-低风险 2-中风险 3-高风险 4-极高风险',
`prison_area_id` bigint DEFAULT NULL COMMENT '监区ID',
`sub_area_id` bigint DEFAULT NULL COMMENT '分区ID',
`prison_cell_id` bigint DEFAULT NULL COMMENT '监室ID',
`marital_status` tinyint DEFAULT NULL COMMENT '婚姻状态1-未婚 2-已婚 3-离异 4-丧偶',
`crime_type` varchar(100) DEFAULT NULL COMMENT '罪名类型',
`sentence` varchar(100) DEFAULT NULL COMMENT '刑期',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-在押 2-已释放 3-已死亡 4-假释',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_prisoner_no` (`prisoner_no`, `tenant_id`),
KEY `idx_name` (`name`),
KEY `idx_id_card` (`id_card`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB COMMENT='罪犯信息表';
-- 监区信息表
CREATE TABLE IF NOT EXISTS `prison_area` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '监区ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`name` varchar(50) NOT NULL COMMENT '监区名称',
`code` varchar(50) NOT NULL COMMENT '监区编码',
`type` tinyint DEFAULT NULL COMMENT '监区类型1-普通监区 2-严管监区 3-医院 4-禁闭室',
`capacity` int DEFAULT NULL COMMENT '容纳人数',
`current_count` int DEFAULT 0 COMMENT '当前人数',
`sort` int DEFAULT 0 COMMENT '排序',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-启用 2-禁用',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`, `tenant_id`),
KEY `idx_sort` (`sort`)
) ENGINE=InnoDB COMMENT='监区信息表';
-- 监室信息表
CREATE TABLE IF NOT EXISTS `prison_cell` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '监室ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`area_id` bigint NOT NULL COMMENT '所属监区ID',
`name` varchar(50) NOT NULL COMMENT '监室名称',
`code` varchar(50) NOT NULL COMMENT '监室编码',
`capacity` int DEFAULT NULL COMMENT '床位数量',
`current_count` int DEFAULT 0 COMMENT '当前人数',
`sort` int DEFAULT 0 COMMENT '排序',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-启用 2-禁用',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`, `tenant_id`),
KEY `idx_area_id` (`area_id`)
) ENGINE=InnoDB COMMENT='监室信息表';
-- 计分考核表
CREATE TABLE IF NOT EXISTS `prison_score` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
`prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
`year` int NOT NULL COMMENT '考核年份',
`month` int NOT NULL COMMENT '考核月份',
`base_score` decimal(10,2) DEFAULT 0.00 COMMENT '基础分',
`reward_score` decimal(10,2) DEFAULT 0.00 COMMENT '加分',
`penalty_score` decimal(10,2) DEFAULT 0.00 COMMENT '扣分',
`total_score` decimal(10,2) DEFAULT 0.00 COMMENT '总分',
`level` tinyint DEFAULT NULL COMMENT '考核等级1-优秀 2-良好 3-合格 4-不合格',
`assessor_id` bigint DEFAULT NULL COMMENT '考核人ID',
`assessor_name` varchar(50) DEFAULT NULL COMMENT '考核人姓名',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-待审核 2-已通过 3-已驳回',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_prisoner_id` (`prisoner_id`),
KEY `idx_year_month` (`year`, `month`)
) ENGINE=InnoDB COMMENT='计分考核表';
-- 危险评估表
CREATE TABLE IF NOT EXISTS `prison_risk_assessment` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评估ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
`prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
`assessment_type` tinyint NOT NULL COMMENT '评估类型1-入狱评估 2-定期评估 3-专项评估',
`assessment_date` date NOT NULL COMMENT '评估日期',
`violence_score` decimal(10,2) DEFAULT 0.00 COMMENT '暴力倾向得分',
`escape_score` decimal(10,2) DEFAULT 0.00 COMMENT '脱逃倾向得分',
`suicide_score` decimal(10,2) DEFAULT 0.00 COMMENT '自杀倾向得分',
`total_score` decimal(10,2) DEFAULT 0.00 COMMENT '综合得分',
`risk_level` tinyint NOT NULL COMMENT '风险等级1-低风险 2-中风险 3-高风险 4-极高风险',
`risk_factors` varchar(500) DEFAULT NULL COMMENT '风险因素',
`suggestions` varchar(500) DEFAULT NULL COMMENT '管控建议',
`assessor_id` bigint DEFAULT NULL COMMENT '评估人ID',
`assessor_name` varchar(50) DEFAULT NULL COMMENT '评估人姓名',
`next_assessment_date` date DEFAULT NULL COMMENT '下次评估日期',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-待审核 2-已通过',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_prisoner_id` (`prisoner_id`),
KEY `idx_assessment_date` (`assessment_date`)
) ENGINE=InnoDB COMMENT='危险评估表';
-- 消费记录表
CREATE TABLE IF NOT EXISTS `prison_consumption` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
`prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
`type` tinyint NOT NULL COMMENT '类型1-存款 2-消费 3-转账',
`amount` decimal(12,2) NOT NULL COMMENT '金额',
`balance` decimal(12,2) DEFAULT 0.00 COMMENT '账户余额',
`goods_name` varchar(100) DEFAULT NULL COMMENT '商品名称',
`goods_count` int DEFAULT 1 COMMENT '商品数量',
`order_no` varchar(64) DEFAULT NULL COMMENT '订单号',
`trade_time` datetime NOT NULL COMMENT '交易时间',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-成功 2-失败',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_prisoner_id` (`prisoner_id`),
KEY `idx_trade_time` (`trade_time`),
KEY `idx_type` (`type`)
) ENGINE=InnoDB COMMENT='消费记录表';
-- 问卷模板表
CREATE TABLE IF NOT EXISTS `prison_questionnaire` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '问卷ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`title` varchar(200) NOT NULL COMMENT '问卷标题',
`type` tinyint NOT NULL COMMENT '问卷类型1-心理测评 2-行为评估 3-满意度调查',
`description` varchar(500) DEFAULT NULL COMMENT '问卷说明',
`total_score` decimal(10,2) DEFAULT 100.00 COMMENT '总分',
`pass_score` decimal(10,2) DEFAULT 60.00 COMMENT '及格分',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-草稿 2-已发布 3-已禁用',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_type` (`type`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB COMMENT='问卷模板表';
-- 问卷问题表
CREATE TABLE IF NOT EXISTS `prison_question` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '问题ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`questionnaire_id` bigint NOT NULL COMMENT '所属问卷ID',
`title` varchar(500) NOT NULL COMMENT '问题标题',
`type` tinyint NOT NULL COMMENT '问题类型1-单选 2-多选 3-填空 4-评分',
`options` text COMMENT '选项JSON[{label:"选项1",score:10},...]',
`score` decimal(10,2) DEFAULT 0.00 COMMENT '分值',
`sort` int DEFAULT 0 COMMENT '排序',
`is_required` bit(1) DEFAULT b'1' COMMENT '是否必答',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_questionnaire_id` (`questionnaire_id`)
) ENGINE=InnoDB COMMENT='问卷问题表';
-- 问卷答题记录表
CREATE TABLE IF NOT EXISTS `prison_questionnaire_record` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`questionnaire_id` bigint NOT NULL COMMENT '问卷ID',
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
`prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号',
`total_score` decimal(10,2) DEFAULT 0.00 COMMENT '得分',
`pass_status` tinyint DEFAULT NULL COMMENT '是否及格1-及格 2-不及格',
`answer_time` datetime NOT NULL COMMENT '答题时间',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-已完成 2-已过期',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_questionnaire_id` (`questionnaire_id`),
KEY `idx_prisoner_id` (`prisoner_id`)
) ENGINE=InnoDB COMMENT='问卷答题记录表';
-- 罪犯监区变动记录表
CREATE TABLE IF NOT EXISTS `prison_prisoner_area_log` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
`from_area_id` bigint DEFAULT NULL COMMENT '原监区ID',
`from_cell_id` bigint DEFAULT NULL COMMENT '原监室ID',
`to_area_id` bigint NOT NULL COMMENT '新监区ID',
`to_cell_id` bigint NOT NULL COMMENT '新监室ID',
`change_type` varchar(20) NOT NULL COMMENT '变动类型:调监区、调监室、入监、出监',
`reason` varchar(500) DEFAULT NULL COMMENT '变动原因',
`approve_no` varchar(50) DEFAULT NULL COMMENT '批准文号',
`operate_by` bigint NOT NULL COMMENT '操作人ID',
`operate_name` varchar(50) DEFAULT NULL COMMENT '操作人姓名',
`operate_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_prisoner_id` (`prisoner_id`),
KEY `idx_operate_time` (`operate_time`)
) ENGINE=InnoDB COMMENT='罪犯监区变动记录表';