Commit 907f3a58ba7b63636a10b7c28b107e646bcd0a32

Authored by YunaiV
2 parents d556b292 ba541fba

Merge branch 'master-jdk21' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into develop

# Conflicts:
#	sql/mysql/ruoyi-vue-pro.sql
Showing 238 changed files with 5222 additions and 5766 deletions

Too many changes.

To preserve performance only 100 of 238 files are displayed.

.image/common/bpm-feature.png 0 → 100644

15.9 KB

.image/common/infra-feature.png 0 → 100644

16.5 KB

.image/common/system-feature.png 0 → 100644

13.3 KB

README.md
@@ -162,6 +162,8 @@ @@ -162,6 +162,8 @@
162 | 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 | 162 | 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 |
163 | 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 | 163 | 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 |
164 164
  165 +![功能图](/.image/common/system-feature.png)
  166 +
165 ### 工作流程 167 ### 工作流程
166 168
167 | | 功能 | 描述 | 169 | | 功能 | 描述 |
@@ -174,6 +176,8 @@ @@ -174,6 +176,8 @@
174 | 🚀 | 已办任务 | 查看自己【已】审批的工作任务,未来会支持回退操作 | 176 | 🚀 | 已办任务 | 查看自己【已】审批的工作任务,未来会支持回退操作 |
175 | 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 | 177 | 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
176 178
  179 +![功能图](/.image/common/bpm-feature.png)
  180 +
177 ### 支付系统 181 ### 支付系统
178 182
179 | | 功能 | 描述 | 183 | | 功能 | 描述 |
@@ -209,6 +213,8 @@ @@ -209,6 +213,8 @@
209 | 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 | 213 | 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
210 | 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 | 214 | 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
211 215
  216 +![功能图](/.image/common/infra-feature.png)
  217 +
212 ### 数据报表 218 ### 数据报表
213 219
214 | | 功能 | 描述 | 220 | | 功能 | 描述 |
sql/mysql/ruoyi-vue-pro.sql
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 Target Server Version : 80200 (8.2.0) 11 Target Server Version : 80200 (8.2.0)
12 File Encoding : 65001 12 File Encoding : 65001
13 13
14 - Date: 05/03/2024 23:36:35 14 + Date: 24/03/2024 10:40:51
15 */ 15 */
16 16
17 SET NAMES utf8mb4; 17 SET NAMES utf8mb4;
@@ -385,7 +385,7 @@ CREATE TABLE `infra_api_error_log` ( @@ -385,7 +385,7 @@ CREATE TABLE `infra_api_error_log` (
385 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 385 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
386 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', 386 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
387 PRIMARY KEY (`id`) USING BTREE 387 PRIMARY KEY (`id`) USING BTREE
388 -) ENGINE = InnoDB AUTO_INCREMENT = 15660 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统异常日志'; 388 +) ENGINE = InnoDB AUTO_INCREMENT = 16372 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统异常日志';
389 389
390 -- ---------------------------- 390 -- ----------------------------
391 -- Records of infra_api_error_log 391 -- Records of infra_api_error_log
@@ -423,7 +423,7 @@ CREATE TABLE `infra_codegen_column` ( @@ -423,7 +423,7 @@ CREATE TABLE `infra_codegen_column` (
423 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 423 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
424 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 424 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
425 PRIMARY KEY (`id`) USING BTREE 425 PRIMARY KEY (`id`) USING BTREE
426 -) ENGINE = InnoDB AUTO_INCREMENT = 2248 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表字段定义'; 426 +) ENGINE = InnoDB AUTO_INCREMENT = 2305 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表字段定义';
427 427
428 -- ---------------------------- 428 -- ----------------------------
429 -- Records of infra_codegen_column 429 -- Records of infra_codegen_column
@@ -461,7 +461,7 @@ CREATE TABLE `infra_codegen_table` ( @@ -461,7 +461,7 @@ CREATE TABLE `infra_codegen_table` (
461 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 461 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
462 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 462 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
463 PRIMARY KEY (`id`) USING BTREE 463 PRIMARY KEY (`id`) USING BTREE
464 -) ENGINE = InnoDB AUTO_INCREMENT = 171 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表定义'; 464 +) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表定义';
465 465
466 -- ---------------------------- 466 -- ----------------------------
467 -- Records of infra_codegen_table 467 -- Records of infra_codegen_table
@@ -690,7 +690,7 @@ CREATE TABLE `infra_file` ( @@ -690,7 +690,7 @@ CREATE TABLE `infra_file` (
690 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 690 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
691 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 691 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
692 PRIMARY KEY (`id`) USING BTREE 692 PRIMARY KEY (`id`) USING BTREE
693 -) ENGINE = InnoDB AUTO_INCREMENT = 1281 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '文件表'; 693 +) ENGINE = InnoDB AUTO_INCREMENT = 1294 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '文件表';
694 694
695 -- ---------------------------- 695 -- ----------------------------
696 -- Records of infra_file 696 -- Records of infra_file
@@ -879,7 +879,7 @@ CREATE TABLE `system_dict_data` ( @@ -879,7 +879,7 @@ CREATE TABLE `system_dict_data` (
879 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 879 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
880 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 880 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
881 PRIMARY KEY (`id`) USING BTREE 881 PRIMARY KEY (`id`) USING BTREE
882 -) ENGINE = InnoDB AUTO_INCREMENT = 1509 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典数据表'; 882 +) ENGINE = InnoDB AUTO_INCREMENT = 1529 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典数据表';
883 883
884 -- ---------------------------- 884 -- ----------------------------
885 -- Records of system_dict_data 885 -- Records of system_dict_data
@@ -973,26 +973,21 @@ INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `st @@ -973,26 +973,21 @@ INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `st
973 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1118, 0, '等待退款', '0', 'pay_refund_status', 0, 'info', '', '等待退款', '1', '2021-12-10 16:44:59', '1', '2023-07-19 10:14:39', b'0'); 973 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1118, 0, '等待退款', '0', 'pay_refund_status', 0, 'info', '', '等待退款', '1', '2021-12-10 16:44:59', '1', '2023-07-19 10:14:39', b'0');
974 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1119, 20, '退款失败', '20', 'pay_refund_status', 0, 'danger', '', '退款失败', '1', '2021-12-10 16:45:10', '1', '2023-07-19 10:15:10', b'0'); 974 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1119, 20, '退款失败', '20', 'pay_refund_status', 0, 'danger', '', '退款失败', '1', '2021-12-10 16:45:10', '1', '2023-07-19 10:15:10', b'0');
975 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1124, 10, '退款成功', '10', 'pay_refund_status', 0, 'success', '', '退款成功', '1', '2021-12-10 16:46:26', '1', '2023-07-19 10:15:00', b'0'); 975 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1124, 10, '退款成功', '10', 'pay_refund_status', 0, 'success', '', '退款成功', '1', '2021-12-10 16:46:26', '1', '2023-07-19 10:15:00', b'0');
976 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1125, 0, '默认', '1', 'bpm_model_category', 0, 'primary', '', '流程分类 - 默认', '1', '2022-01-02 08:41:11', '1', '2022-02-16 20:01:42', b'0');  
977 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1126, 0, 'OA', '2', 'bpm_model_category', 0, 'success', '', '流程分类 - OA', '1', '2022-01-02 08:41:22', '1', '2022-02-16 20:01:50', b'0');  
978 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1127, 0, '进行中', '1', 'bpm_process_instance_status', 0, 'primary', '', '流程实例的状态 - 进行中', '1', '2022-01-07 23:47:22', '1', '2022-02-16 20:07:49', b'0');  
979 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1128, 2, '已完成', '2', 'bpm_process_instance_status', 0, 'success', '', '流程实例的状态 - 已完成', '1', '2022-01-07 23:47:49', '1', '2022-02-16 20:07:54', b'0');  
980 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1129, 1, '处理中', '1', 'bpm_process_instance_result', 0, 'primary', '', '流程实例的结果 - 处理中', '1', '2022-01-07 23:48:32', '1', '2022-02-16 09:53:26', b'0');  
981 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1130, 2, '通过', '2', 'bpm_process_instance_result', 0, 'success', '', '流程实例的结果 - 通过', '1', '2022-01-07 23:48:45', '1', '2022-02-16 09:53:31', b'0');  
982 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1131, 3, '不通过', '3', 'bpm_process_instance_result', 0, 'danger', '', '流程实例的结果 - 不通过', '1', '2022-01-07 23:48:55', '1', '2022-02-16 09:53:38', b'0');  
983 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1132, 4, '已取消', '4', 'bpm_process_instance_result', 0, 'info', '', '流程实例的结果 - 撤销', '1', '2022-01-07 23:49:06', '1', '2022-02-16 09:53:42', b'0'); 976 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1127, 1, '审批中', '1', 'bpm_process_instance_status', 0, 'default', '', '流程实例的状态 - 进行中', '1', '2022-01-07 23:47:22', '1', '2024-03-16 16:11:45', b'0');
  977 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1128, 2, '审批通过', '2', 'bpm_process_instance_status', 0, 'success', '', '流程实例的状态 - 已完成', '1', '2022-01-07 23:47:49', '1', '2024-03-16 16:11:54', b'0');
  978 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1129, 1, '审批中', '1', 'bpm_task_status', 0, 'primary', '', '流程实例的结果 - 处理中', '1', '2022-01-07 23:48:32', '1', '2024-03-08 22:41:37', b'0');
  979 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1130, 2, '审批通过', '2', 'bpm_task_status', 0, 'success', '', '流程实例的结果 - 通过', '1', '2022-01-07 23:48:45', '1', '2024-03-08 22:41:38', b'0');
  980 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1131, 3, '审批不通过', '3', 'bpm_task_status', 0, 'danger', '', '流程实例的结果 - 不通过', '1', '2022-01-07 23:48:55', '1', '2024-03-08 22:41:38', b'0');
  981 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1132, 4, '已取消', '4', 'bpm_task_status', 0, 'info', '', '流程实例的结果 - 撤销', '1', '2022-01-07 23:49:06', '1', '2024-03-08 22:41:39', b'0');
984 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1133, 10, '流程表单', '10', 'bpm_model_form_type', 0, '', '', '流程的表单类型 - 流程表单', '103', '2022-01-11 23:51:30', '103', '2022-01-11 23:51:30', b'0'); 982 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1133, 10, '流程表单', '10', 'bpm_model_form_type', 0, '', '', '流程的表单类型 - 流程表单', '103', '2022-01-11 23:51:30', '103', '2022-01-11 23:51:30', b'0');
985 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1134, 20, '业务表单', '20', 'bpm_model_form_type', 0, '', '', '流程的表单类型 - 业务表单', '103', '2022-01-11 23:51:47', '103', '2022-01-11 23:51:47', b'0'); 983 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1134, 20, '业务表单', '20', 'bpm_model_form_type', 0, '', '', '流程的表单类型 - 业务表单', '103', '2022-01-11 23:51:47', '103', '2022-01-11 23:51:47', b'0');
986 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1135, 10, '角色', '10', 'bpm_task_assign_rule_type', 0, 'info', '', '任务分配规则的类型 - 角色', '103', '2022-01-12 23:21:22', '1', '2022-02-16 20:06:14', b'0');  
987 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1136, 20, '部门的成员', '20', 'bpm_task_assign_rule_type', 0, 'primary', '', '任务分配规则的类型 - 部门的成员', '103', '2022-01-12 23:21:47', '1', '2022-02-16 20:05:28', b'0');  
988 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1137, 21, '部门的负责人', '21', 'bpm_task_assign_rule_type', 0, 'primary', '', '任务分配规则的类型 - 部门的负责人', '103', '2022-01-12 23:33:36', '1', '2022-02-16 20:05:31', b'0');  
989 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1138, 30, '用户', '30', 'bpm_task_assign_rule_type', 0, 'info', '', '任务分配规则的类型 - 用户', '103', '2022-01-12 23:34:02', '1', '2022-02-16 20:05:50', b'0');  
990 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1139, 40, '用户组', '40', 'bpm_task_assign_rule_type', 0, 'warning', '', '任务分配规则的类型 - 用户组', '103', '2022-01-12 23:34:21', '1', '2022-02-16 20:05:57', b'0');  
991 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1140, 50, '自定义脚本', '50', 'bpm_task_assign_rule_type', 0, 'danger', '', '任务分配规则的类型 - 自定义脚本', '103', '2022-01-12 23:34:43', '1', '2022-02-16 20:06:01', b'0');  
992 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1141, 22, '岗位', '22', 'bpm_task_assign_rule_type', 0, 'success', '', '任务分配规则的类型 - 岗位', '103', '2022-01-14 18:41:55', '1', '2022-02-16 20:05:39', b'0');  
993 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1142, 10, '流程发起人', '10', 'bpm_task_assign_script', 0, '', '', '任务分配自定义脚本 - 流程发起人', '103', '2022-01-15 00:10:57', '103', '2022-01-15 21:24:10', b'0');  
994 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1143, 20, '流程发起人的一级领导', '20', 'bpm_task_assign_script', 0, '', '', '任务分配自定义脚本 - 流程发起人的一级领导', '103', '2022-01-15 21:24:31', '103', '2022-01-15 21:24:31', b'0');  
995 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1144, 21, '流程发起人的二级领导', '21', 'bpm_task_assign_script', 0, '', '', '任务分配自定义脚本 - 流程发起人的二级领导', '103', '2022-01-15 21:24:46', '103', '2022-01-15 21:24:57', b'0'); 984 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1135, 10, '角色', '10', 'bpm_task_candidate_strategy', 0, 'info', '', '任务分配规则的类型 - 角色', '103', '2022-01-12 23:21:22', '1', '2024-03-06 02:53:16', b'0');
  985 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1136, 20, '部门的成员', '20', 'bpm_task_candidate_strategy', 0, 'primary', '', '任务分配规则的类型 - 部门的成员', '103', '2022-01-12 23:21:47', '1', '2024-03-06 02:53:17', b'0');
  986 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1137, 21, '部门的负责人', '21', 'bpm_task_candidate_strategy', 0, 'primary', '', '任务分配规则的类型 - 部门的负责人', '103', '2022-01-12 23:33:36', '1', '2024-03-06 02:53:18', b'0');
  987 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1138, 30, '用户', '30', 'bpm_task_candidate_strategy', 0, 'info', '', '任务分配规则的类型 - 用户', '103', '2022-01-12 23:34:02', '1', '2024-03-06 02:53:19', b'0');
  988 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1139, 40, '用户组', '40', 'bpm_task_candidate_strategy', 0, 'warning', '', '任务分配规则的类型 - 用户组', '103', '2022-01-12 23:34:21', '1', '2024-03-06 02:53:20', b'0');
  989 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1140, 60, '流程表达式', '60', 'bpm_task_candidate_strategy', 0, 'danger', '', '任务分配规则的类型 - 流程表达式', '103', '2022-01-12 23:34:43', '1', '2024-03-06 02:53:20', b'0');
  990 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1141, 22, '岗位', '22', 'bpm_task_candidate_strategy', 0, 'success', '', '任务分配规则的类型 - 岗位', '103', '2022-01-14 18:41:55', '1', '2024-03-06 02:53:21', b'0');
996 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1145, 1, '管理后台', '1', 'infra_codegen_scene', 0, '', '', '代码生成的场景枚举 - 管理后台', '1', '2022-02-02 13:15:06', '1', '2022-03-10 16:32:59', b'0'); 991 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1145, 1, '管理后台', '1', 'infra_codegen_scene', 0, '', '', '代码生成的场景枚举 - 管理后台', '1', '2022-02-02 13:15:06', '1', '2022-03-10 16:32:59', b'0');
997 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1146, 2, '用户 APP', '2', 'infra_codegen_scene', 0, '', '', '代码生成的场景枚举 - 用户 APP', '1', '2022-02-02 13:15:19', '1', '2022-03-10 16:33:03', b'0'); 992 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1146, 2, '用户 APP', '2', 'infra_codegen_scene', 0, '', '', '代码生成的场景枚举 - 用户 APP', '1', '2022-02-02 13:15:19', '1', '2022-03-10 16:33:03', b'0');
998 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1150, 1, '数据库', '1', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:25:28', '1', '2022-03-15 00:25:28', b'0'); 993 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1150, 1, '数据库', '1', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:25:28', '1', '2022-03-15 00:25:28', b'0');
@@ -1246,7 +1241,18 @@ INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `st @@ -1246,7 +1241,18 @@ INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `st
1246 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1505, 71, '采购入库(作废)', '71', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-16 13:10:10', '1', '2024-02-16 19:40:40', b'0'); 1241 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1505, 71, '采购入库(作废)', '71', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-16 13:10:10', '1', '2024-02-16 19:40:40', b'0');
1247 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1506, 80, '采购退货出库', '80', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-16 13:10:17', '1', '2024-02-16 13:10:17', b'0'); 1242 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1506, 80, '采购退货出库', '80', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-16 13:10:17', '1', '2024-02-16 13:10:17', b'0');
1248 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1507, 81, '采购退货出库(作废)', '81', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-16 13:10:26', '1', '2024-02-16 19:40:33', b'0'); 1243 INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1507, 81, '采购退货出库(作废)', '81', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-16 13:10:26', '1', '2024-02-16 19:40:33', b'0');
1249 -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1508, 3, 'CRM', '3', 'bpm_model_category', 0, 'success', '', '', '1', '2024-02-24 07:58:38', '1', '2024-02-24 07:58:44', b'0'); 1244 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1509, 3, '审批不通过', '3', 'bpm_process_instance_status', 0, 'danger', '', '', '1', '2024-03-16 16:12:06', '1', '2024-03-16 16:12:06', b'0');
  1245 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1510, 4, '已取消', '4', 'bpm_process_instance_status', 0, 'warning', '', '', '1', '2024-03-16 16:12:22', '1', '2024-03-16 16:12:22', b'0');
  1246 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1511, 5, '已退回', '5', 'bpm_task_status', 0, 'warning', '', '', '1', '2024-03-16 19:10:46', '1', '2024-03-08 22:41:40', b'0');
  1247 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1512, 6, '委派中', '6', 'bpm_task_status', 0, 'primary', '', '', '1', '2024-03-17 10:06:22', '1', '2024-03-08 22:41:40', b'0');
  1248 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1513, 7, '审批通过中', '7', 'bpm_task_status', 0, 'success', '', '', '1', '2024-03-17 10:06:47', '1', '2024-03-08 22:41:41', b'0');
  1249 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1514, 0, '待审批', '0', 'bpm_task_status', 0, 'info', '', '', '1', '2024-03-17 10:07:11', '1', '2024-03-08 22:41:42', b'0');
  1250 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1515, 35, '发起人自选', '35', 'bpm_task_candidate_strategy', 0, '', '', '', '1', '2024-03-22 19:45:16', '1', '2024-03-22 19:45:16', b'0');
  1251 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1516, 1, '执行监听器', 'execution', 'bpm_process_listener_type', 0, 'primary', '', '', '1', '2024-03-23 12:54:03', '1', '2024-03-23 19:14:19', b'0');
  1252 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1517, 1, '任务监听器', 'task', 'bpm_process_listener_type', 0, 'success', '', '', '1', '2024-03-23 12:54:13', '1', '2024-03-23 19:14:24', b'0');
  1253 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1526, 1, 'Java 类', 'class', 'bpm_process_listener_value_type', 0, 'primary', '', '', '1', '2024-03-23 15:08:45', '1', '2024-03-23 19:14:32', b'0');
  1254 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1527, 2, '表达式', 'expression', 'bpm_process_listener_value_type', 0, 'success', '', '', '1', '2024-03-23 15:09:06', '1', '2024-03-23 19:14:38', b'0');
  1255 +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1528, 3, '代理表达式', 'delegateExpression', 'bpm_process_listener_value_type', 0, 'info', '', '', '1', '2024-03-23 15:11:23', '1', '2024-03-23 19:14:41', b'0');
1250 COMMIT; 1256 COMMIT;
1251 1257
1252 -- ---------------------------- 1258 -- ----------------------------
@@ -1267,7 +1273,7 @@ CREATE TABLE `system_dict_type` ( @@ -1267,7 +1273,7 @@ CREATE TABLE `system_dict_type` (
1267 `deleted_time` datetime NULL DEFAULT NULL COMMENT '删除时间', 1273 `deleted_time` datetime NULL DEFAULT NULL COMMENT '删除时间',
1268 PRIMARY KEY (`id`) USING BTREE, 1274 PRIMARY KEY (`id`) USING BTREE,
1269 UNIQUE INDEX `dict_type`(`type` ASC) USING BTREE 1275 UNIQUE INDEX `dict_type`(`type` ASC) USING BTREE
1270 -) ENGINE = InnoDB AUTO_INCREMENT = 613 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典类型表'; 1276 +) ENGINE = InnoDB AUTO_INCREMENT = 616 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典类型表';
1271 1277
1272 -- ---------------------------- 1278 -- ----------------------------
1273 -- Records of system_dict_type 1279 -- Records of system_dict_type
@@ -1296,12 +1302,10 @@ INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creat @@ -1296,12 +1302,10 @@ INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creat
1296 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (131, '支付回调状态', 'pay_notify_status', 0, '支付回调状态(包括退款回调)', '1', '2021-12-03 10:53:29', '1', '2023-07-19 18:09:43', b'0', NULL); 1302 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (131, '支付回调状态', 'pay_notify_status', 0, '支付回调状态(包括退款回调)', '1', '2021-12-03 10:53:29', '1', '2023-07-19 18:09:43', b'0', NULL);
1297 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (132, '支付订单状态', 'pay_order_status', 0, '支付订单状态', '1', '2021-12-03 11:17:50', '1', '2021-12-03 11:17:50', b'0', NULL); 1303 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (132, '支付订单状态', 'pay_order_status', 0, '支付订单状态', '1', '2021-12-03 11:17:50', '1', '2021-12-03 11:17:50', b'0', NULL);
1298 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (134, '退款订单状态', 'pay_refund_status', 0, '退款订单状态', '1', '2021-12-10 16:42:50', '1', '2023-07-19 10:13:17', b'0', NULL); 1304 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (134, '退款订单状态', 'pay_refund_status', 0, '退款订单状态', '1', '2021-12-10 16:42:50', '1', '2023-07-19 10:13:17', b'0', NULL);
1299 -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (138, '流程分类', 'bpm_model_category', 0, '流程分类', '1', '2022-01-02 08:40:45', '1', '2022-01-02 08:40:45', b'0', NULL);  
1300 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (139, '流程实例的状态', 'bpm_process_instance_status', 0, '流程实例的状态', '1', '2022-01-07 23:46:42', '1', '2022-01-07 23:46:42', b'0', NULL); 1305 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (139, '流程实例的状态', 'bpm_process_instance_status', 0, '流程实例的状态', '1', '2022-01-07 23:46:42', '1', '2022-01-07 23:46:42', b'0', NULL);
1301 -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (140, '流程实例的结果', 'bpm_process_instance_result', 0, '流程实例的结果', '1', '2022-01-07 23:48:10', '1', '2022-01-07 23:48:10', b'0', NULL); 1306 +INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (140, '流程实例的结果', 'bpm_task_status', 0, '流程实例的结果', '1', '2022-01-07 23:48:10', '1', '2024-03-08 22:42:03', b'0', NULL);
1302 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (141, '流程的表单类型', 'bpm_model_form_type', 0, '流程的表单类型', '103', '2022-01-11 23:50:45', '103', '2022-01-11 23:50:45', b'0', NULL); 1307 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (141, '流程的表单类型', 'bpm_model_form_type', 0, '流程的表单类型', '103', '2022-01-11 23:50:45', '103', '2022-01-11 23:50:45', b'0', NULL);
1303 -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (142, '任务分配规则的类型', 'bpm_task_assign_rule_type', 0, '任务分配规则的类型', '103', '2022-01-12 23:21:04', '103', '2022-01-12 15:46:10', b'0', NULL);  
1304 -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (143, '任务分配自定义脚本', 'bpm_task_assign_script', 0, '任务分配自定义脚本', '103', '2022-01-15 00:10:35', '103', '2022-01-15 00:10:35', b'0', NULL); 1308 +INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (142, '任务分配规则的类型', 'bpm_task_candidate_strategy', 0, 'BPM 任务的候选人的策略', '103', '2022-01-12 23:21:04', '103', '2024-03-06 02:53:59', b'0', NULL);
1305 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (144, '代码生成的场景枚举', 'infra_codegen_scene', 0, '代码生成的场景枚举', '1', '2022-02-02 13:14:45', '1', '2022-03-10 16:33:46', b'0', NULL); 1309 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (144, '代码生成的场景枚举', 'infra_codegen_scene', 0, '代码生成的场景枚举', '1', '2022-02-02 13:14:45', '1', '2022-03-10 16:33:46', b'0', NULL);
1306 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (145, '角色类型', 'system_role_type', 0, '角色类型', '1', '2022-02-16 13:01:46', '1', '2022-02-16 13:01:46', b'0', NULL); 1310 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (145, '角色类型', 'system_role_type', 0, '角色类型', '1', '2022-02-16 13:01:46', '1', '2022-02-16 13:01:46', b'0', NULL);
1307 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (146, '文件存储器', 'infra_file_storage', 0, '文件存储器', '1', '2022-03-15 00:24:38', '1', '2022-03-15 00:24:38', b'0', NULL); 1311 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (146, '文件存储器', 'infra_file_storage', 0, '文件存储器', '1', '2022-03-15 00:24:38', '1', '2022-03-15 00:24:38', b'0', NULL);
@@ -1356,6 +1360,8 @@ INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creat @@ -1356,6 +1360,8 @@ INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creat
1356 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (610, '转账订单状态', 'pay_transfer_status', 0, '', '1', '2023-10-28 16:18:32', '1', '2023-10-28 16:18:32', b'0', '1970-01-01 00:00:00'); 1360 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (610, '转账订单状态', 'pay_transfer_status', 0, '', '1', '2023-10-28 16:18:32', '1', '2023-10-28 16:18:32', b'0', '1970-01-01 00:00:00');
1357 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (611, 'ERP 库存明细的业务类型', 'erp_stock_record_biz_type', 0, 'ERP 库存明细的业务类型', '1', '2024-02-05 18:07:02', '1', '2024-02-05 18:07:02', b'0', '1970-01-01 00:00:00'); 1361 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (611, 'ERP 库存明细的业务类型', 'erp_stock_record_biz_type', 0, 'ERP 库存明细的业务类型', '1', '2024-02-05 18:07:02', '1', '2024-02-05 18:07:02', b'0', '1970-01-01 00:00:00');
1358 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (612, 'ERP 审批状态', 'erp_audit_status', 0, '', '1', '2024-02-06 00:00:07', '1', '2024-02-06 00:00:07', b'0', '1970-01-01 00:00:00'); 1362 INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (612, 'ERP 审批状态', 'erp_audit_status', 0, '', '1', '2024-02-06 00:00:07', '1', '2024-02-06 00:00:07', b'0', '1970-01-01 00:00:00');
  1363 +INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (613, 'BPM 监听器类型', 'bpm_process_listener_type', 0, '', '1', '2024-03-23 12:52:24', '1', '2024-03-09 15:54:28', b'0', '1970-01-01 00:00:00');
  1364 +INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (615, 'BPM 监听器值类型', 'bpm_process_listener_value_type', 0, '', '1', '2024-03-23 13:00:31', '1', '2024-03-23 13:00:31', b'0', '1970-01-01 00:00:00');
1359 COMMIT; 1365 COMMIT;
1360 1366
1361 -- ---------------------------- 1367 -- ----------------------------
@@ -1404,7 +1410,7 @@ CREATE TABLE `system_login_log` ( @@ -1404,7 +1410,7 @@ CREATE TABLE `system_login_log` (
1404 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 1410 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
1405 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', 1411 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
1406 PRIMARY KEY (`id`) USING BTREE 1412 PRIMARY KEY (`id`) USING BTREE
1407 -) ENGINE = InnoDB AUTO_INCREMENT = 3023 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统访问记录'; 1413 +) ENGINE = InnoDB AUTO_INCREMENT = 3031 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统访问记录';
1408 1414
1409 -- ---------------------------- 1415 -- ----------------------------
1410 -- Records of system_login_log 1416 -- Records of system_login_log
@@ -1534,7 +1540,7 @@ CREATE TABLE `system_menu` ( @@ -1534,7 +1540,7 @@ CREATE TABLE `system_menu` (
1534 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 1540 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
1535 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 1541 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
1536 PRIMARY KEY (`id`) USING BTREE 1542 PRIMARY KEY (`id`) USING BTREE
1537 -) ENGINE = InnoDB AUTO_INCREMENT = 2712 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表'; 1543 +) ENGINE = InnoDB AUTO_INCREMENT = 2736 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表';
1538 1544
1539 -- ---------------------------- 1545 -- ----------------------------
1540 -- Records of system_menu 1546 -- Records of system_menu
@@ -1696,25 +1702,25 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i @@ -1696,25 +1702,25 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i
1696 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1178, '支付订单导出', 'pay:order:export', 3, 5, 1173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); 1702 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1178, '支付订单导出', 'pay:order:export', 3, 5, 1173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0');
1697 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1185, '工作流程', '', 1, 50, 0, '/bpm', 'fa:medium', NULL, NULL, 0, b'1', b'1', b'1', '1', '2021-12-30 20:26:36', '1', '2024-02-29 12:43:43', b'0'); 1703 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1185, '工作流程', '', 1, 50, 0, '/bpm', 'fa:medium', NULL, NULL, 0, b'1', b'1', b'1', '1', '2021-12-30 20:26:36', '1', '2024-02-29 12:43:43', b'0');
1698 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1186, '流程管理', '', 1, 10, 1185, 'manager', 'fa:dedent', NULL, NULL, 0, b'1', b'1', b'1', '1', '2021-12-30 20:28:30', '1', '2024-02-29 12:36:02', b'0'); 1704 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1186, '流程管理', '', 1, 10, 1185, 'manager', 'fa:dedent', NULL, NULL, 0, b'1', b'1', b'1', '1', '2021-12-30 20:28:30', '1', '2024-02-29 12:36:02', b'0');
1699 -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1187, '流程表单', '', 2, 0, 1186, 'form', 'fa:hdd-o', 'bpm/form/index', 'BpmForm', 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2024-02-29 12:36:34', b'0'); 1705 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1187, '流程表单', '', 2, 2, 1186, 'form', 'fa:hdd-o', 'bpm/form/index', 'BpmForm', 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2024-03-19 12:25:25', b'0');
1700 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1188, '表单查询', 'bpm:form:query', 3, 1, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); 1706 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1188, '表单查询', 'bpm:form:query', 3, 1, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
1701 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1189, '表单创建', 'bpm:form:create', 3, 2, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); 1707 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1189, '表单创建', 'bpm:form:create', 3, 2, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
1702 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1190, '表单更新', 'bpm:form:update', 3, 3, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); 1708 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1190, '表单更新', 'bpm:form:update', 3, 3, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
1703 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1191, '表单删除', 'bpm:form:delete', 3, 4, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); 1709 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1191, '表单删除', 'bpm:form:delete', 3, 4, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
1704 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1192, '表单导出', 'bpm:form:export', 3, 5, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); 1710 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1192, '表单导出', 'bpm:form:export', 3, 5, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
1705 -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1193, '流程模型', '', 2, 5, 1186, 'model', 'fa-solid:project-diagram', 'bpm/model/index', 'BpmModel', 0, b'1', b'1', b'1', '1', '2021-12-31 23:24:58', '1', '2024-02-29 12:36:53', b'0'); 1711 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1193, '流程模型', '', 2, 1, 1186, 'model', 'fa-solid:project-diagram', 'bpm/model/index', 'BpmModel', 0, b'1', b'1', b'1', '1', '2021-12-31 23:24:58', '1', '2024-03-19 12:25:19', b'0');
1706 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1194, '模型查询', 'bpm:model:query', 3, 1, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:10', '1', '2022-04-20 17:03:10', b'0'); 1712 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1194, '模型查询', 'bpm:model:query', 3, 1, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:10', '1', '2022-04-20 17:03:10', b'0');
1707 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1195, '模型创建', 'bpm:model:create', 3, 2, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:24', '1', '2022-04-20 17:03:10', b'0'); 1713 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1195, '模型创建', 'bpm:model:create', 3, 2, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:24', '1', '2022-04-20 17:03:10', b'0');
1708 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1196, '模型导入', 'bpm:model:import', 3, 3, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:35', '1', '2022-04-20 17:03:10', b'0'); 1714 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1196, '模型导入', 'bpm:model:import', 3, 3, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:35', '1', '2022-04-20 17:03:10', b'0');
1709 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1197, '模型更新', 'bpm:model:update', 3, 4, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:02:28', '1', '2022-04-20 17:03:10', b'0'); 1715 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1197, '模型更新', 'bpm:model:update', 3, 4, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:02:28', '1', '2022-04-20 17:03:10', b'0');
1710 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1198, '模型删除', 'bpm:model:delete', 3, 5, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:02:43', '1', '2022-04-20 17:03:10', b'0'); 1716 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1198, '模型删除', 'bpm:model:delete', 3, 5, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:02:43', '1', '2022-04-20 17:03:10', b'0');
1711 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1199, '模型发布', 'bpm:model:deploy', 3, 6, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:03:24', '1', '2022-04-20 17:03:10', b'0'); 1717 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1199, '模型发布', 'bpm:model:deploy', 3, 6, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:03:24', '1', '2022-04-20 17:03:10', b'0');
1712 -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1200, '任务管理', '', 2, 20, 1185, 'task', 'fa:tasks', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-01-07 23:51:48', '1', '2024-02-29 12:37:07', b'0');  
1713 -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1201, '我的流程', '', 2, 0, 1200, 'my', 'fa-solid:book', 'bpm/processInstance/index', 'BpmProcessInstance', 0, b'1', b'1', b'1', '', '2022-01-07 15:53:44', '1', '2024-02-29 12:37:24', b'0'); 1718 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1200, '审批中心', '', 2, 20, 1185, 'task', 'fa:tasks', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-01-07 23:51:48', '1', '2024-03-21 00:33:15', b'0');
  1719 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1201, '我的流程', '', 2, 1, 1200, 'my', 'fa-solid:book', 'bpm/processInstance/index', 'BpmProcessInstanceMy', 0, b'1', b'1', b'1', '', '2022-01-07 15:53:44', '1', '2024-03-21 23:52:12', b'0');
