-- ============================================ -- XL监狱综合管理平台 - 数据库迁移脚本 V1 -- 版本: 1.0 -- 日期: 2026-01-21 -- 说明: 基于实体类DO生成,包含所有表的完整字段定义 -- ============================================ -- 开启外键检查(可选,根据需求调整) SET FOREIGN_KEY_CHECKS = 0; -- ============================================ -- 1. 罪犯信息表 (prison_prisoner) -- ============================================ DROP TABLE IF EXISTS `prison_prisoner`; 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 '释放类型:1-刑满 2-假释 3-暂予监外执行 4-减刑 5-移交 6-死亡', `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 '刑期', `children` varchar(500) 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='罪犯信息表'; -- ============================================ -- 2. 监区信息表 (prison_area) -- ============================================ DROP TABLE IF EXISTS `prison_area`; 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-出监监区 5-医院 6-禁闭室', `parent_id` bigint DEFAULT 0 COMMENT '父级ID,0表示顶级监区', `level` tinyint DEFAULT 1 COMMENT '级别:1-监区(大队) 2-分监区(中队)', `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`), KEY `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB COMMENT='监区信息表'; -- ============================================ -- 3. 监室信息表 (prison_cell) -- ============================================ DROP TABLE IF EXISTS `prison_cell`; 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='监室信息表'; -- ============================================ -- 4. 计分考核表 (prison_score) -- ============================================ DROP TABLE IF EXISTS `prison_score`; 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-已驳回', `prison_area_id` bigint DEFAULT NULL COMMENT '监区ID', `prison_cell_id` bigint DEFAULT NULL COMMENT '监室ID', `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='计分考核表'; -- ============================================ -- 5. 考核规则配置表 (prison_score_rule) -- ============================================ DROP TABLE IF EXISTS `prison_score_rule`; CREATE TABLE IF NOT EXISTS `prison_score_rule` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '规则ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `category` tinyint NOT NULL COMMENT '类别:1-劳动改造 2-教育改造 3-日常行为 4-卫生纪律 5-加分项 6-扣分项', `item_name` varchar(100) NOT NULL COMMENT '项目名称', `item_code` varchar(50) NOT NULL COMMENT '项目编码(唯一)', `score` decimal(10,2) NOT NULL COMMENT '分值(加分正数,扣分负数)', `max_daily_score` decimal(10,2) DEFAULT NULL COMMENT '日最高分限制', `max_monthly_score` decimal(10,2) DEFAULT NULL COMMENT '月最高分限制', `description` varchar(500) DEFAULT NULL COMMENT '规则说明', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1-启用 2-禁用', `sort` int DEFAULT 0 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_item_code` (`item_code`, `tenant_id`), KEY `idx_category` (`category`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='考核规则配置表'; -- ============================================ -- 6. 考核记录明细表 (prison_score_detail) -- ============================================ DROP TABLE IF EXISTS `prison_score_detail`; CREATE TABLE IF NOT EXISTS `prison_score_detail` ( `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 '罪犯编号', `record_date` date NOT NULL COMMENT '记录日期', `rule_id` bigint DEFAULT NULL COMMENT '规则ID', `score` decimal(10,2) NOT NULL COMMENT '得分', `score_type` tinyint NOT NULL COMMENT '类型:1-加分 2-扣分', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `recorder_id` bigint DEFAULT NULL COMMENT '记录人ID', `recorder_name` varchar(50) DEFAULT 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_prisoner_id` (`prisoner_id`), KEY `idx_record_date` (`record_date`), KEY `idx_rule_id` (`rule_id`) ) ENGINE=InnoDB COMMENT='考核记录明细表'; -- ============================================ -- 7. 危险评估表 (prison_risk_assessment) -- ============================================ DROP TABLE IF EXISTS `prison_risk_assessment`; 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='危险评估表'; -- ============================================ -- 8. 消费记录表 (prison_consumption) -- ============================================ DROP TABLE IF EXISTS `prison_consumption`; 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 '罪犯编号', `order_no` varchar(64) DEFAULT NULL COMMENT '订单号', `type` tinyint NOT NULL COMMENT '类型:1-购物 2-餐饮 3-医疗 4-通讯 5-其他', `total_amount` decimal(12,2) NOT NULL COMMENT '订单总金额', `balance` decimal(12,2) DEFAULT 0.00 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='消费记录表'; -- ============================================ -- 9. 问卷模板表 (prison_questionnaire) -- ============================================ DROP TABLE IF EXISTS `prison_questionnaire`; 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-已禁用', `cover_image` varchar(500) DEFAULT NULL COMMENT '封面图片URL', `instruction` varchar(1000) DEFAULT NULL COMMENT '填写说明', `estimated_time` int DEFAULT NULL COMMENT '预计耗时(分钟)', `part_count` tinyint DEFAULT 1 COMMENT '分区数量', `allow_anonymous` tinyint DEFAULT 0 COMMENT '是否允许匿名:0-不允许 1-允许', `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='问卷模板表'; -- ============================================ -- 10. 问卷问题表 (prison_question) -- ============================================ DROP TABLE IF EXISTS `prison_question`; 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-评分 5-日期 6-数字', `options` text COMMENT '选项JSON:[{label:"选项1",score:10,isOther:false},...]', `score` decimal(10,2) DEFAULT 0.00 COMMENT '分值', `sort` int DEFAULT 0 COMMENT '排序', `is_required` tinyint DEFAULT 1 COMMENT '是否必答:0-否 1-是', `part_name` varchar(50) DEFAULT NULL COMMENT '分区名称(Part名称),用于将问题分组', `part_sort` tinyint DEFAULT 0 COMMENT '分区排序(同一问卷内的分区序号)', `help_text` varchar(500) DEFAULT NULL COMMENT '帮助说明文字', `placeholder` varchar(200) DEFAULT NULL COMMENT '占位提示(填空题/数字题显示)', `default_value` varchar(200) DEFAULT NULL COMMENT '默认值', `auto_fill_type` varchar(20) DEFAULT 'NONE' COMMENT '自动填充类型:NONE-无 AUTO-系统自动填充 MANUAL-手动输入', `auto_fill_source` varchar(100) DEFAULT NULL COMMENT '自动填充来源:dict:字典类型 / field:字段名', `display_condition` text COMMENT '显示条件JSON:{"field":"字段名","operator":">=","value":"值"}', `min_value` int DEFAULT NULL COMMENT '最小值(数字/评分题)', `max_value` int 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_questionnaire_id` (`questionnaire_id`) ) ENGINE=InnoDB COMMENT='问卷问题表'; -- ============================================ -- 11. 问卷答题记录表 (prison_questionnaire_record) -- ============================================ DROP TABLE IF EXISTS `prison_questionnaire_record`; 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', `questionnaire_name` varchar(200) DEFAULT NULL COMMENT '问卷名称', `prisoner_id` bigint NOT NULL COMMENT '罪犯ID', `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号', `prisoner_name` varchar(50) DEFAULT NULL COMMENT '罪犯姓名', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1-待测评 2-测评中 3-已完成 4-已过期 5-已取消', `start_time` datetime DEFAULT NULL COMMENT '开始时间', `end_time` datetime DEFAULT NULL COMMENT '结束时间', `answer_time` datetime DEFAULT NULL COMMENT '答题时间', `deadline` datetime DEFAULT NULL COMMENT '截止日期', `objective_score` decimal(10,2) DEFAULT 0.00 COMMENT '客观题得分', `subjective_score` decimal(10,2) DEFAULT 0.00 COMMENT '主观题得分', `total_score` decimal(10,2) DEFAULT 0.00 COMMENT '总分', `pass_score` decimal(10,2) DEFAULT NULL COMMENT '及格分数', `pass_status` tinyint DEFAULT NULL COMMENT '及格状态:1-及格 2-不及格 3-待评阅', `risk_level` tinyint DEFAULT NULL COMMENT '风险等级:1-高风险 2-中风险 3-低风险', `evaluator_id` bigint DEFAULT NULL COMMENT '评阅人ID', `evaluator_name` varchar(50) DEFAULT NULL COMMENT '评阅人姓名', `evaluate_time` datetime DEFAULT NULL COMMENT '评阅时间', `participant_count` int DEFAULT 0 COMMENT '参与人数', `completed_count` int DEFAULT 0 COMMENT '完成人数', `duration` int DEFAULT 0 COMMENT '答题用时(秒)', `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_questionnaire_id` (`questionnaire_id`), KEY `idx_prisoner_id` (`prisoner_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='问卷答题记录表'; -- ============================================ -- 12. 问卷答题详情表 (prison_answer) -- ============================================ DROP TABLE IF EXISTS `prison_answer`; CREATE TABLE IF NOT EXISTS `prison_answer` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '答题记录ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `assessment_record_id` bigint NOT NULL COMMENT '测评记录ID', `question_id` bigint NOT NULL COMMENT '问题ID', `questionnaire_id` bigint NOT NULL COMMENT '问卷ID(冗余)', `prisoner_id` bigint NOT NULL COMMENT '罪犯ID', `question_type` tinyint NOT NULL COMMENT '问题类型:1-单选 2-多选 3-填空 4-评分 5-日期 6-数字', `answer_text` text COMMENT '答案内容(填空题、评分题等)', `option_ids` text COMMENT '选项ID列表(JSON数组,如 [1,2,3])', `score` decimal(10,2) DEFAULT 0.00 COMMENT '得分', `is_correct` tinyint DEFAULT NULL COMMENT '是否正确:null-未评分 0-错误 1-正确', `duration` int DEFAULT 0 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_assessment_record_id` (`assessment_record_id`), KEY `idx_question_id` (`question_id`), KEY `idx_prisoner_id` (`prisoner_id`) ) ENGINE=InnoDB COMMENT='问卷答题详情表'; -- ============================================ -- 13. 罪犯监区变动记录表 (prison_prisoner_area_log) -- ============================================ DROP TABLE IF EXISTS `prison_prisoner_area_log`; 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', `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号', `from_area_id` bigint DEFAULT NULL COMMENT '原监区ID', `from_sub_area_id` bigint DEFAULT NULL COMMENT '原分监区ID', `from_cell_id` bigint DEFAULT NULL COMMENT '原监室ID', `to_area_id` bigint NOT NULL COMMENT '新监区ID', `to_sub_area_id` bigint DEFAULT NULL COMMENT '新分监区ID', `to_cell_id` bigint NOT NULL COMMENT '新监室ID', `change_type` tinyint NOT NULL COMMENT '变动类型:1-调入 2-调出 3-临时安置 4-医疗回监 5-初始分配', `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='罪犯监区变动记录表'; -- ============================================ -- 14. 预警信息表 (prison_warning) -- ============================================ DROP TABLE IF EXISTS `prison_warning`; CREATE TABLE IF NOT EXISTS `prison_warning` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '预警ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `title` varchar(200) NOT NULL COMMENT '预警标题', `content` text COMMENT '预警内容', `type` tinyint NOT NULL COMMENT '预警类型:1-安全预警 2-监管预警 3-改造预警 4-生产预警 5-生活卫生预警 6-其他', `level` tinyint NOT NULL COMMENT '预警等级:1-一般 2-重要 3-紧急 4-严重', `status` tinyint NOT NULL DEFAULT 1 COMMENT '预警状态:1-待核实 2-已核实 3-已处置 4-已解除', `source` tinyint DEFAULT NULL COMMENT '预警来源:1-民警报告 2-监控系统 3-举报 4-罪犯自首 5-智能分析 6-其他', `situation_id` bigint DEFAULT NULL COMMENT '关联狱情ID', `area_id` bigint DEFAULT NULL COMMENT '关联监区ID', `cell_id` bigint DEFAULT NULL COMMENT '关联监室ID', `alert_time` datetime NOT NULL COMMENT '预警时间', `verify_time` datetime DEFAULT NULL COMMENT '核实时间', `verifier` varchar(50) DEFAULT NULL COMMENT '核实人', `verify_result` varchar(500) DEFAULT NULL COMMENT '核实结果', `handle_time` datetime DEFAULT NULL COMMENT '处置时间', `handler` varchar(50) DEFAULT NULL COMMENT '处置人', `handle_method` varchar(200) DEFAULT NULL COMMENT '处置方式', `handle_result` varchar(500) DEFAULT NULL COMMENT '处置结果', `release_time` datetime DEFAULT NULL COMMENT '解除时间', `releaser` varchar(50) DEFAULT NULL COMMENT '解除人', `release_reason` varchar(500) DEFAULT NULL COMMENT '解除原因', `occur_time` datetime DEFAULT NULL COMMENT '发生时间', `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_type` (`type`), KEY `idx_level` (`level`), KEY `idx_status` (`status`), KEY `idx_area_id` (`area_id`), KEY `idx_alert_time` (`alert_time`) ) ENGINE=InnoDB COMMENT='预警信息表'; -- ============================================ -- 15. 狱情收集信息表 (prison_situation) -- ============================================ DROP TABLE IF EXISTS `prison_situation`; CREATE TABLE IF NOT EXISTS `prison_situation` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '狱情ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `title` varchar(200) NOT NULL COMMENT '标题', `content` text COMMENT '详情内容', `category` tinyint NOT NULL COMMENT '分类:1-监管安全 2-教育改造 3-生活卫生 4-生产安全 5-狱内案件 6-其他', `level` tinyint NOT NULL COMMENT '等级:1-一般 2-重要 3-紧急', `source` tinyint DEFAULT NULL COMMENT '来源:1-民警报告 2-监控系统 3-举报 4-罪犯自首 5-其他', `status` tinyint NOT NULL DEFAULT 1 COMMENT '处理状态:1-待处理 2-处理中 3-已处理', `area_id` bigint DEFAULT NULL COMMENT '关联监区ID', `cell_id` bigint DEFAULT NULL COMMENT '关联监室ID', `reporter` varchar(50) DEFAULT NULL COMMENT '报告人', `handler` varchar(50) DEFAULT NULL COMMENT '处理人', `handle_time` datetime DEFAULT NULL COMMENT '处理时间', `handle_result` varchar(500) DEFAULT NULL COMMENT '处理结果', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `occur_time` datetime DEFAULT NULL COMMENT '发生时间', `type` varchar(50) DEFAULT NULL COMMENT '类型', `location` varchar(200) 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_category` (`category`), KEY `idx_level` (`level`), KEY `idx_status` (`status`), KEY `idx_area_id` (`area_id`), KEY `idx_occur_time` (`occur_time`) ) ENGINE=InnoDB COMMENT='狱情收集信息表'; -- ============================================ -- 16. 评估报告表 (prison_evaluation_report) -- ============================================ DROP TABLE IF EXISTS `prison_evaluation_report`; CREATE TABLE IF NOT EXISTS `prison_evaluation_report` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '报告ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `report_no` varchar(50) NOT NULL COMMENT '报告编号', `prisoner_id` bigint NOT NULL COMMENT '罪犯ID', `prisoner_no` varchar(50) NOT NULL COMMENT '罪犯编号', `prisoner_name` varchar(50) DEFAULT NULL COMMENT '罪犯姓名', `template_id` bigint DEFAULT NULL COMMENT '模板ID', `template_name` varchar(100) DEFAULT NULL COMMENT '模板名称', `evaluation_type` tinyint DEFAULT NULL COMMENT '评估类型:1-心理评估 2-危险性评估 3-改造表现评估 4-综合评估', `evaluation_cycle` tinyint DEFAULT NULL COMMENT '评估周期:1-月评 2-季评 3-半年评 4-年终评 5-入监评估 6-出监评估', `evaluation_date` datetime DEFAULT NULL COMMENT '评估日期', `evaluator_id` bigint DEFAULT NULL COMMENT '评估人员ID', `evaluator_name` varchar(50) DEFAULT NULL COMMENT '评估人员姓名', `area_id` bigint DEFAULT NULL COMMENT '监区ID', `area_name` varchar(100) DEFAULT NULL COMMENT '监区名称', `total_score` decimal(10,2) DEFAULT 0.00 COMMENT '总分', `level` tinyint DEFAULT NULL COMMENT '评级:1-优秀 2-良好 3-一般 4-较差 5-危险', `risk_level` tinyint DEFAULT NULL COMMENT '风险等级:1-低风险 2-中风险 3-高风险 4-极高风险', `risk_score` decimal(10,2) DEFAULT 0.00 COMMENT '风险得分', `ai_status` tinyint DEFAULT 1 COMMENT 'AI生成状态:1-待生成 2-生成中 3-已完成 4-生成失败', `ai_content` text COMMENT 'AI生成内容', `ai_report_content` text COMMENT 'AI生成报告内容', `status` tinyint NOT NULL DEFAULT 1 COMMENT '报告状态:1-草稿 2-待审核 3-已审核 4-已作废', `auditor_id` bigint DEFAULT NULL COMMENT '审核人ID', `auditor_name` varchar(50) DEFAULT NULL COMMENT '审核人姓名', `audit_time` datetime DEFAULT NULL COMMENT '审核时间', `audit_opinion` varchar(500) DEFAULT NULL COMMENT '审核意见', `conclusion` text COMMENT '报告结论', `suggestions` text COMMENT '改造建议', `pdf_path` varchar(500) DEFAULT NULL COMMENT '报告PDF路径', `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_report_no` (`report_no`, `tenant_id`), KEY `idx_prisoner_id` (`prisoner_id`), KEY `idx_evaluation_date` (`evaluation_date`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='评估报告表'; -- ============================================ -- 17. 快速点评表 (prison_quick_comment) -- ============================================ DROP TABLE IF EXISTS `prison_quick_comment`; CREATE TABLE IF NOT EXISTS `prison_quick_comment` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '点评ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `title` varchar(100) NOT NULL COMMENT '点评标题', `content` varchar(500) NOT NULL COMMENT '点评内容', `category_id` bigint DEFAULT NULL COMMENT '分类ID', `sort` int DEFAULT 0 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_category_id` (`category_id`) ) ENGINE=InnoDB COMMENT='快速点评表'; -- ============================================ -- 18. 快速点评分类表 (prison_comment_category) -- ============================================ DROP TABLE IF EXISTS `prison_comment_category`; CREATE TABLE IF NOT EXISTS `prison_comment_category` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `name` varchar(50) NOT NULL COMMENT '分类名称', `sort` int DEFAULT 0 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`) ) ENGINE=InnoDB COMMENT='快速点评分类表'; -- ============================================ -- 19. 报告模板表 (prison_report_template) -- ============================================ DROP TABLE IF EXISTS `prison_report_template`; CREATE TABLE IF NOT EXISTS `prison_report_template` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '模板ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `name` varchar(100) NOT NULL COMMENT '模板名称', `type` tinyint NOT NULL COMMENT '模板类型:1-评估报告 2-月度报告 3-季度报告', `content` text COMMENT '模板内容(HTML或Markdown)', `fields` text COMMENT '字段配置JSON', `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_type` (`type`) ) ENGINE=InnoDB COMMENT='报告模板表'; -- ============================================ -- 20. 报告表 (prison_report) -- ============================================ DROP TABLE IF EXISTS `prison_report`; CREATE TABLE IF NOT EXISTS `prison_report` ( `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-月报告 4-季度报告 5-年度报告', `content` text COMMENT '报告内容', `prison_area_id` bigint DEFAULT NULL COMMENT '监区ID', `report_date` date DEFAULT NULL 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_report_date` (`report_date`) ) ENGINE=InnoDB COMMENT='报告表'; -- ============================================ -- 21. 释放登记信息表 (prison_release) -- ============================================ DROP TABLE IF EXISTS `prison_release`; CREATE TABLE IF NOT EXISTS `prison_release` ( `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 '罪犯编号', `release_type` tinyint NOT NULL COMMENT '释放类型:1-刑满释放 2-假释 3-保外就医 4-减刑 5-暂予监外执行 6-特赦 7-死亡 8-其他', `release_date` date NOT NULL COMMENT '释放日期', `release_reason` varchar(500) DEFAULT NULL COMMENT '释放原因', `approve_no` varchar(50) DEFAULT NULL COMMENT '批准文号', `destination` varchar(200) DEFAULT NULL COMMENT '释放去向', `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话', `emergency_contact` varchar(100) DEFAULT NULL COMMENT '紧急联系人', `emergency_phone` varchar(20) 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_release_date` (`release_date`) ) ENGINE=InnoDB COMMENT='释放登记信息表'; -- ============================================ -- 22. 风险评估维度表 (prison_risk) -- ============================================ DROP TABLE IF EXISTS `prison_risk`; CREATE TABLE IF NOT EXISTS `prison_risk` ( `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 '维度编码', `description` varchar(500) DEFAULT NULL COMMENT '维度描述', `weight` decimal(5,2) DEFAULT NULL COMMENT '权重', `max_score` decimal(10,2) DEFAULT 100.00 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`), UNIQUE KEY `uk_code` (`code`, `tenant_id`) ) ENGINE=InnoDB COMMENT='风险评估维度表'; -- ============================================ -- 23. 评估报告维度表 (prison_evaluation_dimension) -- ============================================ DROP TABLE IF EXISTS `prison_evaluation_dimension`; CREATE TABLE IF NOT EXISTS `prison_evaluation_dimension` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '维度ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `report_id` bigint NOT NULL COMMENT '报告ID', `dimension_name` varchar(100) NOT NULL COMMENT '维度名称', `dimension_code` varchar(50) DEFAULT NULL COMMENT '维度编码', `score` decimal(10,2) DEFAULT 0.00 COMMENT '得分', `max_score` decimal(10,2) DEFAULT 100.00 COMMENT '满分', `level` varchar(20) DEFAULT NULL COMMENT '评级', `description` text COMMENT '维度描述', `suggestion` text COMMENT '建议', `sort` int DEFAULT 0 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_report_id` (`report_id`) ) ENGINE=InnoDB COMMENT='评估报告维度表'; -- ============================================ -- 24. 评估报告维度数据表 (prison_evaluation_dimension_data) -- ============================================ DROP TABLE IF EXISTS `prison_evaluation_dimension_data`; CREATE TABLE IF NOT EXISTS `prison_evaluation_dimension_data` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '数据ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `dimension_id` bigint NOT NULL COMMENT '维度ID', `data_type` varchar(50) NOT NULL COMMENT '数据类型:score-得分 evidence-证据 behavior-行为', `content` text COMMENT '内容', `score` decimal(10,2) DEFAULT 0.00 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_dimension_id` (`dimension_id`) ) ENGINE=InnoDB COMMENT='评估报告维度数据表'; -- ============================================ -- 25. 报告评价表 (prison_report_comment) -- ============================================ DROP TABLE IF EXISTS `prison_report_comment`; CREATE TABLE IF NOT EXISTS `prison_report_comment` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评价ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `report_id` bigint NOT NULL COMMENT '报告ID', `type` tinyint NOT NULL COMMENT '评价类型:1-总体评价 2-优点 3-不足 4-建议', `content` text NOT NULL COMMENT '评价内容', `score` decimal(10,2) DEFAULT NULL COMMENT '评价得分', `sort` int DEFAULT 0 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_report_id` (`report_id`) ) ENGINE=InnoDB COMMENT='报告评价表'; -- ============================================ -- 26. 消费明细表 (prison_consumption_detail) -- ============================================ DROP TABLE IF EXISTS `prison_consumption_detail`; CREATE TABLE IF NOT EXISTS `prison_consumption_detail` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', `consumption_id` bigint NOT NULL COMMENT '消费ID', `goods_name` varchar(100) NOT NULL COMMENT '商品名称', `goods_code` varchar(50) DEFAULT NULL COMMENT '商品编码', `quantity` int DEFAULT 1 COMMENT '数量', `unit_price` decimal(10,2) NOT NULL COMMENT '单价', `total_price` decimal(10,2) NOT 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_consumption_id` (`consumption_id`) ) ENGINE=InnoDB COMMENT='消费明细表'; -- 恢复外键检查 SET FOREIGN_KEY_CHECKS = 1; -- ============================================ -- 索引优化建议 -- ============================================ -- 为常用查询添加复合索引 -- ALTER TABLE prison_prisoner ADD INDEX idx_area_cell (prison_area_id, prison_cell_id); -- ALTER TABLE prison_score ADD INDEX idx_prisoner_year_month (prisoner_id, year, month); -- ALTER TABLE prison_warning ADD INDEX idx_type_level_status (type, level, status); -- ============================================ -- 字段注释更新脚本(可选) -- ============================================ -- COMMENT ON COLUMN prison_prisoner.children IS '子女情况'; -- COMMENT ON COLUMN prison_questionnaire.cover_image IS '封面图片URL'; -- COMMENT ON COLUMN prison_questionnaire.instruction IS '填写说明'; -- COMMENT ON COLUMN prison_questionnaire.estimated_time IS '预计耗时(分钟)'; -- COMMENT ON COLUMN prison_questionnaire.part_count IS '分区数量'; -- COMMENT ON COLUMN prison_questionnaire.allow_anonymous IS '是否允许匿名:0-不允许 1-允许';