-- ============================================ -- 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='罪犯监区变动记录表';