1714 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1202, '流程实例的查询', 'bpm:process-instance:query', 3, 1, 1201, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', b'0'); 1720 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1202, '流程实例的查询', 'bpm:process-instance:query', 3, 1, 1201, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', b'0');
1715 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1207, '待办任务', '', 2, 10, 1200, 'todo', 'fa:slack', 'bpm/task/todo/index', 'BpmTodoTask', 0, b'1', b'1', b'1', '1', '2022-01-08 10:33:37', '1', '2024-02-29 12:37:39', b'0'); 1721 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1207, '待办任务', '', 2, 10, 1200, 'todo', 'fa:slack', 'bpm/task/todo/index', 'BpmTodoTask', 0, b'1', b'1', b'1', '1', '2022-01-08 10:33:37', '1', '2024-02-29 12:37:39', b'0');
1716 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1208, '已办任务', '', 2, 20, 1200, 'done', 'fa:delicious', 'bpm/task/done/index', 'BpmDoneTask', 0, b'1', b'1', b'1', '1', '2022-01-08 10:34:13', '1', '2024-02-29 12:37:54', b'0'); 1722 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1208, '已办任务', '', 2, 20, 1200, 'done', 'fa:delicious', 'bpm/task/done/index', 'BpmDoneTask', 0, b'1', b'1', b'1', '1', '2022-01-08 10:34:13', '1', '2024-02-29 12:37:54', b'0');
1717 -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1209, '用户分组', '', 2, 2, 1186, 'user-group', 'fa:user-secret', 'bpm/group/index', 'BpmUserGroup', 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '1', '2024-02-29 12:36:45', b'0'); 1723 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1209, '用户分组', '', 2, 4, 1186, 'user-group', 'fa:user-secret', 'bpm/group/index', 'BpmUserGroup', 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '1', '2024-03-21 23:55:29', b'0');
1718 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1210, '用户组查询', 'bpm:user-group:query', 3, 1, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); 1724 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1210, '用户组查询', 'bpm:user-group:query', 3, 1, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0');
1719 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1211, '用户组创建', 'bpm:user-group:create', 3, 2, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); 1725 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1211, '用户组创建', 'bpm:user-group:create', 3, 2, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0');
1720 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1212, '用户组更新', 'bpm:user-group:update', 3, 3, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); 1726 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1212, '用户组更新', 'bpm:user-group:update', 3, 3, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0');
@@ -2304,6 +2310,29 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i @@ -2304,6 +2310,29 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i
2304 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2709, '客户公海配置查询', 'crm:customer-pool-config:query', 3, 2, 2516, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:45:19', '1', '2024-02-24 16:45:28', b'0'); 2310 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2709, '客户公海配置查询', 'crm:customer-pool-config:query', 3, 2, 2516, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:45:19', '1', '2024-02-24 16:45:28', b'0');
2305 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2710, '合同配置更新', 'crm:contract-config:update', 3, 1, 2708, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:45:56', '1', '2024-02-24 16:45:56', b'0'); 2311 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2710, '合同配置更新', 'crm:contract-config:update', 3, 1, 2708, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:45:56', '1', '2024-02-24 16:45:56', b'0');
2306 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2711, '合同配置查询', 'crm:contract-config:query', 3, 2, 2708, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:46:16', '1', '2024-02-24 16:46:16', b'0'); 2312 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2711, '合同配置查询', 'crm:contract-config:query', 3, 2, 2708, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:46:16', '1', '2024-02-24 16:46:16', b'0');
  2313 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2712, '客户分析', '', 2, 0, 2560, 'customer', 'ep:avatar', 'views/crm/statistics/customer/index.vue', 'CrmStatisticsCustomer', 0, b'1', b'1', b'1', '1', '2024-03-09 16:43:56', '1', '2024-03-09 16:43:56', b'0');
  2314 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2713, '抄送我的', '', 2, 30, 1200, 'copy', 'ep:copy-document', 'bpm/task/copy/index', 'BpmProcessInstanceCopy', 0, b'1', b'1', b'1', '1', '2024-03-17 21:50:23', '1', '2024-03-17 22:12:23', b'0');
  2315 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2714, '流程分类', '', 2, 3, 1186, 'category', 'fa:object-ungroup', 'bpm/category/index', 'BpmCategory', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-21 23:51:18', b'0');
  2316 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2715, '分类查询', 'bpm:category:query', 3, 1, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:25', b'0');
  2317 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2716, '分类创建', 'bpm:category:create', 3, 2, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:31', b'0');
  2318 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2717, '分类更新', 'bpm:category:update', 3, 3, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:35', b'0');
  2319 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2718, '分类删除', 'bpm:category:delete', 3, 4, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:41', b'0');
  2320 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2720, '发起流程', '', 2, 0, 1200, 'create', 'fa-solid:grin-stars', 'bpm/processInstance/create/index', 'BpmProcessInstanceCreate', 0, b'1', b'0', b'1', '1', '2024-03-19 19:46:05', '1', '2024-03-23 19:03:42', b'0');
  2321 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2721, '流程实例', '', 2, 10, 1186, 'process-instance/manager', 'fa:square', 'bpm/processInstance/manager/index', 'BpmProcessInstanceManager', 0, b'1', b'1', b'1', '1', '2024-03-21 23:57:30', '1', '2024-03-21 23:57:30', b'0');
  2322 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2722, '流程实例的查询(管理员)', 'bpm:process-instance:manager-query', 3, 1, 2721, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-03-22 08:18:27', '1', '2024-03-22 08:19:05', b'0');
  2323 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2723, '流程实例的取消(管理员)', 'bpm:process-instance:cancel-by-admin', 3, 2, 2721, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-03-22 08:19:25', '1', '2024-03-22 08:19:25', b'0');
  2324 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2724, '流程任务', '', 2, 11, 1186, 'process-tasnk', 'ep:collection-tag', 'bpm/task/manager/index', 'BpmManagerTask', 0, b'1', b'1', b'1', '1', '2024-03-22 08:43:22', '1', '2024-03-22 08:43:27', b'0');
  2325 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2725, '流程任务的查询(管理员)', 'bpm:task:mananger-query', 3, 1, 2724, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-03-22 08:43:49', '1', '2024-03-22 08:43:49', b'0');
  2326 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2726, '流程监听器', '', 2, 5, 1186, 'process-listener', 'fa:assistive-listening-systems', 'bpm/processListener/index', 'BpmProcessListener', 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '1', '2024-03-23 13:13:38', b'0');
  2327 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2727, '流程监听器查询', 'bpm:process-listener:query', 3, 1, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
  2328 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2728, '流程监听器创建', 'bpm:process-listener:create', 3, 2, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
  2329 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2729, '流程监听器更新', 'bpm:process-listener:update', 3, 3, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
  2330 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2730, '流程监听器删除', 'bpm:process-listener:delete', 3, 4, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
  2331 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2731, '流程表达式', '', 2, 6, 1186, 'process-expression', 'fa:wpexplorer', 'bpm/processExpression/index', 'BpmProcessExpression', 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '1', '2024-03-23 19:43:05', b'0');
  2332 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2732, '流程表达式查询', 'bpm:process-expression:query', 3, 1, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
  2333 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2733, '流程表达式创建', 'bpm:process-expression:create', 3, 2, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
  2334 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2734, '流程表达式更新', 'bpm:process-expression:update', 3, 3, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
  2335 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2735, '流程表达式删除', 'bpm:process-expression:delete', 3, 4, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
2307 COMMIT; 2336 COMMIT;
2308 2337
2309 -- ---------------------------- 2338 -- ----------------------------
@@ -2424,7 +2453,7 @@ CREATE TABLE `system_oauth2_access_token` ( @@ -2424,7 +2453,7 @@ CREATE TABLE `system_oauth2_access_token` (
2424 PRIMARY KEY (`id`) USING BTREE, 2453 PRIMARY KEY (`id`) USING BTREE,
2425 INDEX `idx_access_token`(`access_token` ASC) USING BTREE, 2454 INDEX `idx_access_token`(`access_token` ASC) USING BTREE,
2426 INDEX `idx_refresh_token`(`refresh_token` ASC) USING BTREE 2455 INDEX `idx_refresh_token`(`refresh_token` ASC) USING BTREE
2427 -) ENGINE = InnoDB AUTO_INCREMENT = 5237 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 访问令牌'; 2456 +) ENGINE = InnoDB AUTO_INCREMENT = 6042 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 访问令牌';
2428 2457
2429 -- ---------------------------- 2458 -- ----------------------------
2430 -- Records of system_oauth2_access_token 2459 -- Records of system_oauth2_access_token
@@ -2546,7 +2575,7 @@ CREATE TABLE `system_oauth2_refresh_token` ( @@ -2546,7 +2575,7 @@ CREATE TABLE `system_oauth2_refresh_token` (
2546 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 2575 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
2547 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', 2576 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
2548 PRIMARY KEY (`id`) USING BTREE 2577 PRIMARY KEY (`id`) USING BTREE
2549 -) ENGINE = InnoDB AUTO_INCREMENT = 1410 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 刷新令牌'; 2578 +) ENGINE = InnoDB AUTO_INCREMENT = 1415 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 刷新令牌';
2550 2579
2551 -- ---------------------------- 2580 -- ----------------------------
2552 -- Records of system_oauth2_refresh_token 2581 -- Records of system_oauth2_refresh_token
@@ -2586,7 +2615,7 @@ CREATE TABLE `system_operate_log` ( @@ -2586,7 +2615,7 @@ CREATE TABLE `system_operate_log` (
2586 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 2615 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
2587 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', 2616 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
2588 PRIMARY KEY (`id`) USING BTREE 2617 PRIMARY KEY (`id`) USING BTREE
2589 -) ENGINE = InnoDB AUTO_INCREMENT = 10705 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '操作日志记录'; 2618 +) ENGINE = InnoDB AUTO_INCREMENT = 11782 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '操作日志记录';
2590 2619
2591 -- ---------------------------- 2620 -- ----------------------------
2592 -- Records of system_operate_log 2621 -- Records of system_operate_log
@@ -4805,7 +4834,7 @@ CREATE TABLE `system_sms_log` ( @@ -4805,7 +4834,7 @@ CREATE TABLE `system_sms_log` (
4805 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 4834 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
4806 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 4835 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
4807 PRIMARY KEY (`id`) USING BTREE 4836 PRIMARY KEY (`id`) USING BTREE
4808 -) ENGINE = InnoDB AUTO_INCREMENT = 610 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信日志'; 4837 +) ENGINE = InnoDB AUTO_INCREMENT = 911 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信日志';
4809 4838
4810 -- ---------------------------- 4839 -- ----------------------------
4811 -- Records of system_sms_log 4840 -- Records of system_sms_log
@@ -4986,7 +5015,7 @@ CREATE TABLE `system_tenant_package` ( @@ -4986,7 +5015,7 @@ CREATE TABLE `system_tenant_package` (
4986 `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '套餐名', 5015 `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '套餐名',
4987 `status` tinyint NOT NULL DEFAULT 0 COMMENT '租户状态(0正常 1停用)', 5016 `status` tinyint NOT NULL DEFAULT 0 COMMENT '租户状态(0正常 1停用)',
4988 `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '备注', 5017 `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '备注',
4989 - `menu_ids` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '关联的菜单编号', 5018 + `menu_ids` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '关联的菜单编号',
4990 `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建者', 5019 `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建者',
4991 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', 5020 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
4992 `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', 5021 `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
@@ -5017,7 +5046,7 @@ CREATE TABLE `system_user_post` ( @@ -5017,7 +5046,7 @@ CREATE TABLE `system_user_post` (
5017 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 5046 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
5018 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', 5047 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
5019 PRIMARY KEY (`id`) USING BTREE 5048 PRIMARY KEY (`id`) USING BTREE
5020 -) ENGINE = InnoDB AUTO_INCREMENT = 118 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户岗位表'; 5049 +) ENGINE = InnoDB AUTO_INCREMENT = 119 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户岗位表';
5021 5050
5022 -- ---------------------------- 5051 -- ----------------------------
5023 -- Records of system_user_post 5052 -- Records of system_user_post
@@ -5025,10 +5054,10 @@ CREATE TABLE `system_user_post` ( @@ -5025,10 +5054,10 @@ CREATE TABLE `system_user_post` (
5025 BEGIN; 5054 BEGIN;
5026 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (112, 1, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1); 5055 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (112, 1, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1);
5027 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 100, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1); 5056 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 100, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1);
5028 -INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (114, 114, 3, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1);  
5029 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 104, 1, '1', '2022-05-16 19:36:28', '1', '2022-05-16 19:36:28', b'0', 1); 5057 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 104, 1, '1', '2022-05-16 19:36:28', '1', '2022-05-16 19:36:28', b'0', 1);
5030 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (116, 117, 2, '1', '2022-07-09 17:40:26', '1', '2022-07-09 17:40:26', b'0', 1); 5058 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (116, 117, 2, '1', '2022-07-09 17:40:26', '1', '2022-07-09 17:40:26', b'0', 1);
5031 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (117, 118, 1, '1', '2022-07-09 17:44:44', '1', '2022-07-09 17:44:44', b'0', 1); 5059 INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (117, 118, 1, '1', '2022-07-09 17:44:44', '1', '2022-07-09 17:44:44', b'0', 1);
  5060 +INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (118, 114, 1, '1', '2024-03-15 19:48:11', '1', '2024-03-15 19:48:11', b'0', 1);
5032 COMMIT; 5061 COMMIT;
5033 5062
5034 -- ---------------------------- 5063 -- ----------------------------
@@ -5046,7 +5075,7 @@ CREATE TABLE `system_user_role` ( @@ -5046,7 +5075,7 @@ CREATE TABLE `system_user_role` (
5046 `deleted` bit(1) NULL DEFAULT b'0' COMMENT '是否删除', 5075 `deleted` bit(1) NULL DEFAULT b'0' COMMENT '是否删除',
5047 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', 5076 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
5048 PRIMARY KEY (`id`) USING BTREE 5077 PRIMARY KEY (`id`) USING BTREE
5049 -) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户和角色关联表'; 5078 +) ENGINE = InnoDB AUTO_INCREMENT = 37 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户和角色关联表';
5050 5079
5051 -- ---------------------------- 5080 -- ----------------------------
5052 -- Records of system_user_role 5081 -- Records of system_user_role
@@ -5073,7 +5102,6 @@ INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_t @@ -5073,7 +5102,6 @@ INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_t
5073 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (24, 120, 115, '1', '2022-12-30 11:33:42', '1', '2022-12-30 11:33:42', b'0', 126); 5102 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (24, 120, 115, '1', '2022-12-30 11:33:42', '1', '2022-12-30 11:33:42', b'0', 126);
5074 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (25, 121, 116, '1', '2022-12-30 11:33:49', '1', '2022-12-30 11:33:49', b'0', 127); 5103 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (25, 121, 116, '1', '2022-12-30 11:33:49', '1', '2022-12-30 11:33:49', b'0', 127);
5075 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (26, 122, 118, '1', '2022-12-30 11:47:53', '1', '2022-12-30 11:47:53', b'0', 129); 5104 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (26, 122, 118, '1', '2022-12-30 11:47:53', '1', '2022-12-30 11:47:53', b'0', 129);
5076 -INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (27, 112, 101, '1', '2023-02-09 23:18:51', '1', '2023-02-09 23:18:51', b'0', 1);  
5077 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (28, 123, 136, '1', '2023-03-05 21:23:35', '1', '2023-03-05 21:23:35', b'0', 147); 5105 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (28, 123, 136, '1', '2023-03-05 21:23:35', '1', '2023-03-05 21:23:35', b'0', 147);
5078 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (29, 124, 137, '1', '2023-03-05 21:42:27', '1', '2023-03-05 21:42:27', b'0', 148); 5106 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (29, 124, 137, '1', '2023-03-05 21:42:27', '1', '2023-03-05 21:42:27', b'0', 148);
5079 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (30, 125, 138, '1', '2023-03-05 21:59:03', '1', '2023-03-05 21:59:03', b'0', 149); 5107 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (30, 125, 138, '1', '2023-03-05 21:59:03', '1', '2023-03-05 21:59:03', b'0', 149);
@@ -5081,6 +5109,8 @@ INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_t @@ -5081,6 +5109,8 @@ INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_t
5081 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (32, 126, 140, '1', '2023-12-02 23:35:05', '1', '2023-12-02 23:35:05', b'0', 151); 5109 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (32, 126, 140, '1', '2023-12-02 23:35:05', '1', '2023-12-02 23:35:05', b'0', 151);
5082 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (33, 127, 141, '1', '2023-12-30 11:43:17', '1', '2023-12-30 11:43:17', b'0', 152); 5110 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (33, 127, 141, '1', '2023-12-30 11:43:17', '1', '2023-12-30 11:43:17', b'0', 152);
5083 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (34, 128, 143, '1', '2024-02-27 21:58:25', '1', '2024-02-27 21:58:25', b'0', 153); 5111 INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (34, 128, 143, '1', '2024-02-27 21:58:25', '1', '2024-02-27 21:58:25', b'0', 153);
  5112 +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (35, 112, 1, '1', '2024-03-15 20:00:24', '1', '2024-03-15 20:00:24', b'0', 1);
  5113 +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (36, 118, 1, '1', '2024-03-17 09:12:08', '1', '2024-03-17 09:12:08', b'0', 1);
5084 COMMIT; 5114 COMMIT;
5085 5115
5086 -- ---------------------------- 5116 -- ----------------------------
@@ -5116,22 +5146,22 @@ CREATE TABLE `system_users` ( @@ -5116,22 +5146,22 @@ CREATE TABLE `system_users` (
5116 -- Records of system_users 5146 -- Records of system_users
5117 -- ---------------------------- 5147 -- ----------------------------
5118 BEGIN; 5148 BEGIN;
5119 -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 'admin', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '18818260277', 2, 'http://test.yudao.iocoder.cn/96c787a2ce88bf6d0ce3cd8b6cf5314e80e7703cd41bf4af8cd2e2909dbd6b6d.png', 0, '0:0:0:0:0:0:0:1', '2024-03-01 09:37:59', 'admin', '2021-01-05 17:03:47', NULL, '2024-03-01 09:37:59', b'0', 1); 5149 +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 'admin', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '18818260277', 2, 'http://test.yudao.iocoder.cn/96c787a2ce88bf6d0ce3cd8b6cf5314e80e7703cd41bf4af8cd2e2909dbd6b6d.png', 0, '0:0:0:0:0:0:0:1', '2024-03-15 19:32:26', 'admin', '2021-01-05 17:03:47', NULL, '2024-03-15 19:32:26', b'0', 1);
5120 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '127.0.0.1', '2022-07-09 23:03:33', '', '2021-01-07 09:07:17', NULL, '2022-07-09 23:03:33', b'0', 1); 5150 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '127.0.0.1', '2022-07-09 23:03:33', '', '2021-01-07 09:07:17', NULL, '2022-07-09 23:03:33', b'0', 1);
5121 -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (103, 'yuanma', '$2a$10$YMpimV4T6BtDhIaA8jSW.u8UTGBeGhc/qwXP4oxoMr4mOw9.qttt6', '源码', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '127.0.0.1', '2022-07-08 01:26:27', '', '2021-01-13 23:50:35', NULL, '2022-07-08 01:26:27', b'0', 1); 5151 +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (103, 'yuanma', '$2a$10$YMpimV4T6BtDhIaA8jSW.u8UTGBeGhc/qwXP4oxoMr4mOw9.qttt6', '源码', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '0:0:0:0:0:0:0:1', '2024-03-18 21:09:04', '', '2021-01-13 23:50:35', NULL, '2024-03-18 21:09:04', b'0', 1);
5122 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (104, 'test', '$2a$04$osUERr6VErPvY3mGUh40Teb06H2pJiFuGaWFLRku82pdU713WTGFS', '测试号', NULL, 107, '[1,2]', '111@qq.com', '15601691200', 1, '', 0, '0:0:0:0:0:0:0:1', '2024-02-29 22:40:00', '', '2021-01-21 02:13:53', NULL, '2024-02-29 22:40:00', b'0', 1); 5152 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (104, 'test', '$2a$04$osUERr6VErPvY3mGUh40Teb06H2pJiFuGaWFLRku82pdU713WTGFS', '测试号', NULL, 107, '[1,2]', '111@qq.com', '15601691200', 1, '', 0, '0:0:0:0:0:0:0:1', '2024-02-29 22:40:00', '', '2021-01-21 02:13:53', NULL, '2024-02-29 22:40:00', b'0', 1);
5123 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (107, 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 22:59:33', '1', '2022-02-27 08:26:51', b'0', 118); 5153 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (107, 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 22:59:33', '1', '2022-02-27 08:26:51', b'0', 118);
5124 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (108, 'admin108', '$2a$10$y6mfvKoNYL1GXWak8nYwVOH.kCWqjactkzdoIDgiKl93WN3Ejg.Lu', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:00:50', '1', '2022-02-27 08:26:53', b'0', 119); 5154 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (108, 'admin108', '$2a$10$y6mfvKoNYL1GXWak8nYwVOH.kCWqjactkzdoIDgiKl93WN3Ejg.Lu', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:00:50', '1', '2022-02-27 08:26:53', b'0', 119);
5125 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (109, 'admin109', '$2a$10$JAqvH0tEc0I7dfDVBI7zyuB4E3j.uH6daIjV53.vUS6PknFkDJkuK', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:11:50', '1', '2022-02-27 08:26:56', b'0', 120); 5155 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (109, 'admin109', '$2a$10$JAqvH0tEc0I7dfDVBI7zyuB4E3j.uH6daIjV53.vUS6PknFkDJkuK', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:11:50', '1', '2022-02-27 08:26:56', b'0', 120);
5126 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (110, 'admin110', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '小王', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-09-25 22:47:33', '1', '2022-02-22 00:56:14', NULL, '2022-09-25 22:47:33', b'0', 121); 5156 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (110, 'admin110', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '小王', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-09-25 22:47:33', '1', '2022-02-22 00:56:14', NULL, '2022-09-25 22:47:33', b'0', 121);
5127 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (111, 'test', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '测试用户', NULL, NULL, '[]', '', '', 0, '', 0, '0:0:0:0:0:0:0:1', '2023-12-30 11:42:17', '110', '2022-02-23 13:14:33', NULL, '2023-12-30 11:42:17', b'0', 121); 5157 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (111, 'test', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '测试用户', NULL, NULL, '[]', '', '', 0, '', 0, '0:0:0:0:0:0:0:1', '2023-12-30 11:42:17', '110', '2022-02-23 13:14:33', NULL, '2023-12-30 11:42:17', b'0', 121);
5128 -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (112, 'newobject', '$2a$10$3alwklxqfq8/hKoW6oUV0OJp0IdQpBDauLy4633SpUjrRsStl6kMa', '新对象', NULL, 100, '[]', '', '', 1, '', 0, '0:0:0:0:0:0:0:1', '2023-02-10 13:48:13', '1', '2022-02-23 19:08:03', NULL, '2023-02-10 13:48:13', b'0', 1); 5158 +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (112, 'newobject', '$2a$04$dB0z8Q819fJWz0hbaLe6B.VfHCjYgWx6LFfET5lyz3JwcqlyCkQ4C', '新对象', NULL, 100, '[]', '', '15601691235', 1, '', 0, '0:0:0:0:0:0:0:1', '2024-03-16 23:11:38', '1', '2022-02-23 19:08:03', NULL, '2024-03-16 23:11:38', b'0', 1);
5129 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', b'0', 122); 5159 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', b'0', 122);
5130 -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (114, 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 小姐姐', NULL, NULL, '[3]', '', '', 0, '', 0, '127.0.0.1', '2022-03-19 22:15:43', '1', '2022-03-19 21:50:58', NULL, '2022-03-19 22:15:43', b'0', 1);  
5131 -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 'aotemane', '$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom1etk2e', '1', '11', 101, '[]', '', '', 1, '', 0, '', NULL, '1', '2022-04-30 02:55:43', '1', '2022-06-22 13:34:58', b'0', 1); 5160 +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (114, 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 小姐姐', NULL, NULL, '[1]', '', '15601691236', 1, '', 0, '127.0.0.1', '2022-03-19 22:15:43', '1', '2022-03-19 21:50:58', '1', '2024-03-15 19:48:11', b'0', 1);
  5161 +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 'aotemane', '$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom1etk2e', '1', '11', 101, '[]', '', '15601691238', 1, '', 0, '', NULL, '1', '2022-04-30 02:55:43', '1', '2024-03-15 19:48:22', b'0', 1);
5132 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (116, '15601691302', '$2a$10$L5C4S0U6adBWMvFv1Wwl4.DI/NwYS3WIfLj5Q.Naqr5II8CmqsDZ6', '小豆', NULL, NULL, NULL, '', '', 0, '', 0, '', NULL, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); 5162 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (116, '15601691302', '$2a$10$L5C4S0U6adBWMvFv1Wwl4.DI/NwYS3WIfLj5Q.Naqr5II8CmqsDZ6', '小豆', NULL, NULL, NULL, '', '', 0, '', 0, '', NULL, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124);
5133 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (117, 'admin123', '$2a$10$WI8Gg/lpZQIrOEZMHqka7OdFaD4Nx.B/qY8ZGTTUKrOJwaHFqibaC', '测试号', '1111', 100, '[2]', '', '15601691234', 1, '', 0, '', NULL, '1', '2022-07-09 17:40:26', '1', '2022-07-09 17:40:26', b'0', 1); 5163 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (117, 'admin123', '$2a$10$WI8Gg/lpZQIrOEZMHqka7OdFaD4Nx.B/qY8ZGTTUKrOJwaHFqibaC', '测试号', '1111', 100, '[2]', '', '15601691234', 1, '', 0, '', NULL, '1', '2022-07-09 17:40:26', '1', '2022-07-09 17:40:26', b'0', 1);
5134 -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (118, 'goudan', '$2a$04$OB1SuphCdiLVRpiYRKeqH.8NYS7UIp5vmIv1W7U4w6toiFeOAATVK', '狗蛋', NULL, 103, '[1]', '', '', 2, '', 0, '', NULL, '1', '2022-07-09 17:44:43', '1', '2023-12-05 19:33:20', b'0', 1); 5164 +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (118, 'goudan', '$2a$04$OB1SuphCdiLVRpiYRKeqH.8NYS7UIp5vmIv1W7U4w6toiFeOAATVK', '狗蛋', NULL, 103, '[1]', '', '15601691239', 2, '', 0, '0:0:0:0:0:0:0:1', '2024-03-17 09:10:27', '1', '2022-07-09 17:44:43', NULL, '2024-03-17 09:10:27', b'0', 1);
5135 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (126, 'tudou123', '$2a$04$lecJZ/CqgknEp7mDV2d4ou0beyj1GbM3.nVEZe//8WgQpR.JBgnAu', '土豆', NULL, NULL, NULL, '', '', 0, '', 0, '', NULL, '1', '2023-12-02 23:35:05', '1', '2023-12-02 23:35:05', b'0', 151); 5165 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (126, 'tudou123', '$2a$04$lecJZ/CqgknEp7mDV2d4ou0beyj1GbM3.nVEZe//8WgQpR.JBgnAu', '土豆', NULL, NULL, NULL, '', '', 0, '', 0, '', NULL, '1', '2023-12-02 23:35:05', '1', '2023-12-02 23:35:05', b'0', 151);
5136 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (127, 'admin2024', '$2a$04$cHdZ7N6AUKysa2XTUG/J/egYtAzdwtpnNpcMVHDrupt1dyn4teOku', '土豆', NULL, NULL, NULL, '', '', 0, '', 0, '0:0:0:0:0:0:0:1', '2023-12-30 11:43:28', '1', '2023-12-30 11:43:17', NULL, '2023-12-30 11:43:28', b'0', 152); 5166 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (127, 'admin2024', '$2a$04$cHdZ7N6AUKysa2XTUG/J/egYtAzdwtpnNpcMVHDrupt1dyn4teOku', '土豆', NULL, NULL, NULL, '', '', 0, '', 0, '0:0:0:0:0:0:0:1', '2023-12-30 11:43:28', '1', '2023-12-30 11:43:17', NULL, '2023-12-30 11:43:28', b'0', 152);
5137 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (128, 'xiaoming', '$2a$04$BRinw4an9PBGvx6K7GLNre6rWU0.1HMYHkQCN6Oir74zNFKkNKRzm', 'xiaoming', NULL, NULL, NULL, '', '15601691301', 0, '', 0, '0:0:0:0:0:0:0:1', '2024-02-29 23:48:33', '1', '2024-02-27 21:58:25', NULL, '2024-02-29 23:48:33', b'0', 153); 5167 INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (128, 'xiaoming', '$2a$04$BRinw4an9PBGvx6K7GLNre6rWU0.1HMYHkQCN6Oir74zNFKkNKRzm', 'xiaoming', NULL, NULL, NULL, '', '15601691301', 0, '', 0, '0:0:0:0:0:0:0:1', '2024-02-29 23:48:33', '1', '2024-02-27 21:58:25', NULL, '2024-02-29 23:48:33', b'0', 153);
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/number/NumberUtils.java
@@ -16,6 +16,10 @@ public class NumberUtils { @@ -16,6 +16,10 @@ public class NumberUtils {
16 return StrUtil.isNotEmpty(str) ? Long.valueOf(str) : null; 16 return StrUtil.isNotEmpty(str) ? Long.valueOf(str) : null;
17 } 17 }
18 18
  19 + public static Integer parseInt(String str) {
  20 + return StrUtil.isNotEmpty(str) ? Integer.valueOf(str) : null;
  21 + }
  22 +
19 /** 23 /**
20 * 通过经纬度获取地球上两点之间的距离 24 * 通过经纬度获取地球上两点之间的距离
21 * 25 *
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/string/StrUtils.java
1 package cn.iocoder.yudao.framework.common.util.string; 1 package cn.iocoder.yudao.framework.common.util.string;
2 2
  3 +import cn.hutool.core.text.StrPool;
3 import cn.hutool.core.util.ArrayUtil; 4 import cn.hutool.core.util.ArrayUtil;
4 import cn.hutool.core.util.StrUtil; 5 import cn.hutool.core.util.StrUtil;
5 6
6 import java.util.Arrays; 7 import java.util.Arrays;
7 import java.util.Collection; 8 import java.util.Collection;
8 import java.util.List; 9 import java.util.List;
  10 +import java.util.Set;
9 import java.util.stream.Collectors; 11 import java.util.stream.Collectors;
10 12
11 /** 13 /**
@@ -45,6 +47,15 @@ public class StrUtils { @@ -45,6 +47,15 @@ public class StrUtils {
45 return Arrays.stream(longs).boxed().collect(Collectors.toList()); 47 return Arrays.stream(longs).boxed().collect(Collectors.toList());
46 } 48 }
47 49
  50 + public static Set<Long> splitToLongSet(String value) {
  51 + return splitToLongSet(value, StrPool.COMMA);
  52 + }
  53 +
  54 + public static Set<Long> splitToLongSet(String value, CharSequence separator) {
  55 + long[] longs = StrUtil.splitToLong(value, separator);
  56 + return Arrays.stream(longs).boxed().collect(Collectors.toSet());
  57 + }
  58 +
48 public static List<Integer> splitToInteger(String value, CharSequence separator) { 59 public static List<Integer> splitToInteger(String value, CharSequence separator) {
49 int[] integers = StrUtil.splitToInt(value, separator); 60 int[] integers = StrUtil.splitToInt(value, separator);
50 return Arrays.stream(integers).boxed().collect(Collectors.toList()); 61 return Arrays.stream(integers).boxed().collect(Collectors.toList());
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/banner/core/BannerApplicationRunner.java
@@ -35,7 +35,7 @@ public class BannerApplicationRunner implements ApplicationRunner { @@ -35,7 +35,7 @@ public class BannerApplicationRunner implements ApplicationRunner {
35 System.out.println("[报表模块 yudao-module-report - 已禁用][参考 https://doc.iocoder.cn/report/ 开启]"); 35 System.out.println("[报表模块 yudao-module-report - 已禁用][参考 https://doc.iocoder.cn/report/ 开启]");
36 } 36 }
37 // 工作流 37 // 工作流
38 - if (isNotPresent("cn.iocoder.yudao.framework.flowable.config.YudaoFlowableConfiguration")) { 38 + if (isNotPresent("cn.iocoder.yudao.module.bpm.framework.flowable.config.BpmFlowableConfiguration")) {
39 System.out.println("[工作流模块 yudao-module-bpm - 已禁用][参考 https://doc.iocoder.cn/bpm/ 开启]"); 39 System.out.println("[工作流模块 yudao-module-bpm - 已禁用][参考 https://doc.iocoder.cn/bpm/ 开启]");
40 } 40 }
41 // 商城系统 41 // 商城系统
yudao-module-bpm/pom.xml
@@ -11,7 +11,6 @@ @@ -11,7 +11,6 @@
11 <modules> 11 <modules>
12 <module>yudao-module-bpm-api</module> 12 <module>yudao-module-bpm-api</module>
13 <module>yudao-module-bpm-biz</module> 13 <module>yudao-module-bpm-biz</module>
14 - <module>yudao-spring-boot-starter-flowable</module>  
15 </modules> 14 </modules>
16 <artifactId>yudao-module-bpm</artifactId> 15 <artifactId>yudao-module-bpm</artifactId>
17 <packaging>pom</packaging> 16 <packaging>pom</packaging>
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java
@@ -20,7 +20,7 @@ public class BpmProcessInstanceCreateReqDTO { @@ -20,7 +20,7 @@ public class BpmProcessInstanceCreateReqDTO {
20 @NotEmpty(message = "流程定义的标识不能为空") 20 @NotEmpty(message = "流程定义的标识不能为空")
21 private String processDefinitionKey; 21 private String processDefinitionKey;
22 /** 22 /**
23 - * 变量实例 23 + * 变量实例(动态表单)
24 */ 24 */
25 private Map<String, Object> variables; 25 private Map<String, Object> variables;
26 26
@@ -32,14 +32,13 @@ public class BpmProcessInstanceCreateReqDTO { @@ -32,14 +32,13 @@ public class BpmProcessInstanceCreateReqDTO {
32 @NotEmpty(message = "业务的唯一标识") 32 @NotEmpty(message = "业务的唯一标识")
33 private String businessKey; 33 private String businessKey;
34 34
35 - // TODO @hai:assignees 复数  
36 /** 35 /**
37 - * 提前指派的审批人 36 + * 发起人自选审批人 Map
38 * 37 *
39 * key:taskKey 任务编码 38 * key:taskKey 任务编码
40 * value:审批人的数组 39 * value:审批人的数组
41 - * 例如: { taskKey1 :[1, 2] },则表示 taskKey1 这个任务,提前设定了,由 userId 为 1,2 的用户进行审批 40 + * 例如:{ taskKey1 :[1, 2] },则表示 taskKey1 这个任务,提前设定了,由 userId 为 1,2 的用户进行审批
42 */ 41 */
43 - private Map<String, List<Long>> assignee; 42 + private Map<String, List<Long>> startUserSelectAssignees;
44 43
45 } 44 }
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java
@@ -10,37 +10,32 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; @@ -10,37 +10,32 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
10 public interface ErrorCodeConstants { 10 public interface ErrorCodeConstants {
11 11
12 // ========== 通用流程处理 模块 1-009-000-000 ========== 12 // ========== 通用流程处理 模块 1-009-000-000 ==========
13 - ErrorCode HIGHLIGHT_IMG_ERROR = new ErrorCode(1_009_000_002, "获取高亮流程图异常");  
14 13
15 // ========== OA 流程模块 1-009-001-000 ========== 14 // ========== OA 流程模块 1-009-001-000 ==========
16 ErrorCode OA_LEAVE_NOT_EXISTS = new ErrorCode(1_009_001_001, "请假申请不存在"); 15 ErrorCode OA_LEAVE_NOT_EXISTS = new ErrorCode(1_009_001_001, "请假申请不存在");
17 - ErrorCode OA_PM_POST_NOT_EXISTS = new ErrorCode(1_009_001_002, "项目经理岗位未设置");  
18 - ErrorCode OA_DEPART_PM_POST_NOT_EXISTS = new ErrorCode(1_009_001_009, "部门的项目经理不存在");  
19 - ErrorCode OA_BM_POST_NOT_EXISTS = new ErrorCode(1_009_001_004, "部门经理岗位未设置");  
20 - ErrorCode OA_DEPART_BM_POST_NOT_EXISTS = new ErrorCode(1_009_001_005, "部门的部门经理不存在");  
21 - ErrorCode OA_HR_POST_NOT_EXISTS = new ErrorCode(1_009_001_006, "HR岗位未设置");  
22 - ErrorCode OA_DAY_LEAVE_ERROR = new ErrorCode(1_009_001_007, "请假天数必须>=1");  
23 16
24 // ========== 流程模型 1-009-002-000 ========== 17 // ========== 流程模型 1-009-002-000 ==========
25 ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程"); 18 ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程");
26 ErrorCode MODEL_NOT_EXISTS = new ErrorCode(1_009_002_001, "流程模型不存在"); 19 ErrorCode MODEL_NOT_EXISTS = new ErrorCode(1_009_002_001, "流程模型不存在");
27 ErrorCode MODEL_KEY_VALID = new ErrorCode(1_009_002_002, "流程标识格式不正确,需要以字母或下划线开头,后接任意字母、数字、中划线、下划线、句点!"); 20 ErrorCode MODEL_KEY_VALID = new ErrorCode(1_009_002_002, "流程标识格式不正确,需要以字母或下划线开头,后接任意字母、数字、中划线、下划线、句点!");
28 ErrorCode MODEL_DEPLOY_FAIL_FORM_NOT_CONFIG = new ErrorCode(1_009_002_003, "部署流程失败,原因:流程表单未配置,请点击【修改流程】按钮进行配置"); 21 ErrorCode MODEL_DEPLOY_FAIL_FORM_NOT_CONFIG = new ErrorCode(1_009_002_003, "部署流程失败,原因:流程表单未配置,请点击【修改流程】按钮进行配置");
29 - ErrorCode MODEL_DEPLOY_FAIL_TASK_ASSIGN_RULE_NOT_CONFIG = new ErrorCode(1_009_002_004, "部署流程失败," +  
30 - "原因:用户任务({})未配置分配规则,请点击【修改流程】按钮进行配置");  
31 - ErrorCode MODEL_DEPLOY_FAIL_TASK_INFO_EQUALS = new ErrorCode(1_009_003_005, "流程定义部署失败,原因:信息未发生变化"); 22 + ErrorCode MODEL_DEPLOY_FAIL_TASK_CANDIDATE_NOT_CONFIG = new ErrorCode(1_009_002_004, "部署流程失败," +
  23 + "原因:用户任务({})未配置审批人,请点击【流程设计】按钮,选择该它的【任务(审批人)】进行配置");
  24 + ErrorCode MODEL_DEPLOY_FAIL_BPMN_START_EVENT_NOT_EXISTS = new ErrorCode(1_009_002_005, "部署流程失败,原因:BPMN 流程图中,没有开始事件");
  25 + ErrorCode MODEL_DEPLOY_FAIL_BPMN_USER_TASK_NAME_NOT_EXISTS = new ErrorCode(1_009_002_006, "部署流程失败,原因:BPMN 流程图中,用户任务({})的名字不存在");
32 26
33 // ========== 流程定义 1-009-003-000 ========== 27 // ========== 流程定义 1-009-003-000 ==========
34 ErrorCode PROCESS_DEFINITION_KEY_NOT_MATCH = new ErrorCode(1_009_003_000, "流程定义的标识期望是({}),当前是({}),请修改 BPMN 流程图"); 28 ErrorCode PROCESS_DEFINITION_KEY_NOT_MATCH = new ErrorCode(1_009_003_000, "流程定义的标识期望是({}),当前是({}),请修改 BPMN 流程图");
35 ErrorCode PROCESS_DEFINITION_NAME_NOT_MATCH = new ErrorCode(1_009_003_001, "流程定义的名字期望是({}),当前是({}),请修改 BPMN 流程图"); 29 ErrorCode PROCESS_DEFINITION_NAME_NOT_MATCH = new ErrorCode(1_009_003_001, "流程定义的名字期望是({}),当前是({}),请修改 BPMN 流程图");
36 ErrorCode PROCESS_DEFINITION_NOT_EXISTS = new ErrorCode(1_009_003_002, "流程定义不存在"); 30 ErrorCode PROCESS_DEFINITION_NOT_EXISTS = new ErrorCode(1_009_003_002, "流程定义不存在");
37 ErrorCode PROCESS_DEFINITION_IS_SUSPENDED = new ErrorCode(1_009_003_003, "流程定义处于挂起状态"); 31 ErrorCode PROCESS_DEFINITION_IS_SUSPENDED = new ErrorCode(1_009_003_003, "流程定义处于挂起状态");
38 - ErrorCode PROCESS_DEFINITION_BPMN_MODEL_NOT_EXISTS = new ErrorCode(1_009_003_004, "流程定义的模型不存在");  
39 32
40 // ========== 流程实例 1-009-004-000 ========== 33 // ========== 流程实例 1-009-004-000 ==========
41 ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1_009_004_000, "流程实例不存在"); 34 ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1_009_004_000, "流程实例不存在");
42 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1_009_004_001, "流程取消失败,流程不处于运行中"); 35 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1_009_004_001, "流程取消失败,流程不处于运行中");
43 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF = new ErrorCode(1_009_004_002, "流程取消失败,该流程不是你发起的"); 36 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF = new ErrorCode(1_009_004_002, "流程取消失败,该流程不是你发起的");
  37 + ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_CONFIG = new ErrorCode(1_009_004_003, "审批任务({})的审批人未配置");
  38 + ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_EXISTS = new ErrorCode(1_009_004_004, "审批任务({})的审批人({})不存在");
