From 343d5d21d8439065df508744829ea9297848f15e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 11:15:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/oracle/oracle_ry_workflow.sql | 14 +++---- script/sql/postgres/postgres_ry_workflow.sql | 15 +++---- .../sql/sqlserver/sqlserver_ry_workflow.sql | 26 ++++++------ .../sql/update/oracle/update_5.4.1-5.5.0.sql | 7 ++++ .../update/postgres/update_5.4.1-5.5.0.sql | 10 +++++ .../update/sqlserver/update_5.4.1-5.5.0.sql | 40 ++++++++++++++++--- 6 files changed, 79 insertions(+), 33 deletions(-) diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql index a56806648..1a9b99001 100644 --- a/script/sql/oracle/oracle_ry_workflow.sql +++ b/script/sql/oracle/oracle_ry_workflow.sql @@ -379,13 +379,6 @@ COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); -INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, SYSDATE, 1, SYSDATE, '流程达式定义菜单'); -INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); - -- ---------------------------- -- 请假单信息 -- ---------------------------- @@ -443,6 +436,13 @@ INSERT INTO sys_menu VALUES ('11625', '流程分类修改', '11622', '3', '#', ' INSERT INTO sys_menu VALUES ('11626', '流程分类删除', '11622', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11627', '流程分类导出', '11622', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, SYSDATE, 1, SYSDATE, '流程达式定义菜单'); +INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); + INSERT INTO sys_menu VALUES ('11638', '请假申请', '5', '1', 'leave', 'workflow/leave/index', '', '1', '0', 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, SYSDATE, NULL, NULL, '请假申请菜单'); INSERT INTO sys_menu VALUES ('11639', '请假申请查询', '11638', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11640', '请假申请新增', '11638', '2', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql index 7d863575e..072b10623 100644 --- a/script/sql/postgres/postgres_ry_workflow.sql +++ b/script/sql/postgres/postgres_ry_workflow.sql @@ -359,13 +359,6 @@ COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, now(), 1, now()); INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, now(), 1, now()); -INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, now(), 1, now(), '流程达式定义菜单'); -INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); - -- ---------------------------- -- 请假单信息 -- ---------------------------- @@ -421,6 +414,14 @@ INSERT INTO sys_menu VALUES ('11624', '流程分类新增', '11622', '2', '#', ' INSERT INTO sys_menu VALUES ('11625', '流程分类修改', '11622', '3', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:edit', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11626', '流程分类删除', '11622', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:remove', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11627', '流程分类导出', '11622', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:export', '#', 103, 1, now(), NULL, NULL, ''); + +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, now(), 1, now(), '流程达式定义菜单'); +INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); + INSERT INTO sys_menu VALUES ('11638', '请假申请', '5', '1', 'leave', 'workflow/leave/index', '', '1', '0', 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, now(), NULL, NULL, '请假申请菜单'); INSERT INTO sys_menu VALUES ('11639', '请假申请查询', '11638', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11640', '请假申请新增', '11638', '2', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, now(), NULL, NULL, ''); diff --git a/script/sql/sqlserver/sqlserver_ry_workflow.sql b/script/sql/sqlserver/sqlserver_ry_workflow.sql index 4a7c86be2..b5ba9402e 100644 --- a/script/sql/sqlserver/sqlserver_ry_workflow.sql +++ b/script/sql/sqlserver/sqlserver_ry_workflow.sql @@ -1261,19 +1261,6 @@ GO INSERT flow_spel VALUES (2, NULL, NULL, N'initiator', N'${initiator}', N'流程发起人', N'0', N'0', 103, 1, GETDATE(), 1, GETDATE()); GO -INSERT sys_menu VALUES (N'11801', N'流程表达式', N'11616', 2, N'spel', N'workflow/spel/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:spel:list', N'input', 103, 1, GETDATE(), 1, GETDATE(), N'流程达式定义菜单'); -GO -INSERT sys_menu VALUES (N'11802', N'流程spel达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); -GO -INSERT sys_menu VALUES (N'11803', N'流程spel达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); -GO -INSERT sys_menu VALUES (N'11804', N'流程spel达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); -GO -INSERT sys_menu VALUES (N'11805', N'流程spel达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); -GO -INSERT sys_menu VALUES (N'11806', N'流程spel达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); -GO - CREATE TABLE test_leave ( id bigint NOT NULL, tenant_id nvarchar(20) DEFAULT('000000') NULL, @@ -1431,6 +1418,19 @@ GO INSERT sys_menu VALUES (11627, N'流程分类导出', 11622, 5, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:category:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO +INSERT sys_menu VALUES (11801, N'流程表达式', N'11616', 2, N'spel', N'workflow/spel/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:spel:list', N'input', 103, 1, GETDATE(), 1, GETDATE(), N'流程达式定义菜单'); +GO +INSERT sys_menu VALUES (11802, N'流程spel达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +GO +INSERT sys_menu VALUES (11803, N'流程spel达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +GO +INSERT sys_menu VALUES (11804, N'流程spel达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +GO +INSERT sys_menu VALUES (11805, N'流程spel达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +GO +INSERT sys_menu VALUES (11806, N'流程spel达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +GO + -- 请假测试相关按钮 INSERT sys_menu VALUES (11638, N'请假申请', 5, 1, N'leave', N'workflow/leave/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:leave:list', N'#', 103, 1, GETDATE(), NULL, NULL, N'请假申请菜单'); GO diff --git a/script/sql/update/oracle/update_5.4.1-5.5.0.sql b/script/sql/update/oracle/update_5.4.1-5.5.0.sql index e3236abc5..9efc8abd8 100644 --- a/script/sql/update/oracle/update_5.4.1-5.5.0.sql +++ b/script/sql/update/oracle/update_5.4.1-5.5.0.sql @@ -44,3 +44,10 @@ INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3 INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); +ALTER TABLE flow_definition ADD model_value VARCHAR2(40) DEFAULT 'CLASSICS' NOT NULL; +COMMENT ON COLUMN flow_definition.model_value IS '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)'; + +UPDATE flow_skip SET skip_condition = REPLACE(skip_condition, 'notNike', 'notLike'); + +ALTER TABLE flow_his_task MODIFY (collaborator VARCHAR2(500) DEFAULT NULL NULL); +COMMENT ON COLUMN flow_his_task.collaborator IS '协作人'; diff --git a/script/sql/update/postgres/update_5.4.1-5.5.0.sql b/script/sql/update/postgres/update_5.4.1-5.5.0.sql index 6f3b86b95..622a006da 100644 --- a/script/sql/update/postgres/update_5.4.1-5.5.0.sql +++ b/script/sql/update/postgres/update_5.4.1-5.5.0.sql @@ -43,3 +43,13 @@ INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3 INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); +ALTER TABLE flow_definition ADD COLUMN model_value VARCHAR(40) NOT NULL DEFAULT 'CLASSICS'; +COMMENT ON COLUMN flow_definition.model_value IS '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)'; + +UPDATE flow_skip SET skip_condition = REPLACE(skip_condition, 'notNike', 'notLike'); + +ALTER TABLE flow_his_task + ALTER COLUMN collaborator DROP NOT NULL, + ALTER COLUMN collaborator SET DEFAULT NULL, + ALTER COLUMN collaborator TYPE VARCHAR(500); +COMMENT ON COLUMN flow_his_task.collaborator IS '协作人'; diff --git a/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql b/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql index 2005df4f8..1d7dc0c7b 100644 --- a/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql +++ b/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql @@ -121,16 +121,44 @@ GO INSERT flow_spel VALUES (2, NULL, NULL, N'initiator', N'${initiator}', N'流程发起人', N'0', N'0', 103, 1, GETDATE(), 1, GETDATE()); GO -INSERT sys_menu VALUES (N'11801', N'流程表达式', N'11616', 2, N'spel', N'workflow/spel/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:spel:list', N'input', 103, 1, GETDATE(), 1, GETDATE(), N'流程达式定义菜单'); +INSERT sys_menu VALUES (11801, N'流程表达式', N'11616', 2, N'spel', N'workflow/spel/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:spel:list', N'input', 103, 1, GETDATE(), 1, GETDATE(), N'流程达式定义菜单'); GO -INSERT sys_menu VALUES (N'11802', N'流程spel达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11802, N'流程spel达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (N'11803', N'流程spel达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11803, N'流程spel达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (N'11804', N'流程spel达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11804, N'流程spel达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (N'11805', N'流程spel达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11805, N'流程spel达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (N'11806', N'流程spel达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11806, N'流程spel达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO +ALTER TABLE flow_definition ADD model_value VARCHAR(40) NOT NULL CONSTRAINT DF_flow_definition_model_value DEFAULT 'CLASSICS'; +GO +EXEC sp_addextendedproperty +'MS_Description', N'设计器模型(CLASSICS经典模型 MIMIC仿钉钉模型)', +'SCHEMA', N'dbo', +'TABLE', N'flow_definition', +'COLUMN', N'model_value' +GO +UPDATE flow_skip SET skip_condition = REPLACE(skip_condition, 'notNike', 'notLike'); +GO +ALTER TABLE flow_his_task ALTER COLUMN collaborator VARCHAR(500) NULL; +GO +IF ((SELECT COUNT(*) FROM ::fn_listextendedproperty('MS_Description', +'SCHEMA', N'dbo', +'TABLE', N'flow_his_task', +'COLUMN', N'collaborator')) > 0) + EXEC sp_updateextendedproperty +'MS_Description', N'协作人', +'SCHEMA', N'dbo', +'TABLE', N'flow_his_task', +'COLUMN', N'collaborator' +ELSE + EXEC sp_addextendedproperty +'MS_Description', N'协作人', +'SCHEMA', N'dbo', +'TABLE', N'flow_his_task', +'COLUMN', N'collaborator' +GO From 6c33fa48ecbaa1e6d2ac1315fe0c9430548194b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 14:32:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?update=20snailjob=201.6.0=20=3D>=201.7.0(?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9A=84=E7=BD=91=E5=8D=A1=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=9C=89=E5=BC=82=E5=B8=B8=E7=AD=89=E5=BE=85=E5=AE=98=E6=96=B9?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E4=B8=8D=E8=80=BD=E8=AF=AF=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E4=BD=BF=E7=94=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../src/main/resources/application-dev.yml | 2 - .../src/main/resources/application-prod.yml | 2 - .../src/main/resources/application-dev.yml | 2 - .../src/main/resources/application-prod.yml | 2 - .../dromara/job/snailjob/AlipayBillTask.java | 2 +- .../dromara/job/snailjob/SummaryBillTask.java | 2 +- .../job/snailjob/TestAnnoJobExecutor.java | 2 +- .../job/snailjob/TestBroadcastJob.java | 2 +- .../job/snailjob/TestClassJobExecutor.java | 2 +- .../job/snailjob/TestMapJobAnnotation.java | 2 +- .../snailjob/TestMapReduceAnnotation1.java | 2 +- .../job/snailjob/TestStaticShardingJob.java | 2 +- .../dromara/job/snailjob/WechatBillTask.java | 2 +- .../warm/flow/ui/service/WarmFlowService.java | 339 ++++++++++++++++++ 15 files changed, 349 insertions(+), 18 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java diff --git a/pom.xml b/pom.xml index b2acdb4de..7aabad563 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 3.50.0 2.2.7 4.3.1 - 1.6.0 + 1.7.0 1.4.8 0.2.0 1.18.38 diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5dd2e00fe..1b52fab96 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -27,8 +27,6 @@ snail-job: port: 2${server.port} # 客户端ip指定 host: - # RPC类型: netty, grpc - rpc-type: grpc --- # 数据源配置 spring: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 435a9e856..d77ddf57c 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -30,8 +30,6 @@ snail-job: port: 2${server.port} # 客户端ip指定 host: - # RPC类型: netty, grpc - rpc-type: grpc --- # 数据源配置 spring: diff --git a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml index 62b4846ab..1e386db00 100644 --- a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml +++ b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml @@ -34,8 +34,6 @@ snail-job: summary-day: 7 # 配置负载均衡周期时间 load-balance-cycle-time: 10 - # 通知类型默认使用grpc(netty 已经下线) - rpc-type: grpc # 重试任务拉取的并行度 retry-max-pull-parallel: 2 diff --git a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml index 62b4846ab..1e386db00 100644 --- a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml +++ b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml @@ -34,8 +34,6 @@ snail-job: summary-day: 7 # 配置负载均衡周期时间 load-balance-cycle-time: 10 - # 通知类型默认使用grpc(netty 已经下线) - rpc-type: grpc # 重试任务拉取的并行度 retry-max-pull-parallel: 2 diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java index b8ad8cc39..d5c3ea734 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java @@ -4,8 +4,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.dromara.common.json.utils.JsonUtils; import org.dromara.job.entity.BillDto; import org.springframework.stereotype.Component; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java index bff15f97e..47d730584 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java @@ -3,8 +3,8 @@ package org.dromara.job.snailjob; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.dromara.common.json.utils.JsonUtils; import org.dromara.job.entity.BillDto; import org.springframework.stereotype.Component; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java index e5339f5b4..aa3d99e4c 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java @@ -2,9 +2,9 @@ package org.dromara.job.snailjob; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; /** diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java index d77e72e6c..9cb830936 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java @@ -3,8 +3,8 @@ package org.dromara.job.snailjob; import cn.hutool.core.util.RandomUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java index 6f7c21fb6..93da0a903 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java @@ -2,7 +2,7 @@ package org.dromara.job.snailjob; import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.job.core.executor.AbstractJobExecutor; -import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; /** diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java index 6589ed1c5..f58d7724a 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java @@ -6,8 +6,8 @@ import com.aizuda.snailjob.client.job.core.MapHandler; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.annotation.MapExecutor; import com.aizuda.snailjob.client.job.core.dto.MapArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; import java.util.List; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java index 4ae2fa80a..f926016f9 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java @@ -8,8 +8,8 @@ import com.aizuda.snailjob.client.job.core.annotation.MapExecutor; import com.aizuda.snailjob.client.job.core.annotation.ReduceExecutor; import com.aizuda.snailjob.client.job.core.dto.MapArgs; import com.aizuda.snailjob.client.job.core.dto.ReduceArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; import java.util.List; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java index 11a69733e..060fcd4d6 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java @@ -3,8 +3,8 @@ package org.dromara.job.snailjob; import cn.hutool.core.convert.Convert; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; /** diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java index d8caf1af0..e19a48ea9 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java @@ -4,8 +4,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.dromara.common.json.utils.JsonUtils; import org.dromara.job.entity.BillDto; import org.springframework.stereotype.Component; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java new file mode 100644 index 000000000..e72474699 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java @@ -0,0 +1,339 @@ +/* + * Copyright 2024-2025, Warm-Flow (290631660@qq.com). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.dromara.warm.flow.ui.service; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.warm.flow.core.FlowEngine; +import org.dromara.warm.flow.core.config.WarmFlow; +import org.dromara.warm.flow.core.dto.*; +import org.dromara.warm.flow.core.entity.Form; +import org.dromara.warm.flow.core.entity.Instance; +import org.dromara.warm.flow.core.enums.FormCustomEnum; +import org.dromara.warm.flow.core.enums.ModeEnum; +import org.dromara.warm.flow.core.exception.FlowException; +import org.dromara.warm.flow.core.invoker.FrameInvoker; +import org.dromara.warm.flow.core.utils.ExceptionUtil; +import org.dromara.warm.flow.core.utils.StreamUtils; +import org.dromara.warm.flow.core.utils.StringUtils; +import org.dromara.warm.flow.ui.dto.HandlerFeedBackDto; +import org.dromara.warm.flow.ui.dto.HandlerQuery; +import org.dromara.warm.flow.ui.utils.TreeUtil; +import org.dromara.warm.flow.ui.vo.*; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 设计器Controller 可选择是否放行,放行可与业务系统共享权限,主要是用来访问业务系统数据 + * + * @author warm + */ +@Slf4j +public class WarmFlowService { + + /** + * 返回流程定义的配置 + * @return ApiResult + */ + public static ApiResult config() { + WarmFlowVo warmFlowVo = new WarmFlowVo(); + WarmFlow warmFlow = FlowEngine.getFlowConfig(); + // 获取tokenName + String tokenName = warmFlow.getTokenName(); + if (StringUtils.isEmpty(tokenName)) { + return ApiResult.fail("未配置tokenName"); + } + String[] tokenNames = tokenName.split(","); + List tokenNameList = Arrays.stream(tokenNames).filter(StringUtils::isNotEmpty) + .map(String::trim).collect(Collectors.toList()); + warmFlowVo.setTokenNameList(tokenNameList); + + return ApiResult.ok(warmFlowVo); + } + + /** + * 保存流程json字符串 + * + * @param defJson 流程数据集合 + * @return ApiResult + * @throws Exception 异常 + * @author xiarg + * @since 2024/10/29 16:31 + */ + public static ApiResult saveJson(DefJson defJson) throws Exception { + FlowEngine.defService().saveDef(defJson); + return ApiResult.ok(); + } + + /** + * 获取流程定义数据(包含节点和跳转) + * + * @param id 流程定义id + * @return ApiResult + * @author xiarg + * @since 2024/10/29 16:31 + */ + public static ApiResult queryDef(Long id) { + try { + DefJson defJson; + if (id == null) { + defJson = new DefJson() + .setModelValue(ModeEnum.CLASSICS.name()) + .setFormCustom(FormCustomEnum.N.name()); + } else { + defJson = FlowEngine.defService().queryDesign(id); + } + CategoryService categoryService = FrameInvoker.getBean(CategoryService.class); + if (categoryService != null) { + List treeList = categoryService.queryCategory(); + defJson.setCategoryList(TreeUtil.buildTree(treeList)); + } + return ApiResult.ok(defJson); + } catch (Exception e) { + log.error("获取流程json字符串", e); + throw new FlowException(ExceptionUtil.handleMsg("获取流程json字符串失败", e)); + } + } + + /** + * 获取流程图 + * + * @param id 流程实例id + * @return ApiResult + */ + public static ApiResult queryFlowChart(Long id) { + try { + Instance instance = FlowEngine.insService().getById(id); + String defJsonStr = instance.getDefJson(); + DefJson defJson = FlowEngine.jsonConvert.strToBean(defJsonStr, DefJson.class); + if (StringUtils.isEmpty(defJson.getModelValue())) { + defJson.setModelValue(ModeEnum.CLASSICS.name()); + } + defJson.setInstance(instance); + + // 获取流程图三原色 + defJson.setChartStatusColor(FlowEngine.chartService().getChartRgb()); + // 是否显示流程图顶部文字 + defJson.setTopTextShow(FlowEngine.getFlowConfig().isTopTextShow()); + // 需要业务系统实现该接口 + ChartExtService chartExtService = FrameInvoker.getBean(ChartExtService.class); + if (chartExtService != null) { + chartExtService.initPromptContent(defJson); + chartExtService.execute(defJson); + } + + return ApiResult.ok(defJson); + } catch (Exception e) { + log.error("获取流程图", e); + throw new FlowException(ExceptionUtil.handleMsg("获取流程图失败", e)); + } + } + + /** + * 办理人权限设置列表tabs页签 + * @return List + */ + public static ApiResult> handlerType() { + try { + // 需要业务系统实现该接口 + HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); + if (handlerSelectService == null) { + return ApiResult.ok(Collections.emptyList()); + } + List handlerType = handlerSelectService.getHandlerType(); + return ApiResult.ok(handlerType); + } catch (Exception e) { + log.error("办理人权限设置列表tabs页签异常", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表tabs页签失败", e)); + } + } + + /** + * 办理人权限设置列表结果 + * @return HandlerSelectVo + */ + public static ApiResult handlerResult(HandlerQuery query) { + try { + // 需要业务系统实现该接口 + HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); + if (handlerSelectService == null) { + return ApiResult.ok(new HandlerSelectVo()); + } + HandlerSelectVo handlerSelectVo = handlerSelectService.getHandlerSelect(query); + return ApiResult.ok(handlerSelectVo); + } catch (Exception e) { + log.error("办理人权限设置列表结果异常", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表结果失败", e)); + } + } + + /** + * 办理人权限名称回显 + * @return HandlerSelectVo + */ + public static ApiResult> handlerFeedback(HandlerFeedBackDto handlerFeedBackDto) { + try { + // 需要业务系统实现该接口 + HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); + if (handlerSelectService == null) { + List handlerFeedBackVos = StreamUtils.toList(handlerFeedBackDto.getStorageIds(), + storageId -> new HandlerFeedBackVo(storageId, null)); + return ApiResult.ok(handlerFeedBackVos); + } + List handlerFeedBackVos = handlerSelectService.handlerFeedback(handlerFeedBackDto.getStorageIds()); + return ApiResult.ok(handlerFeedBackVos); + } catch (Exception e) { + log.error("办理人权限名称回显", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限名称回显", e)); + } + } + + /** + * 办理人选择项 + * @return List + */ + public static ApiResult> handlerDict() { + try { + // 需要业务系统实现该接口 + HandlerDictService handlerDictService = FrameInvoker.getBean(HandlerDictService.class); + if (handlerDictService == null) { + List dictList = new ArrayList<>(); + Dict dict = new Dict(); + dict.setLabel("默认表达式"); + dict.setValue("${handler}"); + Dict dict1 = new Dict(); + dict1.setLabel("spel表达式"); + dict1.setValue("#{@user.evalVar(#handler)}"); + Dict dict2 = new Dict(); + dict2.setLabel("其他"); + dict2.setValue(""); + dictList.add(dict); + dictList.add(dict1); + dictList.add(dict2); + + return ApiResult.ok(dictList); + } + return ApiResult.ok(handlerDictService.getHandlerDict()); + } catch (Exception e) { + log.error("办理人权限设置列表结果异常", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表结果失败", e)); + } + } + + /** + * 已发布表单列表 该接口不需要业务系统实现 + */ + public static ApiResult> publishedForm() { + try { + return ApiResult.ok(FlowEngine.formService().list(FlowEngine.newForm().setIsPublish(1))); + } catch (Exception e) { + log.error("已发布表单列表异常", e); + throw new FlowException(ExceptionUtil.handleMsg("已发布表单列表异常", e)); + } + } + + /** + * 读取表单内容 + * @param id + * @return + */ + public static ApiResult getFormContent(Long id) { + try {return ApiResult.ok(FlowEngine.formService().getById(id).getFormContent()); + } catch (Exception e) { + log.error("获取表单内容字符串", e); + throw new FlowException(ExceptionUtil.handleMsg("获取表单内容字符串失败", e)); + } + } + + /** + * 保存表单内容,该接口不需要系统实现 + * @param flowDto + * @return + */ + public static ApiResult saveFormContent(FlowDto flowDto) { + FlowEngine.formService().saveContent(flowDto.getId(), flowDto.getFormContent()); + return ApiResult.ok(); + } + + + /** + * 根据任务id获取待办任务表单及数据 + * + * @param taskId 当前任务id + * @return {@link ApiResult} + * @author liangli + * @date 2024/8/21 17:08 + **/ + public static ApiResult load(Long taskId) { + FlowParams flowParams = FlowParams.build(); + + return ApiResult.ok(FlowEngine.taskService().load(taskId, flowParams)); + } + + /** + * 根据任务id获取已办任务表单及数据 + * + * @param hisTaskId + * @return + */ + public static ApiResult hisLoad(Long hisTaskId) { + FlowParams flowParams = FlowParams.build(); + + return ApiResult.ok(FlowEngine.taskService().hisLoad(hisTaskId, flowParams)); + } + + /** + * 通用表单流程审批接口 + * + * @param formData + * @param taskId + * @param skipType + * @param message + * @param nodeCode + * @return + */ + public static ApiResult handle(Map formData, Long taskId, String skipType + , String message, String nodeCode) { + FlowParams flowParams = FlowParams.build() + .skipType(skipType) + .nodeCode(nodeCode) + .message(message); + + flowParams.formData(formData); + + return ApiResult.ok(FlowEngine.taskService().skip(taskId, flowParams)); + } + + /** + * 获取节点扩展属性 + * @return List + */ + public static ApiResult> nodeExt() { + try { + // 需要业务系统实现该接口 + NodeExtService nodeExtService = FrameInvoker.getBean(NodeExtService.class); + if (nodeExtService == null) { + return ApiResult.ok(Collections.emptyList()); + } + List nodeExts = nodeExtService.getNodeExt(); + return ApiResult.ok(nodeExts); + } catch (Exception e) { + log.error("获取节点扩展属性", e); + throw new FlowException(ExceptionUtil.handleMsg("获取节点扩展属性失败", e)); + } + } + +}