diff --git a/sql/v1_migration_20260121.sql b/sql/v1_migration_20260121.sql new file mode 100644 index 0000000000..6f41fb26df --- /dev/null +++ b/sql/v1_migration_20260121.sql @@ -0,0 +1,793 @@ +-- ============================================ +-- 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-允许';