-- ============================================================ -- 销售订单审批接入协同办公(BPM) - 数据库变更脚本 -- 说明: -- 1. 可重复执行(幂等),重复执行不会报错/重复插入 -- 2. 项目不使用多租户,脚本不包含 tenant_id -- 3. BPM 流程定义(sale_order_approve) -- 需要在「协同办公 -> 流程管理」中创建并发布,无法用 SQL 完成,见文末说明 -- ============================================================ -- ------------------------------------------------------------ -- 1. erp_sale_order 补 BPM 字段(幂等:缺列才加) -- ------------------------------------------------------------ SET @s1 = IF((SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='erp_sale_order' AND column_name='process_instance_id')=0, 'ALTER TABLE erp_sale_order ADD COLUMN process_instance_id VARCHAR(64) NULL COMMENT ''BPM 流程实例编号'' AFTER remark', 'SELECT 1'); PREPARE s1 FROM @s1; EXECUTE s1; DEALLOCATE PREPARE s1; -- ------------------------------------------------------------ -- 2. 新增 BPM 流程分类:销售订单审批 -- ------------------------------------------------------------ INSERT INTO bpm_category (id, name, code, description, status, sort, creator, create_time, updater, update_time, deleted) SELECT (SELECT COALESCE(MAX(id), 0) + 1 FROM bpm_category), '销售订单审批', 'sale_order_approve', '销售订单审批流程分类', 0, 30, '1', NOW(), '1', NOW(), 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'sale_order_approve' AND deleted = 0); -- ------------------------------------------------------------ -- 3. 修正/新增 erp_audit_status 字典(与 ErpAuditStatus 枚举保持一致) -- ------------------------------------------------------------ -- 3.1 值 0 = 未提交(销售订单创建后初始状态;不存在则新增,存在则修正标签) INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) SELECT (SELECT COALESCE(MAX(id), 0) + 1 FROM system_dict_data), 0, '未提交', '0', 'erp_audit_status', 0, 'info', '', '销售订单等未提交审批', '1', NOW(), '1', NOW(), 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_audit_status' AND value = '0' AND deleted = 0); -- 3.2 若已存在但标签不是「未提交」,强制修正为「未提交」 UPDATE system_dict_data SET label = '未提交', remark = '销售订单等未提交审批', updater = '1', update_time = NOW() WHERE dict_type = 'erp_audit_status' AND value = '0' AND deleted = 0; -- ------------------------------------------------------------ -- 4. bpm_business_attach 表:流程定义 -> 业务详情组件映射 -- 作用:协同办公审批详情页加载对应业务组件展示业务内容 -- 若销售订单详情组件路径不是 /erp/sale/order/detail/index.vue,请修改 component_path -- ------------------------------------------------------------ CREATE TABLE IF NOT EXISTS `bpm_business_attach` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', `process_definition_key` varchar(64) NOT NULL DEFAULT '' COMMENT '流程定义的Key', `business_type` varchar(64) NOT NULL DEFAULT '' COMMENT '业务类型', `component_path` varchar(255) NOT NULL DEFAULT '' COMMENT '业务详情组件路径', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态', `remark` varchar(255) 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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='BPM业务附件配置'; -- 4.1 销售订单审批 -> 销售订单详情组件(协同办公审批页显示订单内容) INSERT INTO bpm_business_attach (id, process_definition_key, business_type, component_path, status, remark, creator, create_time, updater, update_time, deleted) SELECT (SELECT COALESCE(MAX(id), 0) + 1 FROM bpm_business_attach), 'sale_order_approve', 'erp_sale_order', '/erp/sale/order/detail/index.vue', 0, '销售订单审批业务详情组件', '1', NOW(), '1', NOW(), 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM bpm_business_attach WHERE process_definition_key = 'sale_order_approve' AND deleted = 0); -- ------------------------------------------------------------ -- 5. 历史数据迁移:存量「未审核(10)」销售订单调整为「未提交(0)」 -- 新逻辑中创建后即为未提交,10 不再用于销售订单 -- ------------------------------------------------------------ UPDATE erp_sale_order SET status = 0, updater = '1', update_time = NOW() WHERE status = 10 AND deleted = 0; -- ============================================================ -- 注意:以下流程定义需要在「协同办公 -> 流程管理」中创建并发布,无法用 SQL 完成 -- 1. 流程 key: sale_order_approve -- 名称: 销售订单审批 -- 分类: sale_order_approve(对应本脚本第 2 步) -- 审批人: 按需配置 -- 表单: 普通表单(表单1);配合 bpm_business_attach 展示销售订单详情 -- ============================================================