-- =============================================
-- 批次六：MES 生产工单 BPM 审批集成
-- 执行顺序：1
-- =============================================

-- 1. 为 MES 生产工单表添加流程实例编号字段
ALTER TABLE `mes_pro_work_order` ADD COLUMN `process_instance_id` VARCHAR(64) NULL COMMENT 'BPM 流程实例编号' AFTER `status`;

-- 2. 为流程实例编号创建索引（可选，用于按流程实例查询）
-- ALTER TABLE `mes_pro_work_order` ADD INDEX `idx_process_instance_id` (`process_instance_id`);

-- 3. 更新工单状态字典数据（添加审批中、审批不通过状态）
-- 注意：如果字典数据已存在则忽略
INSERT INTO `system_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
    (1, '审批中', '1', 'mes_pro_work_order_status', 0, 'warning', '', 'MES生产工单状态-审批中', '1', NOW(), '1', NOW(), b'0'),
    (5, '审批不通过', '5', 'mes_pro_work_order_status', 0, 'danger', '', 'MES生产工单状态-审批不通过', '1', NOW(), '1', NOW(), b'0')
ON DUPLICATE KEY UPDATE `updater` = '1', `update_time` = NOW();

-- 4. 添加菜单按钮（提交审批）
-- 先查询生产工单菜单ID（假设菜单路径为 MES管理 > 生产管理 > 生产工单）
SET @workorder_menu_id = (SELECT `id` FROM `system_menu` WHERE `name` = '生产工单' AND `parent_id` IN (SELECT `id` FROM `system_menu` WHERE `name` = '生产管理') LIMIT 1);

INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
SELECT '生产工单提交审批', 'mes:pro-work-order:update', 3, 6, @workorder_menu_id, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM DUAL
WHERE @workorder_menu_id IS NOT NULL
  AND NOT EXISTS (SELECT 1 FROM `system_menu` WHERE `name` = '生产工单提交审批' AND `parent_id` = @workorder_menu_id);

-- 5. 为角色分配提交审批按钮权限（根据实际需要调整）
-- 示例：为 MES 管理员角色分配权限
-- INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`)
-- SELECT r.id, m.id, '1', NOW(), '1', NOW(), b'0', 1
-- FROM `system_role` r, `system_menu` m
-- WHERE r.name = 'MES管理员' AND m.name = '生产工单提交审批';

-- =============================================
-- 回滚脚本（如需回滚执行以下语句）
-- =============================================
-- ALTER TABLE `mes_pro_work_order` DROP COLUMN `process_instance_id`;
-- DELETE FROM `system_dict_data` WHERE `dict_type` = 'mes_pro_work_order_status' AND `value` IN ('1', '5');
-- DELETE FROM `system_menu` WHERE `name` = '生产工单提交审批';