44 39
45 // ========== 流程任务 1-009-005-000 ========== 40 // ========== 流程任务 1-009-005-000 ==========
46 ErrorCode TASK_OPERATE_FAIL_ASSIGN_NOT_SELF = new ErrorCode(1_009_005_001, "操作失败,原因:该任务的审批人不是你"); 41 ErrorCode TASK_OPERATE_FAIL_ASSIGN_NOT_SELF = new ErrorCode(1_009_005_001, "操作失败,原因:该任务的审批人不是你");
@@ -50,24 +45,34 @@ public interface ErrorCodeConstants { @@ -50,24 +45,34 @@ public interface ErrorCodeConstants {
50 ErrorCode TASK_RETURN_FAIL_SOURCE_TARGET_ERROR = new ErrorCode(1_009_005_006, "回退任务失败,目标节点是在并行网关上或非同一路线上,不可跳转"); 45 ErrorCode TASK_RETURN_FAIL_SOURCE_TARGET_ERROR = new ErrorCode(1_009_005_006, "回退任务失败,目标节点是在并行网关上或非同一路线上,不可跳转");
51 ErrorCode TASK_DELEGATE_FAIL_USER_REPEAT = new ErrorCode(1_009_005_007, "任务委派失败,委派人和当前审批人为同一人"); 46 ErrorCode TASK_DELEGATE_FAIL_USER_REPEAT = new ErrorCode(1_009_005_007, "任务委派失败,委派人和当前审批人为同一人");
52 ErrorCode TASK_DELEGATE_FAIL_USER_NOT_EXISTS = new ErrorCode(1_009_005_008, "任务委派失败,被委派人不存在"); 47 ErrorCode TASK_DELEGATE_FAIL_USER_NOT_EXISTS = new ErrorCode(1_009_005_008, "任务委派失败,被委派人不存在");
53 - ErrorCode TASK_ADD_SIGN_USER_NOT_EXIST = new ErrorCode(1_009_005_009, "任务加签:选择的用户不存在");  
54 - ErrorCode TASK_ADD_SIGN_TYPE_ERROR = new ErrorCode(1_009_005_010, "任务加签:当前任务已经{},不能{}");  
55 - ErrorCode TASK_ADD_SIGN_USER_REPEAT = new ErrorCode(1_009_005_011, "任务加签失败,加签人与现有审批人[{}]重复");  
56 - ErrorCode TASK_SUB_SIGN_NO_PARENT = new ErrorCode(1_009_005_011, "任务减签失败,被减签的任务必须是通过加签生成的任务");  
57 -  
58 - // ========== 流程任务分配规则 1-009-006-000 ==========  
59 - ErrorCode TASK_ASSIGN_RULE_EXISTS = new ErrorCode(1_009_006_000, "流程({}) 的任务({}) 已经存在分配规则");  
60 - ErrorCode TASK_ASSIGN_RULE_NOT_EXISTS = new ErrorCode(1_009_006_001, "流程任务分配规则不存在");  
61 - ErrorCode TASK_UPDATE_FAIL_NOT_MODEL = new ErrorCode(1_009_006_002, "只有流程模型的任务分配规则,才允许被修改"); 48 + ErrorCode TASK_SIGN_CREATE_USER_NOT_EXIST = new ErrorCode(1_009_005_009, "任务加签:选择的用户不存在");
  49 + ErrorCode TASK_SIGN_CREATE_TYPE_ERROR = new ErrorCode(1_009_005_010, "任务加签:当前任务已经{},不能{}");
  50 + ErrorCode TASK_SIGN_CREATE_USER_REPEAT = new ErrorCode(1_009_005_011, "任务加签失败,加签人与现有审批人[{}]重复");
  51 + ErrorCode TASK_SIGN_DELETE_NO_PARENT = new ErrorCode(1_009_005_012, "任务减签失败,被减签的任务必须是通过加签生成的任务");
  52 + ErrorCode TASK_TRANSFER_FAIL_USER_REPEAT = new ErrorCode(1_009_005_013, "任务转办失败,转办人和当前审批人为同一人");
  53 + ErrorCode TASK_TRANSFER_FAIL_USER_NOT_EXISTS = new ErrorCode(1_009_005_014, "任务转办失败,转办人不存在");
62 ErrorCode TASK_CREATE_FAIL_NO_CANDIDATE_USER = new ErrorCode(1_009_006_003, "操作失败,原因:找不到任务的审批人!"); 54 ErrorCode TASK_CREATE_FAIL_NO_CANDIDATE_USER = new ErrorCode(1_009_006_003, "操作失败,原因:找不到任务的审批人!");
63 - ErrorCode TASK_ASSIGN_SCRIPT_NOT_EXISTS = new ErrorCode(1_009_006_004, "操作失败,原因:任务分配脚本({}) 不存在");  
64 55
65 // ========== 动态表单模块 1-009-010-000 ========== 56 // ========== 动态表单模块 1-009-010-000 ==========
66 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1_009_010_000, "动态表单不存在"); 57 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1_009_010_000, "动态表单不存在");
67 ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1_009_010_001, "表单项({}) 和 ({}) 使用了相同的字段名({})"); 58 ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1_009_010_001, "表单项({}) 和 ({}) 使用了相同的字段名({})");
68 59
69 // ========== 用户组模块 1-009-011-000 ========== 60 // ========== 用户组模块 1-009-011-000 ==========
70 - ErrorCode USER_GROUP_NOT_EXISTS = new ErrorCode(1_009_011_000, "用户组不存在");  
71 - ErrorCode USER_GROUP_IS_DISABLE = new ErrorCode(1_009_011_001, "名字为【{}】的用户组已被禁用"); 61 + ErrorCode USER_GROUP_NOT_EXISTS = new ErrorCode(1_009_011_000, "用户分组不存在");
  62 + ErrorCode USER_GROUP_IS_DISABLE = new ErrorCode(1_009_011_001, "名字为【{}】的用户分组已被禁用");
  63 +
  64 + // ========== 用户组模块 1-009-012-000 ==========
  65 + ErrorCode CATEGORY_NOT_EXISTS = new ErrorCode(1_009_012_000, "流程分类不存在");
  66 + ErrorCode CATEGORY_NAME_DUPLICATE = new ErrorCode(1_009_012_001, "流程分类名字【{}】重复");
  67 + ErrorCode CATEGORY_CODE_DUPLICATE = new ErrorCode(1_009_012_002, "流程分类编码【{}】重复");
  68 +
  69 + // ========== BPM 流程监听器 1-009-013-000 ==========
  70 + ErrorCode PROCESS_LISTENER_NOT_EXISTS = new ErrorCode(1_009_013_000, "流程监听器不存在");
  71 + ErrorCode PROCESS_LISTENER_CLASS_NOT_FOUND = new ErrorCode(1_009_013_001, "流程监听器类({})不存在");
  72 + ErrorCode PROCESS_LISTENER_CLASS_IMPLEMENTS_ERROR = new ErrorCode(1_009_013_002, "流程监听器类({})没有实现接口({})");
  73 + ErrorCode PROCESS_LISTENER_EXPRESSION_INVALID = new ErrorCode(1_009_013_003, "流程监听器表达式({})不合法");
  74 +
  75 + // ========== BPM 流程表达式 1-009-014-000 ==========
  76 + ErrorCode PROCESS_EXPRESSION_NOT_EXISTS = new ErrorCode(1_009_014_000, "流程表达式不存在");
72 77
73 } 78 }
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmModelFormTypeEnum.java
1 package cn.iocoder.yudao.module.bpm.enums.definition; 1 package cn.iocoder.yudao.module.bpm.enums.definition;
2 2
  3 +import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3 import lombok.AllArgsConstructor; 4 import lombok.AllArgsConstructor;
4 import lombok.Getter; 5 import lombok.Getter;
5 6
  7 +import java.util.Arrays;
  8 +
6 /** 9 /**
7 * BPM 模型的表单类型的枚举 10 * BPM 模型的表单类型的枚举
8 * 11 *
@@ -10,12 +13,20 @@ import lombok.Getter; @@ -10,12 +13,20 @@ import lombok.Getter;
10 */ 13 */
11 @Getter 14 @Getter
12 @AllArgsConstructor 15 @AllArgsConstructor
13 -public enum BpmModelFormTypeEnum { 16 +public enum BpmModelFormTypeEnum implements IntArrayValuable {
14 17
15 NORMAL(10, "流程表单"), // 对应 BpmFormDO 18 NORMAL(10, "流程表单"), // 对应 BpmFormDO
16 CUSTOM(20, "业务表单") // 业务自己定义的表单,自己进行数据的存储 19 CUSTOM(20, "业务表单") // 业务自己定义的表单,自己进行数据的存储
17 ; 20 ;
18 21
  22 + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BpmModelFormTypeEnum::getType).toArray();
  23 +
19 private final Integer type; 24 private final Integer type;
20 - private final String desc; 25 + private final String name;
  26 +
  27 + @Override
  28 + public int[] array() {
  29 + return ARRAYS;
  30 + }
  31 +
21 } 32 }
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmProcessListenerType.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.enums.definition;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +
  6 +/**
  7 + * BPM 流程监听器的类型
  8 + *
  9 + * @author 芋道源码
  10 + */
  11 +@Getter
  12 +@AllArgsConstructor
  13 +public enum BpmProcessListenerType {
  14 +
  15 + EXECUTION("execution", "执行监听器"),
  16 + TASK("task", "任务执行器");
  17 +
  18 + private final String type;
  19 + private final String name;
  20 +
  21 +}
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmProcessListenerValueType.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.enums.definition;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +
  6 +/**
  7 + * BPM 流程监听器的值类型
  8 + *
  9 + * @author 芋道源码
  10 + */
  11 +@Getter
  12 +@AllArgsConstructor
  13 +public enum BpmProcessListenerValueType {
  14 +
  15 + CLASS("class", "Java 类"),
  16 + DELEGATE_EXPRESSION("delegateExpression", "代理表达式"),
  17 + EXPRESSION("expression", "表达式");
  18 +
  19 + private final String type;
  20 + private final String name;
  21 +
  22 +}
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java deleted
1 -package cn.iocoder.yudao.module.bpm.enums.definition;  
2 -  
3 -import lombok.AllArgsConstructor;  
4 -import lombok.Getter;  
5 -  
6 -/**  
7 - * BPM 任务规则的脚本枚举  
8 - * 目前暂时通过 TODO 芋艿:硬编码,未来可以考虑 Groovy 动态脚本的方式  
9 - *  
10 - * @author 芋道源码  
11 - */  
12 -@Getter  
13 -@AllArgsConstructor  
14 -public enum BpmTaskRuleScriptEnum {  
15 -  
16 - START_USER(10L, "流程发起人"),  
17 -  
18 - LEADER_X1(20L, "流程发起人的一级领导"),  
19 - LEADER_X2(21L, "流程发起人的二级领导");  
20 -  
21 - /**  
22 - * 脚本编号  
23 - */  
24 - private final Long id;  
25 - /**  
26 - * 脚本描述  
27 - */  
28 - private final String desc;  
29 -  
30 -}  
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmCommentTypeEnum.java
1 package cn.iocoder.yudao.module.bpm.enums.task; 1 package cn.iocoder.yudao.module.bpm.enums.task;
2 2
  3 +import cn.hutool.core.util.StrUtil;
