|
@@ -0,0 +1,134 @@
|
|
|
|
|
+-- =====================================================================
|
|
|
|
|
+-- 工单流程重构迁移脚本
|
|
|
|
|
+-- 1) work_order:新增 fault_time / delay_apply_status,废弃 order_type,
|
|
|
|
|
+-- receive_user 改为单个责任人(BIGINT),状态值重定义为 0~7
|
|
|
|
|
+-- 2) work_order_log:新增 attach_url,oper_type 重定义为 0~10
|
|
|
|
|
+-- 3) 新增工单按钮权限(父菜单 menu_id = 2082)
|
|
|
|
|
+-- 执行前请备份数据!
|
|
|
|
|
+-- =====================================================================
|
|
|
|
|
+
|
|
|
|
|
+-- ---------------------------- 1. work_order 结构变更 ----------------------------
|
|
|
|
|
+ALTER TABLE app_user.work_order ADD COLUMN IF NOT EXISTS fault_time TIMESTAMP;
|
|
|
|
|
+ALTER TABLE app_user.work_order ADD COLUMN IF NOT EXISTS delay_apply_status SMALLINT DEFAULT 0;
|
|
|
|
|
+ALTER TABLE app_user.work_order DROP COLUMN IF EXISTS order_type;
|
|
|
|
|
+
|
|
|
|
|
+-- receive_user:原 VARCHAR(多人逗号分隔) → BIGINT(单个责任人)
|
|
|
|
|
+ALTER TABLE app_user.work_order ALTER COLUMN receive_user TYPE BIGINT USING NULLIF(receive_user, '')::BIGINT;
|
|
|
|
|
+
|
|
|
|
|
+COMMENT ON COLUMN app_user.work_order.fault_time IS '故障发生时间';
|
|
|
|
|
+COMMENT ON COLUMN app_user.work_order.delay_apply_status IS '延期申请状态:0-无延期申请 1-待延期审核 2-延期审核通过 3-延期审核驳回';
|
|
|
|
|
+COMMENT ON COLUMN app_user.work_order.receive_user IS '责任人用户ID';
|
|
|
|
|
+COMMENT ON COLUMN app_user.work_order.order_status IS '工单状态:0-待派单 1-待接单 2-已接单 3-处理中 4-待验收 5-已结案 6-延期中 7-已取消';
|
|
|
|
|
+COMMENT ON COLUMN app_user.work_order.order_level IS '工单优先级:0-紧急 1-一般 2-低';
|
|
|
|
|
+
|
|
|
|
|
+-- ---------------------------- 2. 历史状态数据迁移 ----------------------------
|
|
|
|
|
+-- 旧:1-待派单 2-待接单 3-已接单 4-处理中 5-待验收 6-已结案 7-已驳回 8-延期审核 9-已延期
|
|
|
|
|
+-- 新:0-待派单 1-待接单 2-已接单 3-处理中 4-待验收 5-已结案 6-延期中 7-已取消
|
|
|
|
|
+UPDATE app_user.work_order SET order_status = 0 WHERE order_status = 1;
|
|
|
|
|
+UPDATE app_user.work_order SET order_status = 1 WHERE order_status = 2;
|
|
|
|
|
+UPDATE app_user.work_order SET order_status = 2 WHERE order_status = 3;
|
|
|
|
|
+UPDATE app_user.work_order SET order_status = 3 WHERE order_status = 4;
|
|
|
|
|
+UPDATE app_user.work_order SET order_status = 4 WHERE order_status = 5;
|
|
|
|
|
+UPDATE app_user.work_order SET order_status = 5 WHERE order_status = 6;
|
|
|
|
|
+-- 旧 7-已驳回 → 7-已取消(值相同,无需迁移)
|
|
|
|
|
+-- 旧 8-延期审核 → 处理中 + 待延期审核;旧 9-已延期 → 延期中 + 延期审核通过
|
|
|
|
|
+UPDATE app_user.work_order
|
|
|
|
|
+ SET order_status = 3,
|
|
|
|
|
+ delay_apply_status = 1
|
|
|
|
|
+ WHERE order_status = 8;
|
|
|
|
|
+UPDATE app_user.work_order
|
|
|
|
|
+ SET order_status = 6,
|
|
|
|
|
+ delay_apply_status = 2
|
|
|
|
|
+ WHERE order_status = 9;
|
|
|
|
|
+
|
|
|
|
|
+UPDATE app_user.work_order SET fault_time = COALESCE(fault_time, create_time);
|
|
|
|
|
+UPDATE app_user.work_order SET delay_apply_status = COALESCE(delay_apply_status, 0);
|
|
|
|
|
+
|
|
|
|
|
+-- ---------------------------- 3. work_order_log 结构变更 ----------------------------
|
|
|
|
|
+ALTER TABLE app_user.work_order_log ADD COLUMN IF NOT EXISTS attach_url VARCHAR(2000);
|
|
|
|
|
+COMMENT ON COLUMN app_user.work_order_log.attach_url IS '操作附件URL,多个使用逗号分隔';
|
|
|
|
|
+COMMENT ON COLUMN app_user.work_order_log.oper_type IS '操作类型:0-创建工单 1-派单 2-接单 3-处置 4-提交验收 5-验收通过 6-验收驳回 7-取消工单 8-申请延期 9-延期审核通过 10-延期审核驳回';
|
|
|
|
|
+
|
|
|
|
|
+-- 旧:1-创建工单 2-派单 3-接单 4-开始维修 5-提交验收 6-验收通过 7-驳回工单 8-申请延期 9-延期审核通过
|
|
|
|
|
+-- 新:0-创建工单 1-派单 2-接单 3-处置 4-提交验收 5-验收通过 6-验收驳回 7-取消工单 8-申请延期 9-延期审核通过 10-延期审核驳回
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 0 WHERE oper_type = 1;
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 1 WHERE oper_type = 2;
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 2 WHERE oper_type = 3;
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 3 WHERE oper_type = 4;
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 4 WHERE oper_type = 5;
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 5 WHERE oper_type = 6;
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 7 WHERE oper_type = 7;
|
|
|
|
|
+-- 旧 7-驳回工单、新 7-取消工单 值相同,如需区分可按 oper_desc 人工判断
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 8 WHERE oper_type = 8;
|
|
|
|
|
+UPDATE app_user.work_order_log SET oper_type = 9 WHERE oper_type = 9;
|
|
|
|
|
+
|
|
|
|
|
+CREATE INDEX IF NOT EXISTS idx_work_order_status ON app_user.work_order (order_status);
|
|
|
|
|
+CREATE INDEX IF NOT EXISTS idx_work_order_receive_user ON app_user.work_order (receive_user);
|
|
|
|
|
+CREATE INDEX IF NOT EXISTS idx_work_order_log_order_id ON app_user.work_order_log (order_id);
|
|
|
|
|
+
|
|
|
|
|
+-- =====================================================================
|
|
|
|
|
+-- 4. 工单菜单及按钮权限(父菜单 menu_id = 2082)
|
|
|
|
|
+-- =====================================================================
|
|
|
|
|
+-- 主菜单:故障工单
|
|
|
|
|
+INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type,
|
|
|
|
|
+ visible, status, perms, icon, create_by, create_time, remark)
|
|
|
|
|
+SELECT '故障工单', 2082, 1, 'PworkList', 'subSystem/pipeNetwork/ops/workOrder/index', 1, 0, 'C',
|
|
|
|
|
+ '0', '0', 'ops:pworkOrder:query', 'workorder', 'admin', CURRENT_TIMESTAMP, '故障工单列表菜单'
|
|
|
|
|
+ WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = 2082 AND path = 'PworkList');
|
|
|
|
|
+
|
|
|
|
|
+-- 工单处置页面(隐藏菜单,承载全部操作按钮)
|
|
|
|
|
+INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type,
|
|
|
|
|
+ visible, status, perms, icon, create_by, create_time, remark)
|
|
|
|
|
+SELECT '工单处置', 2082, 2, 'Pworkdisposition', 'subSystem/pipeNetwork/ops/workOrder/dispose', 1, 0, 'C',
|
|
|
|
|
+ '1', '0', 'ops:pworkOrder:query', 'edit', 'admin', CURRENT_TIMESTAMP, '工单处置页面'
|
|
|
|
|
+ WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = 2082 AND path = 'Pworkdisposition');
|
|
|
|
|
+
|
|
|
|
|
+-- 前端页面文件迁移:subSystem/pipeNetwork/pworkOrder/* → subSystem/pipeNetwork/ops/workOrder/*
|
|
|
|
|
+-- PworkList.vue -> index.vue,Pworkdisposition.vue -> dispose.vue
|
|
|
|
|
+-- 对已执行过旧脚本(component 仍为旧路径)的环境,用下面的 UPDATE 幂等修正;新环境 INSERT 已写入新路径。
|
|
|
|
|
+UPDATE sys_menu SET component = 'subSystem/pipeNetwork/ops/workOrder/index'
|
|
|
|
|
+ WHERE component = 'subSystem/pipeNetwork/pworkOrder/PworkList';
|
|
|
|
|
+
|
|
|
|
|
+UPDATE sys_menu SET component = 'subSystem/pipeNetwork/ops/workOrder/dispose'
|
|
|
|
|
+ WHERE component = 'subSystem/pipeNetwork/pworkOrder/Pworkdisposition';
|
|
|
|
|
+
|
|
|
|
|
+-- 按钮:新增故障工单
|
|
|
|
|
+INSERT INTO sys_menu (menu_name, parent_id, order_num, is_frame, is_cache, menu_type, visible, status,
|
|
|
|
|
+ perms, create_by, create_time, remark)
|
|
|
|
|
+SELECT '新增故障工单', m.menu_id, 1, 1, 0, 'F', '0', '0', 'ops:pworkOrder:add', 'admin', CURRENT_TIMESTAMP, '新增故障工单按钮'
|
|
|
|
|
+ FROM sys_menu m WHERE m.parent_id = 2082 AND m.path = 'PworkList'
|
|
|
|
|
+ AND NOT EXISTS (SELECT 1 FROM sys_menu b WHERE b.perms = 'ops:pworkOrder:add');
|
|
|
|
|
+
|
|
|
|
|
+-- 按钮:派单 / 接单 / 处置 / 提交验收 / 验收 / 取消 / 申请延期 / 延期审核 / 删除
|
|
|
|
|
+INSERT INTO sys_menu (menu_name, parent_id, order_num, is_frame, is_cache, menu_type, visible, status,
|
|
|
|
|
+ perms, create_by, create_time, remark)
|
|
|
|
|
+SELECT t.name, m.menu_id, t.ord, 1, 0, 'F', '0', '0', t.perms, 'admin', CURRENT_TIMESTAMP, t.name
|
|
|
|
|
+ FROM sys_menu m
|
|
|
|
|
+ JOIN (VALUES ('派单', 2, 'ops:pworkOrder:dispatch'),
|
|
|
|
|
+ ('核查接单', 3, 'ops:pworkOrder:accept'),
|
|
|
|
|
+ ('处置', 4, 'ops:pworkOrder:process'),
|
|
|
|
|
+ ('提交验收', 5, 'ops:pworkOrder:submitVerify'),
|
|
|
|
|
+ ('验收', 6, 'ops:pworkOrder:verify'),
|
|
|
|
|
+ ('取消工单', 7, 'ops:pworkOrder:cancel'),
|
|
|
|
|
+ ('申请延期', 8, 'ops:pworkOrder:delay'),
|
|
|
|
|
+ ('延期审核', 9, 'ops:pworkOrder:delayAudit'),
|
|
|
|
|
+ ('删除工单', 10, 'ops:pworkOrder:remove')) AS t(name, ord, perms)
|
|
|
|
|
+ ON m.parent_id = 2082 AND m.path = 'Pworkdisposition'
|
|
|
|
|
+ WHERE NOT EXISTS (SELECT 1 FROM sys_menu b WHERE b.perms = t.perms);
|
|
|
|
|
+
|
|
|
|
|
+-- =====================================================================
|
|
|
|
|
+-- 5. 将「故障工单」菜单及按钮权限授予所有现有角色
|
|
|
|
|
+-- 说明:改造前历史接口 /api/work-order 无权限校验,所有登录用户均可操作工单;
|
|
|
|
|
+-- 本次为该接口补齐 ops:pworkOrder:* 权限后,为避免现有角色功能不可用,
|
|
|
|
|
+-- 默认将 2082 下全部菜单与按钮授予所有角色(等价改造前的可用性)。
|
|
|
|
|
+-- 如需精细化授权,可在「系统管理 - 角色管理」中收回,或按需单独分配。
|
|
|
|
|
+-- =====================================================================
|
|
|
|
|
+INSERT INTO sys_role_menu (role_id, menu_id)
|
|
|
|
|
+SELECT r.role_id, m.menu_id
|
|
|
|
|
+ FROM sys_role r
|
|
|
|
|
+ JOIN sys_menu m
|
|
|
|
|
+ ON (m.parent_id = 2082 AND m.path IN ('PworkList', 'Pworkdisposition'))
|
|
|
|
|
+ OR (m.menu_type = 'F' AND m.perms LIKE 'ops:pworkOrder:%')
|
|
|
|
|
+ LEFT JOIN sys_role_menu rm
|
|
|
|
|
+ ON rm.role_id = r.role_id AND rm.menu_id = m.menu_id
|
|
|
|
|
+ WHERE rm.menu_id IS NULL;
|