oa_instance_draft.sql 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. -- OA 发起人填写草稿(非模板设计草稿)
  2. CREATE TABLE IF NOT EXISTS `oa_instance_draft` (
  3. `id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '主键ID',
  4. `app_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '应用ID',
  5. `app_version_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '暂存时锁定的已发布版本ID',
  6. `title` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标题',
  7. `form_data_json` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '表单数据 JSON',
  8. `initiator_select_json` text COLLATE utf8mb4_unicode_ci COMMENT '发起人自选 JSON',
  9. `initiator_dept_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发起人部门',
  10. `owner_user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '草稿所属人',
  11. `tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  12. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  13. `remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
  14. `create_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人id',
  15. `create_dept_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  16. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  17. `update_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人id',
  18. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  19. `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除',
  20. PRIMARY KEY (`id`) USING BTREE,
  21. KEY `idx_oid_owner` (`tenant_no`,`owner_user_id`,`del_flag`) USING BTREE,
  22. KEY `idx_oid_app` (`tenant_no`,`app_id`,`del_flag`) USING BTREE,
  23. KEY `idx_oid_update` (`tenant_no`,`owner_user_id`,`update_time`) USING BTREE
  24. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA发起审批草稿';
  25. -- 草稿箱位于「发起审批」与「待办中心」之间;仅首次插入时顺延 order_num
  26. UPDATE `sys_menu` AS m
  27. INNER JOIN (
  28. SELECT 1 AS ok
  29. FROM DUAL
  30. WHERE NOT EXISTS (
  31. SELECT 1 FROM `sys_menu`
  32. WHERE `id` = 'OA000000000000000000000000000109' AND `del_flag` = 0
  33. )
  34. ) AS guard ON 1 = 1
  35. SET m.`order_num` = m.`order_num` + 1
  36. WHERE m.`parent_id` = 'OA000000000000000000000000000001'
  37. AND m.`del_flag` = 0
  38. AND m.`order_num` IS NOT NULL
  39. AND m.`order_num` >= 4;
  40. INSERT INTO `sys_menu` (
  41. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  42. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  43. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  44. ) SELECT
  45. 'OA000000000000000000000000000109', '草稿箱', 'OA000000000000000000000000000001',
  46. 'C', 'drafts', '/oa-approval/drafts/index', 'oa:drafts',
  47. 1, '1', '1', 'zkxw', 4, 'OA发起审批草稿箱',
  48. NULL, '', NOW(), NULL, NOW(), 0
  49. FROM DUAL
  50. WHERE NOT EXISTS (
  51. SELECT 1 FROM `sys_menu` WHERE `id` = 'OA000000000000000000000000000109' AND `del_flag` = 0
  52. );
  53. -- 已拥有「发起审批」菜单的角色自动获得「草稿箱」(幂等)
  54. -- 注意:MySQL 5.7 下 INSERT…SELECT 中 UUID() 可能整批相同,导致主键冲突;改用按行唯一的 MD5。
  55. INSERT INTO `sys_role_menu` (
  56. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  57. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  58. )
  59. SELECT
  60. MD5(CONCAT(rm.`role_id`, '#', 'OA000000000000000000000000000109')),
  61. rm.`role_id`,
  62. 'OA000000000000000000000000000109',
  63. COALESCE(NULLIF(rm.`tenant_no`, ''), 'zkxw'),
  64. 0,
  65. 'auto from oa:start',
  66. NULL,
  67. '',
  68. NOW(),
  69. NULL,
  70. NOW(),
  71. 0
  72. FROM `sys_role_menu` rm
  73. WHERE rm.`menu_id` = 'OA000000000000000000000000000103'
  74. AND rm.`del_flag` = 0
  75. AND NOT EXISTS (
  76. SELECT 1
  77. FROM `sys_role_menu` x
  78. WHERE x.`role_id` = rm.`role_id`
  79. AND x.`menu_id` = 'OA000000000000000000000000000109'
  80. AND x.`del_flag` = 0
  81. );