Files
fad_oa/sql/warehouse_phase0_audit_log.sql

59 lines
3.5 KiB
MySQL
Raw Permalink Normal View History

2026-05-29 19:52:32 +08:00
-- ==========================================================
-- 库房重构 Phase 0建审计日志表 + 修正历史状态
-- 全部为新增/数据修正,零影响现有功能
-- ==========================================================
-- ----------------------------------------------------------
-- 1. 旧 log 表留底(结构残缺,只有 20 行)
-- ----------------------------------------------------------
RENAME TABLE `sys_oa_warehouse_log` TO `_deprecated_sys_oa_warehouse_log`;
-- ----------------------------------------------------------
-- 2. 统一审计日志表
-- ----------------------------------------------------------
DROP TABLE IF EXISTS `sys_oa_warehouse_audit_log`;
CREATE TABLE `sys_oa_warehouse_audit_log` (
`log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID',
`op_type` varchar(32) NOT NULL COMMENT '操作类型REQ_CREATE/REQ_DONE/REQ_CANCEL/TASK_CREATE/TASK_DONE/IN/OUT/RETURN/STOCK_ADJUST 等',
`ref_type` varchar(32) DEFAULT NULL COMMENT '关联实体类型requirement/task/master/warehouse',
`ref_id` bigint DEFAULT NULL COMMENT '关联实体ID',
`project_id` bigint DEFAULT NULL COMMENT '所属项目ID可选便于按项目筛日志',
`warehouse_id` bigint DEFAULT NULL COMMENT '关联物料ID可选便于按物料筛日志',
`summary` varchar(500) NOT NULL COMMENT '一句话摘要(前端列表直接展示)',
`before_json` text COMMENT '变更前快照JSON可选',
`after_json` text COMMENT '变更后快照JSON可选',
`op_user_id` bigint DEFAULT NULL COMMENT '操作人ID',
`op_user_name` varchar(64) DEFAULT NULL COMMENT '操作人昵称(冗余便于展示)',
`op_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`log_id`),
KEY `idx_op_type` (`op_type`),
KEY `idx_ref` (`ref_type`, `ref_id`),
KEY `idx_project_id` (`project_id`),
KEY `idx_warehouse_id` (`warehouse_id`),
KEY `idx_op_time` (`op_time`),
KEY `idx_op_user_id` (`op_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库房统一操作日志';
-- ----------------------------------------------------------
-- 3. 修正历史退库单状态(去审批化前的尾巴)
-- type=2 且 status=0 的 8 条历史单子,本意是"已批准的退库",统一改成 status=1
-- ----------------------------------------------------------
UPDATE `sys_oa_warehouse_master`
SET `status` = 1,
`update_time`= NOW(),
`update_by` = 'system_migration'
WHERE `type` = 2
AND `status` = 0
AND `del_flag` = 0;
SELECT ROW_COUNT() AS type2_status0_fixed;
-- ----------------------------------------------------------
-- 4. 给 oa_requirements 补可读注释(之前没注释也没乱码,但 status 含义不明)
-- ----------------------------------------------------------
ALTER TABLE `oa_requirements`
MODIFY COLUMN `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '完成情况0=未采购 1=采购中 2=完成 3=取消)',
COMMENT = '采购需求(项目大件/特殊件,对应"采购需求"菜单)';