隐患排查初版

This commit is contained in:
2026-05-30 16:00:20 +08:00
parent d48ecdd89c
commit 7254f7c35f
11 changed files with 856 additions and 34 deletions

View File

@@ -0,0 +1,138 @@
-- 存量隐患排查数据迁移为“审核不通过”状态,并补写驳回历史
-- 使用前请先确认:
-- 1. 已执行 update_hidden_danger_inspection_reject_history.sql
-- 2. 首次执行前建议备份 hot_hidden_danger_inspection 与 hot_hidden_danger_inspection_audit_history
-- 3. 本脚本默认将所有未删除的老数据统一初始化为第 1 次驳回
START TRANSACTION;
-- 1. 将主表老数据统一调整为驳回状态
UPDATE `hot_hidden_danger_inspection`
SET `submit_version` = IFNULL(NULLIF(`submit_version`, 0), 1),
`audit_result` = 'REJECT',
`reject_count` = CASE
WHEN `reject_count` IS NULL OR `reject_count` = 0 THEN 1
ELSE `reject_count`
END,
`last_reject_reason` = CASE
WHEN `last_reject_reason` IS NULL OR `last_reject_reason` = '' THEN '历史数据初始化为审核不通过,请驾驶员重新编辑后提交'
ELSE `last_reject_reason`
END,
`last_reject_time` = COALESCE(`last_reject_time`, `audit_date`, `update_time`, `create_time`, NOW()),
`last_reject_by_id` = COALESCE(`last_reject_by_id`, `approver_id`),
`last_reject_by_name` = COALESCE(NULLIF(`last_reject_by_name`, ''), `approver_name`),
`flow_status` = 'REJECTED',
`instance_id` = NULL,
`status` = 1
WHERE `is_deleted` = 0;
-- 2. 将老数据写入驳回历史表
-- 说明:
-- - 每条主单补 1 条“第 1 次驳回”历史
-- - 已存在 inspection_id + audit_round=1 的记录时不会重复插入
SET @history_max_id := (SELECT IFNULL(MAX(`id`), 0) FROM `hot_hidden_danger_inspection_audit_history`);
INSERT INTO `hot_hidden_danger_inspection_audit_history` (
`id`,
`inspection_id`,
`company_id`,
`plan_id`,
`project_name`,
`project_id`,
`project_type`,
`submit_version`,
`audit_round`,
`audit_result`,
`reject_reason`,
`audit_date`,
`approver_id`,
`approver_name`,
`approver_sign_img_url`,
`audit_has_danger`,
`submit_snapshot_json`,
`check_content_json`,
`danger_desc`,
`attachment_url`,
`sign_img_url`,
`checker_id`,
`checker_name`,
`check_date`,
`create_dept`,
`create_by`,
`create_by_name`,
`create_time`,
`update_by`,
`update_by_name`,
`update_time`,
`is_deleted`,
`remark`
)
SELECT
(@history_max_id := @history_max_id + 1) AS `id`,
i.`id` AS `inspection_id`,
i.`company_id`,
i.`plan_id`,
i.`project_name`,
i.`project_id`,
i.`project_type`,
IFNULL(NULLIF(i.`submit_version`, 0), 1) AS `submit_version`,
1 AS `audit_round`,
'REJECT' AS `audit_result`,
COALESCE(NULLIF(i.`last_reject_reason`, ''), '历史数据初始化为审核不通过,请驾驶员重新编辑后提交') AS `reject_reason`,
COALESCE(i.`last_reject_time`, i.`audit_date`, i.`update_time`, i.`create_time`, NOW()) AS `audit_date`,
COALESCE(i.`last_reject_by_id`, i.`approver_id`) AS `approver_id`,
COALESCE(NULLIF(i.`last_reject_by_name`, ''), i.`approver_name`) AS `approver_name`,
i.`approver_sign_img_url`,
i.`audit_has_danger`,
JSON_OBJECT(
'inspectionId', i.`id`,
'companyId', i.`company_id`,
'planId', i.`plan_id`,
'projectName', i.`project_name`,
'projectId', i.`project_id`,
'projectType', i.`project_type`,
'submitVersion', IFNULL(NULLIF(i.`submit_version`, 0), 1),
'checkContentJson', i.`check_content_json`,
'dangerDesc', i.`danger_desc`,
'attachmentUrl', i.`attachment_url`,
'signImgUrl', i.`sign_img_url`,
'checkerId', i.`checker_id`,
'checkerName', i.`checker_name`,
'checkDate', i.`check_date`
) AS `submit_snapshot_json`,
i.`check_content_json`,
i.`danger_desc`,
i.`attachment_url`,
i.`sign_img_url`,
i.`checker_id`,
i.`checker_name`,
i.`check_date`,
i.`create_dept`,
COALESCE(i.`update_by`, i.`create_by`) AS `create_by`,
NULL AS `create_by_name`,
COALESCE(i.`update_time`, i.`create_time`, NOW()) AS `create_time`,
i.`update_by`,
NULL AS `update_by_name`,
i.`update_time`,
0 AS `is_deleted`,
'历史数据初始化补录' AS `remark`
FROM `hot_hidden_danger_inspection` i
WHERE i.`is_deleted` = 0
AND NOT EXISTS (
SELECT 1
FROM `hot_hidden_danger_inspection_audit_history` h
WHERE h.`inspection_id` = i.`id`
AND h.`audit_round` = 1
AND h.`is_deleted` = 0
);
COMMIT;
-- 校验SQL
-- SELECT COUNT(*) FROM hot_hidden_danger_inspection WHERE is_deleted = 0 AND audit_result = 'REJECT' AND status = 1;
-- SELECT COUNT(*) FROM hot_hidden_danger_inspection_audit_history WHERE is_deleted = 0;
update hot_hidden_danger_inspection set status = 1
update hot_hidden_danger_inspection set status = 10 where approver_id is not null

