-- ========================================================== -- 库房重构 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 = '采购需求(项目大件/特殊件,对应"采购需求"菜单)';