3 import lombok.AllArgsConstructor; 4 import lombok.AllArgsConstructor;
4 import lombok.Getter; 5 import lombok.Getter;
5 6
6 /** 7 /**
7 - * 流程任务 -- comment类型枚举 8 + * 流程任务的 Comment 评论类型枚举
  9 + *
  10 + * @author kehaiyou
8 */ 11 */
9 @Getter 12 @Getter
10 @AllArgsConstructor 13 @AllArgsConstructor
11 public enum BpmCommentTypeEnum { 14 public enum BpmCommentTypeEnum {
12 15
13 - APPROVE(1, "通过", ""),  
14 - REJECT(2, "不通过", ""),  
15 - CANCEL(3, "已取消", ""),  
16 - BACK(4, "退回", ""),  
17 - DELEGATE(5, "委派", ""),  
18 - ADD_SIGN(6, "加签", "[{}]{}给了[{}],理由为:{}"),  
19 - SUB_SIGN(7, "减签", "[{}]操作了【减签】,审批人[{}]的任务被取消"), 16 + APPROVE("1", "审批通过", "审批通过,原因是:{}"),
  17 + REJECT("2", "不通过", "审批不通过:原因是:{}"),
  18 + CANCEL("3", "已取消", "系统自动取消,原因是:{}"),
  19 + RETURN("4", "退回", "任务被退回,原因是:{}"),
  20 + DELEGATE_START("5", "委派发起", "[{}]将任务委派给[{}],委派理由为:{}"),
  21 + DELEGATE_END("6", "委派完成", "[{}]完成委派任务,任务重新回到[{}]手中,审批建议为:{}"),
  22 + TRANSFER("7", "转派", "[{}]将任务转派给[{}],转派理由为:{}"),
  23 + ADD_SIGN("8", "加签", "[{}]{}给了[{}],理由为:{}"),
  24 + SUB_SIGN("9", "减签", "[{}]操作了【减签】,审批人[{}]的任务被取消"),
20 ; 25 ;
21 26
22 /** 27 /**
23 * 操作类型 28 * 操作类型
  29 + *
  30 + * 由于 BPM Comment 类型为 String,所以这里就不使用 Integer
24 */ 31 */
25 - private final Integer type; 32 + private final String type;
26 /** 33 /**
27 * 操作名字 34 * 操作名字
28 */ 35 */
@@ -32,4 +39,8 @@ public enum BpmCommentTypeEnum { @@ -32,4 +39,8 @@ public enum BpmCommentTypeEnum {
32 */ 39 */
33 private final String comment; 40 private final String comment;
34 41
  42 + public String formatComment(Object... params) {
  43 + return StrUtil.format(comment, params);
  44 + }
  45 +
35 } 46 }
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmProcessInstanceDeleteReasonEnum.java renamed to yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmDeleteReasonEnum.java
@@ -5,20 +5,23 @@ import lombok.AllArgsConstructor; @@ -5,20 +5,23 @@ import lombok.AllArgsConstructor;
5 import lombok.Getter; 5 import lombok.Getter;
6 6
7 /** 7 /**
8 - * 流程实例的删除原因 8 + * 流程实例/任务的删除原因枚举
9 * 9 *
10 * @author 芋道源码 10 * @author 芋道源码
11 */ 11 */
12 @Getter 12 @Getter
13 @AllArgsConstructor 13 @AllArgsConstructor
14 -public enum BpmProcessInstanceDeleteReasonEnum { 14 +public enum BpmDeleteReasonEnum {
15 15
16 - REJECT_TASK("不通过任务,原因:{}"), // 修改文案时,需要注意 isRejectReason 方法  
17 - CANCEL_TASK("主动取消任务,原因:{}"), 16 + // ========== 流程实例的独有原因 ==========
  17 +
  18 + REJECT_TASK("审批不通过任务,原因:{}"), // 场景:用户审批不通过任务。修改文案时,需要注意 isRejectReason 方法
  19 + CANCEL_PROCESS_INSTANCE_BY_START_USER("用户主动取消流程,原因:{}"), // 场景:用户主动取消流程
  20 + CANCEL_PROCESS_INSTANCE_BY_ADMIN("管理员【{}】取消流程,原因:{}"), // 场景:管理员取消流程
18 21
19 // ========== 流程任务的独有原因 ========== 22 // ========== 流程任务的独有原因 ==========
20 - MULTI_TASK_END("系统自动取消,原因:多任务审批已经满足条件,无需审批该任务"), // 多实例满足 condition 而结束时,其它任务实例任务会被取消,对应的删除原因是 MI_END  
21 23
  24 + CANCEL_BY_SYSTEM("系统自动取消"), // 场景:非常多,比如说:1)多任务审批已经满足条件,无需审批该任务;2)流程实例被取消,无需审批该任务;等等
22 ; 25 ;
23 26
24 private final String reason; 27 private final String reason;
@@ -36,23 +39,7 @@ public enum BpmProcessInstanceDeleteReasonEnum { @@ -36,23 +39,7 @@ public enum BpmProcessInstanceDeleteReasonEnum {
36 // ========== 逻辑 ========== 39 // ========== 逻辑 ==========
37 40
38 public static boolean isRejectReason(String reason) { 41 public static boolean isRejectReason(String reason) {
39 - return StrUtil.startWith(reason, "不通过任务,原因:");  
40 - }  
41 -  
42 - /**  
43 - * 将 Flowable 的删除原因,翻译成对应的中文原因  
44 - *  
45 - * @param reason 原始原因  
46 - * @return 原因  
47 - */  
48 - public static String translateReason(String reason) {  
49 - if (StrUtil.isEmpty(reason)) {  
50 - return reason;  
51 - }  
52 - switch (reason) {  
53 - case "MI_END": return MULTI_TASK_END.getReason();  
54 - default: return reason;  
55 - } 42 + return StrUtil.startWith(reason, "审批不通过任务,原因:");
56 } 43 }
57 44
58 } 45 }
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmProcessInstanceResultEnum.java deleted
1 -package cn.iocoder.yudao.module.bpm.enums.task;  
2 -  
3 -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;  
4 -import lombok.AllArgsConstructor;  
5 -import lombok.Getter;  
6 -  
7 -import java.util.Arrays;  
8 -import java.util.List;  
9 -  
10 -/**  
11 - * 流程实例的结果  
12 - *  
13 - * @author jason  
14 - */  
15 -@Getter  
16 -@AllArgsConstructor  
17 -public enum BpmProcessInstanceResultEnum {  
18 -  
19 - PROCESS(1, "处理中"),  
20 - APPROVE(2, "通过"),  
21 - REJECT(3, "不通过"),  
22 - CANCEL(4, "已取消"),  
23 -  
24 - // ========== 流程任务独有的状态 ==========  
25 -  
26 - BACK(5, "驳回"), // 退回  
27 - DELEGATE(6, "委派"),  
28 - /**  
29 - * 【加签】源任务已经审批完成,但是它使用了后加签,后加签的任务未完成,源任务就会是这个状态  
30 - * 相当于是 通过 APPROVE 的特殊状态  
31 - * 例如:A审批, A 后加签了 B,并且审批通过了任务,但是 B 还未审批,则当前任务状态为“待后加签任务完成”  
32 - */  
33 - SIGN_AFTER(7, "待后加签任务完成"),  
34 - /**  
35 - * 【加签】源任务未审批,但是向前加签了,所以源任务状态变为“待前加签任务完成”  
36 - * 相当于是 处理中 PROCESS 的特殊状态  
37 - * 例如:A 审批, A 前加签了 B,B 还未审核  
38 - */  
39 - SIGN_BEFORE(8, "待前加签任务完成"),  
40 - /**  
41 - * 【加签】后加签任务被创建时的初始状态  
42 - * 相当于是 处理中 PROCESS 的特殊状态  
43 - * 因为需要源任务先完成,才能到后加签的人来审批,所以加了一个状态区分  
44 - */  
45 - WAIT_BEFORE_TASK(9, "待前置任务完成");  
46 -  
47 - /**  
48 - * 能被减签的状态  
49 - */  
50 - public static final List<Integer> CAN_SUB_SIGN_STATUS_LIST = Arrays.asList(PROCESS.result, WAIT_BEFORE_TASK.result);  
51 -  
52 - /**  
53 - * 结果  
54 - * <p>  
55 - * 如果新增时,注意 {@link #isEndResult(Integer)} 是否需要变更  
56 - */  
57 - private final Integer result;  
58 - /**  
59 - * 描述  
60 - */  
61 - private final String desc;  
62 -  
63 - /**  
64 - * 判断该结果是否已经处于 End 最终结果  
65 - * <p>  
66 - * 主要用于一些结果更新的逻辑,如果已经是最终结果,就不再进行更新  
67 - *  
68 - * @param result 结果  
69 - * @return 是否  
70 - */  
71 - public static boolean isEndResult(Integer result) {  
72 - return ObjectUtils.equalsAny(result, APPROVE.getResult(), REJECT.getResult(),  
73 - CANCEL.getResult(), BACK.getResult(),  
74 - SIGN_AFTER.getResult());  
75 - }  
76 -  
77 -}  
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmProcessInstanceStatusEnum.java
1 package cn.iocoder.yudao.module.bpm.enums.task; 1 package cn.iocoder.yudao.module.bpm.enums.task;
2 2
  3 +import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3 import lombok.AllArgsConstructor; 4 import lombok.AllArgsConstructor;
4 import lombok.Getter; 5 import lombok.Getter;
5 6
  7 +import java.util.Arrays;
  8 +
6 /** 9 /**
7 - * 流程实例的状态 10 + * 流程实例 ProcessInstance 的状态
8 * 11 *
9 * @author 芋道源码 12 * @author 芋道源码
10 */ 13 */
11 @Getter 14 @Getter
12 @AllArgsConstructor 15 @AllArgsConstructor
13 -public enum BpmProcessInstanceStatusEnum { 16 +public enum BpmProcessInstanceStatusEnum implements IntArrayValuable {
  17 +
  18 + RUNNING(1, "审批中"),
  19 + APPROVE(2, "审批通过"),
  20 + REJECT(3, "审批不通过"),
  21 + CANCEL(4, "已取消");
14 22
15 - RUNNING(1, "进行中"),  
16 - FINISH(2, "已完成"); 23 + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BpmProcessInstanceStatusEnum::getStatus).toArray();
17 24
18 /** 25 /**
19 * 状态 26 * 状态
@@ -24,4 +31,9 @@ public enum BpmProcessInstanceStatusEnum { @@ -24,4 +31,9 @@ public enum BpmProcessInstanceStatusEnum {
24 */ 31 */
25 private final String desc; 32 private final String desc;
26 33
  34 + @Override
  35 + public int[] array() {
  36 + return new int[0];
  37 + }
  38 +
27 } 39 }
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskAddSignTypeEnum.java renamed to yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskSignTypeEnum.java
1 package cn.iocoder.yudao.module.bpm.enums.task; 1 package cn.iocoder.yudao.module.bpm.enums.task;
2 2
  3 +import cn.hutool.core.util.ArrayUtil;
3 import lombok.AllArgsConstructor; 4 import lombok.AllArgsConstructor;
4 import lombok.Getter; 5 import lombok.Getter;
5 6
6 /** 7 /**
7 - * 流程任务 -- 加签类型枚举类型 8 + * 流程任务的加签类型枚举
  9 + *
  10 + * @author kehaiyou
8 */ 11 */
9 @Getter 12 @Getter
10 @AllArgsConstructor 13 @AllArgsConstructor
11 -public enum BpmTaskAddSignTypeEnum { 14 +public enum BpmTaskSignTypeEnum {
12 15
13 /** 16 /**
14 * 向前加签,需要前置任务审批完成,才回到原审批人 17 * 向前加签,需要前置任务审批完成,才回到原审批人
@@ -17,24 +20,28 @@ public enum BpmTaskAddSignTypeEnum { @@ -17,24 +20,28 @@ public enum BpmTaskAddSignTypeEnum {
17 /** 20 /**
18 * 向后加签,需要后置任务全部审批完,才会通过原审批人节点 21 * 向后加签,需要后置任务全部审批完,才会通过原审批人节点
19 */ 22 */
20 - AFTER("after", "向后加签"), 23 + AFTER("after", "向后加签");
  24 +
21 /** 25 /**
22 - * 创建后置加签时的过度状态,用于控制向后加签生成的任务状态 26 + * 类型
23 */ 27 */
24 - AFTER_CHILDREN_TASK("afterChildrenTask", "向后加签生成的子任务");  
25 -  
26 private final String type; 28 private final String type;
  29 + /**
  30 + * 名字
  31 + */
  32 + private final String name;
27 33
28 - private final String desc;  
29 -  
30 - public static String formatDesc(String type) {  
31 - for (BpmTaskAddSignTypeEnum value : values()) { 34 + public static String nameOfType(String type) {
  35 + for (BpmTaskSignTypeEnum value : values()) {
32 if (value.type.equals(type)) { 36 if (value.type.equals(type)) {
33 - return value.desc; 37 + return value.name;
34 } 38 }
35 } 39 }
36 return null; 40 return null;
37 } 41 }
38 42
  43 + public static BpmTaskSignTypeEnum of(String type) {
  44 + return ArrayUtil.firstMatch(value -> value.getType().equals(type), values());
  45 + }
  46 +
39 } 47 }
40 -  
41 \ No newline at end of file 48 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatusEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.enums.task;
  2 +
  3 +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
  4 +import lombok.AllArgsConstructor;
  5 +import lombok.Getter;
  6 +
  7 +/**
  8 + * 流程任务 Task 的状态枚举
  9 + *
  10 + * @author jason
  11 + */
  12 +@Getter
  13 +@AllArgsConstructor
  14 +public enum BpmTaskStatusEnum {
  15 +
  16 + RUNNING(1, "审批中"),
  17 + APPROVE(2, "审批通过"),
  18 + REJECT(3, "审批不通过"),
  19 + CANCEL(4, "已取消"),
  20 +
  21 + RETURN(5, "已退回"),
  22 + DELEGATE(6, "委派中"),
  23 +
  24 + /**
  25 + * 使用场景:
  26 + * 1. 任务被向后【加签】时,它在审批通过后,会变成 APPROVING 这个状态,然后等到【加签】出来的任务都被审批后,才会变成 APPROVE 审批通过
  27 + */
  28 + APPROVING(7, "审批通过中"),
  29 + /**
  30 + * 使用场景:
  31 + * 1. 任务被向前【加签】时,它会变成 WAIT 状态,需要等待【加签】出来的任务被审批后,它才能继续变为 RUNNING 继续审批
  32 + * 2. 任务被向后【加签】时,【加签】出来的任务处于 WAIT 状态,它们需要等待该任务被审批后,它们才能继续变为 RUNNING 继续审批
  33 + */
  34 + WAIT(0, "待审批");
  35 +
  36 + /**
  37 + * 状态
  38 + * <p>
  39 + * 如果新增时,注意 {@link #isEndStatus(Integer)} 是否需要变更
  40 + */
  41 + private final Integer status;
  42 + /**
  43 + * 名字
  44 + */
  45 + private final String name;
  46 +
  47 + /**
  48 + * 判断该状态是否已经处于 End 最终状态
  49 + * <p>
  50 + * 主要用于一些状态更新的逻辑,如果已经是最终状态,就不再进行更新
  51 + *
  52 + * @param status 状态
  53 + * @return 是否
  54 + */
  55 + public static boolean isEndStatus(Integer status) {
  56 + return ObjectUtils.equalsAny(status,
  57 + APPROVE.getStatus(), REJECT.getStatus(), CANCEL.getStatus(),
  58 + RETURN.getStatus(), APPROVING.getStatus());
  59 + }
  60 +
  61 +}
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceResultEvent.java renamed to yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEvent.java
@@ -5,14 +5,13 @@ import lombok.Data; @@ -5,14 +5,13 @@ import lombok.Data;
5 import org.springframework.context.ApplicationEvent; 5 import org.springframework.context.ApplicationEvent;
6 6
7 /** 7 /**
8 - * 流程实例的结果发生变化的 Event  
9 - * 定位:由于额外增加了 {@link BpmProcessInstanceExtDO#getResult()} 结果,所以增加该事件 8 + * 流程实例的状态(结果)发生变化的 Event
10 * 9 *
11 * @author 芋道源码 10 * @author 芋道源码
12 */ 11 */
13 @SuppressWarnings("ALL") 12 @SuppressWarnings("ALL")
14 @Data 13 @Data
15 -public class BpmProcessInstanceResultEvent extends ApplicationEvent { 14 +public class BpmProcessInstanceStatusEvent extends ApplicationEvent {
16 15
17 /** 16 /**
18 * 流程实例的编号 17 * 流程实例的编号
@@ -27,15 +26,15 @@ public class BpmProcessInstanceResultEvent extends ApplicationEvent { @@ -27,15 +26,15 @@ public class BpmProcessInstanceResultEvent extends ApplicationEvent {
27 /** 26 /**
28 * 流程实例的结果 27 * 流程实例的结果
29 */ 28 */
30 - @NotNull(message = "流程实例的结果不能为空")  
31 - private Integer result; 29 + @NotNull(message = "流程实例的状态不能为空")
  30 + private Integer status;
32 /** 31 /**
33 * 流程实例对应的业务标识 32 * 流程实例对应的业务标识
34 * 例如说,请假 33 * 例如说,请假
35 */ 34 */
36 private String businessKey; 35 private String businessKey;
37 36
38 - public BpmProcessInstanceResultEvent(Object source) { 37 + public BpmProcessInstanceStatusEvent(Object source) {
39 super(source); 38 super(source);
40 } 39 }
41 40
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceResultEventListener.java renamed to yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEventListener.java
@@ -4,15 +4,15 @@ import cn.hutool.core.util.StrUtil; @@ -4,15 +4,15 @@ import cn.hutool.core.util.StrUtil;
4 import org.springframework.context.ApplicationListener; 4 import org.springframework.context.ApplicationListener;
5 5
6 /** 6 /**
7 - * {@link BpmProcessInstanceResultEvent} 的监听器 7 + * {@link BpmProcessInstanceStatusEvent} 的监听器
8 * 8 *
9 * @author 芋道源码 9 * @author 芋道源码
10 */ 10 */
11 -public abstract class BpmProcessInstanceResultEventListener  
12 - implements ApplicationListener<BpmProcessInstanceResultEvent> { 11 +public abstract class BpmProcessInstanceStatusEventListener
  12 + implements ApplicationListener<BpmProcessInstanceStatusEvent> {
13 13
14 @Override 14 @Override
15 - public final void onApplicationEvent(BpmProcessInstanceResultEvent event) { 15 + public final void onApplicationEvent(BpmProcessInstanceStatusEvent event) {
16 if (!StrUtil.equals(event.getProcessDefinitionKey(), getProcessDefinitionKey())) { 16 if (!StrUtil.equals(event.getProcessDefinitionKey(), getProcessDefinitionKey())) {
17 return; 17 return;
18 } 18 }
@@ -29,6 +29,6 @@ public abstract class BpmProcessInstanceResultEventListener @@ -29,6 +29,6 @@ public abstract class BpmProcessInstanceResultEventListener
29 * 29 *
30 * @param event 事件 30 * @param event 事件
31 */ 31 */
32 - protected abstract void onEvent(BpmProcessInstanceResultEvent event); 32 + protected abstract void onEvent(BpmProcessInstanceStatusEvent event);
33 33
34 } 34 }
yudao-module-bpm/yudao-module-bpm-biz/pom.xml
@@ -64,11 +64,20 @@ @@ -64,11 +64,20 @@
64 <artifactId>yudao-spring-boot-starter-test</artifactId> 64 <artifactId>yudao-spring-boot-starter-test</artifactId>
65 </dependency> 65 </dependency>
66 66
67 - <!-- 工作流相关 --> 67 + <!-- 工具类相关 -->
68 <dependency> 68 <dependency>
69 <groupId>cn.iocoder.boot</groupId> 69 <groupId>cn.iocoder.boot</groupId>
70 - <artifactId>yudao-spring-boot-starter-flowable</artifactId>  
71 - <version>${revision}</version> 70 + <artifactId>yudao-spring-boot-starter-excel</artifactId>
  71 + </dependency>
  72 +
  73 + <!-- Flowable 工作流相关 -->
  74 + <dependency>
  75 + <groupId>org.flowable</groupId>
  76 + <artifactId>flowable-spring-boot-starter-process</artifactId>
  77 + </dependency>
  78 + <dependency>
  79 + <groupId>org.flowable</groupId>
  80 + <artifactId>flowable-spring-boot-starter-actuator</artifactId>
72 </dependency> 81 </dependency>
73 </dependencies> 82 </dependencies>
74 </project> 83 </project>
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/candidate/vo/BpmTaskCandidateRuleVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.candidate.vo;  
2 -  
3 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule.BpmTaskAssignRuleBaseVO;  
4 -import io.swagger.v3.oas.annotations.media.Schema;  
5 -import jakarta.validation.constraints.NotNull;  
6 -import lombok.Data;  
7 -  
8 -import java.util.Set;  
9 -  
10 -/**  
11 - * 流程任务分配规则 Base VO,提供给添加、修改、详细的子 VO 使用  
12 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
13 - *  
14 - * @see BpmTaskAssignRuleBaseVO  
15 - */  
16 -@Data  
17 -public class BpmTaskCandidateRuleVO {  
18 -  
19 - @Schema(description = "规则类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "bpm_task_assign_rule_type")  
20 - @NotNull(message = "规则类型不能为空")  
21 - private Integer type;  
22 -  
23 - @Schema(description = "规则值数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3")  
24 - @NotNull(message = "规则值数组不能为空")  
25 - private Set<Long> options;  
26 -  
27 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmCategoryController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  7 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.category.BpmCategoryPageReqVO;
  8 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.category.BpmCategoryRespVO;
  9 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.category.BpmCategorySaveReqVO;
  10 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO;
  11 +import cn.iocoder.yudao.module.bpm.service.definition.BpmCategoryService;
  12 +import io.swagger.v3.oas.annotations.Operation;
  13 +import io.swagger.v3.oas.annotations.Parameter;
  14 +import io.swagger.v3.oas.annotations.tags.Tag;
  15 +import jakarta.annotation.Resource;
  16 +import jakarta.validation.Valid;
  17 +import org.springframework.security.access.prepost.PreAuthorize;
  18 +import org.springframework.validation.annotation.Validated;
  19 +import org.springframework.web.bind.annotation.*;
  20 +
  21 +import java.util.Comparator;
  22 +import java.util.List;
  23 +
  24 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  25 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
  26 +
  27 +@Tag(name = "管理后台 - BPM 流程分类")
  28 +@RestController
  29 +@RequestMapping("/bpm/category")
  30 +@Validated
  31 +public class BpmCategoryController {
  32 +
  33 + @Resource
  34 + private BpmCategoryService categoryService;
  35 +
  36 + @PostMapping("/create")
  37 + @Operation(summary = "创建流程分类")
  38 + @PreAuthorize("@ss.hasPermission('bpm:category:create')")
  39 + public CommonResult<Long> createCategory(@Valid @RequestBody BpmCategorySaveReqVO createReqVO) {
  40 + return success(categoryService.createCategory(createReqVO));
  41 + }
  42 +
  43 + @PutMapping("/update")
  44 + @Operation(summary = "更新流程分类")
  45 + @PreAuthorize("@ss.hasPermission('bpm:category:update')")
  46 + public CommonResult<Boolean> updateCategory(@Valid @RequestBody BpmCategorySaveReqVO updateReqVO) {
  47 + categoryService.updateCategory(updateReqVO);
  48 + return success(true);
  49 + }
  50 +
  51 + @DeleteMapping("/delete")
  52 + @Operation(summary = "删除流程分类")
  53 + @Parameter(name = "id", description = "编号", required = true)
  54 + @PreAuthorize("@ss.hasPermission('bpm:category:delete')")
  55 + public CommonResult<Boolean> deleteCategory(@RequestParam("id") Long id) {
  56 + categoryService.deleteCategory(id);
  57 + return success(true);
  58 + }
  59 +
  60 + @GetMapping("/get")
  61 + @Operation(summary = "获得流程分类")
  62 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  63 + @PreAuthorize("@ss.hasPermission('bpm:category:query')")
  64 + public CommonResult<BpmCategoryRespVO> getCategory(@RequestParam("id") Long id) {
  65 + BpmCategoryDO category = categoryService.getCategory(id);
  66 + return success(BeanUtils.toBean(category, BpmCategoryRespVO.class));
  67 + }
  68 +
  69 + @GetMapping("/page")
  70 + @Operation(summary = "获得流程分类分页")
  71 + @PreAuthorize("@ss.hasPermission('bpm:category:query')")
  72 + public CommonResult<PageResult<BpmCategoryRespVO>> getCategoryPage(@Valid BpmCategoryPageReqVO pageReqVO) {
  73 + PageResult<BpmCategoryDO> pageResult = categoryService.getCategoryPage(pageReqVO);
  74 + return success(BeanUtils.toBean(pageResult, BpmCategoryRespVO.class));
  75 + }
  76 +
  77 + @GetMapping("/simple-list")
  78 + @Operation(summary = "获取流程分类的精简信息列表", description = "只包含被开启的分类,主要用于前端的下拉选项")
  79 + public CommonResult<List<BpmCategoryRespVO>> getCategorySimpleList() {
  80 + List<BpmCategoryDO> list = categoryService.getCategoryListByStatus(CommonStatusEnum.ENABLE.getStatus());
  81 + list.sort(Comparator.comparingInt(BpmCategoryDO::getSort));
  82 + return success(convertList(list, category -> new BpmCategoryRespVO().setId(category.getId())
  83 + .setName(category.getName()).setCode(category.getCode())));
  84 + }
  85 +
  86 +}
0 \ No newline at end of file 87 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmFormController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition;
2 2
3 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.*;  
4 -import cn.iocoder.yudao.module.bpm.convert.definition.BpmFormConvert;  
5 -import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;  
6 -import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;  
7 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
8 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 -import io.swagger.v3.oas.annotations.tags.Tag;  
10 -import io.swagger.v3.oas.annotations.Parameter; 5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO;
  7 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormRespVO;
  8 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormSaveReqVO;
  9 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
  10 +import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;
11 import io.swagger.v3.oas.annotations.Operation; 11 import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.Parameter;
  13 +import io.swagger.v3.oas.annotations.tags.Tag;
  14 +import jakarta.annotation.Resource;
  15 +import jakarta.validation.Valid;
12 import org.springframework.security.access.prepost.PreAuthorize; 16 import org.springframework.security.access.prepost.PreAuthorize;
13 import org.springframework.validation.annotation.Validated; 17 import org.springframework.validation.annotation.Validated;
14 import org.springframework.web.bind.annotation.*; 18 import org.springframework.web.bind.annotation.*;
15 19
16 -import jakarta.annotation.Resource;  
17 -import jakarta.validation.Valid;  
18 import java.util.List; 20 import java.util.List;
19 21
20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 22 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  23 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
21 24
22 @Tag(name = "管理后台 - 动态表单") 25 @Tag(name = "管理后台 - 动态表单")
23 @RestController 26 @RestController
@@ -31,14 +34,14 @@ public class BpmFormController { @@ -31,14 +34,14 @@ public class BpmFormController {
31 @PostMapping("/create") 34 @PostMapping("/create")
32 @Operation(summary = "创建动态表单") 35 @Operation(summary = "创建动态表单")
33 @PreAuthorize("@ss.hasPermission('bpm:form:create')") 36 @PreAuthorize("@ss.hasPermission('bpm:form:create')")
34 - public CommonResult<Long> createForm(@Valid @RequestBody BpmFormCreateReqVO createReqVO) { 37 + public CommonResult<Long> createForm(@Valid @RequestBody BpmFormSaveReqVO createReqVO) {
35 return success(formService.createForm(createReqVO)); 38 return success(formService.createForm(createReqVO));
36 } 39 }
37 40
38 @PutMapping("/update") 41 @PutMapping("/update")
39 @Operation(summary = "更新动态表单") 42 @Operation(summary = "更新动态表单")
40 @PreAuthorize("@ss.hasPermission('bpm:form:update')") 43 @PreAuthorize("@ss.hasPermission('bpm:form:update')")
41 - public CommonResult<Boolean> updateForm(@Valid @RequestBody BpmFormUpdateReqVO updateReqVO) { 44 + public CommonResult<Boolean> updateForm(@Valid @RequestBody BpmFormSaveReqVO updateReqVO) {
42 formService.updateForm(updateReqVO); 45 formService.updateForm(updateReqVO);
43 return success(true); 46 return success(true);
44 } 47 }
@@ -58,14 +61,15 @@ public class BpmFormController { @@ -58,14 +61,15 @@ public class BpmFormController {
58 @PreAuthorize("@ss.hasPermission('bpm:form:query')") 61 @PreAuthorize("@ss.hasPermission('bpm:form:query')")
59 public CommonResult<BpmFormRespVO> getForm(@RequestParam("id") Long id) { 62 public CommonResult<BpmFormRespVO> getForm(@RequestParam("id") Long id) {
60 BpmFormDO form = formService.getForm(id); 63 BpmFormDO form = formService.getForm(id);
61 - return success(BpmFormConvert.INSTANCE.convert(form)); 64 + return success(BeanUtils.toBean(form, BpmFormRespVO.class));
62 } 65 }
63 66
64 - @GetMapping("/list-all-simple") 67 + @GetMapping({"/list-all-simple", "/simple-list"})
65 @Operation(summary = "获得动态表单的精简列表", description = "用于表单下拉框") 68 @Operation(summary = "获得动态表单的精简列表", description = "用于表单下拉框")
66 - public CommonResult<List<BpmFormSimpleRespVO>> getSimpleForms() { 69 + public CommonResult<List<BpmFormRespVO>> getFormSimpleList() {
67 List<BpmFormDO> list = formService.getFormList(); 70 List<BpmFormDO> list = formService.getFormList();
68 - return success(BpmFormConvert.INSTANCE.convertList2(list)); 71 + return success(convertList(list, formDO -> // 只返回 id、name 字段
  72 + new BpmFormRespVO().setId(formDO.getId()).setName(formDO.getName())));
69 } 73 }
70 74
71 @GetMapping("/page") 75 @GetMapping("/page")
@@ -73,7 +77,7 @@ public class BpmFormController { @@ -73,7 +77,7 @@ public class BpmFormController {
73 @PreAuthorize("@ss.hasPermission('bpm:form:query')") 77 @PreAuthorize("@ss.hasPermission('bpm:form:query')")
74 public CommonResult<PageResult<BpmFormRespVO>> getFormPage(@Valid BpmFormPageReqVO pageVO) { 78 public CommonResult<PageResult<BpmFormRespVO>> getFormPage(@Valid BpmFormPageReqVO pageVO) {
75 PageResult<BpmFormDO> pageResult = formService.getFormPage(pageVO); 79 PageResult<BpmFormDO> pageResult = formService.getFormPage(pageVO);
76 - return success(BpmFormConvert.INSTANCE.convertPage(pageResult)); 80 + return success(BeanUtils.toBean(pageResult, BpmFormRespVO.class));
77 } 81 }
78 82
79 } 83 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
5 import cn.iocoder.yudao.framework.common.util.io.IoUtils; 7 import cn.iocoder.yudao.framework.common.util.io.IoUtils;
  8 +import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
  9 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*; 10 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*;
7 import cn.iocoder.yudao.module.bpm.convert.definition.BpmModelConvert; 11 import cn.iocoder.yudao.module.bpm.convert.definition.BpmModelConvert;
  12 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO;
  13 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
  14 +import cn.iocoder.yudao.module.bpm.service.definition.BpmCategoryService;
  15 +import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;
8 import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService; 16 import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
  17 +import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService;
  18 +import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
9 import io.swagger.v3.oas.annotations.Operation; 19 import io.swagger.v3.oas.annotations.Operation;
10 import io.swagger.v3.oas.annotations.Parameter; 20 import io.swagger.v3.oas.annotations.Parameter;
11 import io.swagger.v3.oas.annotations.tags.Tag; 21 import io.swagger.v3.oas.annotations.tags.Tag;
12 import jakarta.annotation.Resource; 22 import jakarta.annotation.Resource;
13 import jakarta.validation.Valid; 23 import jakarta.validation.Valid;
  24 +import org.flowable.engine.repository.Deployment;
  25 +import org.flowable.engine.repository.Model;
  26 +import org.flowable.engine.repository.ProcessDefinition;
14 import org.springframework.security.access.prepost.PreAuthorize; 27 import org.springframework.security.access.prepost.PreAuthorize;
15 import org.springframework.validation.annotation.Validated; 28 import org.springframework.validation.annotation.Validated;
16 import org.springframework.web.bind.annotation.*; 29 import org.springframework.web.bind.annotation.*;
17 30
18 import java.io.IOException; 31 import java.io.IOException;
  32 +import java.util.HashSet;
  33 +import java.util.List;
  34 +import java.util.Map;
  35 +import java.util.Set;
19 36
20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 37 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  38 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
  39 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
21 40
22 @Tag(name = "管理后台 - 流程模型") 41 @Tag(name = "管理后台 - 流程模型")
23 @RestController 42 @RestController
@@ -27,11 +46,39 @@ public class BpmModelController { @@ -27,11 +46,39 @@ public class BpmModelController {
27 46
28 @Resource 47 @Resource
29 private BpmModelService modelService; 48 private BpmModelService modelService;
  49 + @Resource
  50 + private BpmFormService formService;
  51 + @Resource
  52 + private BpmCategoryService categoryService;
  53 + @Resource
  54 + private BpmProcessDefinitionService processDefinitionService;
30 55
31 @GetMapping("/page") 56 @GetMapping("/page")
32 @Operation(summary = "获得模型分页") 57 @Operation(summary = "获得模型分页")
33 - public CommonResult<PageResult<BpmModelPageItemRespVO>> getModelPage(BpmModelPageReqVO pageVO) {  
34 - return success(modelService.getModelPage(pageVO)); 58 + public CommonResult<PageResult<BpmModelRespVO>> getModelPage(BpmModelPageReqVO pageVO) {
  59 + PageResult<Model> pageResult = modelService.getModelPage(pageVO);
  60 + if (CollUtil.isEmpty(pageResult.getList())) {
  61 + return success(PageResult.empty(pageResult.getTotal()));
  62 + }
  63 +
  64 + // 拼接数据
  65 + // 获得 Form 表单
  66 + Set<Long> formIds = convertSet(pageResult.getList(), model -> {
  67 + BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class);
  68 + return metaInfo != null ? metaInfo.getFormId() : null;
  69 + });
  70 + Map<Long, BpmFormDO> formMap = formService.getFormMap(formIds);
  71 + // 获得 Category Map
  72 + Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
  73 + convertSet(pageResult.getList(), Model::getCategory));
  74 + // 获得 Deployment Map
  75 + Set<String> deploymentIds = new HashSet<>();
  76 + pageResult.getList().forEach(model -> CollectionUtils.addIfNotNull(deploymentIds, model.getDeploymentId()));
  77 + Map<String, Deployment> deploymentMap = processDefinitionService.getDeploymentMap(deploymentIds);
  78 + // 获得 ProcessDefinition Map
  79 + List<ProcessDefinition> processDefinitions = processDefinitionService.getProcessDefinitionListByDeploymentIds(deploymentIds);
  80 + Map<String, ProcessDefinition> processDefinitionMap = convertMap(processDefinitions, ProcessDefinition::getDeploymentId);
  81 + return success(BpmModelConvert.INSTANCE.buildModelPage(pageResult, formMap, categoryMap, deploymentMap, processDefinitionMap));
35 } 82 }
36 83
37 @GetMapping("/get") 84 @GetMapping("/get")
@@ -39,8 +86,12 @@ public class BpmModelController { @@ -39,8 +86,12 @@ public class BpmModelController {
39 @Parameter(name = "id", description = "编号", required = true, example = "1024") 86 @Parameter(name = "id", description = "编号", required = true, example = "1024")
40 @PreAuthorize("@ss.hasPermission('bpm:model:query')") 87 @PreAuthorize("@ss.hasPermission('bpm:model:query')")
41 public CommonResult<BpmModelRespVO> getModel(@RequestParam("id") String id) { 88 public CommonResult<BpmModelRespVO> getModel(@RequestParam("id") String id) {
42 - BpmModelRespVO model = modelService.getModel(id);  
43 - return success(model); 89 + Model model = modelService.getModel(id);
  90 + if (model == null) {
  91 + return null;
  92 + }
  93 + byte[] bpmnBytes = modelService.getModelBpmnXML(id);
  94 + return success(BpmModelConvert.INSTANCE.buildModel(model, bpmnBytes));
44 } 95 }
45 96
46 @PostMapping("/create") 97 @PostMapping("/create")
@@ -62,7 +113,7 @@ public class BpmModelController { @@ -62,7 +113,7 @@ public class BpmModelController {
62 @Operation(summary = "导入模型") 113 @Operation(summary = "导入模型")
63 @PreAuthorize("@ss.hasPermission('bpm:model:import')") 114 @PreAuthorize("@ss.hasPermission('bpm:model:import')")
64 public CommonResult<String> importModel(@Valid BpmModeImportReqVO importReqVO) throws IOException { 115 public CommonResult<String> importModel(@Valid BpmModeImportReqVO importReqVO) throws IOException {
65 - BpmModelCreateReqVO createReqVO = BpmModelConvert.INSTANCE.convert(importReqVO); 116 + BpmModelCreateReqVO createReqVO = BeanUtils.toBean(importReqVO, BpmModelCreateReqVO.class);
66 // 读取文件 117 // 读取文件
67 String bpmnXml = IoUtils.readUtf8(importReqVO.getBpmnFile().getInputStream(), false); 118 String bpmnXml = IoUtils.readUtf8(importReqVO.getBpmnFile().getInputStream(), false);
68 return success(modelService.createModel(createReqVO, bpmnXml)); 119 return success(modelService.createModel(createReqVO, bpmnXml));
@@ -93,4 +144,5 @@ public class BpmModelController { @@ -93,4 +144,5 @@ public class BpmModelController {
93 modelService.deleteModel(id); 144 modelService.deleteModel(id);
94 return success(true); 145 return success(true);
95 } 146 }
  147 +
96 } 148 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionListReqVO;  
6 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageItemRespVO;  
7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageReqVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageReqVO;
8 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO; 7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
  8 +import cn.iocoder.yudao.module.bpm.convert.definition.BpmProcessDefinitionConvert;
  9 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO;
  10 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
  11 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
  12 +import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.strategy.BpmTaskCandidateStartUserSelectStrategy;
  13 +import cn.iocoder.yudao.module.bpm.service.definition.BpmCategoryService;
  14 +import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;
9 import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; 15 import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService;
10 -import io.swagger.v3.oas.annotations.tags.Tag;  
11 -import io.swagger.v3.oas.annotations.Parameter;  
12 import io.swagger.v3.oas.annotations.Operation; 16 import io.swagger.v3.oas.annotations.Operation;
  17 +import io.swagger.v3.oas.annotations.Parameter;
  18 +import io.swagger.v3.oas.annotations.tags.Tag;
  19 +import jakarta.annotation.Resource;
  20 +import org.flowable.bpmn.model.BpmnModel;
  21 +import org.flowable.bpmn.model.UserTask;
  22 +import org.flowable.engine.repository.Deployment;
  23 +import org.flowable.engine.repository.ProcessDefinition;
13 import org.springframework.security.access.prepost.PreAuthorize; 24 import org.springframework.security.access.prepost.PreAuthorize;
14 import org.springframework.validation.annotation.Validated; 25 import org.springframework.validation.annotation.Validated;
15 import org.springframework.web.bind.annotation.GetMapping; 26 import org.springframework.web.bind.annotation.GetMapping;
@@ -17,11 +28,12 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -17,11 +28,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
17 import org.springframework.web.bind.annotation.RequestParam; 28 import org.springframework.web.bind.annotation.RequestParam;
18 import org.springframework.web.bind.annotation.RestController; 29 import org.springframework.web.bind.annotation.RestController;
19 30
20 -import jakarta.annotation.Resource;  
21 - 31 +import java.util.Collections;
22 import java.util.List; 32 import java.util.List;
  33 +import java.util.Map;
23 34
24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 35 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  36 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
25 37
26 @Tag(name = "管理后台 - 流程定义") 38 @Tag(name = "管理后台 - 流程定义")
27 @RestController 39 @RestController
@@ -30,30 +42,73 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -30,30 +42,73 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
30 public class BpmProcessDefinitionController { 42 public class BpmProcessDefinitionController {
31 43
32 @Resource 44 @Resource
33 - private BpmProcessDefinitionService bpmDefinitionService; 45 + private BpmProcessDefinitionService processDefinitionService;
  46 + @Resource
  47 + private BpmFormService formService;
  48 + @Resource
  49 + private BpmCategoryService categoryService;
34 50
35 @GetMapping("/page") 51 @GetMapping("/page")
36 @Operation(summary = "获得流程定义分页") 52 @Operation(summary = "获得流程定义分页")
37 @PreAuthorize("@ss.hasPermission('bpm:process-definition:query')") 53 @PreAuthorize("@ss.hasPermission('bpm:process-definition:query')")
38 - public CommonResult<PageResult<BpmProcessDefinitionPageItemRespVO>> getProcessDefinitionPage( 54 + public CommonResult<PageResult<BpmProcessDefinitionRespVO>> getProcessDefinitionPage(
39 BpmProcessDefinitionPageReqVO pageReqVO) { 55 BpmProcessDefinitionPageReqVO pageReqVO) {
40 - return success(bpmDefinitionService.getProcessDefinitionPage(pageReqVO)); 56 + PageResult<ProcessDefinition> pageResult = processDefinitionService.getProcessDefinitionPage(pageReqVO);
  57 + if (CollUtil.isEmpty(pageResult.getList())) {
  58 + return success(PageResult.empty(pageResult.getTotal()));
  59 + }
  60 +
  61 + // 获得 Category Map
  62 + Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
  63 + convertSet(pageResult.getList(), ProcessDefinition::getCategory));
  64 + // 获得 Deployment Map
  65 + Map<String, Deployment> deploymentMap = processDefinitionService.getDeploymentMap(
  66 + convertSet(pageResult.getList(), ProcessDefinition::getDeploymentId));
  67 + // 获得 BpmProcessDefinitionInfoDO Map
  68 + Map<String, BpmProcessDefinitionInfoDO> processDefinitionMap = processDefinitionService.getProcessDefinitionInfoMap(
  69 + convertSet(pageResult.getList(), ProcessDefinition::getId));
  70 + // 获得 Form Map
  71 + Map<Long, BpmFormDO> formMap = formService.getFormMap(
  72 + convertSet(processDefinitionMap.values(), BpmProcessDefinitionInfoDO::getFormId));
  73 + return success(BpmProcessDefinitionConvert.INSTANCE.buildProcessDefinitionPage(
  74 + pageResult, deploymentMap, processDefinitionMap, formMap, categoryMap));
41 } 75 }
42 76
43 @GetMapping ("/list") 77 @GetMapping ("/list")
44 @Operation(summary = "获得流程定义列表") 78 @Operation(summary = "获得流程定义列表")
  79 + @Parameter(name = "suspensionState", description = "挂起状态", required = true, example = "1") // 参见 Flowable SuspensionState 枚举
45 @PreAuthorize("@ss.hasPermission('bpm:process-definition:query')") 80 @PreAuthorize("@ss.hasPermission('bpm:process-definition:query')")
46 public CommonResult<List<BpmProcessDefinitionRespVO>> getProcessDefinitionList( 81 public CommonResult<List<BpmProcessDefinitionRespVO>> getProcessDefinitionList(
47 - BpmProcessDefinitionListReqVO listReqVO) {  
48 - return success(bpmDefinitionService.getProcessDefinitionList(listReqVO)); 82 + @RequestParam("suspensionState") Integer suspensionState) {
  83 + List<ProcessDefinition> list = processDefinitionService.getProcessDefinitionListBySuspensionState(suspensionState);
  84 + if (CollUtil.isEmpty(list)) {
  85 + return success(Collections.emptyList());
  86 + }
  87 +
  88 + // 获得 BpmProcessDefinitionInfoDO Map
  89 + Map<String, BpmProcessDefinitionInfoDO> processDefinitionMap = processDefinitionService.getProcessDefinitionInfoMap(
  90 + convertSet(list, ProcessDefinition::getId));
  91 + return success(BpmProcessDefinitionConvert.INSTANCE.buildProcessDefinitionList(
  92 + list, null, processDefinitionMap, null, null));
49 } 93 }
50 94
51 - @GetMapping ("/get-bpmn-xml")  
52 - @Operation(summary = "获得流程定义的 BPMN XML")  
53 - @Parameter(name = "id", description = "编号", required = true, example = "1024") 95 + @GetMapping ("/get")
  96 + @Operation(summary = "获得流程定义")
  97 + @Parameter(name = "id", description = "流程编号", required = true, example = "1024")
  98 + @Parameter(name = "key", description = "流程定义标识", required = true, example = "1024")
54 @PreAuthorize("@ss.hasPermission('bpm:process-definition:query')") 99 @PreAuthorize("@ss.hasPermission('bpm:process-definition:query')")
55 - public CommonResult<String> getProcessDefinitionBpmnXML(@RequestParam("id") String id) {  
56 - String bpmnXML = bpmDefinitionService.getProcessDefinitionBpmnXML(id);  
57 - return success(bpmnXML); 100 + public CommonResult<BpmProcessDefinitionRespVO> getProcessDefinition(
  101 + @RequestParam(value = "id", required = false) String id,
  102 + @RequestParam(value = "key", required = false) String key) {
  103 + ProcessDefinition processDefinition = id != null ? processDefinitionService.getProcessDefinition(id)
  104 + : processDefinitionService.getActiveProcessDefinition(key);
  105 + if (processDefinition == null) {
  106 + return success(null);
  107 + }
  108 + BpmnModel bpmnModel = processDefinitionService.getProcessDefinitionBpmnModel(processDefinition.getId());
  109 + List<UserTask> userTaskList = BpmTaskCandidateStartUserSelectStrategy.getStartUserSelectUserTaskList(bpmnModel);
  110 + return success(BpmProcessDefinitionConvert.INSTANCE.buildProcessDefinition(
  111 + processDefinition, null, null, null, null, bpmnModel, userTaskList));
58 } 112 }
  113 +
59 } 114 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessExpressionController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.expression.BpmProcessExpressionPageReqVO;
  7 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.expression.BpmProcessExpressionRespVO;
  8 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.expression.BpmProcessExpressionSaveReqVO;
  9 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessExpressionDO;
  10 +import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessExpressionService;
  11 +import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.Parameter;
  13 +import io.swagger.v3.oas.annotations.tags.Tag;
  14 +import jakarta.annotation.Resource;
  15 +import jakarta.validation.Valid;
  16 +import org.springframework.security.access.prepost.PreAuthorize;
  17 +import org.springframework.validation.annotation.Validated;
  18 +import org.springframework.web.bind.annotation.*;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  21 +
  22 +@Tag(name = "管理后台 - BPM 流程表达式")
  23 +@RestController
  24 +@RequestMapping("/bpm/process-expression")
  25 +@Validated
  26 +public class BpmProcessExpressionController {
  27 +
  28 + @Resource
  29 + private BpmProcessExpressionService processExpressionService;
  30 +
  31 + @PostMapping("/create")
  32 + @Operation(summary = "创建流程表达式")
  33 + @PreAuthorize("@ss.hasPermission('bpm:process-expression:create')")
  34 + public CommonResult<Long> createProcessExpression(@Valid @RequestBody BpmProcessExpressionSaveReqVO createReqVO) {
  35 + return success(processExpressionService.createProcessExpression(createReqVO));
  36 + }
  37 +
  38 + @PutMapping("/update")
  39 + @Operation(summary = "更新流程表达式")
  40 + @PreAuthorize("@ss.hasPermission('bpm:process-expression:update')")
  41 + public CommonResult<Boolean> updateProcessExpression(@Valid @RequestBody BpmProcessExpressionSaveReqVO updateReqVO) {
  42 + processExpressionService.updateProcessExpression(updateReqVO);
  43 + return success(true);
  44 + }
  45 +
  46 + @DeleteMapping("/delete")
  47 + @Operation(summary = "删除流程表达式")
  48 + @Parameter(name = "id", description = "编号", required = true)
  49 + @PreAuthorize("@ss.hasPermission('bpm:process-expression:delete')")
  50 + public CommonResult<Boolean> deleteProcessExpression(@RequestParam("id") Long id) {
  51 + processExpressionService.deleteProcessExpression(id);
  52 + return success(true);
  53 + }
  54 +
  55 + @GetMapping("/get")
  56 + @Operation(summary = "获得流程表达式")
  57 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  58 + @PreAuthorize("@ss.hasPermission('bpm:process-expression:query')")
  59 + public CommonResult<BpmProcessExpressionRespVO> getProcessExpression(@RequestParam("id") Long id) {
  60 + BpmProcessExpressionDO processExpression = processExpressionService.getProcessExpression(id);
  61 + return success(BeanUtils.toBean(processExpression, BpmProcessExpressionRespVO.class));
  62 + }
  63 +
  64 + @GetMapping("/page")
  65 + @Operation(summary = "获得流程表达式分页")
  66 + @PreAuthorize("@ss.hasPermission('bpm:process-expression:query')")
  67 + public CommonResult<PageResult<BpmProcessExpressionRespVO>> getProcessExpressionPage(
  68 + @Valid BpmProcessExpressionPageReqVO pageReqVO) {
  69 + PageResult<BpmProcessExpressionDO> pageResult = processExpressionService.getProcessExpressionPage(pageReqVO);
  70 + return success(BeanUtils.toBean(pageResult, BpmProcessExpressionRespVO.class));
  71 + }
  72 +
  73 +}
0 \ No newline at end of file 74 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessListenerController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.listener.BpmProcessListenerPageReqVO;
  7 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.listener.BpmProcessListenerRespVO;
  8 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.listener.BpmProcessListenerSaveReqVO;
  9 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessListenerDO;
  10 +import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessListenerService;
  11 +import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.Parameter;
  13 +import io.swagger.v3.oas.annotations.tags.Tag;
  14 +import jakarta.annotation.Resource;
  15 +import jakarta.validation.Valid;
  16 +import org.springframework.security.access.prepost.PreAuthorize;
  17 +import org.springframework.validation.annotation.Validated;
  18 +import org.springframework.web.bind.annotation.*;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  21 +
  22 +@Tag(name = "管理后台 - BPM 流程监听器")
  23 +@RestController
  24 +@RequestMapping("/bpm/process-listener")
  25 +@Validated
  26 +public class BpmProcessListenerController {
  27 +
  28 + @Resource
  29 + private BpmProcessListenerService processListenerService;
  30 +
  31 + @PostMapping("/create")
  32 + @Operation(summary = "创建流程监听器")
  33 + @PreAuthorize("@ss.hasPermission('bpm:process-listener:create')")
  34 + public CommonResult<Long> createProcessListener(@Valid @RequestBody BpmProcessListenerSaveReqVO createReqVO) {
  35 + return success(processListenerService.createProcessListener(createReqVO));
  36 + }
  37 +
  38 + @PutMapping("/update")
  39 + @Operation(summary = "更新流程监听器")
  40 + @PreAuthorize("@ss.hasPermission('bpm:process-listener:update')")
  41 + public CommonResult<Boolean> updateProcessListener(@Valid @RequestBody BpmProcessListenerSaveReqVO updateReqVO) {
  42 + processListenerService.updateProcessListener(updateReqVO);
  43 + return success(true);
  44 + }
  45 +
  46 + @DeleteMapping("/delete")
  47 + @Operation(summary = "删除流程监听器")
  48 + @Parameter(name = "id", description = "编号", required = true)
  49 + @PreAuthorize("@ss.hasPermission('bpm:process-listener:delete')")
  50 + public CommonResult<Boolean> deleteProcessListener(@RequestParam("id") Long id) {
  51 + processListenerService.deleteProcessListener(id);
  52 + return success(true);
  53 + }
  54 +
  55 + @GetMapping("/get")
  56 + @Operation(summary = "获得流程监听器")
  57 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  58 + @PreAuthorize("@ss.hasPermission('bpm:process-listener:query')")
  59 + public CommonResult<BpmProcessListenerRespVO> getProcessListener(@RequestParam("id") Long id) {
  60 + BpmProcessListenerDO processListener = processListenerService.getProcessListener(id);
  61 + return success(BeanUtils.toBean(processListener, BpmProcessListenerRespVO.class));
  62 + }
  63 +
  64 + @GetMapping("/page")
  65 + @Operation(summary = "获得流程监听器分页")
  66 + @PreAuthorize("@ss.hasPermission('bpm:process-listener:query')")
  67 + public CommonResult<PageResult<BpmProcessListenerRespVO>> getProcessListenerPage(
  68 + @Valid BpmProcessListenerPageReqVO pageReqVO) {
  69 + PageResult<BpmProcessListenerDO> pageResult = processListenerService.getProcessListenerPage(pageReqVO);
  70 + return success(BeanUtils.toBean(pageResult, BpmProcessListenerRespVO.class));
  71 + }
  72 +
  73 +}
0 \ No newline at end of file 74 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmTaskAssignRuleController.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition;  
2 -  
3 -import cn.iocoder.yudao.framework.common.pojo.CommonResult;  
4 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule.BpmTaskAssignRuleCreateReqVO;  
5 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule.BpmTaskAssignRuleRespVO;  
6 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule.BpmTaskAssignRuleUpdateReqVO;  
7 -import cn.iocoder.yudao.module.bpm.service.definition.BpmTaskAssignRuleService;  
8 -import io.swagger.v3.oas.annotations.tags.Tag;  
9 -import io.swagger.v3.oas.annotations.Parameter;  
10 -import io.swagger.v3.oas.annotations.Parameters;  
11 -import io.swagger.v3.oas.annotations.Operation;  
12 -import org.springframework.security.access.prepost.PreAuthorize;  
13 -import org.springframework.validation.annotation.Validated;  
14 -import org.springframework.web.bind.annotation.*;  
15 -  
16 -import jakarta.annotation.Resource;  
17 -import jakarta.validation.Valid;  
18 -import java.util.List;  
19 -  
20 -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;  
21 -  
22 -@Tag(name = "管理后台 - 任务分配规则")  
23 -@RestController  
24 -@RequestMapping("/bpm/task-assign-rule")  
25 -@Validated  
26 -public class BpmTaskAssignRuleController {  
27 -  
28 - @Resource  
29 - private BpmTaskAssignRuleService taskAssignRuleService;  
30 -  
31 - @GetMapping("/list")  
32 - @Operation(summary = "获得任务分配规则列表")  
33 - @Parameters({  
34 - @Parameter(name = "modelId", description = "模型编号", example = "1024"),  
35 - @Parameter(name = "processDefinitionId", description = "流程定义的编号", example = "2048")  
36 - })  
37 - @PreAuthorize("@ss.hasPermission('bpm:task-assign-rule:query')")  
38 - public CommonResult<List<BpmTaskAssignRuleRespVO>> getTaskAssignRuleList(  
39 - @RequestParam(value = "modelId", required = false) String modelId,  
40 - @RequestParam(value = "processDefinitionId", required = false) String processDefinitionId) {  
41 - return success(taskAssignRuleService.getTaskAssignRuleList(modelId, processDefinitionId));  
42 - }  
43 -  
44 - @PostMapping("/create")  
45 - @Operation(summary = "创建任务分配规则")  
46 - @PreAuthorize("@ss.hasPermission('bpm:task-assign-rule:create')")  
47 - public CommonResult<Long> createTaskAssignRule(@Valid @RequestBody BpmTaskAssignRuleCreateReqVO reqVO) {  
48 - return success(taskAssignRuleService.createTaskAssignRule(reqVO));  
49 - }  
50 -  
51 - @PutMapping("/update")  
52 - @Operation(summary = "更新任务分配规则")  
53 - @PreAuthorize("@ss.hasPermission('bpm:task-assign-rule:update')")  
54 - public CommonResult<Boolean> updateTaskAssignRule(@Valid @RequestBody BpmTaskAssignRuleUpdateReqVO reqVO) {  
55 - taskAssignRuleService.updateTaskAssignRule(reqVO);  
56 - return success(true);  
57 - }  
58 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmUserGroupController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition;
2 2
3 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupCreateReqVO; 3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupPageReqVO; 7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupPageReqVO;
5 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupRespVO; 8 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupRespVO;
6 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupUpdateReqVO;  
7 -import cn.iocoder.yudao.module.bpm.convert.definition.BpmUserGroupConvert; 9 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupSaveReqVO;
8 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO; 10 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
9 import cn.iocoder.yudao.module.bpm.service.definition.BpmUserGroupService; 11 import cn.iocoder.yudao.module.bpm.service.definition.BpmUserGroupService;
10 -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;  
11 -import cn.iocoder.yudao.framework.common.pojo.CommonResult;  
12 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
13 -import io.swagger.v3.oas.annotations.tags.Tag;  
14 -import io.swagger.v3.oas.annotations.Parameter;  
15 import io.swagger.v3.oas.annotations.Operation; 12 import io.swagger.v3.oas.annotations.Operation;
  13 +import io.swagger.v3.oas.annotations.Parameter;
  14 +import io.swagger.v3.oas.annotations.tags.Tag;
  15 +import jakarta.annotation.Resource;
  16 +import jakarta.validation.Valid;
16 import org.springframework.security.access.prepost.PreAuthorize; 17 import org.springframework.security.access.prepost.PreAuthorize;
17 import org.springframework.validation.annotation.Validated; 18 import org.springframework.validation.annotation.Validated;
18 import org.springframework.web.bind.annotation.*; 19 import org.springframework.web.bind.annotation.*;
19 20
20 -import jakarta.annotation.Resource;  
21 -import jakarta.validation.Valid;  
22 import java.util.List; 21 import java.util.List;
23 22
24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 23 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  24 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
25 25
26 @Tag(name = "管理后台 - 用户组") 26 @Tag(name = "管理后台 - 用户组")
27 @RestController 27 @RestController
@@ -35,14 +35,14 @@ public class BpmUserGroupController { @@ -35,14 +35,14 @@ public class BpmUserGroupController {
35 @PostMapping("/create") 35 @PostMapping("/create")
36 @Operation(summary = "创建用户组") 36 @Operation(summary = "创建用户组")
37 @PreAuthorize("@ss.hasPermission('bpm:user-group:create')") 37 @PreAuthorize("@ss.hasPermission('bpm:user-group:create')")
38 - public CommonResult<Long> createUserGroup(@Valid @RequestBody BpmUserGroupCreateReqVO createReqVO) { 38 + public CommonResult<Long> createUserGroup(@Valid @RequestBody BpmUserGroupSaveReqVO createReqVO) {
39 return success(userGroupService.createUserGroup(createReqVO)); 39 return success(userGroupService.createUserGroup(createReqVO));
40 } 40 }
41 41
42 @PutMapping("/update") 42 @PutMapping("/update")
43 @Operation(summary = "更新用户组") 43 @Operation(summary = "更新用户组")
44 @PreAuthorize("@ss.hasPermission('bpm:user-group:update')") 44 @PreAuthorize("@ss.hasPermission('bpm:user-group:update')")
45 - public CommonResult<Boolean> updateUserGroup(@Valid @RequestBody BpmUserGroupUpdateReqVO updateReqVO) { 45 + public CommonResult<Boolean> updateUserGroup(@Valid @RequestBody BpmUserGroupSaveReqVO updateReqVO) {
46 userGroupService.updateUserGroup(updateReqVO); 46 userGroupService.updateUserGroup(updateReqVO);
47 return success(true); 47 return success(true);
48 } 48 }
@@ -62,7 +62,7 @@ public class BpmUserGroupController { @@ -62,7 +62,7 @@ public class BpmUserGroupController {
62 @PreAuthorize("@ss.hasPermission('bpm:user-group:query')") 62 @PreAuthorize("@ss.hasPermission('bpm:user-group:query')")
63 public CommonResult<BpmUserGroupRespVO> getUserGroup(@RequestParam("id") Long id) { 63 public CommonResult<BpmUserGroupRespVO> getUserGroup(@RequestParam("id") Long id) {
64 BpmUserGroupDO userGroup = userGroupService.getUserGroup(id); 64 BpmUserGroupDO userGroup = userGroupService.getUserGroup(id);
65 - return success(BpmUserGroupConvert.INSTANCE.convert(userGroup)); 65 + return success(BeanUtils.toBean(userGroup, BpmUserGroupRespVO.class));
66 } 66 }
67 67
68 @GetMapping("/page") 68 @GetMapping("/page")
@@ -70,16 +70,14 @@ public class BpmUserGroupController { @@ -70,16 +70,14 @@ public class BpmUserGroupController {
70 @PreAuthorize("@ss.hasPermission('bpm:user-group:query')") 70 @PreAuthorize("@ss.hasPermission('bpm:user-group:query')")
71 public CommonResult<PageResult<BpmUserGroupRespVO>> getUserGroupPage(@Valid BpmUserGroupPageReqVO pageVO) { 71 public CommonResult<PageResult<BpmUserGroupRespVO>> getUserGroupPage(@Valid BpmUserGroupPageReqVO pageVO) {
72 PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(pageVO); 72 PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(pageVO);
73 - return success(BpmUserGroupConvert.INSTANCE.convertPage(pageResult)); 73 + return success(BeanUtils.toBean(pageResult, BpmUserGroupRespVO.class));
74 } 74 }
75 75
76 - @GetMapping("/list-all-simple") 76 + @GetMapping("/simple-list")
77 @Operation(summary = "获取用户组精简信息列表", description = "只包含被开启的用户组,主要用于前端的下拉选项") 77 @Operation(summary = "获取用户组精简信息列表", description = "只包含被开启的用户组,主要用于前端的下拉选项")
78 - public CommonResult<List<BpmUserGroupRespVO>> getSimpleUserGroups() {  
79 - // 获用户门列表,只要开启状态的 78 + public CommonResult<List<BpmUserGroupRespVO>> getUserGroupSimpleList() {
80 List<BpmUserGroupDO> list = userGroupService.getUserGroupListByStatus(CommonStatusEnum.ENABLE.getStatus()); 79 List<BpmUserGroupDO> list = userGroupService.getUserGroupListByStatus(CommonStatusEnum.ENABLE.getStatus());
81 - // 排序后,返回给前端  
82 - return success(BpmUserGroupConvert.INSTANCE.convertList2(list)); 80 + return success(convertList(list, group -> new BpmUserGroupRespVO().setId(group.getId()).setName(group.getName())));
83 } 81 }
84 82
85 } 83 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/category/BpmCategoryPageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.category;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  5 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  6 +import io.swagger.v3.oas.annotations.media.Schema;
  7 +import lombok.Data;
  8 +import lombok.EqualsAndHashCode;
  9 +import lombok.ToString;
  10 +import org.springframework.format.annotation.DateTimeFormat;
  11 +
  12 +import java.time.LocalDateTime;
  13 +
  14 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  15 +
  16 +@Schema(description = "管理后台 - BPM 流程分类分页 Request VO")
  17 +@Data
  18 +public class BpmCategoryPageReqVO extends PageParam {
  19 +
  20 + @Schema(description = "分类名", example = "王五")
  21 + private String name;
  22 +
  23 + @Schema(description = "分类标志", example = "OA")
  24 + private String code;
  25 +
  26 + @Schema(description = "分类状态", example = "1")
  27 + @InEnum(CommonStatusEnum.class)
  28 + private Integer status;
  29 +
  30 + @Schema(description = "创建时间")
  31 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  32 + private LocalDateTime[] createTime;
  33 +
  34 +}
0 \ No newline at end of file 35 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/category/BpmCategoryRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.category;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Schema(description = "管理后台 - BPM 流程分类 Response VO")
  9 +@Data
  10 +public class BpmCategoryRespVO {
  11 +
  12 + @Schema(description = "分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3167")
  13 + private Long id;
  14 +
  15 + @Schema(description = "分类名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
  16 + private String name;
  17 +
  18 + @Schema(description = "分类标志", requiredMode = Schema.RequiredMode.REQUIRED, example = "OA")
  19 + private String code;
  20 +
  21 + @Schema(description = "分类描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
  22 + private String description;
  23 +
  24 + @Schema(description = "分类状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  25 + private Integer status;
  26 +
  27 + @Schema(description = "分类排序", requiredMode = Schema.RequiredMode.REQUIRED)
  28 + private Integer sort;
  29 +
  30 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  31 + private LocalDateTime createTime;
  32 +
  33 +}
0 \ No newline at end of file 34 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/category/BpmCategorySaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.category;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
  6 +import jakarta.validation.constraints.NotEmpty;
  7 +import jakarta.validation.constraints.NotNull;
  8 +import lombok.Data;
  9 +
  10 +@Schema(description = "管理后台 - BPM 流程分类新增/修改 Request VO")
  11 +@Data
  12 +public class BpmCategorySaveReqVO {
  13 +
  14 + @Schema(description = "分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3167")
  15 + private Long id;
  16 +
  17 + @Schema(description = "分类名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
  18 + @NotEmpty(message = "分类名不能为空")
  19 + private String name;
  20 +
  21 + @Schema(description = "分类描述", example = "你猜")
  22 + private String description;
  23 +
  24 + @Schema(description = "分类标志", requiredMode = Schema.RequiredMode.REQUIRED, example = "OA")
  25 + @NotEmpty(message = "分类标志不能为空")
  26 + private String code;
  27 +
  28 + @Schema(description = "分类状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  29 + @NotNull(message = "分类状态不能为空")
  30 + @InEnum(CommonStatusEnum.class)
  31 + private Integer status;
  32 +
  33 + @Schema(description = "分类排序", requiredMode = Schema.RequiredMode.REQUIRED)
  34 + @NotNull(message = "分类排序不能为空")
  35 + private Integer sort;
  36 +
  37 +}
0 \ No newline at end of file 38 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/expression/BpmProcessExpressionPageReqVO.java
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; 1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.expression;
2 2
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
3 import cn.iocoder.yudao.framework.common.pojo.PageParam; 4 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  5 +import cn.iocoder.yudao.framework.common.validation.InEnum;
4 import io.swagger.v3.oas.annotations.media.Schema; 6 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data; 7 import lombok.Data;
6 import lombok.EqualsAndHashCode; 8 import lombok.EqualsAndHashCode;
@@ -11,21 +13,21 @@ import java.time.LocalDateTime; @@ -11,21 +13,21 @@ import java.time.LocalDateTime;
11 13
12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 14 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 15
14 -@Schema(description = "管理后台 - 流程任务的 Done 已办的分页 Request VO") 16 +@Schema(description = "管理后台 - BPM 流程表达式分页 Request VO")
15 @Data 17 @Data
16 @EqualsAndHashCode(callSuper = true) 18 @EqualsAndHashCode(callSuper = true)
17 @ToString(callSuper = true) 19 @ToString(callSuper = true)
18 -public class BpmTaskDonePageReqVO extends PageParam { 20 +public class BpmProcessExpressionPageReqVO extends PageParam {
19 21
20 - @Schema(description = "流程任务名", example = "芋道") 22 + @Schema(description = "表达式名字", example = "李四")
21 private String name; 23 private String name;
22 24
23 - @Schema(description = "开始的创建收间")  
24 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
25 - private LocalDateTime beginCreateTime; 25 + @Schema(description = "表达式状态", example = "1")
  26 + @InEnum(CommonStatusEnum.class)
  27 + private Integer status;
26 28
27 - @Schema(description = "结束的创建时间") 29 + @Schema(description = "创建时间")
28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 - private LocalDateTime endCreateTime; 31 + private LocalDateTime[] createTime;
30 32
31 -} 33 -}
  34 +}
32 \ No newline at end of file 35 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/expression/BpmProcessExpressionRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.expression;
  2 +
  3 +import com.alibaba.excel.annotation.ExcelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +
  7 +import java.time.LocalDateTime;
  8 +
  9 +@Schema(description = "管理后台 - BPM 流程表达式 Response VO")
  10 +@Data
  11 +public class BpmProcessExpressionRespVO {
  12 +
  13 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3870")
  14 + @ExcelProperty("编号")
  15 + private Long id;
  16 +
  17 + @Schema(description = "表达式名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
  18 + @ExcelProperty("表达式名字")
  19 + private String name;
  20 +
  21 + @Schema(description = "表达式状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  22 + private Integer status;
  23 +
  24 + @Schema(description = "表达式", requiredMode = Schema.RequiredMode.REQUIRED)
  25 + private String expression;
  26 +
  27 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  28 + private LocalDateTime createTime;
  29 +
  30 +}
0 \ No newline at end of file 31 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/expression/BpmProcessExpressionSaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.expression;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotEmpty;
  5 +import jakarta.validation.constraints.NotNull;
  6 +import lombok.Data;
  7 +
  8 +@Schema(description = "管理后台 - BPM 流程表达式新增/修改 Request VO")
  9 +@Data
  10 +public class BpmProcessExpressionSaveReqVO {
  11 +
  12 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3870")
  13 + private Long id;
  14 +
  15 + @Schema(description = "表达式名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
  16 + @NotEmpty(message = "表达式名字不能为空")
  17 + private String name;
  18 +
  19 + @Schema(description = "表达式状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  20 + @NotNull(message = "表达式状态不能为空")
  21 + private Integer status;
  22 +
  23 + @Schema(description = "表达式", requiredMode = Schema.RequiredMode.REQUIRED)
  24 + @NotEmpty(message = "表达式不能为空")
  25 + private String expression;
  26 +
  27 +}
0 \ No newline at end of file 28 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormBaseVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form;  
2 -import io.swagger.v3.oas.annotations.media.Schema;  
3 -import lombok.*;  
4 -import jakarta.validation.constraints.*;  
5 -  
6 -/**  
7 -* 动态表单 Base VO,提供给添加、修改、详细的子 VO 使用  
8 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
9 -*/  
10 -@Data  
11 -public class BpmFormBaseVO {  
12 -  
13 - @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
14 - @NotNull(message = "表单名称不能为空")  
15 - private String name;  
16 -  
17 - @Schema(description = "表单状态-参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
18 - @NotNull(message = "表单状态不能为空")  
19 - private Integer status;  
20 -  
21 - @Schema(description = "备注", example = "我是备注")  
22 - private String remark;  
23 -  
24 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.java
@@ -8,8 +8,6 @@ import lombok.ToString; @@ -8,8 +8,6 @@ import lombok.ToString;
8 8
9 @Schema(description = "管理后台 - 动态表单分页 Request VO") 9 @Schema(description = "管理后台 - 动态表单分页 Request VO")
10 @Data 10 @Data
11 -@EqualsAndHashCode(callSuper = true)  
12 -@ToString(callSuper = true)  
13 public class BpmFormPageReqVO extends PageParam { 11 public class BpmFormPageReqVO extends PageParam {
14 12
15 @Schema(description = "表单名称", example = "芋道") 13 @Schema(description = "表单名称", example = "芋道")
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormRespVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form;
  2 +
2 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotNull;
3 import lombok.Data; 5 import lombok.Data;
4 -import lombok.EqualsAndHashCode;  
5 -import lombok.ToString;  
6 6
7 -import jakarta.validation.constraints.NotNull;  
8 import java.time.LocalDateTime; 7 import java.time.LocalDateTime;
9 import java.util.List; 8 import java.util.List;
10 9
11 @Schema(description = "管理后台 - 动态表单 Response VO") 10 @Schema(description = "管理后台 - 动态表单 Response VO")
12 @Data 11 @Data
13 -@EqualsAndHashCode(callSuper = true)  
14 -@ToString(callSuper = true)  
15 -public class BpmFormRespVO extends BpmFormBaseVO { 12 +public class BpmFormRespVO {
16 13
17 @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 14 @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
18 private Long id; 15 private Long id;
19 16
  17 + @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  18 + @NotNull(message = "表单名称不能为空")
  19 + private String name;
  20 +
20 @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED) 21 @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED)
21 @NotNull(message = "表单的配置不能为空") 22 @NotNull(message = "表单的配置不能为空")
22 private String conf; 23 private String conf;
@@ -25,6 +26,13 @@ public class BpmFormRespVO extends BpmFormBaseVO { @@ -25,6 +26,13 @@ public class BpmFormRespVO extends BpmFormBaseVO {
25 @NotNull(message = "表单项的数组不能为空") 26 @NotNull(message = "表单项的数组不能为空")
26 private List<String> fields; 27 private List<String> fields;
27 28
  29 + @Schema(description = "表单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  30 + @NotNull(message = "表单状态不能为空")
  31 + private Integer status; // 参见 CommonStatusEnum 枚举
  32 +
  33 + @Schema(description = "备注", example = "我是备注")
  34 + private String remark;
  35 +
28 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 36 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
29 private LocalDateTime createTime; 37 private LocalDateTime createTime;
30 38
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormCreateReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormSaveReqVO.java
@@ -5,11 +5,16 @@ import lombok.*; @@ -5,11 +5,16 @@ import lombok.*;
5 import jakarta.validation.constraints.NotNull; 5 import jakarta.validation.constraints.NotNull;
6 import java.util.List; 6 import java.util.List;
7 7
8 -@Schema(description = "管理后台 - 动态表单创建 Request VO") 8 +@Schema(description = "管理后台 - 动态表单创建/更新 Request VO")
9 @Data 9 @Data
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class BpmFormCreateReqVO extends BpmFormBaseVO { 10 +public class BpmFormSaveReqVO {
  11 +
  12 + @Schema(description = "表单编号", example = "1024")
  13 + private Long id;
  14 +
  15 + @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  16 + @NotNull(message = "表单名称不能为空")
  17 + private String name;
13 18
14 @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED) 19 @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED)
15 @NotNull(message = "表单的配置不能为空") 20 @NotNull(message = "表单的配置不能为空")
@@ -19,4 +24,11 @@ public class BpmFormCreateReqVO extends BpmFormBaseVO { @@ -19,4 +24,11 @@ public class BpmFormCreateReqVO extends BpmFormBaseVO {
19 @NotNull(message = "表单项的数组不能为空") 24 @NotNull(message = "表单项的数组不能为空")
20 private List<String> fields; 25 private List<String> fields;
21 26
  27 + @Schema(description = "表单状态-参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  28 + @NotNull(message = "表单状态不能为空")
  29 + private Integer status;
  30 +
  31 + @Schema(description = "备注", example = "我是备注")
  32 + private String remark;
  33 +
22 } 34 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormSimpleRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -@Schema(description = "管理后台 - 流程表单精简 Response VO")  
7 -@Data  
8 -public class BpmFormSimpleRespVO {  
9 -  
10 - @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
11 - private Long id;  
12 -  
13 - @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
14 - private String name;  
15 -  
16 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form;  
2 -import io.swagger.v3.oas.annotations.media.Schema;  
3 -import lombok.*;  
4 -import jakarta.validation.constraints.*;  
5 -import java.util.List;  
6 -  
7 -@Schema(description = "管理后台 - 动态表单更新 Request VO")  
8 -@Data  
9 -@EqualsAndHashCode(callSuper = true)  
10 -@ToString(callSuper = true)  
11 -public class BpmFormUpdateReqVO extends BpmFormBaseVO {  
12 -  
13 - @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
14 - @NotNull(message = "表单编号不能为空")  
15 - private Long id;  
16 -  
17 - @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED)  
18 - @NotNull(message = "表单的配置不能为空")  
19 - private String conf;  
20 -  
21 - @Schema(description = "表单项的数组-JSON 字符串的数组", requiredMode = Schema.RequiredMode.REQUIRED)  
22 - @NotNull(message = "表单项的数组不能为空")  
23 - private List<String> fields;  
24 -  
25 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group;  
2 -import io.swagger.v3.oas.annotations.media.Schema;  
3 -import lombok.*;  
4 -  
5 -@Schema(description = "管理后台 - 用户组创建 Request VO")  
6 -@Data  
7 -@EqualsAndHashCode(callSuper = true)  
8 -@ToString(callSuper = true)  
9 -public class BpmUserGroupCreateReqVO extends BpmUserGroupBaseVO {  
10 -  
11 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java
@@ -12,10 +12,11 @@ import java.time.LocalDateTime; @@ -12,10 +12,11 @@ import java.time.LocalDateTime;
12 12
13 @Schema(description = "管理后台 - 用户组分页 Request VO") 13 @Schema(description = "管理后台 - 用户组分页 Request VO")
14 @Data 14 @Data
15 -@EqualsAndHashCode(callSuper = true)  
16 -@ToString(callSuper = true)  
17 public class BpmUserGroupPageReqVO extends PageParam { 15 public class BpmUserGroupPageReqVO extends PageParam {
18 16
  17 + @Schema(description = "编号", example = "1024")
  18 + private Long id;
  19 +
19 @Schema(description = "组名", example = "芋道") 20 @Schema(description = "组名", example = "芋道")
20 private String name; 21 private String name;
21 22
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupRespVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.*; 4 +import lombok.Data;
5 5
6 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
  7 +import java.util.Set;
7 8
8 @Schema(description = "管理后台 - 用户组 Response VO") 9 @Schema(description = "管理后台 - 用户组 Response VO")
9 @Data 10 @Data
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class BpmUserGroupRespVO extends BpmUserGroupBaseVO { 11 +public class BpmUserGroupRespVO {
13 12
14 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 13 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
15 private Long id; 14 private Long id;
16 15
  16 + @Schema(description = "组名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  17 + private String name;
  18 +
  19 + @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
  20 + private String description;
  21 +
  22 + @Schema(description = "成员编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3")
  23 + private Set<Long> userIds;
  24 +
  25 + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  26 + private Integer status;
  27 +
17 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 28 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
18 private LocalDateTime createTime; 29 private LocalDateTime createTime;
19 30
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupBaseVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupSaveReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group;
2 -  
3 import io.swagger.v3.oas.annotations.media.Schema; 2 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.Data;  
5 -  
6 import jakarta.validation.constraints.NotNull; 3 import jakarta.validation.constraints.NotNull;
  4 +import lombok.*;
  5 +
7 import java.util.Set; 6 import java.util.Set;
8 7
9 -/**  
10 -* 用户组 Base VO,提供给添加、修改、详细的子 VO 使用  
11 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
12 -*/ 8 +@Schema(description = "管理后台 - 用户组创建/修改 Request VO")
13 @Data 9 @Data
14 -public class BpmUserGroupBaseVO { 10 +public class BpmUserGroupSaveReqVO {
  11 +
  12 + @Schema(description = "编号", example = "1024")
  13 + private Long id;
15 14
16 @Schema(description = "组名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 15 @Schema(description = "组名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
17 @NotNull(message = "组名不能为空") 16 @NotNull(message = "组名不能为空")
18 private String name; 17 private String name;
19 18
20 - @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")  
21 - @NotNull(message = "描述不能为空") 19 + @Schema(description = "描述", example = "芋道源码")
22 private String description; 20 private String description;
23 21
24 @Schema(description = "成员编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3") 22 @Schema(description = "成员编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3")
25 @NotNull(message = "成员编号数组不能为空") 23 @NotNull(message = "成员编号数组不能为空")
26 - private Set<Long> memberUserIds; 24 + private Set<Long> userIds;
27 25
28 @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 26 @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
29 @NotNull(message = "状态不能为空") 27 @NotNull(message = "状态不能为空")
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupSimpleRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.AllArgsConstructor;  
5 -import lombok.Data;  
6 -import lombok.NoArgsConstructor;  
7 -  
8 -@Schema(description = "管理后台 - 用户组精简信息 Response VO")  
9 -@Data  
10 -@NoArgsConstructor  
11 -@AllArgsConstructor  
12 -public class BpmUserGroupSimpleRespVO {  
13 -  
14 - @Schema(description = "用户组编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
15 - private Long id;  
16 -  
17 - @Schema(description = "用户组名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
18 - private String name;  
19 -  
20 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -import jakarta.validation.constraints.*;  
6 -  
7 -@Schema(description = "管理后台 - 用户组更新 Request VO")  
8 -@Data  
9 -@EqualsAndHashCode(callSuper = true)  
10 -@ToString(callSuper = true)  
11 -public class BpmUserGroupUpdateReqVO extends BpmUserGroupBaseVO {  
12 -  
13 - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
14 - @NotNull(message = "编号不能为空")  
15 - private Long id;  
16 -  
17 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/listener/BpmProcessListenerPageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.listener;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  5 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  6 +import io.swagger.v3.oas.annotations.media.Schema;
  7 +import lombok.Data;
  8 +import lombok.EqualsAndHashCode;
  9 +import lombok.ToString;
  10 +
  11 +@Schema(description = "管理后台 - BPM 流程监听器分页 Request VO")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +public class BpmProcessListenerPageReqVO extends PageParam {
  16 +
  17 + @Schema(description = "监听器名字", example = "赵六")
  18 + private String name;
  19 +
  20 + @Schema(description = "监听器类型", example = "execution")
  21 + private String type;
  22 +
  23 + @Schema(description = "监听事件", example = "start")
  24 + private String event;
  25 +
  26 + @Schema(description = "状态", example = "1")
  27 + @InEnum(CommonStatusEnum.class)
  28 + private Integer status;
  29 +
  30 +}
0 \ No newline at end of file 31 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/listener/BpmProcessListenerRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.listener;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Schema(description = "管理后台 - BPM 流程监听器 Response VO")
  9 +@Data
  10 +public class BpmProcessListenerRespVO {
  11 +
  12 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13089")
  13 + private Long id;
  14 +
  15 + @Schema(description = "监听器名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
  16 + private String name;
  17 +
  18 + @Schema(description = "监听器类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "execution")
  19 + private String type;
  20 +
  21 + @Schema(description = "监听器状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  22 + private Integer status;
  23 +
  24 + @Schema(description = "监听事件", requiredMode = Schema.RequiredMode.REQUIRED, example = "start")
  25 + private String event;
  26 +
  27 + @Schema(description = "监听器值类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "class")
  28 + private String valueType;
  29 +
  30 + @Schema(description = "监听器值", requiredMode = Schema.RequiredMode.REQUIRED)
  31 + private String value;
  32 +
  33 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  34 + private LocalDateTime createTime;
  35 +
  36 +}
0 \ No newline at end of file 37 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/listener/BpmProcessListenerSaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.listener;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotEmpty;
  5 +import jakarta.validation.constraints.NotNull;
  6 +import lombok.Data;
  7 +
  8 +@Schema(description = "管理后台 - BPM 流程监听器新增/修改 Request VO")
  9 +@Data
  10 +public class BpmProcessListenerSaveReqVO {
  11 +
  12 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13089")
  13 + private Long id;
  14 +
  15 + @Schema(description = "监听器名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
  16 + @NotEmpty(message = "监听器名字不能为空")
  17 + private String name;
  18 +
  19 + @Schema(description = "监听器类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "execution")
  20 + @NotEmpty(message = "监听器类型不能为空")
  21 + private String type;
  22 +
  23 + @Schema(description = "监听器状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  24 + @NotNull(message = "监听器状态不能为空")
  25 + private Integer status;
  26 +
  27 + @Schema(description = "监听事件", requiredMode = Schema.RequiredMode.REQUIRED, example = "start")
  28 + @NotEmpty(message = "监听事件不能为空")
  29 + private String event;
  30 +
  31 + @Schema(description = "监听器值类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "class")
  32 + @NotEmpty(message = "监听器值类型不能为空")
  33 + private String valueType;
  34 +
  35 + @Schema(description = "监听器值", requiredMode = Schema.RequiredMode.REQUIRED)
  36 + @NotEmpty(message = "监听器值不能为空")
  37 + private String value;
  38 +
  39 +}
0 \ No newline at end of file 40 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModeImportReqVO.java
@@ -10,8 +10,6 @@ import jakarta.validation.constraints.NotNull; @@ -10,8 +10,6 @@ import jakarta.validation.constraints.NotNull;
10 10
11 @Schema(description = "管理后台 - 流程模型的导入 Request VO 相比流程模型的新建来说,只是多了一个 bpmnFile 文件") 11 @Schema(description = "管理后台 - 流程模型的导入 Request VO 相比流程模型的新建来说,只是多了一个 bpmnFile 文件")
12 @Data 12 @Data
13 -@EqualsAndHashCode(callSuper = true)  
14 -@ToString(callSuper = true)  
15 public class BpmModeImportReqVO extends BpmModelCreateReqVO { 13 public class BpmModeImportReqVO extends BpmModelCreateReqVO {
16 14
17 @Schema(description = "BPMN 文件", requiredMode = Schema.RequiredMode.REQUIRED) 15 @Schema(description = "BPMN 文件", requiredMode = Schema.RequiredMode.REQUIRED)
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelBaseVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model;  
2 -import io.swagger.v3.oas.annotations.media.Schema;  
3 -import lombok.Data;  
4 -  
5 -import jakarta.validation.constraints.NotEmpty;  
6 -  
7 -/**  
8 -* 流程模型 Base VO,提供给添加、修改、详细的子 VO 使用  
9 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
10 -*/  
11 -@Data  
12 -public class BpmModelBaseVO {  
13 -  
14 - @Schema(description = "流程标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "process_yudao")  
15 - @NotEmpty(message = "流程标识不能为空")  
16 - private String key;  
17 -  
18 - @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
19 - @NotEmpty(message = "流程名称不能为空")  
20 - private String name;  
21 -  
22 - @Schema(description = "流程描述", example = "我是描述")  
23 - private String description;  
24 -  
25 - @Schema(description = "流程分类-参见 bpm_model_category 数据字典", example = "1")  
26 - @NotEmpty(message = "流程分类不能为空")  
27 - private String category;  
28 -  
29 - @Schema(description = "表单类型-参见 bpm_model_form_type 数据字典", example = "1")  
30 - private Integer formType;  
31 - @Schema(description = "表单编号-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", example = "1024")  
32 - private Long formId;  
33 - @Schema(description = "自定义表单的提交路径,使用 Vue 的路由地址-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空",  
34 - example = "/bpm/oa/leave/create")  
35 - private String formCustomCreatePath;  
36 - @Schema(description = "自定义表单的查看路径,使用 Vue 的路由地址-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空",  
37 - example = "/bpm/oa/leave/view")  
38 - private String formCustomViewPath;  
39 -  
40 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelPageItemRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import java.time.LocalDateTime;  
9 -  
10 -@Schema(description = "管理后台 - 流程模型的分页的每一项 Response VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class BpmModelPageItemRespVO extends BpmModelBaseVO {  
15 -  
16 - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
17 - private String id;  
18 -  
19 - @Schema(description = "表单名字", example = "请假表单")  
20 - private String formName;  
21 -  
22 - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)  
23 - private LocalDateTime createTime;  
24 -  
25 - /**  
26 - * 最新部署的流程定义  
27 - */  
28 - private ProcessDefinition processDefinition;  
29 -  
30 - @Schema(description = "流程定义")  
31 - @Data  
32 - public static class ProcessDefinition {  
33 -  
34 - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
35 - private String id;  
36 -  
37 - @Schema(description = "版本", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
38 - private Integer version;  
39 -  
40 - @Schema(description = "部署时间", requiredMode = Schema.RequiredMode.REQUIRED)  
41 - private LocalDateTime deploymentTime;  
42 -  
43 - @Schema(description = "中断状态-参见 SuspensionState 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
44 - private Integer suspensionState;  
45 -  
46 - }  
47 -  
48 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelPageReqVO.java
@@ -9,17 +9,15 @@ import lombok.ToString; @@ -9,17 +9,15 @@ import lombok.ToString;
9 9
10 @Schema(description = "管理后台 - 流程模型分页 Request VO") 10 @Schema(description = "管理后台 - 流程模型分页 Request VO")
11 @Data 11 @Data
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 public class BpmModelPageReqVO extends PageParam { 12 public class BpmModelPageReqVO extends PageParam {
15 13
16 - @Schema(description = "标识-精准匹配", example = "process1641042089407") 14 + @Schema(description = "标识,精准匹配", example = "process1641042089407")
17 private String key; 15 private String key;
18 16
19 - @Schema(description = "名字-模糊匹配", example = "芋道") 17 + @Schema(description = "名字,模糊匹配", example = "芋道")
20 private String name; 18 private String name;
21 19
22 - @Schema(description = "流程分类-参见 bpm_model_category 数据字典", example = "1") 20 + @Schema(description = "流程分类", example = "1")
23 private String category; 21 private String category;
24 22
25 } 23 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelRespVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model;
2 2
  3 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
3 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 5 import lombok.Data;
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 6
8 import java.time.LocalDateTime; 7 import java.time.LocalDateTime;
9 8
10 -@Schema(description = "管理后台 - 流程模型的创建 Request VO") 9 +@Schema(description = "管理后台 - 流程模型 Response VO")
11 @Data 10 @Data
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class BpmModelRespVO extends BpmModelBaseVO { 11 +public class BpmModelRespVO {
15 12
16 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 13 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
17 private String id; 14 private String id;
18 15
19 - @Schema(description = "BPMN XML", requiredMode = Schema.RequiredMode.REQUIRED)  
20 - private String bpmnXml; 16 + @Schema(description = "流程标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "process_yudao")
  17 + private String key;
  18 +
  19 + @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  20 + private String name;
  21 +
  22 + @Schema(description = "流程图标", example = "https://www.iocoder.cn/yudao.jpg")
  23 + private String icon;
  24 +
  25 + @Schema(description = "流程描述", example = "我是描述")
  26 + private String description;
  27 +
  28 + @Schema(description = "流程分类编码", example = "1")
  29 + private String category;
  30 + @Schema(description = "流程分类名字", example = "请假")
  31 + private String categoryName;
  32 +
  33 + @Schema(description = "表单类型-参见 bpm_model_form_type 数据字典", example = "1")
  34 + private Integer formType;
  35 +
  36 + @Schema(description = "表单编号", example = "1024")
  37 + private Long formId; // 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空
  38 + @Schema(description = "表单名字", example = "请假表单")
  39 + private String formName;
  40 +
  41 + @Schema(description = "自定义表单的提交路径", example = "/bpm/oa/leave/create")
  42 + private String formCustomCreatePath; // 使用 Vue 的路由地址-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空
  43 + @Schema(description = "自定义表单的查看路径", example = "/bpm/oa/leave/view")
  44 + private String formCustomViewPath; // ,使用 Vue 的路由地址-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空
21 45
22 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 46 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
23 private LocalDateTime createTime; 47 private LocalDateTime createTime;
24 48
  49 + @Schema(description = "BPMN XML", requiredMode = Schema.RequiredMode.REQUIRED)
  50 + private String bpmnXml;
  51 +
  52 + /**
  53 + * 最新部署的流程定义
  54 + */
  55 + private BpmProcessDefinitionRespVO processDefinition;
  56 +
25 } 57 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model;
2 2
  3 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  4 +import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum;
3 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.Data;  
5 -  
6 import jakarta.validation.constraints.NotEmpty; 6 import jakarta.validation.constraints.NotEmpty;
  7 +import lombok.Data;
  8 +import org.hibernate.validator.constraints.URL;
7 9
8 @Schema(description = "管理后台 - 流程模型的更新 Request VO") 10 @Schema(description = "管理后台 - 流程模型的更新 Request VO")
9 @Data 11 @Data
@@ -16,16 +18,21 @@ public class BpmModelUpdateReqVO { @@ -16,16 +18,21 @@ public class BpmModelUpdateReqVO {
16 @Schema(description = "流程名称", example = "芋道") 18 @Schema(description = "流程名称", example = "芋道")
17 private String name; 19 private String name;
18 20
  21 + @Schema(description = "流程图标", example = "https://www.iocoder.cn/yudao.jpg")
  22 + @URL(message = "流程图标格式不正确")
  23 + private String icon;
  24 +
19 @Schema(description = "流程描述", example = "我是描述") 25 @Schema(description = "流程描述", example = "我是描述")
20 private String description; 26 private String description;
21 27
22 - @Schema(description = "流程分类-参见 bpm_model_category 数据字典", example = "1") 28 + @Schema(description = "流程分类", example = "1")
23 private String category; 29 private String category;
24 30
25 @Schema(description = "BPMN XML", requiredMode = Schema.RequiredMode.REQUIRED) 31 @Schema(description = "BPMN XML", requiredMode = Schema.RequiredMode.REQUIRED)
26 private String bpmnXml; 32 private String bpmnXml;
27 33
28 @Schema(description = "表单类型-参见 bpm_model_form_type 数据字典", example = "1") 34 @Schema(description = "表单类型-参见 bpm_model_form_type 数据字典", example = "1")
  35 + @InEnum(BpmModelFormTypeEnum.class)
29 private Integer formType; 36 private Integer formType;
30 @Schema(description = "表单编号-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", example = "1024") 37 @Schema(description = "表单编号-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", example = "1024")
31 private Long formId; 38 private Long formId;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateStateReqVO.java
@@ -13,8 +13,8 @@ public class BpmModelUpdateStateReqVO { @@ -13,8 +13,8 @@ public class BpmModelUpdateStateReqVO {
13 @NotNull(message = "编号不能为空") 13 @NotNull(message = "编号不能为空")
14 private String id; 14 private String id;
15 15
16 - @Schema(description = "状态-见 SuspensionState 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 16 + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
17 @NotNull(message = "状态不能为空") 17 @NotNull(message = "状态不能为空")
18 - private Integer state; 18 + private Integer state; // 参见 Flowable SuspensionState 枚举
19 19
20 } 20 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionListReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process;  
2 -  
3 -import cn.iocoder.yudao.framework.common.pojo.PageParam;  
4 -import io.swagger.v3.oas.annotations.media.Schema;  
5 -import lombok.Data;  
6 -import lombok.EqualsAndHashCode;  
7 -import lombok.ToString;  
8 -  
9 -@Schema(description = "管理后台 - 流程定义列表 Request VO")  
10 -@Data  
11 -@ToString(callSuper = true)  
12 -@EqualsAndHashCode(callSuper = true)  
13 -public class BpmProcessDefinitionListReqVO extends PageParam {  
14 -  
15 - @Schema(description = "中断状态-参见 SuspensionState 枚举", example = "1")  
16 - private Integer suspensionState;  
17 -  
18 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionPageItemRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import java.time.LocalDateTime;  
9 -  
10 -@Schema(description = "管理后台 - 流程定义的分页的每一项 Response VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class BpmProcessDefinitionPageItemRespVO extends BpmProcessDefinitionRespVO {  
15 -  
16 - @Schema(description = "表单名字", example = "请假表单")  
17 - private String formName;  
18 -  
19 - @Schema(description = "部署时间", requiredMode = Schema.RequiredMode.REQUIRED)  
20 - private LocalDateTime deploymentTime;  
21 -  
22 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionPageReqVO.java
@@ -8,8 +8,6 @@ import lombok.ToString; @@ -8,8 +8,6 @@ import lombok.ToString;
8 8
9 @Schema(description = "管理后台 - 流程定义分页 Request VO") 9 @Schema(description = "管理后台 - 流程定义分页 Request VO")
10 @Data 10 @Data
11 -@ToString(callSuper = true)  
12 -@EqualsAndHashCode(callSuper = true)  
13 public class BpmProcessDefinitionPageReqVO extends PageParam { 11 public class BpmProcessDefinitionPageReqVO extends PageParam {
14 12
15 @Schema(description = "标识-精准匹配", example = "process1641042089407") 13 @Schema(description = "标识-精准匹配", example = "process1641042089407")
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process;
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
6 -import jakarta.validation.constraints.NotEmpty; 6 +import java.time.LocalDateTime;
7 import java.util.List; 7 import java.util.List;
8 8
9 @Schema(description = "管理后台 - 流程定义 Response VO") 9 @Schema(description = "管理后台 - 流程定义 Response VO")
@@ -17,20 +17,28 @@ public class BpmProcessDefinitionRespVO { @@ -17,20 +17,28 @@ public class BpmProcessDefinitionRespVO {
17 private Integer version; 17 private Integer version;
18 18
19 @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 19 @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
20 - @NotEmpty(message = "流程名称不能为空")  
21 private String name; 20 private String name;
22 21
  22 + @Schema(description = "流程标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
  23 + private String key;
  24 +
  25 + @Schema(description = "流程图标", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/yudao.jpg")
  26 + private String icon;
  27 +
23 @Schema(description = "流程描述", example = "我是描述") 28 @Schema(description = "流程描述", example = "我是描述")
24 private String description; 29 private String description;
25 30
26 - @Schema(description = "流程分类-参见 bpm_model_category 数据字典", example = "1")  
27 - @NotEmpty(message = "流程分类不能为空") 31 + @Schema(description = "流程分类", example = "1")
28 private String category; 32 private String category;
  33 + @Schema(description = "流程分类名字", example = "请假")
  34 + private String categoryName;
29 35
30 @Schema(description = "表单类型-参见 bpm_model_form_type 数据字典", example = "1") 36 @Schema(description = "表单类型-参见 bpm_model_form_type 数据字典", example = "1")
31 private Integer formType; 37 private Integer formType;
32 @Schema(description = "表单编号-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", example = "1024") 38 @Schema(description = "表单编号-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", example = "1024")
33 private Long formId; 39 private Long formId;
  40 + @Schema(description = "表单名字", example = "请假表单")
  41 + private String formName;
34 @Schema(description = "表单的配置-JSON 字符串。在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", requiredMode = Schema.RequiredMode.REQUIRED) 42 @Schema(description = "表单的配置-JSON 字符串。在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", requiredMode = Schema.RequiredMode.REQUIRED)
35 private String formConf; 43 private String formConf;
36 @Schema(description = "表单项的数组-JSON 字符串的数组。在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", requiredMode = Schema.RequiredMode.REQUIRED) 44 @Schema(description = "表单项的数组-JSON 字符串的数组。在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -43,6 +51,27 @@ public class BpmProcessDefinitionRespVO { @@ -43,6 +51,27 @@ public class BpmProcessDefinitionRespVO {
43 private String formCustomViewPath; 51 private String formCustomViewPath;
44 52
45 @Schema(description = "中断状态-参见 SuspensionState 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 53 @Schema(description = "中断状态-参见 SuspensionState 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
46 - private Integer suspensionState; 54 + private Integer suspensionState; // 参见 SuspensionState 枚举
  55 +
  56 + @Schema(description = "部署时间")
  57 + private LocalDateTime deploymentTime; // 需要从对应的 Deployment 读取,非必须返回
  58 +
  59 + @Schema(description = "BPMN XML")
  60 + private String bpmnXml; // 需要从对应的 BpmnModel 读取,非必须返回
  61 +
  62 + @Schema(description = "发起用户需要选择审批人的任务数组")
  63 + private List<UserTask> startUserSelectTasks; // 需要从对应的 BpmnModel 读取,非必须返回
  64 +
  65 + @Schema(description = "BPMN UserTask 用户任务")
  66 + @Data
  67 + public static class UserTask {
  68 +
  69 + @Schema(description = "任务标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "sudo")
  70 + private String id;
  71 +
  72 + @Schema(description = "任务名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
  73 + private String name;
  74 +
  75 + }
47 76
48 } 77 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleBaseVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -import jakarta.validation.constraints.NotNull;  
7 -import java.util.Set;  
8 -  
9 -/**  
10 - * 流程任务分配规则 Base VO,提供给添加、修改、详细的子 VO 使用  
11 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
12 - */  
13 -@Data  
14 -public class BpmTaskAssignRuleBaseVO {  
15 -  
16 - @Schema(description = "规则类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "bpm_task_assign_rule_type")  
17 - @NotNull(message = "规则类型不能为空")  
18 - private Integer type;  
19 -  
20 - @Schema(description = "规则值数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3")  
21 - @NotNull(message = "规则值数组不能为空")  
22 - private Set<Long> options;  
23 -  
24 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import jakarta.validation.constraints.NotEmpty;  
9 -  
10 -@Schema(description = "管理后台 - 流程任务分配规则的创建 Request VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class BpmTaskAssignRuleCreateReqVO extends BpmTaskAssignRuleBaseVO {  
15 -  
16 - @Schema(description = "流程模型的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
17 - @NotEmpty(message = "流程模型的编号不能为空")  
18 - private String modelId;  
19 -  
20 - @Schema(description = "流程任务定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")  
21 - @NotEmpty(message = "流程任务定义的编号不能为空")  
22 - private String taskDefinitionKey;  
23 -  
24 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -@Schema(description = "管理后台 - 流程任务分配规则的 Response VO")  
9 -@Data  
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class BpmTaskAssignRuleRespVO extends BpmTaskAssignRuleBaseVO {  
13 -  
14 - @Schema(description = "任务分配规则的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
15 - private Long id;  
16 -  
17 - @Schema(description = "流程模型的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")  
18 - private String modelId;  
19 -  
20 - @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096")  
21 - private String processDefinitionId;  
22 -  
23 - @Schema(description = "流程任务定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")  
24 - private String taskDefinitionKey;  
25 - @Schema(description = "流程任务定义的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "关注芋道")  
26 - private String taskDefinitionName;  
27 -  
28 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.rule;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import jakarta.validation.constraints.NotNull;  
9 -  
10 -@Schema(description = "管理后台 - 流程任务分配规则的更新 Request VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class BpmTaskAssignRuleUpdateReqVO extends BpmTaskAssignRuleBaseVO {  
15 -  
16 - @Schema(description = "任务分配规则的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
17 - @NotNull(message = "任务分配规则的编号不能为空")  
18 - private Long id;  
19 -  
20 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOALeaveController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.oa; 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa;
2 2
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
3 import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO;
4 import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; 7 import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO;
5 import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveRespVO; 8 import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveRespVO;
6 -import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert;  
7 import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; 9 import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO;
8 -import cn.iocoder.yudao.framework.common.pojo.CommonResult;  
9 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
10 import cn.iocoder.yudao.module.bpm.service.oa.BpmOALeaveService; 10 import cn.iocoder.yudao.module.bpm.service.oa.BpmOALeaveService;
11 -import io.swagger.v3.oas.annotations.tags.Tag;  
12 -import io.swagger.v3.oas.annotations.Parameter;  
13 import io.swagger.v3.oas.annotations.Operation; 11 import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.Parameter;
  13 +import io.swagger.v3.oas.annotations.tags.Tag;
  14 +import jakarta.annotation.Resource;
  15 +import jakarta.validation.Valid;
14 import org.springframework.security.access.prepost.PreAuthorize; 16 import org.springframework.security.access.prepost.PreAuthorize;
15 import org.springframework.validation.annotation.Validated; 17 import org.springframework.validation.annotation.Validated;
16 import org.springframework.web.bind.annotation.*; 18 import org.springframework.web.bind.annotation.*;
17 19
18 -import jakarta.annotation.Resource;  
19 -import jakarta.validation.Valid;  
20 -  
21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 21 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
23 22
@@ -49,7 +48,7 @@ public class BpmOALeaveController { @@ -49,7 +48,7 @@ public class BpmOALeaveController {
49 @Parameter(name = "id", description = "编号", required = true, example = "1024") 48 @Parameter(name = "id", description = "编号", required = true, example = "1024")
50 public CommonResult<BpmOALeaveRespVO> getLeave(@RequestParam("id") Long id) { 49 public CommonResult<BpmOALeaveRespVO> getLeave(@RequestParam("id") Long id) {
51 BpmOALeaveDO leave = leaveService.getLeave(id); 50 BpmOALeaveDO leave = leaveService.getLeave(id);
52 - return success(BpmOALeaveConvert.INSTANCE.convert(leave)); 51 + return success(BeanUtils.toBean(leave, BpmOALeaveRespVO.class));
53 } 52 }
54 53
55 @GetMapping("/page") 54 @GetMapping("/page")
@@ -57,7 +56,7 @@ public class BpmOALeaveController { @@ -57,7 +56,7 @@ public class BpmOALeaveController {
57 @Operation(summary = "获得请假申请分页") 56 @Operation(summary = "获得请假申请分页")
58 public CommonResult<PageResult<BpmOALeaveRespVO>> getLeavePage(@Valid BpmOALeavePageReqVO pageVO) { 57 public CommonResult<PageResult<BpmOALeaveRespVO>> getLeavePage(@Valid BpmOALeavePageReqVO pageVO) {
59 PageResult<BpmOALeaveDO> pageResult = leaveService.getLeavePage(getLoginUserId(), pageVO); 58 PageResult<BpmOALeaveDO> pageResult = leaveService.getLeavePage(getLoginUserId(), pageVO);
60 - return success(BpmOALeaveConvert.INSTANCE.convertPage(pageResult)); 59 + return success(BeanUtils.toBean(pageResult, BpmOALeaveRespVO.class));
61 } 60 }
62 61
63 } 62 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -import java.time.LocalDateTime;  
6 -import jakarta.validation.constraints.*;  
7 -import org.springframework.format.annotation.DateTimeFormat;  
8 -  
9 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
10 -  
11 -/**  
12 -* 请假申请 Base VO,提供给添加、修改、详细的子 VO 使用  
13 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
14 -*/  
15 -@Data  
16 -public class BpmOALeaveBaseVO {  
17 -  
18 - @Schema(description = "请假的开始时间", requiredMode = Schema.RequiredMode.REQUIRED)  
19 - @NotNull(message = "开始时间不能为空")  
20 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
21 - private LocalDateTime startTime;  
22 - @Schema(description = "请假的结束时间", requiredMode = Schema.RequiredMode.REQUIRED)  
23 - @NotNull(message = "结束时间不能为空")  
24 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
25 - private LocalDateTime endTime;  
26 -  
27 - @Schema(description = "请假类型-参见 bpm_oa_type 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
28 - private Integer type;  
29 -  
30 - @Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "阅读芋道源码")  
31 - private String reason;  
32 -  
33 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveCreateReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;
  2 +
2 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.AssertTrue;
  5 +import jakarta.validation.constraints.NotNull;
3 import lombok.Data; 6 import lombok.Data;
4 -import lombok.EqualsAndHashCode;  
5 -import lombok.ToString; 7 +import org.springframework.format.annotation.DateTimeFormat;
6 8
7 -import jakarta.validation.constraints.AssertTrue; 9 +import java.time.LocalDateTime;
  10 +import java.util.List;
  11 +import java.util.Map;
  12 +
  13 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
8 14
9 @Schema(description = "管理后台 - 请假申请创建 Request VO") 15 @Schema(description = "管理后台 - 请假申请创建 Request VO")
10 @Data 16 @Data
11 -@EqualsAndHashCode(callSuper = true)  
12 -@ToString(callSuper = true)  
13 -public class BpmOALeaveCreateReqVO extends BpmOALeaveBaseVO { 17 +public class BpmOALeaveCreateReqVO {
  18 +
  19 + @Schema(description = "请假的开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
  20 + @NotNull(message = "开始时间不能为空")
  21 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  22 + private LocalDateTime startTime;
  23 +
  24 + @Schema(description = "请假的结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
  25 + @NotNull(message = "结束时间不能为空")
  26 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  27 + private LocalDateTime endTime;
  28 +
  29 + @Schema(description = "请假类型-参见 bpm_oa_type 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  30 + private Integer type;
  31 +
  32 + @Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "阅读芋道源码")
  33 + private String reason;
  34 +
  35 + @Schema(description = "发起人自选审批人 Map", example = "{taskKey1: [1, 2]}")
  36 + private Map<String, List<Long>> startUserSelectAssignees;
14 37
15 @AssertTrue(message = "结束时间,需要在开始时间之后") 38 @AssertTrue(message = "结束时间,需要在开始时间之后")
16 public boolean isEndTimeValid() { 39 public boolean isEndTimeValid() {
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;
2 -import io.swagger.v3.oas.annotations.media.Schema;  
3 -import lombok.*;  
4 -import java.time.LocalDateTime; 2 +
5 import cn.iocoder.yudao.framework.common.pojo.PageParam; 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
6 import org.springframework.format.annotation.DateTimeFormat; 8 import org.springframework.format.annotation.DateTimeFormat;
7 9
  10 +import java.time.LocalDateTime;
  11 +
8 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
9 13
10 @Schema(description = "管理后台 - 请假申请分页 Request VO") 14 @Schema(description = "管理后台 - 请假申请分页 Request VO")
11 @Data 15 @Data
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 public class BpmOALeavePageReqVO extends PageParam { 16 public class BpmOALeavePageReqVO extends PageParam {
15 17
16 - @Schema(description = "状态-参见 bpm_process_instance_result 枚举", example = "1")  
17 - private Integer result; 18 + @Schema(description = "状态", example = "1")
  19 + private Integer status; // 参见 BpmProcessInstanceResultEnum 枚举
18 20
19 - @Schema(description = "请假类型-参见 bpm_oa_type", example = "1") 21 + @Schema(description = "请假类型,参见 bpm_oa_type", example = "1")
20 private Integer type; 22 private Integer type;
21 23
22 - @Schema(description = "原因-模糊匹配", example = "阅读芋道源码") 24 + @Schema(description = "原因,模糊匹配", example = "阅读芋道源码")
23 private String reason; 25 private String reason;
24 26
25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveRespVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.*;  
5 -import org.springframework.format.annotation.DateTimeFormat; 4 +import lombok.Data;
6 5
7 -import jakarta.validation.constraints.NotNull;  
8 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
9 7
10 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
11 -  
12 @Schema(description = "管理后台 - 请假申请 Response VO") 8 @Schema(description = "管理后台 - 请假申请 Response VO")
13 @Data 9 @Data
14 -@EqualsAndHashCode(callSuper = true)  
15 -@ToString(callSuper = true)  
16 -public class BpmOALeaveRespVO extends BpmOALeaveBaseVO { 10 +public class BpmOALeaveRespVO {
17 11
18 @Schema(description = "请假表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 12 @Schema(description = "请假表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
19 private Long id; 13 private Long id;
20 14
21 - @Schema(description = "状态-参见 bpm_process_instance_result 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
22 - private Integer result; 15 + @Schema(description = "请假类型,参见 bpm_oa_type 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  16 + private Integer type;
  17 +
  18 + @Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "阅读芋道源码")
  19 + private String reason;
23 20
24 @Schema(description = "申请时间", requiredMode = Schema.RequiredMode.REQUIRED) 21 @Schema(description = "申请时间", requiredMode = Schema.RequiredMode.REQUIRED)
25 - @NotNull(message = "申请时间不能为空")  
26 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
27 private LocalDateTime createTime; 22 private LocalDateTime createTime;
28 23
29 - @Schema(description = "流程id") 24 + @Schema(description = "请假的开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
  25 + private LocalDateTime startTime;
  26 +
  27 + @Schema(description = "请假的结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
  28 + private LocalDateTime endTime;
  29 +
  30 + @Schema(description = "流程编号")
30 private String processInstanceId; 31 private String processInstanceId;
31 32
  33 + @Schema(description = "审批结果", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  34 + private Integer status; // 参见 BpmProcessInstanceStatusEnum 枚举
  35 +
32 } 36 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; 6 +import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
  7 +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCancelReqVO;
  8 +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCreateReqVO;
  9 +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstancePageReqVO;
  10 +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceRespVO;
  11 +import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert;
  12 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO;
  13 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
  14 +import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
  15 +import cn.iocoder.yudao.module.bpm.service.definition.BpmCategoryService;
  16 +import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService;
6 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; 17 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
  18 +import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
  19 +import cn.iocoder.yudao.module.system.api.dept.DeptApi;
  20 +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
  21 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  22 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
7 import io.swagger.v3.oas.annotations.Operation; 23 import io.swagger.v3.oas.annotations.Operation;
8 import io.swagger.v3.oas.annotations.Parameter; 24 import io.swagger.v3.oas.annotations.Parameter;
9 import io.swagger.v3.oas.annotations.tags.Tag; 25 import io.swagger.v3.oas.annotations.tags.Tag;
10 import jakarta.annotation.Resource; 26 import jakarta.annotation.Resource;
11 import jakarta.validation.Valid; 27 import jakarta.validation.Valid;
  28 +import org.flowable.engine.history.HistoricProcessInstance;
  29 +import org.flowable.engine.repository.ProcessDefinition;
  30 +import org.flowable.task.api.Task;
12 import org.springframework.security.access.prepost.PreAuthorize; 31 import org.springframework.security.access.prepost.PreAuthorize;
13 import org.springframework.validation.annotation.Validated; 32 import org.springframework.validation.annotation.Validated;
14 import org.springframework.web.bind.annotation.*; 33 import org.springframework.web.bind.annotation.*;
15 34
  35 +import java.util.List;
  36 +import java.util.Map;
  37 +
16 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 38 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  39 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
  40 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
17 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 41 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
18 42
19 @Tag(name = "管理后台 - 流程实例") // 流程实例,通过流程定义创建的一次“申请” 43 @Tag(name = "管理后台 - 流程实例") // 流程实例,通过流程定义创建的一次“申请”
@@ -24,13 +48,65 @@ public class BpmProcessInstanceController { @@ -24,13 +48,65 @@ public class BpmProcessInstanceController {
24 48
25 @Resource 49 @Resource
26 private BpmProcessInstanceService processInstanceService; 50 private BpmProcessInstanceService processInstanceService;
  51 + @Resource
  52 + private BpmTaskService taskService;
  53 + @Resource
  54 + private BpmProcessDefinitionService processDefinitionService;
  55 + @Resource
  56 + private BpmCategoryService categoryService;
  57 +
  58 + @Resource
  59 + private AdminUserApi adminUserApi;
  60 + @Resource
  61 + private DeptApi deptApi;
27 62
28 @GetMapping("/my-page") 63 @GetMapping("/my-page")
29 @Operation(summary = "获得我的实例分页列表", description = "在【我的流程】菜单中,进行调用") 64 @Operation(summary = "获得我的实例分页列表", description = "在【我的流程】菜单中,进行调用")
30 @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") 65 @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
31 - public CommonResult<PageResult<BpmProcessInstancePageItemRespVO>> getMyProcessInstancePage(  
32 - @Valid BpmProcessInstanceMyPageReqVO pageReqVO) {  
33 - return success(processInstanceService.getMyProcessInstancePage(getLoginUserId(), pageReqVO)); 66 + public CommonResult<PageResult<BpmProcessInstanceRespVO>> getProcessInstanceMyPage(
  67 + @Valid BpmProcessInstancePageReqVO pageReqVO) {
  68 + PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstancePage(
  69 + getLoginUserId(), pageReqVO);
  70 + if (CollUtil.isEmpty(pageResult.getList())) {
  71 + return success(PageResult.empty(pageResult.getTotal()));
  72 + }
  73 +
  74 + // 拼接返回
  75 + Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(
  76 + convertList(pageResult.getList(), HistoricProcessInstance::getId));
  77 + Map<String, ProcessDefinition> processDefinitionMap = processDefinitionService.getProcessDefinitionMap(
  78 + convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
  79 + Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
  80 + convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
  81 + return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
  82 + processDefinitionMap, categoryMap, taskMap, null, null));
  83 + }
  84 +
  85 + @GetMapping("/manager-page")
  86 + @Operation(summary = "获得管理流程实例的分页列表", description = "在【流程实例】菜单中,进行调用")
  87 + @PreAuthorize("@ss.hasPermission('bpm:process-instance:manager-query')")
  88 + public CommonResult<PageResult<BpmProcessInstanceRespVO>> getProcessInstanceManagerPage(
  89 + @Valid BpmProcessInstancePageReqVO pageReqVO) {
  90 + PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstancePage(
  91 + null, pageReqVO);
  92 + if (CollUtil.isEmpty(pageResult.getList())) {
  93 + return success(PageResult.empty(pageResult.getTotal()));
  94 + }
  95 +
  96 + // 拼接返回
  97 + Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(
  98 + convertList(pageResult.getList(), HistoricProcessInstance::getId));
  99 + Map<String, ProcessDefinition> processDefinitionMap = processDefinitionService.getProcessDefinitionMap(
  100 + convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
  101 + Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
  102 + convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
  103 + // 发起人信息
  104 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
  105 + convertSet(pageResult.getList(), processInstance -> NumberUtils.parseLong(processInstance.getStartUserId())));
  106 + Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
  107 + convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
  108 + return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
  109 + processDefinitionMap, categoryMap, taskMap, userMap, deptMap));
34 } 110 }
35 111
36 @PostMapping("/create") 112 @PostMapping("/create")
@@ -45,14 +121,42 @@ public class BpmProcessInstanceController { @@ -45,14 +121,42 @@ public class BpmProcessInstanceController {
45 @Parameter(name = "id", description = "流程实例的编号", required = true) 121 @Parameter(name = "id", description = "流程实例的编号", required = true)
46 @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") 122 @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
47 public CommonResult<BpmProcessInstanceRespVO> getProcessInstance(@RequestParam("id") String id) { 123 public CommonResult<BpmProcessInstanceRespVO> getProcessInstance(@RequestParam("id") String id) {
48 - return success(processInstanceService.getProcessInstanceVO(id)); 124 + HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(id);
  125 + if (processInstance == null) {
  126 + return success(null);
  127 + }
  128 +
  129 + // 拼接返回
  130 + ProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(
  131 + processInstance.getProcessDefinitionId());
  132 + BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo(
  133 + processInstance.getProcessDefinitionId());
  134 + String bpmnXml = BpmnModelUtils.getBpmnXml(
  135 + processDefinitionService.getProcessDefinitionBpmnModel(processInstance.getProcessDefinitionId()));
  136 + AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId()));
  137 + DeptRespDTO dept = null;
  138 + if (startUser != null) {
  139 + dept = deptApi.getDept(startUser.getDeptId());
  140 + }
  141 + return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstance(processInstance,
  142 + processDefinition, processDefinitionInfo, bpmnXml, startUser, dept));
49 } 143 }
50 144
51 - @DeleteMapping("/cancel")  
52 - @Operation(summary = "取消流程实例", description = "撤回发起的流程") 145 + @DeleteMapping("/cancel-by-start-user")
  146 + @Operation(summary = "用户取消流程实例", description = "取消发起的流程")
53 @PreAuthorize("@ss.hasPermission('bpm:process-instance:cancel')") 147 @PreAuthorize("@ss.hasPermission('bpm:process-instance:cancel')")
54 - public CommonResult<Boolean> cancelProcessInstance(@Valid @RequestBody BpmProcessInstanceCancelReqVO cancelReqVO) {  
55 - processInstanceService.cancelProcessInstance(getLoginUserId(), cancelReqVO); 148 + public CommonResult<Boolean> cancelProcessInstanceByStartUser(
  149 + @Valid @RequestBody BpmProcessInstanceCancelReqVO cancelReqVO) {
  150 + processInstanceService.cancelProcessInstanceByStartUser(getLoginUserId(), cancelReqVO);
  151 + return success(true);
  152 + }
  153 +
  154 + @DeleteMapping("/cancel-by-admin")
  155 + @Operation(summary = "管理员取消流程实例", description = "管理员撤回流程")
  156 + @PreAuthorize("@ss.hasPermission('bpm:process-instance:cancel-by-admin')")
  157 + public CommonResult<Boolean> cancelProcessInstanceByManager(
  158 + @Valid @RequestBody BpmProcessInstanceCancelReqVO cancelReqVO) {
  159 + processInstanceService.cancelProcessInstanceByAdmin(getLoginUserId(), cancelReqVO);
56 return success(true); 160 return success(true);
57 } 161 }
58 162
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceCopyController.java
@@ -3,23 +3,27 @@ package cn.iocoder.yudao.module.bpm.controller.admin.task; @@ -3,23 +3,27 @@ package cn.iocoder.yudao.module.bpm.controller.admin.task;
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO;  
7 -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO;  
8 -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO;  
9 -import cn.iocoder.yudao.module.bpm.convert.cc.BpmProcessInstanceCopyConvert;  
10 -import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; 6 +import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
  7 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
  8 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  9 +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.cc.BpmProcessInstanceCopyRespVO;
  10 +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageReqVO;
  11 +import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceCopyDO;
  12 +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceCopyService;
11 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; 13 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
12 import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; 14 import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
13 -import cn.iocoder.yudao.module.bpm.service.task.cc.BpmProcessInstanceCopyService;  
14 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 15 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
15 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; 16 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
16 import io.swagger.v3.oas.annotations.Operation; 17 import io.swagger.v3.oas.annotations.Operation;
17 import io.swagger.v3.oas.annotations.tags.Tag; 18 import io.swagger.v3.oas.annotations.tags.Tag;
18 import jakarta.annotation.Resource; 19 import jakarta.annotation.Resource;
19 import jakarta.validation.Valid; 20 import jakarta.validation.Valid;
  21 +import org.flowable.engine.history.HistoricProcessInstance;
20 import org.springframework.security.access.prepost.PreAuthorize; 22 import org.springframework.security.access.prepost.PreAuthorize;
21 import org.springframework.validation.annotation.Validated; 23 import org.springframework.validation.annotation.Validated;
22 -import org.springframework.web.bind.annotation.*; 24 +import org.springframework.web.bind.annotation.GetMapping;
  25 +import org.springframework.web.bind.annotation.RequestMapping;
  26 +import org.springframework.web.bind.annotation.RestController;
23 27
24 import java.util.Map; 28 import java.util.Map;
25 import java.util.stream.Stream; 29 import java.util.stream.Stream;
@@ -31,47 +35,45 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti @@ -31,47 +35,45 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
31 35
32 @Tag(name = "管理后台 - 流程实例抄送") 36 @Tag(name = "管理后台 - 流程实例抄送")
33 @RestController 37 @RestController
34 -@RequestMapping("/bpm/process-instance/cc") 38 +@RequestMapping("/bpm/process-instance/copy")
35 @Validated 39 @Validated
36 public class BpmProcessInstanceCopyController { 40 public class BpmProcessInstanceCopyController {
37 41
38 @Resource 42 @Resource
39 private BpmProcessInstanceCopyService processInstanceCopyService; 43 private BpmProcessInstanceCopyService processInstanceCopyService;
40 @Resource 44 @Resource
41 - private BpmProcessInstanceService bpmProcessInstanceService;  
42 - 45 + private BpmProcessInstanceService processInstanceService;
43 @Resource 46 @Resource
44 - private AdminUserApi adminUserApi; 47 + private BpmTaskService taskService;
45 48
46 @Resource 49 @Resource
47 - private BpmTaskService bpmTaskService;  
48 -  
49 - @PostMapping("/create")  
50 - @Operation(summary = "抄送流程")  
51 - @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')")  
52 - public CommonResult<Boolean> createProcessInstanceCopy(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) {  
53 - processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO);  
54 - return success(true);  
55 - } 50 + private AdminUserApi adminUserApi;
56 51
57 - @GetMapping("/my-page") 52 + @GetMapping("/page")
58 @Operation(summary = "获得抄送流程分页列表") 53 @Operation(summary = "获得抄送流程分页列表")
59 @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')") 54 @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')")
60 - public CommonResult<PageResult<BpmProcessInstanceCopyPageItemRespVO>> getProcessInstanceCopyPage(  
61 - @Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) {  
62 - PageResult<BpmProcessInstanceCopyDO> pageResult = processInstanceCopyService.getMyProcessInstanceCopyPage(getLoginUserId(), pageReqVO); 55 + public CommonResult<PageResult<BpmProcessInstanceCopyRespVO>> getProcessInstanceCopyPage(
  56 + @Valid BpmProcessInstanceCopyPageReqVO pageReqVO) {
  57 + PageResult<BpmProcessInstanceCopyDO> pageResult = processInstanceCopyService.getProcessInstanceCopyPage(
  58 + getLoginUserId(), pageReqVO);
63 if (CollUtil.isEmpty(pageResult.getList())) { 59 if (CollUtil.isEmpty(pageResult.getList())) {
64 return success(new PageResult<>(pageResult.getTotal())); 60 return success(new PageResult<>(pageResult.getTotal()));
65 } 61 }
66 62
67 // 拼接返回 63 // 拼接返回
68 - Map<String, String> taskNameMap = bpmTaskService.getTaskNameByTaskIds( 64 + Map<String, String> taskNameMap = taskService.getTaskNameByTaskIds(
69 convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getTaskId)); 65 convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getTaskId));
70 - Map<String, String> processNameMap = bpmProcessInstanceService.getProcessInstanceNameMap( 66 + Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap(
71 convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId)); 67 convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId));
72 Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(pageResult.getList(), 68 Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(pageResult.getList(),
73 copy -> Stream.of(copy.getStartUserId(), Long.parseLong(copy.getCreator())))); 69 copy -> Stream.of(copy.getStartUserId(), Long.parseLong(copy.getCreator()))));
74 - return success(BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameMap, processNameMap, userMap)); 70 + return success(BeanUtils.toBean(pageResult, BpmProcessInstanceCopyRespVO.class, copyVO -> {
  71 + MapUtils.findAndThen(userMap, Long.valueOf(copyVO.getCreator()), user -> copyVO.setCreatorName(user.getNickname()));
  72 + MapUtils.findAndThen(userMap, copyVO.getStartUserId(), user -> copyVO.setStartUserName(user.getNickname()));
  73 + MapUtils.findAndThen(taskNameMap, copyVO.getTaskId(), copyVO::setTaskName);
  74 + MapUtils.findAndThen(processInstanceMap, copyVO.getProcessInstanceId(),
  75 + processInstance -> copyVO.setProcessInstanceStartTime(DateUtils.of(processInstance.getStartTime())));
  76 + }));
75 } 77 }
76 78
77 } 79 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; 7 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
  8 +import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
  9 +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
  10 +import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;
  11 +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
6 import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; 12 import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
  13 +import cn.iocoder.yudao.module.system.api.dept.DeptApi;
  14 +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
  15 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  16 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
7 import io.swagger.v3.oas.annotations.Operation; 17 import io.swagger.v3.oas.annotations.Operation;
8 import io.swagger.v3.oas.annotations.Parameter; 18 import io.swagger.v3.oas.annotations.Parameter;
9 import io.swagger.v3.oas.annotations.tags.Tag; 19 import io.swagger.v3.oas.annotations.tags.Tag;
  20 +import jakarta.annotation.Resource;
  21 +import jakarta.validation.Valid;
  22 +import org.flowable.bpmn.model.UserTask;
  23 +import org.flowable.engine.history.HistoricProcessInstance;
  24 +import org.flowable.engine.runtime.ProcessInstance;
  25 +import org.flowable.task.api.Task;
  26 +import org.flowable.task.api.history.HistoricTaskInstance;
10 import org.springframework.security.access.prepost.PreAuthorize; 27 import org.springframework.security.access.prepost.PreAuthorize;
11 import org.springframework.validation.annotation.Validated; 28 import org.springframework.validation.annotation.Validated;
12 import org.springframework.web.bind.annotation.*; 29 import org.springframework.web.bind.annotation.*;
13 30
14 -import jakarta.annotation.Resource;  
15 -import jakarta.validation.Valid; 31 +import java.util.Collections;
16 import java.util.List; 32 import java.util.List;
  33 +import java.util.Map;
  34 +import java.util.Set;
  35 +import java.util.stream.Stream;
17 36
18 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 37 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  38 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
19 import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId; 39 import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
20 40
21 @Tag(name = "管理后台 - 流程任务实例") 41 @Tag(name = "管理后台 - 流程任务实例")
@@ -26,19 +46,69 @@ public class BpmTaskController { @@ -26,19 +46,69 @@ public class BpmTaskController {
26 46
27 @Resource 47 @Resource
28 private BpmTaskService taskService; 48 private BpmTaskService taskService;
  49 + @Resource
  50 + private BpmProcessInstanceService processInstanceService;
  51 + @Resource
  52 + private BpmFormService formService;
  53 +
  54 + @Resource
  55 + private AdminUserApi adminUserApi;
  56 + @Resource
  57 + private DeptApi deptApi;
29 58
30 @GetMapping("todo-page") 59 @GetMapping("todo-page")
31 @Operation(summary = "获取 Todo 待办任务分页") 60 @Operation(summary = "获取 Todo 待办任务分页")
32 @PreAuthorize("@ss.hasPermission('bpm:task:query')") 61 @PreAuthorize("@ss.hasPermission('bpm:task:query')")
33 - public CommonResult<PageResult<BpmTaskTodoPageItemRespVO>> getTodoTaskPage(@Valid BpmTaskTodoPageReqVO pageVO) {  
34 - return success(taskService.getTodoTaskPage(getLoginUserId(), pageVO)); 62 + public CommonResult<PageResult<BpmTaskRespVO>> getTaskTodoPage(@Valid BpmTaskPageReqVO pageVO) {
  63 + PageResult<Task> pageResult = taskService.getTaskTodoPage(getLoginUserId(), pageVO);
  64 + if (CollUtil.isEmpty(pageResult.getList())) {
  65 + return success(PageResult.empty());
  66 + }
  67 +
  68 + // 拼接数据
  69 + Map<String, ProcessInstance> processInstanceMap = processInstanceService.getProcessInstanceMap(
  70 + convertSet(pageResult.getList(), Task::getProcessInstanceId));
  71 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
  72 + convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
  73 + return success(BpmTaskConvert.INSTANCE.buildTodoTaskPage(pageResult, processInstanceMap, userMap));
35 } 74 }
36 75
37 @GetMapping("done-page") 76 @GetMapping("done-page")
38 @Operation(summary = "获取 Done 已办任务分页") 77 @Operation(summary = "获取 Done 已办任务分页")
39 @PreAuthorize("@ss.hasPermission('bpm:task:query')") 78 @PreAuthorize("@ss.hasPermission('bpm:task:query')")
40 - public CommonResult<PageResult<BpmTaskDonePageItemRespVO>> getDoneTaskPage(@Valid BpmTaskDonePageReqVO pageVO) {  
41 - return success(taskService.getDoneTaskPage(getLoginUserId(), pageVO)); 79 + public CommonResult<PageResult<BpmTaskRespVO>> getTaskDonePage(@Valid BpmTaskPageReqVO pageVO) {
  80 + PageResult<HistoricTaskInstance> pageResult = taskService.getTaskDonePage(getLoginUserId(), pageVO);
  81 + if (CollUtil.isEmpty(pageResult.getList())) {
  82 + return success(PageResult.empty());
  83 + }
  84 +
  85 + // 拼接数据
  86 + Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap(
  87 + convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
  88 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
  89 + convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
  90 + return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null));
  91 + }
  92 +
  93 + @GetMapping("manager-page")
  94 + @Operation(summary = "获取全部任务的分页", description = "用于【流程任务】菜单")
  95 + @PreAuthorize("@ss.hasPermission('bpm:task:mananger-query')")
  96 + public CommonResult<PageResult<BpmTaskRespVO>> getTaskManagerPage(@Valid BpmTaskPageReqVO pageVO) {
  97 + PageResult<HistoricTaskInstance> pageResult = taskService.getTaskPage(getLoginUserId(), pageVO);
  98 + if (CollUtil.isEmpty(pageResult.getList())) {
  99 + return success(PageResult.empty());
  100 + }
  101 +
  102 + // 拼接数据
  103 + Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap(
  104 + convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
  105 + // 获得 User 和 Dept Map
  106 + Set<Long> userIds = convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()));
  107 + userIds.addAll(convertSet(pageResult.getList(), task -> NumberUtils.parseLong(task.getAssignee())));
  108 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
  109 + Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
  110 + convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
  111 + return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap));
42 } 112 }
43 113
44 @GetMapping("/list-by-process-instance-id") 114 @GetMapping("/list-by-process-instance-id")
@@ -47,7 +117,25 @@ public class BpmTaskController { @@ -47,7 +117,25 @@ public class BpmTaskController {
47 @PreAuthorize("@ss.hasPermission('bpm:task:query')") 117 @PreAuthorize("@ss.hasPermission('bpm:task:query')")
48 public CommonResult<List<BpmTaskRespVO>> getTaskListByProcessInstanceId( 118 public CommonResult<List<BpmTaskRespVO>> getTaskListByProcessInstanceId(
49 @RequestParam("processInstanceId") String processInstanceId) { 119 @RequestParam("processInstanceId") String processInstanceId) {
50 - return success(taskService.getTaskListByProcessInstanceId(processInstanceId)); 120 + List<HistoricTaskInstance> taskList = taskService.getTaskListByProcessInstanceId(processInstanceId);
  121 + if (CollUtil.isEmpty(taskList)) {
  122 + return success(Collections.emptyList());
  123 + }
  124 +
  125 + // 拼接数据
  126 + HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(processInstanceId);
  127 + // 获得 User 和 Dept Map
  128 + Set<Long> userIds = convertSetByFlatMap(taskList, task ->
  129 + Stream.of(NumberUtils.parseLong(task.getAssignee()), NumberUtils.parseLong(task.getOwner())));
  130 + userIds.add(NumberUtils.parseLong(processInstance.getStartUserId()));
  131 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
  132 + Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
  133 + convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
  134 + // 获得 Form Map
  135 + Map<Long, BpmFormDO> formMap = formService.getFormMap(
  136 + convertSet(taskList, task -> NumberUtils.parseLong(task.getFormKey())));
  137 + return success(BpmTaskConvert.INSTANCE.buildTaskListByProcessInstanceId(taskList, processInstance,
  138 + formMap, userMap, deptMap));
51 } 139 }
52 140
53 @PutMapping("/approve") 141 @PutMapping("/approve")
@@ -66,20 +154,14 @@ public class BpmTaskController { @@ -66,20 +154,14 @@ public class BpmTaskController {
66 return success(true); 154 return success(true);
67 } 155 }
68 156
69 - @PutMapping("/update-assignee")  
70 - @Operation(summary = "更新任务的负责人", description = "用于【流程详情】的【转派】按钮")  
71 - @PreAuthorize("@ss.hasPermission('bpm:task:update')")  
72 - public CommonResult<Boolean> updateTaskAssignee(@Valid @RequestBody BpmTaskUpdateAssigneeReqVO reqVO) {  
73 - taskService.updateTaskAssignee(getLoginUserId(), reqVO);  
74 - return success(true);  
75 - }  
76 -  
77 - @GetMapping("/return-list") 157 + @GetMapping("/list-by-return")
78 @Operation(summary = "获取所有可回退的节点", description = "用于【流程详情】的【回退】按钮") 158 @Operation(summary = "获取所有可回退的节点", description = "用于【流程详情】的【回退】按钮")
79 @Parameter(name = "taskId", description = "当前任务ID", required = true) 159 @Parameter(name = "taskId", description = "当前任务ID", required = true)
80 @PreAuthorize("@ss.hasPermission('bpm:task:update')") 160 @PreAuthorize("@ss.hasPermission('bpm:task:update')")
81 - public CommonResult<List<BpmTaskSimpleRespVO>> getReturnList(@RequestParam("taskId") String taskId) {  
82 - return success(taskService.getReturnTaskList(taskId)); 161 + public CommonResult<List<BpmTaskRespVO>> getTaskListByReturn(@RequestParam("id") String id) {
  162 + List<UserTask> userTaskList = taskService.getUserTaskListByReturn(id);
  163 + return success(convertList(userTaskList, userTask -> // 只返回 id 和 name
  164 + new BpmTaskRespVO().setName(userTask.getName()).setTaskDefinitionKey(userTask.getId())));
83 } 165 }
84 166
85 @PutMapping("/return") 167 @PutMapping("/return")
@@ -91,17 +173,25 @@ public class BpmTaskController { @@ -91,17 +173,25 @@ public class BpmTaskController {
91 } 173 }
92 174
93 @PutMapping("/delegate") 175 @PutMapping("/delegate")
94 - @Operation(summary = "委派任务", description = "用于【流程详情】的【委派】按钮。和向前【加签】有点像,唯一区别是【委托】没有单独创立任务") 176 + @Operation(summary = "委派任务", description = "用于【流程详情】的【委派】按钮")
95 @PreAuthorize("@ss.hasPermission('bpm:task:update')") 177 @PreAuthorize("@ss.hasPermission('bpm:task:update')")
96 public CommonResult<Boolean> delegateTask(@Valid @RequestBody BpmTaskDelegateReqVO reqVO) { 178 public CommonResult<Boolean> delegateTask(@Valid @RequestBody BpmTaskDelegateReqVO reqVO) {
97 taskService.delegateTask(getLoginUserId(), reqVO); 179 taskService.delegateTask(getLoginUserId(), reqVO);
98 return success(true); 180 return success(true);
99 } 181 }
100 182
  183 + @PutMapping("/transfer")
  184 + @Operation(summary = "转派任务", description = "用于【流程详情】的【转派】按钮")
  185 + @PreAuthorize("@ss.hasPermission('bpm:task:update')")
  186 + public CommonResult<Boolean> transferTask(@Valid @RequestBody BpmTaskTransferReqVO reqVO) {
  187 + taskService.transferTask(getLoginUserId(), reqVO);
  188 + return success(true);
  189 + }
  190 +
101 @PutMapping("/create-sign") 191 @PutMapping("/create-sign")
102 @Operation(summary = "加签", description = "before 前加签,after 后加签") 192 @Operation(summary = "加签", description = "before 前加签,after 后加签")
103 @PreAuthorize("@ss.hasPermission('bpm:task:update')") 193 @PreAuthorize("@ss.hasPermission('bpm:task:update')")
104 - public CommonResult<Boolean> createSignTask(@Valid @RequestBody BpmTaskAddSignReqVO reqVO) { 194 + public CommonResult<Boolean> createSignTask(@Valid @RequestBody BpmTaskSignCreateReqVO reqVO) {
105 taskService.createSignTask(getLoginUserId(), reqVO); 195 taskService.createSignTask(getLoginUserId(), reqVO);
106 return success(true); 196 return success(true);
107 } 197 }
@@ -109,17 +199,26 @@ public class BpmTaskController { @@ -109,17 +199,26 @@ public class BpmTaskController {
109 @DeleteMapping("/delete-sign") 199 @DeleteMapping("/delete-sign")
110 @Operation(summary = "减签") 200 @Operation(summary = "减签")
111 @PreAuthorize("@ss.hasPermission('bpm:task:update')") 201 @PreAuthorize("@ss.hasPermission('bpm:task:update')")
112 - public CommonResult<Boolean> deleteSignTask(@Valid @RequestBody BpmTaskSubSignReqVO reqVO) { 202 + public CommonResult<Boolean> deleteSignTask(@Valid @RequestBody BpmTaskSignDeleteReqVO reqVO) {
113 taskService.deleteSignTask(getLoginUserId(), reqVO); 203 taskService.deleteSignTask(getLoginUserId(), reqVO);
114 return success(true); 204 return success(true);
115 } 205 }
116 206
117 - @GetMapping("children-list")  
118 - @Operation(summary = "获取能被减签的任务")  
119 - @Parameter(name = "parentId", description = "父级任务 ID", required = true)  
120 - @PreAuthorize("@ss.hasPermission('bpm:task:update')")  
121 - public CommonResult<List<BpmTaskSubSignRespVO>> getChildrenTaskList(@RequestParam("parentId") String parentId) {  
122 - return success(taskService.getChildrenTaskList(parentId)); 207 + @GetMapping("/list-by-parent-task-id")
  208 + @Operation(summary = "获得指定父级任务的子任务列表") // 目前用于,减签的时候,获得子任务列表
  209 + @Parameter(name = "parentTaskId", description = "父级任务编号", required = true)
  210 + @PreAuthorize("@ss.hasPermission('bpm:task:query')")
  211 + public CommonResult<List<BpmTaskRespVO>> getTaskListByParentTaskId(@RequestParam("parentTaskId") String parentTaskId) {
  212 + List<Task> taskList = taskService.getTaskListByParentTaskId(parentTaskId);
  213 + if (CollUtil.isEmpty(taskList)) {
  214 + return success(Collections.emptyList());
  215 + }
  216 + // 拼接数据
  217 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSetByFlatMap(taskList,
  218 + user -> Stream.of(NumberUtils.parseLong(user.getAssignee()), NumberUtils.parseLong(user.getOwner()))));
  219 + Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
  220 + convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
  221 + return success(BpmTaskConvert.INSTANCE.buildTaskListByParentTaskId(taskList, userMap, deptMap));
123 } 222 }
124 223
125 } 224 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/activity/BpmActivityRespVO.java
@@ -19,7 +19,7 @@ public class BpmActivityRespVO { @@ -19,7 +19,7 @@ public class BpmActivityRespVO {
19 @Schema(description = "流程活动的结束时间", requiredMode = Schema.RequiredMode.REQUIRED) 19 @Schema(description = "流程活动的结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
20 private LocalDateTime endTime; 20 private LocalDateTime endTime;
21 21
22 - @Schema(description = "关联的流程任务的编号-关联的流程任务,只有 UserTask 等类型才有", example = "2048")  
23 - private String taskId; 22 + @Schema(description = "关联的流程任务的编号", example = "2048")
  23 + private String taskId; // 关联的流程任务,只有 UserTask 等类型才有
24 24
25 } 25 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyPageItemRespVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/cc/BpmProcessInstanceCopyRespVO.java
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance; 1 +package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.cc;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
@@ -7,37 +7,32 @@ import java.time.LocalDateTime; @@ -7,37 +7,32 @@ import java.time.LocalDateTime;
7 7
8 @Schema(description = "管理后台 - 流程实例抄送的分页 Item Response VO") 8 @Schema(description = "管理后台 - 流程实例抄送的分页 Item Response VO")
9 @Data 9 @Data
10 -public class BpmProcessInstanceCopyPageItemRespVO { 10 +public class BpmProcessInstanceCopyRespVO {
11 11
12 - @Schema(description = "抄送主键") 12 + @Schema(description = "抄送主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
13 private Long id; 13 private Long id;
14 14
15 - @Schema(description = "发起人 ID") 15 + @Schema(description = "发起人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
16 private Long startUserId; 16 private Long startUserId;
  17 + @Schema(description = "发起人昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  18 + private String startUserName;
17 19
18 - @Schema(description = "发起人别名")  
19 - private String startUserNickname;  
20 -  
21 - @Schema(description = "流程实例的主键") 20 + @Schema(description = "流程实例编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "A233")
22 private String processInstanceId; 21 private String processInstanceId;
23 -  
24 @Schema(description = "流程实例的名称") 22 @Schema(description = "流程实例的名称")
25 private String processInstanceName; 23 private String processInstanceName;
  24 + @Schema(description = "流程实例的发起时间")
  25 + private LocalDateTime processInstanceStartTime;
26 26
27 @Schema(description = "发起抄送的任务编号") 27 @Schema(description = "发起抄送的任务编号")
28 private String taskId; 28 private String taskId;
29 -  
30 @Schema(description = "发起抄送的任务名称") 29 @Schema(description = "发起抄送的任务名称")
31 private String taskName; 30 private String taskName;
32 31
33 - @Schema(description = "抄送原因")  
34 - private String reason;  
35 -  
36 @Schema(description = "抄送人") 32 @Schema(description = "抄送人")
37 private String creator; 33 private String creator;
38 -  
39 - @Schema(description = "抄送人别名")  
40 - private String creatorNickname; 34 + @Schema(description = "抄送人昵称")
  35 + private String creatorName;
41 36
42 @Schema(description = "抄送时间") 37 @Schema(description = "抄送时间")
43 private LocalDateTime createTime; 38 private LocalDateTime createTime;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import jakarta.validation.constraints.NotBlank;  
5 -import jakarta.validation.constraints.NotEmpty;  
6 -import lombok.Data;  
7 -  
8 -@Schema(description = "管理后台 - 流程实例抄送的创建 Request VO")  
9 -@Data  
10 -public class BpmProcessInstanceCopyCreateReqVO {  
11 -  
12 - @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
13 - @NotEmpty(message = "任务编号不能为空")  
14 - private String taskId;  
15 -  
16 - @Schema(description = "抄送原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "请帮忙审查下!")  
17 - @NotBlank(message = "抄送原因不能为空")  
18 - private String reason;  
19 -  
20 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyMyPageReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyPageReqVO.java
@@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance; @@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;
3 import cn.iocoder.yudao.framework.common.pojo.PageParam; 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data; 5 import lombok.Data;
6 -import lombok.EqualsAndHashCode;  
7 -import lombok.ToString;  
8 import org.springframework.format.annotation.DateTimeFormat; 6 import org.springframework.format.annotation.DateTimeFormat;
9 7
10 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
@@ -13,16 +11,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -13,16 +11,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
13 11
14 @Schema(description = "管理后台 - 流程实例抄送的分页 Request VO") 12 @Schema(description = "管理后台 - 流程实例抄送的分页 Request VO")
15 @Data 13 @Data
16 -@EqualsAndHashCode(callSuper = true)  
17 -@ToString(callSuper = true)  
18 -public class BpmProcessInstanceCopyMyPageReqVO extends PageParam { 14 +public class BpmProcessInstanceCopyPageReqVO extends PageParam {
19 15
20 @Schema(description = "流程名称", example = "芋道") 16 @Schema(description = "流程名称", example = "芋道")
21 private String processInstanceName; 17 private String processInstanceName;
22 18
23 - @Schema(description = "流程编号", example = "123456768")  
24 - private String processInstanceId;  
25 -  
26 @Schema(description = "创建时间") 19 @Schema(description = "创建时间")
27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 20 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 private LocalDateTime[] createTime; 21 private LocalDateTime[] createTime;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCreateReqVO.java
@@ -15,11 +15,10 @@ public class BpmProcessInstanceCreateReqVO { @@ -15,11 +15,10 @@ public class BpmProcessInstanceCreateReqVO {
15 @NotEmpty(message = "流程定义编号不能为空") 15 @NotEmpty(message = "流程定义编号不能为空")
16 private String processDefinitionId; 16 private String processDefinitionId;
17 17
18 - @Schema(description = "变量实例") 18 + @Schema(description = "变量实例(动态表单)")
19 private Map<String, Object> variables; 19 private Map<String, Object> variables;
20 20
21 - // TODO @hai:assignees 复数  
22 - @Schema(description = "提前指派的审批人", requiredMode = Schema.RequiredMode.REQUIRED, example = "{taskKey1: [1, 2]}")  
23 - private Map<String, List<Long>> assignee; 21 + @Schema(description = "发起人自选审批人 Map", example = "{taskKey1: [1, 2]}")
  22 + private Map<String, List<Long>> startUserSelectAssignees;
24 23
25 } 24 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageItemRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -import java.time.LocalDateTime;  
7 -import java.util.List;  
8 -  
9 -@Schema(description = "管理后台 - 流程实例的分页 Item Response VO")  
10 -@Data  
11 -public class BpmProcessInstancePageItemRespVO {  
12 -  
13 - @Schema(description = "流程实例的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
14 - private String id;  
15 -  
16 - @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
17 - private String name;  
18 -  
19 - @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")  
20 - private String processDefinitionId;  
21 -  
22 - @Schema(description = "流程分类-参见 bpm_model_category 数据字典", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
23 - private String category;  
24 -  
25 - @Schema(description = "流程实例的状态-参见 bpm_process_instance_status", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
26 - private Integer status;  
27 -  
28 - @Schema(description = "流程实例的结果-参见 bpm_process_instance_result", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")  
29 - private Integer result;  
30 -  
31 - @Schema(description = "提交时间", requiredMode = Schema.RequiredMode.REQUIRED)  
32 - private LocalDateTime createTime;  
33 -  
34 - @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)  
35 - private LocalDateTime endTime;  
36 -  
37 - /**  
38 - * 当前任务  
39 - */  
40 - private List<Task> tasks;  
41 -  
42 - @Schema(description = "流程任务")  
43 - @Data  
44 - public static class Task {  
45 -  
46 - @Schema(description = "流程任务的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
47 - private String id;  
48 -  
49 - @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
50 - private String name;  
51 -  
52 - }  
53 -  
54 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageParam; 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  5 +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
4 import io.swagger.v3.oas.annotations.media.Schema; 6 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data; 7 import lombok.Data;
6 -import lombok.EqualsAndHashCode;  
7 -import lombok.ToString;  
8 import org.springframework.format.annotation.DateTimeFormat; 8 import org.springframework.format.annotation.DateTimeFormat;
9 9
10 import java.time.LocalDateTime; 10 import java.time.LocalDateTime;
11 11
12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 13
14 -@Schema(description = "管理后台 - 流程实例的分页 Item Response VO") 14 +@Schema(description = "管理后台 - 流程实例分页 Request VO")
15 @Data 15 @Data
16 -@EqualsAndHashCode(callSuper = true)  
17 -@ToString(callSuper = true)  
18 -public class BpmProcessInstanceMyPageReqVO extends PageParam { 16 +public class BpmProcessInstancePageReqVO extends PageParam {
19 17
20 @Schema(description = "流程名称", example = "芋道") 18 @Schema(description = "流程名称", example = "芋道")
21 private String name; 19 private String name;
@@ -23,17 +21,18 @@ public class BpmProcessInstanceMyPageReqVO extends PageParam { @@ -23,17 +21,18 @@ public class BpmProcessInstanceMyPageReqVO extends PageParam {
23 @Schema(description = "流程定义的编号", example = "2048") 21 @Schema(description = "流程定义的编号", example = "2048")
24 private String processDefinitionId; 22 private String processDefinitionId;
25 23
26 - @Schema(description = "流程实例的状态-参见 bpm_process_instance_status", example = "1") 24 + @Schema(description = "流程实例的状态", example = "1")
  25 + @InEnum(BpmProcessInstanceStatusEnum.class)
27 private Integer status; 26 private Integer status;
28 27
29 - @Schema(description = "流程实例的结果-参见 bpm_process_instance_result", example = "2")  
30 - private Integer result;  
31 -  
32 - @Schema(description = "流程分类-参见 bpm_model_category 数据字典", example = "1") 28 + @Schema(description = "流程分类", example = "1")
33 private String category; 29 private String category;
34 30
35 @Schema(description = "创建时间") 31 @Schema(description = "创建时间")
36 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 32 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
37 private LocalDateTime[] createTime; 33 private LocalDateTime[] createTime;
38 34
  35 + @Schema(description = "发起用户编号", example = "1024")
  36 + private Long startUserId; // 注意,只有在【流程实例】菜单,才使用该参数
  37 +
39 } 38 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;
2 2
  3 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
3 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 5 import lombok.Data;
5 6
@@ -17,21 +18,23 @@ public class BpmProcessInstanceRespVO { @@ -17,21 +18,23 @@ public class BpmProcessInstanceRespVO {
17 @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 18 @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
18 private String name; 19 private String name;
19 20
20 - @Schema(description = "流程分类-参见 bpm_model_category 数据字典", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 21 + @Schema(description = "流程分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
21 private String category; 22 private String category;
  23 + @Schema(description = "流程分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "请假")
  24 + private String categoryName;
22 25
23 - @Schema(description = "流程实例的状态-参见 bpm_process_instance_status", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
24 - private Integer status; 26 + @Schema(description = "流程实例的状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  27 + private Integer status; // 参见 BpmProcessInstanceStatusEnum 枚举
25 28
26 - @Schema(description = "流程实例的结果-参见 bpm_process_instance_result", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")  
27 - private Integer result;  
28 -  
29 - @Schema(description = "提交时间", requiredMode = Schema.RequiredMode.REQUIRED)  
30 - private LocalDateTime createTime; 29 + @Schema(description = "发起时间", requiredMode = Schema.RequiredMode.REQUIRED)
  30 + private LocalDateTime startTime;
31 31
32 @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED) 32 @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
33 private LocalDateTime endTime; 33 private LocalDateTime endTime;
34 34
  35 + @Schema(description = "持续时间", example = "1000")
  36 + private Long durationInMillis;
  37 +
35 @Schema(description = "提交的表单值", requiredMode = Schema.RequiredMode.REQUIRED) 38 @Schema(description = "提交的表单值", requiredMode = Schema.RequiredMode.REQUIRED)
36 private Map<String, Object> formVariables; 39 private Map<String, Object> formVariables;
37 40
@@ -43,10 +46,17 @@ public class BpmProcessInstanceRespVO { @@ -43,10 +46,17 @@ public class BpmProcessInstanceRespVO {
43 */ 46 */
44 private User startUser; 47 private User startUser;
45 48
  49 + @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
  50 + private String processDefinitionId;
46 /** 51 /**
47 * 流程定义 52 * 流程定义
48 */ 53 */
49 - private ProcessDefinition processDefinition; 54 + private BpmProcessDefinitionRespVO processDefinition;
  55 +
  56 + /**
  57 + * 当前审批中的任务
  58 + */
  59 + private List<Task> tasks; // 仅在流程实例分页才返回
50 60
51 @Schema(description = "用户信息") 61 @Schema(description = "用户信息")
52 @Data 62 @Data
@@ -64,30 +74,15 @@ public class BpmProcessInstanceRespVO { @@ -64,30 +74,15 @@ public class BpmProcessInstanceRespVO {
64 74
65 } 75 }
66 76
67 - @Schema(description = "流程定义信息") 77 + @Schema(description = "流程任务")
68 @Data 78 @Data
69 - public static class ProcessDefinition { 79 + public static class Task {
70 80
71 - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 81 + @Schema(description = "流程任务的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
72 private String id; 82 private String id;
73 83
74 - @Schema(description = "表单类型-参见 bpm_model_form_type 数据字典", example = "1")  
75 - private Integer formType;  
76 - @Schema(description = "表单编号-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", example = "1024")  
77 - private Long formId;  
78 - @Schema(description = "表单的配置-JSON 字符串。在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", requiredMode = Schema.RequiredMode.REQUIRED)  
79 - private String formConf;  
80 - @Schema(description = "表单项的数组-JSON 字符串的数组。在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空", requiredMode = Schema.RequiredMode.REQUIRED)  
81 - private List<String> formFields;  
82 - @Schema(description = "自定义表单的提交路径,使用 Vue 的路由地址-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空",  
83 - example = "/bpm/oa/leave/create")  
84 - private String formCustomCreatePath;  
85 - @Schema(description = "自定义表单的查看路径,使用 Vue 的路由地址-在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空",  
86 - example = "/bpm/oa/leave/view")  
87 - private String formCustomViewPath;  
88 -  
89 - @Schema(description = "BPMN XML", requiredMode = Schema.RequiredMode.REQUIRED)  
90 - private String bpmnXml; 84 + @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  85 + private String name;
91 86
92 } 87 }
93 88
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskAddSignReqVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -import jakarta.validation.constraints.NotEmpty;  
7 -import java.util.Set;  
8 -  
9 -// TODO @海洋:类名,应该是 create 哈  
10 -@Schema(description = "管理后台 - 加签流程任务的 Request VO")  
11 -@Data  
12 -public class BpmTaskAddSignReqVO {  
13 -  
14 - @Schema(description = "需要加签的任务 ID")  
15 - @NotEmpty(message = "任务编号不能为空")  
16 - private String id;  
17 -  
18 - @Schema(description = "加签的用户 ID")  
19 - @NotEmpty(message = "加签用户 ID 不能为空")  
20 - private Set<Long> userIdList;  
21 -  
22 - @Schema(description = "加签类型,before 向前加签,after 向后加签")  
23 - @NotEmpty(message = "加签类型不能为空")  
24 - private String type;  
25 -  
26 - @Schema(description = "加签原因")  
27 - @NotEmpty(message = "加签原因不能为空")  
28 - private String reason;  
29 -  
30 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskApproveReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;
2 2
3 -import cn.iocoder.yudao.module.bpm.controller.admin.candidate.vo.BpmTaskCandidateRuleVO;  
4 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotEmpty;
5 import lombok.Data; 5 import lombok.Data;
6 6
7 -import jakarta.validation.constraints.NotEmpty; 7 +import java.util.Collection;
  8 +import java.util.Map;
8 9
9 @Schema(description = "管理后台 - 通过流程任务的 Request VO") 10 @Schema(description = "管理后台 - 通过流程任务的 Request VO")
10 @Data 11 @Data
@@ -18,4 +19,10 @@ public class BpmTaskApproveReqVO { @@ -18,4 +19,10 @@ public class BpmTaskApproveReqVO {
18 @NotEmpty(message = "审批意见不能为空") 19 @NotEmpty(message = "审批意见不能为空")
19 private String reason; 20 private String reason;
20 21
  22 + @Schema(description = "抄送的用户编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2")
  23 + private Collection<Long> copyUserIds;
  24 +
  25 + @Schema(description = "变量实例(动态表单)", requiredMode = Schema.RequiredMode.REQUIRED)
  26 + private Map<String, Object> variables;
  27 +
21 } 28 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDelegateReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.Data;  
5 -  
6 import jakarta.validation.constraints.NotEmpty; 4 import jakarta.validation.constraints.NotEmpty;
7 import jakarta.validation.constraints.NotNull; 5 import jakarta.validation.constraints.NotNull;
  6 +import lombok.Data;
8 7
9 @Schema(description = "管理后台 - 委派流程任务的 Request VO") 8 @Schema(description = "管理后台 - 委派流程任务的 Request VO")
10 @Data 9 @Data
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageItemRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import java.time.LocalDateTime;  
9 -  
10 -@Schema(description = "管理后台 - 流程任务的 Done 已完成的分页项 Response VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class BpmTaskDonePageItemRespVO extends BpmTaskTodoPageItemRespVO {  
15 -  
16 - @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)  
17 - private LocalDateTime endTime;  
18 - @Schema(description = "持续时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")  
19 - private Long durationInMillis;  
20 -  
21 - @Schema(description = "任务结果-参见 bpm_process_instance_result", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")  
22 - private Integer result;  
23 - @Schema(description = "审批建议", requiredMode = Schema.RequiredMode.REQUIRED, example = "不请假了!")  
24 - private String reason;  
25 -  
26 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskPageReqVO.java
@@ -10,13 +10,9 @@ import org.springframework.format.annotation.DateTimeFormat; @@ -10,13 +10,9 @@ import org.springframework.format.annotation.DateTimeFormat;
10 10
11 import java.time.LocalDateTime; 11 import java.time.LocalDateTime;
12 12
13 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
14 -  
15 -@Schema(description = "管理后台 - 流程任务的 TODO 待办的分页 Request VO") 13 +@Schema(description = "管理后台 - 流程任务的的分页 Request VO") // 待办、已办,都使用该分页
16 @Data 14 @Data
17 -@EqualsAndHashCode(callSuper = true)  
18 -@ToString(callSuper = true)  
19 -public class BpmTaskTodoPageReqVO extends PageParam { 15 +public class BpmTaskPageReqVO extends PageParam {
20 16
21 @Schema(description = "流程任务名", example = "芋道") 17 @Schema(description = "流程任务名", example = "芋道")
22 private String name; 18 private String name;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;
2 2
  3 +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceRespVO;
3 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 5 import lombok.Data;
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 6
  7 +import java.time.LocalDateTime;
8 import java.util.List; 8 import java.util.List;
  9 +import java.util.Map;
9 10
10 -@Schema(description = "管理后台 - 流程任务的 Response VO") 11 +@Schema(description = "管理后台 - 流程任务 Response VO")
11 @Data 12 @Data
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class BpmTaskRespVO extends BpmTaskDonePageItemRespVO { 13 +public class BpmTaskRespVO {
15 14
16 - @Schema(description = "任务定义的标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "user-001")  
17 - private String definitionKey; 15 + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  16 + private String id;
18 17
  18 + @Schema(description = "任务名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  19 + private String name;
  20 +
  21 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  22 + private LocalDateTime createTime;
  23 +
  24 + @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
  25 + private LocalDateTime endTime;
  26 +
  27 + @Schema(description = "持续时间", example = "1000")
  28 + private Long durationInMillis;
  29 +
  30 + @Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
  31 + private Integer status; // 参见 BpmTaskStatusEnum 枚举
  32 +
  33 + @Schema(description = "审批理由", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
  34 + private String reason;
  35 +
  36 + /**
  37 + * 负责人的用户信息
  38 + */
  39 + private BpmProcessInstanceRespVO.User ownerUser;
19 /** 40 /**
20 * 审核的用户信息 41 * 审核的用户信息
21 */ 42 */
22 - private User assigneeUser; 43 + private BpmProcessInstanceRespVO.User assigneeUser;
23 44
  45 + @Schema(description = "任务定义的标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "Activity_one")
  46 + private String taskDefinitionKey;
  47 +
  48 + @Schema(description = "所属流程实例编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8888")
  49 + private String processInstanceId;
24 /** 50 /**
25 - * 父任务ID 51 + * 所属流程实例
26 */ 52 */
27 - private String parentTaskId; 53 + private ProcessInstance processInstance;
28 54
29 - @Schema(description = "子任务(由加签生成)", requiredMode = Schema.RequiredMode.REQUIRED, example = "childrenTask") 55 + @Schema(description = "父任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  56 + private String parentTaskId;
  57 + @Schema(description = "子任务列表(由加签生成)", requiredMode = Schema.RequiredMode.REQUIRED, example = "childrenTask")
30 private List<BpmTaskRespVO> children; 58 private List<BpmTaskRespVO> children;
31 59
32 - @Schema(description = "用户信息") 60 + @Schema(description = "表单编号", example = "1024")
  61 + private Long formId;
  62 + @Schema(description = "表单名字", example = "请假表单")
  63 + private String formName;
  64 + @Schema(description = "表单的配置-JSON 字符串")
  65 + private String formConf;
  66 + @Schema(description = "表单项的数组")
  67 + private List<String> formFields;
  68 + @Schema(description = "提交的表单值", requiredMode = Schema.RequiredMode.REQUIRED)
  69 + private Map<String, Object> formVariables;
  70 +
33 @Data 71 @Data
34 - public static class User { 72 + @Schema(description = "流程实例")
  73 + public static class ProcessInstance {
35 74
36 - @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
37 - private Long id;  
38 - @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")  
39 - private String nickname; 75 + @Schema(description = "流程实例编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  76 + private String id;
40 77
41 - @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
42 - private Long deptId;  
43 - @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部")  
44 - private String deptName; 78 + @Schema(description = "流程实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  79 + private String name;
  80 +
  81 + @Schema(description = "提交时间", requiredMode = Schema.RequiredMode.REQUIRED)
  82 + private LocalDateTime createTime;
  83 +
  84 + @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
  85 + private String processDefinitionId;
  86 +
  87 + /**
  88 + * 发起人的用户信息
  89 + */
  90 + private BpmProcessInstanceRespVO.User startUser;
45 91
46 } 92 }
  93 +
47 } 94 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskReturnReqVO.java
@@ -15,7 +15,7 @@ public class BpmTaskReturnReqVO { @@ -15,7 +15,7 @@ public class BpmTaskReturnReqVO {
15 15
16 @Schema(description = "回退到的任务 Key", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 16 @Schema(description = "回退到的任务 Key", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
17 @NotEmpty(message = "回退到的任务 Key 不能为空") 17 @NotEmpty(message = "回退到的任务 Key 不能为空")
18 - private String targetDefinitionKey; 18 + private String targetTaskDefinitionKey;
19 19
20 @Schema(description = "回退意见", requiredMode = Schema.RequiredMode.REQUIRED, example = "我就是想驳回") 20 @Schema(description = "回退意见", requiredMode = Schema.RequiredMode.REQUIRED, example = "我就是想驳回")
21 @NotEmpty(message = "回退意见不能为空") 21 @NotEmpty(message = "回退意见不能为空")
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskSignCreateReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import jakarta.validation.constraints.NotEmpty;
  7 +import java.util.Set;
  8 +
  9 +@Schema(description = "管理后台 - 加签任务的创建(加签) Request VO")
  10 +@Data
  11 +public class BpmTaskSignCreateReqVO {
  12 +
  13 + @Schema(description = "需要加签的任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  14 + @NotEmpty(message = "任务编号不能为空")
  15 + private String id;
  16 +
  17 + @Schema(description = "加签的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
  18 + @NotEmpty(message = "加签用户不能为空")
  19 + private Set<Long> userIds;
  20 +
  21 + @Schema(description = "加签类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "before")
  22 + @NotEmpty(message = "加签类型不能为空")
  23 + private String type; // 参见 BpmTaskSignTypeEnum 枚举
  24 +
  25 + @Schema(description = "加签原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "需要加签")
  26 + @NotEmpty(message = "加签原因不能为空")
  27 + private String reason;
  28 +
  29 +}
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskSubSignReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskSignDeleteReqVO.java
@@ -5,16 +5,16 @@ import lombok.Data; @@ -5,16 +5,16 @@ import lombok.Data;
5 5
6 import jakarta.validation.constraints.NotEmpty; 6 import jakarta.validation.constraints.NotEmpty;
7 7
8 -// TODO @海洋:类名,应该是 delete 哈  
9 -@Schema(description = "管理后台 - 减签流程任务的 Request VO") 8 +@Schema(description = "管理后台 - 加签任务的删除(减签) Request VO")
10 @Data 9 @Data
11 -public class BpmTaskSubSignReqVO { 10 +public class BpmTaskSignDeleteReqVO {
12 11
13 - @Schema(description = "被减签的任务 ID") 12 + @Schema(description = "被减签的任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
14 @NotEmpty(message = "任务编号不能为空") 13 @NotEmpty(message = "任务编号不能为空")
15 private String id; 14 private String id;
16 15
17 - @Schema(description = "加签原因") 16 + @Schema(description = "加签原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "需要减签")
18 @NotEmpty(message = "加签原因不能为空") 17 @NotEmpty(message = "加签原因不能为空")
19 private String reason; 18 private String reason;
  19 +
20 } 20 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskSimpleRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -@Schema(description = "管理后台 - 流程任务的精简 Response VO")  
7 -@Data  
8 -public class BpmTaskSimpleRespVO {  
9 -  
10 - @Schema(description = "任务定义的标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "Activity_one")  
11 - private String definitionKey;  
12 -  
13 - @Schema(description = "任务名词", requiredMode = Schema.RequiredMode.REQUIRED, example = "经理审批")  
14 - private String name;  
15 -  
16 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskSubSignRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -@Schema(description = "管理后台 - 减签流程任务的 Response VO")  
7 -@Data  
8 -public class BpmTaskSubSignRespVO {  
9 - @Schema(description = "审核的用户信息", requiredMode = Schema.RequiredMode.REQUIRED, example = "小李")  
10 - private BpmTaskRespVO.User assigneeUser;  
11 - @Schema(description = "任务 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12312")  
12 - private String id;  
13 - @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "经理审批")  
14 - private String name;  
15 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageItemRespVO.java deleted
1 -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -import java.time.LocalDateTime;  
7 -  
8 -@Schema(description = "管理后台 - 流程任务的 Running 进行中的分页项 Response VO")  
9 -@Data  
10 -public class BpmTaskTodoPageItemRespVO {  
11 -  
12 - @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
13 - private String id;  
14 -  
15 - @Schema(description = "任务名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
16 - private String name;  
17 -  
18 - @Schema(description = "接收时间", requiredMode = Schema.RequiredMode.REQUIRED)  
19 - private LocalDateTime claimTime;  
20 -  
21 - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)  
22 - private LocalDateTime createTime;  
23 -  
24 - @Schema(description = "激活状态-参见 SuspensionState 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
25 - private Integer suspensionState;  
26 -  
27 - /**  
28 - * 所属流程实例  
29 - */  
30 - private ProcessInstance processInstance;  
31 -  
32 - @Data  
33 - @Schema(description = "流程实例")  
34 - public static class ProcessInstance {  
35 -  
36 - @Schema(description = "流程实例编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
37 - private String id;  
38 -  
39 - @Schema(description = "流程实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")  
40 - private String name;  
41 -  
42 - @Schema(description = "发起人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
43 - private Long startUserId;  
44 -  
45 - @Schema(description = "发起人的用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")  
46 - private String startUserNickname;  
47 -  
48 - @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")  
49 - private String processDefinitionId;  
50 -  
51 - }  
52 -  
53 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskUpdateAssigneeReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskTransferReqVO.java
@@ -6,9 +6,9 @@ import lombok.Data; @@ -6,9 +6,9 @@ import lombok.Data;
6 import jakarta.validation.constraints.NotEmpty; 6 import jakarta.validation.constraints.NotEmpty;
7 import jakarta.validation.constraints.NotNull; 7 import jakarta.validation.constraints.NotNull;
8 8
9 -@Schema(description = "管理后台 - 流程任务的更新负责人的 Request VO") 9 +@Schema(description = "管理后台 - 流程任务的转办 Request VO")
10 @Data 10 @Data
11 -public class BpmTaskUpdateAssigneeReqVO { 11 +public class BpmTaskTransferReqVO {
12 12
13 @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 13 @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
14 @NotEmpty(message = "任务编号不能为空") 14 @NotEmpty(message = "任务编号不能为空")
@@ -18,4 +18,8 @@ public class BpmTaskUpdateAssigneeReqVO { @@ -18,4 +18,8 @@ public class BpmTaskUpdateAssigneeReqVO {
18 @NotNull(message = "新审批人的用户编号不能为空") 18 @NotNull(message = "新审批人的用户编号不能为空")
19 private Long assigneeUserId; 19 private Long assigneeUserId;
20 20
  21 + @Schema(description = "转办原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "做不了决定,需要你先帮忙瞅瞅")
  22 + @NotEmpty(message = "转办原因不能为空")
  23 + private String reason;
  24 +
21 } 25 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/cc/BpmProcessInstanceCopyConvert.java deleted
1 -package cn.iocoder.yudao.module.bpm.convert.cc;  
2 -  
3 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
4 -import cn.iocoder.yudao.framework.common.util.collection.MapUtils;  
5 -import cn.iocoder.yudao.framework.common.util.object.BeanUtils;  
6 -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO;  
7 -import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO;  
8 -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;  
9 -import org.mapstruct.Mapper;  
10 -import org.mapstruct.factory.Mappers;  
11 -  
12 -import java.util.List;  
13 -import java.util.Map;  
14 -  
15 -/**  
16 - * 流程抄送 Convert  
17 - *  
18 - * @author 芋艿  
19 - */  
20 -@Mapper  
21 -public interface BpmProcessInstanceCopyConvert {  
22 -  
23 - BpmProcessInstanceCopyConvert INSTANCE = Mappers.getMapper(BpmProcessInstanceCopyConvert.class);  
24 -  
25 - default PageResult<BpmProcessInstanceCopyPageItemRespVO> convertPage(PageResult<BpmProcessInstanceCopyDO> page,  
26 - Map<String, String> taskNameMap,  
27 - Map<String, String> processInstaneNameMap,  
28 - Map<Long, AdminUserRespDTO> userMap) {  
29 - List<BpmProcessInstanceCopyPageItemRespVO> list = BeanUtils.toBean(page.getList(),  
30 - BpmProcessInstanceCopyPageItemRespVO.class,  
31 - copy -> {  
32 - MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), user -> user.setNickname(user.getNickname()));  
33 - MapUtils.findAndThen(userMap, copy.getStartUserId(), user -> copy.setStartUserNickname(user.getNickname()));  
34 - MapUtils.findAndThen(taskNameMap, copy.getTaskId(), copy::setTaskName);  
35 - MapUtils.findAndThen(processInstaneNameMap, copy.getProcessInstanceId(), copy::setProcessInstanceName);  
36 - });  
37 - return new PageResult<>(list, page.getTotal());  
38 - }  
39 -  
40 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmFormConvert.java deleted
1 -package cn.iocoder.yudao.module.bpm.convert.definition;  
2 -  
3 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormCreateReqVO;  
4 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormRespVO;  
5 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormSimpleRespVO;  
6 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormUpdateReqVO;  
7 -import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;  
8 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
9 -import org.mapstruct.Mapper;  
10 -import org.mapstruct.factory.Mappers;  
11 -  
12 -import java.util.List;  
13 -  
14 -/**  
15 - * 动态表单 Convert  
16 - *  
17 - * @author 芋艿  
18 - */  
19 -@Mapper  
20 -public interface BpmFormConvert {  
21 -  
22 - BpmFormConvert INSTANCE = Mappers.getMapper(BpmFormConvert.class);  
23 -  
24 - BpmFormDO convert(BpmFormCreateReqVO bean);  
25 -  
26 - BpmFormDO convert(BpmFormUpdateReqVO bean);  
27 -  
28 - BpmFormRespVO convert(BpmFormDO bean);  
29 -  
30 - List<BpmFormSimpleRespVO> convertList2(List<BpmFormDO> list);  
31 -  
32 - PageResult<BpmFormRespVO> convertPage(PageResult<BpmFormDO> page);  
33 -  
34 -}