View File

@@ -0,0 +1,49 @@
ALTER TABLE `hot_hidden_danger_inspection`
ADD COLUMN `submit_version` bigint NULL DEFAULT 0 COMMENT '提交版本号' AFTER `flow_status`,
ADD COLUMN `audit_result` varchar(16) NULL COMMENT '审核结果PASS=通过 REJECT=驳回)' AFTER `submit_version`,
ADD COLUMN `reject_count` bigint NULL DEFAULT 0 COMMENT '驳回次数' AFTER `audit_result`,
ADD COLUMN `last_reject_reason` varchar(500) NULL COMMENT '最近一次驳回原因' AFTER `reject_count`,
ADD COLUMN `last_reject_time` datetime NULL COMMENT '最近一次驳回时间' AFTER `last_reject_reason`,
ADD COLUMN `last_reject_by_id` bigint NULL COMMENT '最近一次驳回人ID' AFTER `last_reject_time`,
ADD COLUMN `last_reject_by_name` varchar(64) NULL COMMENT '最近一次驳回人姓名' AFTER `last_reject_by_id`;
CREATE TABLE `hot_hidden_danger_inspection_audit_history` (
`id` bigint NOT NULL COMMENT '主键',
`inspection_id` bigint NOT NULL COMMENT '隐患排查主单ID',
`company_id` bigint DEFAULT NULL COMMENT '公司ID',
`plan_id` bigint DEFAULT NULL COMMENT '计划ID',
`project_name` varchar(255) DEFAULT NULL COMMENT '排查项目',
`project_id` varchar(64) DEFAULT NULL COMMENT '排查项目ID',
`project_type` bigint DEFAULT NULL COMMENT '排查类型1=公司 2=车辆 3=人员)',
`submit_version` bigint DEFAULT NULL COMMENT '提交版本号',
`audit_round` bigint DEFAULT NULL COMMENT '审核轮次',
`audit_result` varchar(16) DEFAULT NULL COMMENT '审核结果REJECT',
`reject_reason` varchar(500) DEFAULT NULL COMMENT '驳回原因',
`audit_date` datetime DEFAULT NULL COMMENT '审核日期',
`approver_id` bigint DEFAULT NULL COMMENT '审核人ID',
`approver_name` varchar(64) DEFAULT NULL COMMENT '审核人姓名',
`approver_sign_img_url` varchar(500) DEFAULT NULL COMMENT '审核人签名图片',
`audit_has_danger` bigint DEFAULT NULL COMMENT '审核时是否存在隐患',
`submit_snapshot_json` longtext COMMENT '当次提交快照JSON',
`check_content_json` longtext COMMENT '排查内容JSON',
`danger_desc` varchar(500) DEFAULT NULL COMMENT '隐患描述',
`attachment_url` varchar(2000) DEFAULT NULL COMMENT '附件URL',
`sign_img_url` varchar(500) DEFAULT NULL COMMENT '排查人签名图片',
`checker_id` varchar(64) DEFAULT NULL COMMENT '排查人ID',
`checker_name` varchar(64) DEFAULT NULL COMMENT '排查人姓名',
`check_date` datetime DEFAULT NULL COMMENT '排查日期',
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
`create_by` bigint DEFAULT NULL COMMENT '创建者',
`create_by_name` varchar(64) DEFAULT NULL COMMENT '创建者名称',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint DEFAULT NULL COMMENT '更新者',
`update_by_name` varchar(64) DEFAULT NULL COMMENT '更新者名称',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`is_deleted` bigint DEFAULT 0 COMMENT '0=正常,1=已删除',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_hdiah_inspection_id` (`inspection_id`),
KEY `idx_hdiah_company_id` (`company_id`),
KEY `idx_hdiah_audit_round` (`audit_round`),
KEY `idx_hdiah_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='隐患排查审核驳回历史表';