From 5fc0a298a51a36ceeea528b0b46c4947d37521b6 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: Tue, 21 May 2024 09:53:19 +0800 Subject: [PATCH 01/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=8A=A8=E6=80=81=E7=A7=9F=E6=88=B7=20=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E7=BA=BF=E7=A8=8B=E5=86=85=E5=88=87=E6=8D=A2(?= =?UTF-8?q?=E5=A6=82=E9=9C=80=E5=85=A8=E5=B1=80=20=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E4=BC=A0=E5=8F=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/tenant/helper/TenantHelper.java | 21 ++++++++++++------- .../system/SysTenantController.java | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java index e830c190a..9d087e113 100644 --- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java +++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java @@ -1,6 +1,5 @@ package org.dromara.common.tenant.helper; -import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.convert.Convert; import com.alibaba.ttl.TransmittableThreadLocal; @@ -79,22 +78,28 @@ public class TenantHelper { } } + public static void setDynamic(String tenantId) { + setDynamic(tenantId, false); + } + /** * 设置动态租户(一直有效 需要手动清理) *

* 如果为未登录状态下 那么只在当前线程内生效 + * + * @param tenantId 租户id + * @param global 是否全局生效 */ - public static void setDynamic(String tenantId) { + public static void setDynamic(String tenantId, boolean global) { if (!isEnable()) { return; } - if (!isLogin()) { + if (!isLogin() || !global) { TEMP_DYNAMIC_TENANT.set(tenantId); return; } String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); RedisUtils.setCacheObject(cacheKey, tenantId); - SaHolder.getStorage().set(cacheKey, tenantId); } /** @@ -109,13 +114,13 @@ public class TenantHelper { if (!isLogin()) { return TEMP_DYNAMIC_TENANT.get(); } - String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); - String tenantId = (String) SaHolder.getStorage().get(cacheKey); + // 如果线程内有值 优先返回 + String tenantId = TEMP_DYNAMIC_TENANT.get(); if (StringUtils.isNotBlank(tenantId)) { return tenantId; } + String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); tenantId = RedisUtils.getCacheObject(cacheKey); - SaHolder.getStorage().set(cacheKey, tenantId); return tenantId; } @@ -130,9 +135,9 @@ public class TenantHelper { TEMP_DYNAMIC_TENANT.remove(); return; } + TEMP_DYNAMIC_TENANT.remove(); String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); RedisUtils.deleteObject(cacheKey); - SaHolder.getStorage().delete(cacheKey); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java index 053ff1712..60be68a95 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java @@ -144,7 +144,7 @@ public class SysTenantController extends BaseController { @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @GetMapping("/dynamic/{tenantId}") public R dynamicTenant(@NotBlank(message = "租户ID不能为空") @PathVariable String tenantId) { - TenantHelper.setDynamic(tenantId); + TenantHelper.setDynamic(tenantId, true); return R.ok(); } From 5b67b182c380f16eed55f03dd630a51982b081cc Mon Sep 17 00:00:00 2001 From: ZorA Date: Wed, 22 May 2024 16:37:00 +0800 Subject: [PATCH 02/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=EF=BC=9Asqlserve?= =?UTF-8?q?r=E6=95=B0=E6=8D=AE=E6=BA=90=EF=BC=8Cflowable=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96sql=E8=84=9A=E6=9C=AC=E5=AD=97=E6=AE=B5=E7=BC=BA?= =?UTF-8?q?=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/sqlserver/flowable.sql | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/script/sql/sqlserver/flowable.sql b/script/sql/sqlserver/flowable.sql index 11ee2be97..519e8d78a 100644 --- a/script/sql/sqlserver/flowable.sql +++ b/script/sql/sqlserver/flowable.sql @@ -221,6 +221,7 @@ create table wf_definition_config unique, process_key nvarchar(255) not null, version bigint not null, + remark nvarchar(500) DEFAULT ('') null, tenant_id nvarchar(20), create_dept bigint, create_by bigint, @@ -252,6 +253,10 @@ exec sp_addextendedproperty 'MS_Description', N'流程版本', 'SCHEMA', 'dbo', 'version' go +exec sp_addextendedproperty 'MS_Description', N'备注', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', + 'remark' +go + exec sp_addextendedproperty 'MS_Description', N'租户编号', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', 'tenant_id' go From 736745750018d689d2a512760da313b1fb8dc167 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: Wed, 22 May 2024 18:26:24 +0800 Subject: [PATCH 03/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=AE=A1=E6=A0=B8=E4=BA=BA=E6=9D=83=E9=99=90=E4=B8=8D?= =?UTF-8?q?=E5=A4=9F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/service/impl/SysUserServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 93f1cc7fd..9c8988894 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -636,7 +636,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { if (CollUtil.isEmpty(userIds)) { return List.of(); } - List list = this.selectUserByIds(userIds, null); + List list = baseMapper.selectVoList(new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName) + .eq(SysUser::getStatus, UserConstants.USER_NORMAL) + .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); return BeanUtil.copyToList(list, UserDTO.class); } From 9a15298e637f1c68905e2e04fe58cd472d9245ea Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 23 May 2024 09:32:09 +0800 Subject: [PATCH 04/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E9=A2=84=E8=A7=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/common/oss/core/OssClient.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index fcad35b09..d0c4537f8 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -201,10 +201,11 @@ public class OssClient { * @param inputStream 要上传的输入流 * @param key 在 Amazon S3 中的对象键 * @param length 输入流的长度 + * @param contentType 文件内容类型 * @return UploadResult 包含上传后的文件信息 * @throws OssException 如果上传失败,抛出自定义异常 */ - public UploadResult upload(InputStream inputStream, String key, Long length) { + public UploadResult upload(InputStream inputStream, String key, Long length, String contentType) { // 如果输入流不是 ByteArrayInputStream,则将其读取为字节数组再创建 ByteArrayInputStream if (!(inputStream instanceof ByteArrayInputStream)) { inputStream = new ByteArrayInputStream(IoUtil.readBytes(inputStream)); @@ -219,6 +220,7 @@ public class OssClient { .putObjectRequest( y -> y.bucket(properties.getBucketName()) .key(key) + .contentType(contentType) .build()) .build()); @@ -335,7 +337,7 @@ public class OssClient { * @throws OssException 如果上传失败,抛出自定义异常 */ public UploadResult uploadSuffix(byte[] data, String suffix) { - return upload(new ByteArrayInputStream(data), getPath(properties.getPrefix(), suffix), Long.valueOf(data.length)); + return upload(new ByteArrayInputStream(data), getPath(properties.getPrefix(), suffix), Long.valueOf(data.length), FileUtils.getMimeType(suffix)); } /** @@ -348,7 +350,7 @@ public class OssClient { * @throws OssException 如果上传失败,抛出自定义异常 */ public UploadResult uploadSuffix(InputStream inputStream, String suffix, Long length) { - return upload(inputStream, getPath(properties.getPrefix(), suffix), length); + return upload(inputStream, getPath(properties.getPrefix(), suffix), length, FileUtils.getMimeType(suffix)); } /** From 3a933e6f2b6324f7e29e6c40649bbc4f9cd01ea6 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 23 May 2024 09:40:14 +0800 Subject: [PATCH 05/58] =?UTF-8?q?update=20=E5=88=A0=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/pom.xml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 0ae185038..610e9d706 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -97,21 +97,6 @@ test - - me.zhyd.oauth - JustAuth - - - - - com.aizuda - snail-job-client-starter - - - com.aizuda - snail-job-client-job-core - - From a3f43f8ea3b00f13b6f418b456a4a22d92926aa0 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 23 May 2024 09:51:20 +0800 Subject: [PATCH 06/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/oss/core/OssClient.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index d0c4537f8..86668aa2c 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -162,13 +162,14 @@ public class OssClient { /** * 上传文件到 Amazon S3,并返回上传结果 * - * @param filePath 本地文件路径 - * @param key 在 Amazon S3 中的对象键 - * @param md5Digest 本地文件的 MD5 哈希值(可选) + * @param filePath 本地文件路径 + * @param key 在 Amazon S3 中的对象键 + * @param md5Digest 本地文件的 MD5 哈希值(可选) + * @param contentType 文件内容类型 * @return UploadResult 包含上传后的文件信息 * @throws OssException 如果上传失败,抛出自定义异常 */ - public UploadResult upload(Path filePath, String key, String md5Digest) { + public UploadResult upload(Path filePath, String key, String md5Digest, String contentType) { try { // 构建上传请求对象 FileUpload fileUpload = transferManager.uploadFile( @@ -176,6 +177,7 @@ public class OssClient { y -> y.bucket(properties.getBucketName()) .key(key) .contentMD5(StringUtils.isNotEmpty(md5Digest) ? md5Digest : null) + .contentType(contentType) .build()) .addTransferListener(LoggingTransferListener.create()) .source(filePath).build()); @@ -362,7 +364,7 @@ public class OssClient { * @throws OssException 如果上传失败,抛出自定义异常 */ public UploadResult uploadSuffix(File file, String suffix) { - return upload(file.toPath(), getPath(properties.getPrefix(), suffix), null); + return upload(file.toPath(), getPath(properties.getPrefix(), suffix), null, FileUtils.getMimeType(suffix)); } /** From 7cf9c1598401dc7b54d8d1ccedccc17ec3f33f3e Mon Sep 17 00:00:00 2001 From: ibaiyy Date: Thu, 23 May 2024 21:49:24 +0800 Subject: [PATCH 07/58] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8A=9E=E7=90=86?= =?UTF-8?q?=E6=97=B6=E6=A0=A1=E9=AA=8C=E6=98=AF=E5=90=A6=E6=98=AF=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8A=9E=E7=90=86=E4=BA=BA=E3=80=90=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E3=80=81=E5=A7=94=E6=89=98=E3=80=81=E8=BD=AC=E5=8A=9E=E3=80=81?= =?UTF-8?q?=E7=BB=88=E6=AD=A2=E3=80=81=E9=80=80=E5=9B=9E=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ActTaskServiceImpl.java | 19 +++++----------- .../dromara/workflow/utils/WorkflowUtils.java | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 1a4866d21..6a6b1b1cb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -159,15 +159,8 @@ public class ActTaskServiceImpl implements IActTaskService { @Transactional(rollbackFor = Exception.class) public boolean completeTask(CompleteTaskBo completeTaskBo) { try { - List roles = LoginHelper.getLoginUser().getRoles(); String userId = String.valueOf(LoginHelper.getUserId()); - TaskQuery taskQuery = QueryUtils.taskQuery(); - taskQuery.taskId(completeTaskBo.getTaskId()).taskCandidateOrAssigned(userId); - if (CollUtil.isNotEmpty(roles)) { - List groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); - taskQuery.taskCandidateGroupIn(groupIds); - } - Task task = taskQuery.singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(completeTaskBo.getTaskId()); if (task == null) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -470,8 +463,8 @@ public class ActTaskServiceImpl implements IActTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean delegateTask(DelegateBo delegateBo) { - TaskQuery query = QueryUtils.taskQuery(); - TaskEntity task = (TaskEntity) query.taskId(delegateBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(delegateBo.getTaskId()); + if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -544,7 +537,7 @@ public class ActTaskServiceImpl implements IActTaskService { */ @Override public boolean transferTask(TransmitBo transmitBo) { - Task task = QueryUtils.taskQuery().taskId(transmitBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(transmitBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -669,9 +662,9 @@ public class ActTaskServiceImpl implements IActTaskService { @Override @Transactional(rollbackFor = Exception.class) public String backProcess(BackProcessBo backProcessBo) { - TaskQuery query = QueryUtils.taskQuery(); String userId = String.valueOf(LoginHelper.getUserId()); - Task task = query.taskId(backProcessBo.getTaskId()).taskCandidateOrAssigned(userId).singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(backProcessBo.getTaskId()); + if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index f475f1978..a620289e9 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.SpringUtils; @@ -14,6 +15,7 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.reflect.ReflectUtils; import org.dromara.common.mail.utils.MailUtils; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; @@ -38,6 +40,7 @@ import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; import org.flowable.identitylink.api.history.HistoricIdentityLink; import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.service.impl.persistence.entity.TaskEntity; @@ -340,4 +343,23 @@ public class WorkflowUtils { } } } + + /** + * 根据任务id查询 当前用户的任务,检查 当前人员 是否是该 taskId 的办理人 + * @param taskId 任务id + * @return + */ + public static Task getTaskByCurrUser(String taskId){ + TaskQuery taskQuery = QueryUtils.taskQuery(); + taskQuery.taskId(taskId).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())); + + List roles = LoginHelper.getLoginUser().getRoles(); + if (CollUtil.isNotEmpty(roles)) { + List groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); + taskQuery.taskCandidateGroupIn(groupIds); + } + Task task = taskQuery.singleResult(); + + return task; + } } From ea23e604f9017d22d383f88944e3f00760a5fc04 Mon Sep 17 00:00:00 2001 From: zhuweitung Date: Fri, 24 May 2024 09:12:17 +0800 Subject: [PATCH 08/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=98=B5=E7=A7=B0=E4=BF=AE=E6=94=B9=E5=90=8E=E6=9C=AA?= =?UTF-8?q?=E6=B8=85=E9=99=A4=E5=AF=B9=E5=BA=94=E7=BC=93=E5=AD=98=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/service/impl/SysUserServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 9c8988894..d8f481dbf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -37,6 +37,7 @@ import org.dromara.system.domain.vo.SysUserExportVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.*; import org.dromara.system.service.ISysUserService; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -338,6 +339,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { * @return 结果 */ @Override + @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId") @Transactional(rollbackFor = Exception.class) public int updateUser(SysUserBo user) { // 新增用户与角色管理 @@ -386,6 +388,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { * @param user 用户信息 * @return 结果 */ + @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId") @Override public int updateUserProfile(SysUserBo user) { return baseMapper.update(null, From ba1a540add437649bae209ba8a8b44f2e2d95451 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Fri, 24 May 2024 05:30:51 +0000 Subject: [PATCH 09/58] =?UTF-8?q?!542=20=E6=9B=B4=E6=96=B0SnailJob?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B01.0.0-beta2=20*=20feat:=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9=E5=8F=98=E6=9B=B4=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E8=AF=AF=E8=A7=A3snail-job.group-name=20=3D>=20snail-job.group?= =?UTF-8?q?=20*=20chore:=20=E6=9B=B4=E6=96=B0snail-job=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=88=B01.0.0-beta2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- ruoyi-admin/src/main/resources/application-dev.yml | 4 ++-- ruoyi-admin/src/main/resources/application-prod.yml | 3 ++- .../java/org/dromara/common/job/config/SnailJobConfig.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 4d04d3963..b57f2365f 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.2.7 4.3.0 2.14.4 - 1.0.0-beta1 + 1.0.0-beta2 1.3.6 0.2.0 1.18.32 diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 529a106bd..398af9c91 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ spring.boot.admin.client: snail-job: enabled: true # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group-name: "ruoyi_group" + group: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -21,7 +21,6 @@ snail-job: # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} - --- # 数据源配置 spring: datasource: @@ -102,6 +101,7 @@ spring.data: # 是否开启ssl ssl.enabled: false +--- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 0613bd7df..4dabb6823 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -15,7 +15,7 @@ spring.boot.admin.client: snail-job: enabled: false # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group-name: "ruoyi_group" + group: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -104,6 +104,7 @@ spring.data: # 是否开启ssl ssl.enabled: false +--- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java index d671f0ed8..e48fe7fb4 100644 --- a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java @@ -21,7 +21,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @AutoConfiguration @ConditionalOnProperty(prefix = "snail-job", name = "enabled", havingValue = "true") @EnableScheduling -@EnableSnailJob(group = "${snail-job.group-name}") +@EnableSnailJob(group = "${snail-job.group}") public class SnailJobConfig { @EventListener(SnailClientStartingEvent.class) From 2154033879f7bbfcde9bcebe508a369ef951a1ec 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: Sat, 25 May 2024 02:05:34 +0000 Subject: [PATCH 10/58] =?UTF-8?q?=E5=9B=9E=E9=80=80=20'Pull=20Request=20!5?= =?UTF-8?q?42=20:=20=E6=9B=B4=E6=96=B0SnailJob=E7=89=88=E6=9C=AC=E5=88=B01?= =?UTF-8?q?.0.0-beta2'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- ruoyi-admin/src/main/resources/application-dev.yml | 4 ++-- ruoyi-admin/src/main/resources/application-prod.yml | 3 +-- .../java/org/dromara/common/job/config/SnailJobConfig.java | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b57f2365f..4d04d3963 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.2.7 4.3.0 2.14.4 - 1.0.0-beta2 + 1.0.0-beta1 1.3.6 0.2.0 1.18.32 diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 398af9c91..529a106bd 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ spring.boot.admin.client: snail-job: enabled: true # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group: "ruoyi_group" + group-name: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -21,6 +21,7 @@ snail-job: # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} + --- # 数据源配置 spring: datasource: @@ -101,7 +102,6 @@ spring.data: # 是否开启ssl ssl.enabled: false ---- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 4dabb6823..0613bd7df 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -15,7 +15,7 @@ spring.boot.admin.client: snail-job: enabled: false # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group: "ruoyi_group" + group-name: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -104,7 +104,6 @@ spring.data: # 是否开启ssl ssl.enabled: false ---- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java index e48fe7fb4..d671f0ed8 100644 --- a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java @@ -21,7 +21,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @AutoConfiguration @ConditionalOnProperty(prefix = "snail-job", name = "enabled", havingValue = "true") @EnableScheduling -@EnableSnailJob(group = "${snail-job.group}") +@EnableSnailJob(group = "${snail-job.group-name}") public class SnailJobConfig { @EventListener(SnailClientStartingEvent.class) From dd6d4c67eda5f4b3c931842b69b9a424c9c04811 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Sat, 25 May 2024 22:39:40 +0800 Subject: [PATCH 11/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysProfileController.java | 11 +++++++---- .../system/domain/bo/SysUserProfileBo.java | 16 +++++++--------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java index 0cdb67548..9c42c418c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java @@ -3,10 +3,12 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.secure.BCrypt; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.io.FileUtil; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.file.MimeTypeUtils; import org.dromara.common.encrypt.annotation.ApiEncrypt; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.satoken.utils.LoginHelper; @@ -19,9 +21,7 @@ import org.dromara.system.domain.vo.ProfileVo; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysOssService; -import org.dromara.system.service.ISysRoleService; import org.dromara.system.service.ISysUserService; -import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -57,12 +57,14 @@ public class SysProfileController extends BaseController { } /** - * 修改用户 + * 修改用户信息 */ + @RepeatSubmit @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping public R updateProfile(@RequestBody SysUserProfileBo profile) { SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class); + user.setUserId(LoginHelper.getUserId()); String username = LoginHelper.getUsername(); if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return R.fail("修改用户'" + username + "'失败,手机号码已存在"); @@ -70,7 +72,6 @@ public class SysProfileController extends BaseController { if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { return R.fail("修改用户'" + username + "'失败,邮箱账号已存在"); } - user.setUserId(LoginHelper.getUserId()); if (userService.updateUserProfile(user) > 0) { return R.ok(); } @@ -82,6 +83,7 @@ public class SysProfileController extends BaseController { * * @param bo 新旧密码 */ + @RepeatSubmit @ApiEncrypt @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping("/updatePwd") @@ -106,6 +108,7 @@ public class SysProfileController extends BaseController { * * @param avatarfile 用户头像 */ + @RepeatSubmit @Log(title = "用户头像", businessType = BusinessType.UPDATE) @PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R avatar(@RequestPart("avatarfile") MultipartFile avatarfile) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java index fb4c605f5..846dd7960 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java @@ -1,14 +1,16 @@ package org.dromara.system.domain.bo; -import org.dromara.common.core.xss.Xss; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.common.sensitive.annotation.Sensitive; -import org.dromara.common.sensitive.core.SensitiveStrategy; import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import org.dromara.common.core.constant.RegexConstants; +import org.dromara.common.core.xss.Xss; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.sensitive.annotation.Sensitive; +import org.dromara.common.sensitive.core.SensitiveStrategy; /** * 个人信息业务处理 @@ -21,11 +23,6 @@ import lombok.NoArgsConstructor; @EqualsAndHashCode(callSuper = true) public class SysUserProfileBo extends BaseEntity { - /** - * 用户ID - */ - private Long userId; - /** * 用户昵称 */ @@ -44,6 +41,7 @@ public class SysUserProfileBo extends BaseEntity { /** * 手机号码 */ + @Pattern(regexp = RegexConstants.MOBILE, message = "手机号格式不正确") @Sensitive(strategy = SensitiveStrategy.PHONE) private String phonenumber; From 2cf2cc46f21b5eb6a65390e0cafbe585b64530b2 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Sat, 25 May 2024 22:43:33 +0800 Subject: [PATCH 12/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/controller/system/SysProfileController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java index 9c42c418c..559e1d59b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java @@ -62,7 +62,7 @@ public class SysProfileController extends BaseController { @RepeatSubmit @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping - public R updateProfile(@RequestBody SysUserProfileBo profile) { + public R updateProfile(@Validated @RequestBody SysUserProfileBo profile) { SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class); user.setUserId(LoginHelper.getUserId()); String username = LoginHelper.getUsername(); From e181e340e46523686942a9b2b3c6f9a80a4a017a Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Sun, 26 May 2024 20:18:14 +0800 Subject: [PATCH 13/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E5=88=86?= =?UTF-8?q?=E5=B8=83=E5=BC=8F=E9=94=81Lock4j=E5=BC=82=E5=B8=B8=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/redis/handler/RedisExceptionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/handler/RedisExceptionHandler.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/handler/RedisExceptionHandler.java index 5ed12a6e3..5e904f37f 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/handler/RedisExceptionHandler.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/handler/RedisExceptionHandler.java @@ -23,7 +23,7 @@ public class RedisExceptionHandler { @ExceptionHandler(LockFailureException.class) public R handleLockFailureException(LockFailureException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); - log.error("获取锁失败了'{}',发生Lock4j异常." + requestURI, e.getMessage()); + log.error("获取锁失败了'{}',发生Lock4j异常.", requestURI, e); return R.fail(HttpStatus.HTTP_UNAVAILABLE, "业务处理中,请稍后再试..."); } From 52a53791c85b71d8b0c3995a6763b8da6ab07ecd Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Sun, 26 May 2024 20:30:50 +0800 Subject: [PATCH 14/58] =?UTF-8?q?add=20=E6=96=B0=E5=A2=9ESMS=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=A4=84=E7=90=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sms/config/SmsAutoConfiguration.java | 9 ++++++ .../sms/handler/SmsExceptionHandler.java | 30 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/handler/SmsExceptionHandler.java diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsAutoConfiguration.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsAutoConfiguration.java index 1e88407e8..3a39cc216 100644 --- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsAutoConfiguration.java +++ b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsAutoConfiguration.java @@ -1,6 +1,7 @@ package org.dromara.common.sms.config; import org.dromara.common.sms.core.dao.PlusSmsDao; +import org.dromara.common.sms.handler.SmsExceptionHandler; import org.dromara.sms4j.api.dao.SmsDao; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; @@ -21,4 +22,12 @@ public class SmsAutoConfiguration { return new PlusSmsDao(); } + /** + * 异常处理器 + */ + @Bean + public SmsExceptionHandler smsExceptionHandler() { + return new SmsExceptionHandler(); + } + } diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/handler/SmsExceptionHandler.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/handler/SmsExceptionHandler.java new file mode 100644 index 000000000..2c619a36c --- /dev/null +++ b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/handler/SmsExceptionHandler.java @@ -0,0 +1,30 @@ +package org.dromara.common.sms.handler; + +import cn.hutool.http.HttpStatus; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.R; +import org.dromara.sms4j.comm.exception.SmsBlendException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * SMS异常处理器 + * + * @author AprilWind + */ +@Slf4j +@RestControllerAdvice +public class SmsExceptionHandler { + + /** + * sms异常 + */ + @ExceptionHandler(SmsBlendException.class) + public R handleSmsBlendException(SmsBlendException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',发生sms短信异常.", requestURI, e); + return R.fail(HttpStatus.HTTP_INTERNAL_ERROR, "短信发送失败,请稍后再试..."); + } + +} From f3cc05e6516aac8b6d87184065fcaef78b08c5b0 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, 27 May 2024 09:44:46 +0800 Subject: [PATCH 15/58] update springboot 3.2.5 => 3.2.6 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4d04d3963..3b86e5691 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 5.2.0-BETA - 3.2.5 + 3.2.6 UTF-8 UTF-8 17 From a32f55a920e4b3a9c1fbf736bc16a134ab73614f 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, 27 May 2024 09:45:44 +0800 Subject: [PATCH 16/58] update snailjob beta1 => beta2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3b86e5691..a0912de50 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.2.7 4.3.0 2.14.4 - 1.0.0-beta1 + 1.0.0-beta2 1.3.6 0.2.0 1.18.32 From 6777ae046ef3c9e2f3e37d3bdb0ea326f40cc376 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, 27 May 2024 11:59:35 +0800 Subject: [PATCH 17/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E8=AE=BE=E7=BD=AE=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/controller/ActTaskController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java index 7fc9b95fd..75f9d9b2a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java @@ -225,7 +225,7 @@ public class ActTaskController extends BaseController { @RepeatSubmit() @PostMapping("/backProcess") public R backProcess(@Validated({AddGroup.class}) @RequestBody BackProcessBo backProcessBo) { - return R.ok(actTaskService.backProcess(backProcessBo)); + return R.ok("操作成功", actTaskService.backProcess(backProcessBo)); } /** @@ -279,7 +279,7 @@ public class ActTaskController extends BaseController { */ @GetMapping("/getTaskUserIdsByAddMultiInstance/{taskId}") public R getTaskUserIdsByAddMultiInstance(@PathVariable String taskId) { - return R.ok(actTaskService.getTaskUserIdsByAddMultiInstance(taskId)); + return R.ok("操作成功", actTaskService.getTaskUserIdsByAddMultiInstance(taskId)); } /** From 102003a52b101c85d7e378e25f35ec6488620fc1 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Mon, 27 May 2024 12:23:28 +0800 Subject: [PATCH 18/58] =?UTF-8?q?update=20=E5=AE=8C=E5=96=84websocket?= =?UTF-8?q?=E5=8C=85=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../websocket/config/WebSocketConfig.java | 7 ++- .../constant/WebSocketConstants.java | 1 + .../handler/PlusWebSocketHandler.java | 47 +++++++++++-------- .../holder/WebSocketSessionHolder.java | 28 +++++++++++ .../interceptor/PlusWebSocketInterceptor.java | 27 ++++++----- .../listener/WebSocketTopicListener.java | 9 +++- .../websocket/utils/WebSocketUtils.java | 35 ++++++++++---- 7 files changed, 110 insertions(+), 44 deletions(-) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java index 30d109e20..ef5cfc96f 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java @@ -27,17 +27,20 @@ public class WebSocketConfig { @Bean public WebSocketConfigurer webSocketConfigurer(HandshakeInterceptor handshakeInterceptor, - WebSocketHandler webSocketHandler, - WebSocketProperties webSocketProperties) { + WebSocketHandler webSocketHandler, WebSocketProperties webSocketProperties) { + // 如果WebSocket的路径为空,则设置默认路径为 "/websocket" if (StrUtil.isBlank(webSocketProperties.getPath())) { webSocketProperties.setPath("/websocket"); } + // 如果允许跨域访问的地址为空,则设置为 "*",表示允许所有来源的跨域请求 if (StrUtil.isBlank(webSocketProperties.getAllowedOrigins())) { webSocketProperties.setAllowedOrigins("*"); } + // 返回一个WebSocketConfigurer对象,用于配置WebSocket return registry -> registry + // 添加WebSocket处理程序和拦截器到指定路径,设置允许的跨域来源 .addHandler(webSocketHandler, webSocketProperties.getPath()) .addInterceptors(handshakeInterceptor) .setAllowedOrigins(webSocketProperties.getAllowedOrigins()); diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/constant/WebSocketConstants.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/constant/WebSocketConstants.java index 54eb4470b..e243279d9 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/constant/WebSocketConstants.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/constant/WebSocketConstants.java @@ -6,6 +6,7 @@ package org.dromara.common.websocket.constant; * @author zendwang */ public interface WebSocketConstants { + /** * websocketSession中的参数的key */ diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index a53583f19..759aecea0 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -31,33 +31,42 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { } /** - * 处理发送来的文本消息 + * 处理接收到的文本消息 * - * @param session - * @param message - * @throws Exception + * @param session WebSocket会话 + * @param message 接收到的文本消息 + * @throws Exception 处理消息过程中可能抛出的异常 */ @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { + // 从WebSocket会话中获取登录用户信息 LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); - List userIds = List.of(loginUser.getUserId()); + + // 创建WebSocket消息DTO对象 WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); - webSocketMessageDto.setSessionKeys(userIds); + webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId())); webSocketMessageDto.setMessage(message.getPayload()); WebSocketUtils.publishMessage(webSocketMessageDto); } + /** + * 处理接收到的二进制消息 + * + * @param session WebSocket会话 + * @param message 接收到的二进制消息 + * @throws Exception 处理消息过程中可能抛出的异常 + */ @Override protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception { super.handleBinaryMessage(session, message); } /** - * 心跳监测的回复 + * 处理接收到的Pong消息(心跳监测) * - * @param session - * @param message - * @throws Exception + * @param session WebSocket会话 + * @param message 接收到的Pong消息 + * @throws Exception 处理消息过程中可能抛出的异常 */ @Override protected void handlePongMessage(WebSocketSession session, PongMessage message) throws Exception { @@ -65,11 +74,11 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { } /** - * 连接出错时 + * 处理WebSocket传输错误 * - * @param session - * @param exception - * @throws Exception + * @param session WebSocket会话 + * @param exception 发生的异常 + * @throws Exception 处理过程中可能抛出的异常 */ @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { @@ -77,10 +86,10 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { } /** - * 连接关闭后 + * 在WebSocket连接关闭后执行清理操作 * - * @param session - * @param status + * @param session WebSocket会话 + * @param status 关闭状态信息 */ @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { @@ -90,9 +99,9 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { } /** - * 是否支持分片消息 + * 指示处理程序是否支持接收部分消息 * - * @return + * @return 如果支持接收部分消息,则返回true;否则返回false */ @Override public boolean supportsPartialMessages() { diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java index de8c5a758..368801c3d 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java @@ -18,24 +18,52 @@ public class WebSocketSessionHolder { private static final Map USER_SESSION_MAP = new ConcurrentHashMap<>(); + /** + * 将WebSocket会话添加到用户会话Map中 + * + * @param sessionKey 会话键,用于检索会话 + * @param session 要添加的WebSocket会话 + */ public static void addSession(Long sessionKey, WebSocketSession session) { USER_SESSION_MAP.put(sessionKey, session); } + /** + * 从用户会话Map中移除指定会话键对应的WebSocket会话 + * + * @param sessionKey 要移除的会话键 + */ public static void removeSession(Long sessionKey) { if (USER_SESSION_MAP.containsKey(sessionKey)) { USER_SESSION_MAP.remove(sessionKey); } } + /** + * 根据会话键从用户会话Map中获取WebSocket会话 + * + * @param sessionKey 要获取的会话键 + * @return 与给定会话键对应的WebSocket会话,如果不存在则返回null + */ public static WebSocketSession getSessions(Long sessionKey) { return USER_SESSION_MAP.get(sessionKey); } + /** + * 获取存储在用户会话Map中所有WebSocket会话的会话键集合 + * + * @return 所有WebSocket会话的会话键集合 + */ public static Set getSessionsAll() { return USER_SESSION_MAP.keySet(); } + /** + * 检查给定的会话键是否存在于用户会话Map中 + * + * @param sessionKey 要检查的会话键 + * @return 如果存在对应的会话键,则返回true;否则返回false + */ public static Boolean existSession(Long sessionKey) { return USER_SESSION_MAP.containsKey(sessionKey); } diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java index 1dc4120db..0abbbd3c9 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java @@ -1,8 +1,8 @@ package org.dromara.common.websocket.interceptor; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.satoken.utils.LoginHelper; -import lombok.extern.slf4j.Slf4j; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.socket.WebSocketHandler; @@ -21,13 +21,13 @@ import static org.dromara.common.websocket.constant.WebSocketConstants.LOGIN_USE public class PlusWebSocketInterceptor implements HandshakeInterceptor { /** - * 握手前 + * WebSocket握手之前执行的前置处理方法 * - * @param request request - * @param response response - * @param wsHandler wsHandler - * @param attributes attributes - * @return 是否握手成功 + * @param request WebSocket握手请求 + * @param response WebSocket握手响应 + * @param wsHandler WebSocket处理程序 + * @param attributes 与WebSocket会话关联的属性 + * @return 如果允许握手继续进行,则返回true;否则返回false */ @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) { @@ -37,15 +37,16 @@ public class PlusWebSocketInterceptor implements HandshakeInterceptor { } /** - * 握手后 + * WebSocket握手成功后执行的后置处理方法 * - * @param request request - * @param response response - * @param wsHandler wsHandler - * @param exception 异常 + * @param request WebSocket握手请求 + * @param response WebSocket握手响应 + * @param wsHandler WebSocket处理程序 + * @param exception 握手过程中可能出现的异常 */ @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { - + // 在这个方法中可以执行一些握手成功后的后续处理逻辑,比如记录日志或者其他操作 } + } diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java index 01528d0c9..0ad39affe 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java @@ -1,9 +1,9 @@ package org.dromara.common.websocket.listener; import cn.hutool.core.collection.CollUtil; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.websocket.holder.WebSocketSessionHolder; import org.dromara.common.websocket.utils.WebSocketUtils; -import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.Ordered; @@ -16,8 +16,15 @@ import org.springframework.core.Ordered; @Slf4j public class WebSocketTopicListener implements ApplicationRunner, Ordered { + /** + * 在Spring Boot应用程序启动时初始化WebSocket主题订阅监听器 + * + * @param args 应用程序参数 + * @throws Exception 初始化过程中可能抛出的异常 + */ @Override public void run(ApplicationArguments args) throws Exception { + // 订阅WebSocket消息 WebSocketUtils.subscribeMessage((message) -> { log.info("WebSocket主题订阅收到消息session keys={} message={}", message.getSessionKeys(), message.getMessage()); // 如果key不为空就按照key发消息 如果为空就群发 diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java index 086599c40..afe76e06d 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java @@ -29,10 +29,10 @@ import static org.dromara.common.websocket.constant.WebSocketConstants.WEB_SOCKE public class WebSocketUtils { /** - * 发送消息 + * 向指定的WebSocket会话发送消息 * - * @param sessionKey session主键 一般为用户id - * @param message 消息文本 + * @param sessionKey 要发送消息的用户id + * @param message 要发送的消息内容 */ public static void sendMessage(Long sessionKey, String message) { WebSocketSession session = WebSocketSessionHolder.getSessions(sessionKey); @@ -40,18 +40,18 @@ public class WebSocketUtils { } /** - * 订阅消息 + * 订阅WebSocket消息主题,并提供一个消费者函数来处理接收到的消息 * - * @param consumer 自定义处理 + * @param consumer 处理WebSocket消息的消费者函数 */ public static void subscribeMessage(Consumer consumer) { RedisUtils.subscribe(WEB_SOCKET_TOPIC, WebSocketMessageDto.class, consumer); } /** - * 发布订阅的消息 + * 发布WebSocket订阅消息 * - * @param webSocketMessage 消息对象 + * @param webSocketMessage 要发布的WebSocket消息对象 */ public static void publishMessage(WebSocketMessageDto webSocketMessage) { List unsentSessionKeys = new ArrayList<>(); @@ -76,9 +76,9 @@ public class WebSocketUtils { } /** - * 发布订阅的消息(群发) + * 向所有的WebSocket会话发布订阅的消息(群发) * - * @param message 消息内容 + * @param message 要发布的消息内容 */ public static void publishAll(String message) { WebSocketMessageDto broadcastMessage = new WebSocketMessageDto(); @@ -88,14 +88,31 @@ public class WebSocketUtils { }); } + /** + * 向指定的WebSocket会话发送Pong消息 + * + * @param session 要发送Pong消息的WebSocket会话 + */ public static void sendPongMessage(WebSocketSession session) { sendMessage(session, new PongMessage()); } + /** + * 向指定的WebSocket会话发送文本消息 + * + * @param session WebSocket会话 + * @param message 要发送的文本消息内容 + */ public static void sendMessage(WebSocketSession session, String message) { sendMessage(session, new TextMessage(message)); } + /** + * 向指定的WebSocket会话发送WebSocket消息对象 + * + * @param session WebSocket会话 + * @param message 要发送的WebSocket消息对象 + */ private static void sendMessage(WebSocketSession session, WebSocketMessage message) { if (session == null || !session.isOpen()) { log.warn("[send] session会话已经关闭"); From 94797a2d2b815fe7a4e8d884059a34e1d9bc74f3 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, 27 May 2024 15:14:16 +0800 Subject: [PATCH 19/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20oss=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=A7=9F=E6=88=B7=20=E6=8B=BC=E6=8E=A5?= =?UTF-8?q?=E7=A7=9F=E6=88=B7id=20null=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/common/oss/factory/OssFactory.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java index d70270a15..3da1ba5cd 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java @@ -48,7 +48,10 @@ public class OssFactory { } OssProperties properties = JsonUtils.parseObject(json, OssProperties.class); // 使用租户标识避免多个租户相同key实例覆盖 - String key = properties.getTenantId() + ":" + configKey; + String key = configKey; + if (StringUtils.isNotBlank(properties.getTenantId())) { + key = properties.getTenantId() + ":" + configKey; + } OssClient client = CLIENT_CACHE.get(key); // 客户端不存在或配置不相同则重新构建 if (client == null || !client.checkPropertiesSame(properties)) { From 67ab7a04ad7cd2e3d9a3dcfd2d0604981080302f Mon Sep 17 00:00:00 2001 From: songgaoshuai <1742057357@qq.com> Date: Mon, 27 May 2024 15:58:52 +0800 Subject: [PATCH 20/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=92=A4?= =?UTF-8?q?=E9=94=80=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/service/impl/ActProcessInstanceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index b64c79ebd..3e20d7440 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -572,7 +572,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService taskService.setAssignee(task.getId(), null); taskService.addComment(task.getId(), processInstanceId, TaskStatusEnum.CANCEL.getStatus(), LoginHelper.getLoginUser().getNickname() + ":撤销申请"); } - HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0); + HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery(processInstanceId).finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0); List nodeIds = StreamUtils.toList(taskList, Task::getTaskDefinitionKey); runtimeService.createChangeActivityStateBuilder() .processInstanceId(processInstanceId) From 55fda94b6a381479547efcdefabfda5ec33235e9 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: Wed, 29 May 2024 10:45:01 +0800 Subject: [PATCH 21/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=91=BD=E5=90=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/tenant/config/TenantConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java index 3fb99c5b1..07302bc81 100644 --- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java +++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java @@ -35,7 +35,7 @@ public class TenantConfig { @ConditionalOnBean(MybatisPlusConfig.class) @AutoConfiguration(after = {MybatisPlusConfig.class}) - static class MybatisPlusConfigation { + static class MybatisPlusConfiguration { /** * 多租户插件 From 528b65ae04ba2b2c0c98d95c324ecf25873131d3 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: Wed, 29 May 2024 15:44:53 +0800 Subject: [PATCH 22/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20satoken=20d?= =?UTF-8?q?ao=E5=A4=9A=E7=BA=A7=E7=BC=93=E5=AD=98=E5=AE=9E=E7=8E=B0=20?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=88=96=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B8=85=E7=90=86=E6=9C=AC=E5=9C=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/satoken/core/dao/PlusSaTokenDao.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java index 0664755a4..38e12c315 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java @@ -2,7 +2,6 @@ package org.dromara.common.satoken.core.dao; import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.util.SaFoxUtil; -import cn.hutool.core.lang.Console; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import org.dromara.common.redis.utils.RedisUtils; @@ -54,7 +53,7 @@ public class PlusSaTokenDao implements SaTokenDao { } else { RedisUtils.setCacheObject(key, value, Duration.ofSeconds(timeout)); } - CAFFEINE.put(key, value); + CAFFEINE.invalidate(key); } /** @@ -64,7 +63,7 @@ public class PlusSaTokenDao implements SaTokenDao { public void update(String key, String value) { if (RedisUtils.hasKey(key)) { RedisUtils.setCacheObject(key, value, true); - CAFFEINE.put(key, value); + CAFFEINE.invalidate(key); } } @@ -117,7 +116,7 @@ public class PlusSaTokenDao implements SaTokenDao { } else { RedisUtils.setCacheObject(key, object, Duration.ofSeconds(timeout)); } - CAFFEINE.put(key, object); + CAFFEINE.invalidate(key); } /** @@ -127,7 +126,7 @@ public class PlusSaTokenDao implements SaTokenDao { public void updateObject(String key, Object object) { if (RedisUtils.hasKey(key)) { RedisUtils.setCacheObject(key, object, true); - CAFFEINE.put(key, object); + CAFFEINE.invalidate(key); } } From 125b03adfcb1d113422427320440962138eab201 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: Wed, 29 May 2024 18:34:30 +0800 Subject: [PATCH 23/58] =?UTF-8?q?update=20=E7=A7=BB=E9=99=A4=20=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=9E=84=E5=BB=BA=E8=8F=9C=E5=8D=95(=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=8F=AF=E7=94=A8=E7=BB=84=E4=BB=B6=20=E7=94=A8?= =?UTF-8?q?=E5=A4=84=E4=B8=8D=E5=A4=A7=E4=BB=A5=E5=90=8E=E5=86=8D=E8=80=83?= =?UTF-8?q?=E8=99=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/oracle/oracle_ry_vue_5.X.sql | 1 - script/sql/postgres/postgres_ry_vue_5.X.sql | 1 - script/sql/ry_vue_5.X.sql | 1 - script/sql/sqlserver/sqlserver_ry_vue_5.X.sql | 2 -- 4 files changed, 5 deletions(-) diff --git a/script/sql/oracle/oracle_ry_vue_5.X.sql b/script/sql/oracle/oracle_ry_vue_5.X.sql index 06ea5fe1e..0aed89d74 100644 --- a/script/sql/oracle/oracle_ry_vue_5.X.sql +++ b/script/sql/oracle/oracle_ry_vue_5.X.sql @@ -443,7 +443,6 @@ insert into sys_menu values('107', '通知公告', '1', '8', 'notice', insert into sys_menu values('108', '日志管理', '1', '9', 'log', '', '', 1, 0, 'M', '0', '0', '', 'log', 103, 1, sysdate, null, null, '日志管理菜单'); insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 103, 1, sysdate, null, null, '在线用户菜单'); insert into sys_menu values('113', '缓存监控', '2', '5', 'cache', 'monitor/cache/index', '', 1, 0, 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, sysdate, null, null, '缓存监控菜单'); -insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 103, 1, sysdate, null, null, '表单构建菜单'); insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, sysdate, null, null, '代码生成菜单'); insert into sys_menu values('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate, null, null, '租户管理菜单'); insert into sys_menu values('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate, null, null, '租户套餐管理菜单'); diff --git a/script/sql/postgres/postgres_ry_vue_5.X.sql b/script/sql/postgres/postgres_ry_vue_5.X.sql index 9b2169e1c..995d7382c 100644 --- a/script/sql/postgres/postgres_ry_vue_5.X.sql +++ b/script/sql/postgres/postgres_ry_vue_5.X.sql @@ -444,7 +444,6 @@ insert into sys_menu values('107', '通知公告', '1', '8', 'notice', insert into sys_menu values('108', '日志管理', '1', '9', 'log', '', '', '1', '0', 'M', '0', '0', '', 'log', 103, 1, now(), null, null, '日志管理菜单'); insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', '1', '0', 'C', '0', '0', 'monitor:online:list', 'online', 103, 1, now(), null, null, '在线用户菜单'); insert into sys_menu values('113', '缓存监控', '2', '5', 'cache', 'monitor/cache/index', '', '1', '0', 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, now(), null, null, '缓存监控菜单'); -insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', '', '1', '0', 'C', '0', '0', 'tool:build:list', 'build', 103, 1, now(), null, null, '表单构建菜单'); insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', '1', '0', 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, now(), null, null, '代码生成菜单'); insert into sys_menu values('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', '1', '0', 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, now(), null, null, '租户管理菜单'); insert into sys_menu values('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', '1', '0', 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, now(), null, null, '租户套餐管理菜单'); diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql index 396178fa2..3e3562d27 100644 --- a/script/sql/ry_vue_5.X.sql +++ b/script/sql/ry_vue_5.X.sql @@ -278,7 +278,6 @@ insert into sys_menu values('107', '通知公告', '1', '8', 'notice', insert into sys_menu values('108', '日志管理', '1', '9', 'log', '', '', 1, 0, 'M', '0', '0', '', 'log', 103, 1, sysdate(), null, null, '日志管理菜单'); insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 103, 1, sysdate(), null, null, '在线用户菜单'); insert into sys_menu values('113', '缓存监控', '2', '5', 'cache', 'monitor/cache/index', '', 1, 0, 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, sysdate(), null, null, '缓存监控菜单'); -insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 103, 1, sysdate(), null, null, '表单构建菜单'); insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, sysdate(), null, null, '代码生成菜单'); insert into sys_menu values('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate(), null, null, '租户管理菜单'); insert into sys_menu values('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate(), null, null, '租户套餐管理菜单'); diff --git a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql index 00f077114..ad9a0b5f1 100644 --- a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql +++ b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql @@ -1678,8 +1678,6 @@ INSERT sys_menu VALUES (109, N'在线用户', 2, 1, N'online', N'monitor/online/ GO INSERT sys_menu VALUES (113, N'缓存监控', 2, 5, N'cache', N'monitor/cache/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:cache:list', N'redis', 103, 1, getdate(), NULL, NULL, N'缓存监控菜单') GO -INSERT sys_menu VALUES (114, N'表单构建', 3, 1, N'build', N'tool/build/index', N'', 1, 0, N'C', N'0', N'0', N'tool:build:list', N'build', 103, 1, getdate(), NULL, NULL, N'表单构建菜单') -GO INSERT sys_menu VALUES (115, N'代码生成', 3, 2, N'gen', N'tool/gen/index', N'', 1, 0, N'C', N'0', N'0', N'tool:gen:list', N'code', 103, 1, getdate(), NULL, NULL, N'代码生成菜单') GO INSERT sys_menu VALUES (121, N'租户管理', 6, 1, N'tenant', N'system/tenant/index', N'', 1, 0, N'C', N'0', N'0', N'system:tenant:list', N'code', 103, 1, getdate(), NULL, NULL, N'租户管理菜单') From 07adf67dfc6f9f6b9bc4d8443c4a7660c19c91a5 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: Fri, 31 May 2024 10:18:07 +0800 Subject: [PATCH 24/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20update=20sql?= =?UTF-8?q?=E7=BC=BA=E5=B0=91=E5=AD=97=E6=AE=B5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/update/oracle/update_5.1.2-5.2.0.sql | 2 +- script/sql/update/postgres/update_5.1.2-5.2.0.sql | 2 +- script/sql/update/sqlserver/update_5.1.2-5.2.0.sql | 4 ++-- script/sql/update/update_5.1.2-5.2.0.sql | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/script/sql/update/oracle/update_5.1.2-5.2.0.sql b/script/sql/update/oracle/update_5.1.2-5.2.0.sql index 0f87fd620..1aa585a42 100644 --- a/script/sql/update/oracle/update_5.1.2-5.2.0.sql +++ b/script/sql/update/oracle/update_5.1.2-5.2.0.sql @@ -6,4 +6,4 @@ ALTER TABLE sys_post ADD (post_category VARCHAR2(100) DEFAULT NULL) COMMENT '岗 COMMENT ON COLUMN sys_post.post_category IS '岗位类别编码'; UPDATE sys_post SET dept_id = 100; UPDATE sys_post SET dept_id = 103 where post_id = 1; -UPDATE sys_menu SET path = 'snailjob', component = 'monitor/snailjob/index', perms = 'monitor:snailjob:list', remark = 'SnailJob控制台菜单' WHERE menu_id = 120; +UPDATE sys_menu SET menu_name = 'SnailJob控制台', path = 'snailjob', component = 'monitor/snailjob/index', perms = 'monitor:snailjob:list', remark = 'SnailJob控制台菜单' WHERE menu_id = 120; diff --git a/script/sql/update/postgres/update_5.1.2-5.2.0.sql b/script/sql/update/postgres/update_5.1.2-5.2.0.sql index dc36ebf5d..5089a09c9 100644 --- a/script/sql/update/postgres/update_5.1.2-5.2.0.sql +++ b/script/sql/update/postgres/update_5.1.2-5.2.0.sql @@ -6,4 +6,4 @@ ALTER TABLE sys_post ADD COLUMN post_category varchar(100) default null::varchar COMMENT ON COLUMN sys_post.post_category IS '岗位类别编码'; UPDATE sys_post SET dept_id = 100; UPDATE sys_post SET dept_id = 103 where post_id = 1; -UPDATE sys_menu SET path = 'snailjob', component = 'monitor/snailjob/index', perms = 'monitor:snailjob:list', remark = 'SnailJob控制台菜单' WHERE menu_id = 120; +UPDATE sys_menu SET menu_name = 'SnailJob控制台', path = 'snailjob', component = 'monitor/snailjob/index', perms = 'monitor:snailjob:list', remark = 'SnailJob控制台菜单' WHERE menu_id = 120; diff --git a/script/sql/update/sqlserver/update_5.1.2-5.2.0.sql b/script/sql/update/sqlserver/update_5.1.2-5.2.0.sql index bf69f1030..18daca4da 100644 --- a/script/sql/update/sqlserver/update_5.1.2-5.2.0.sql +++ b/script/sql/update/sqlserver/update_5.1.2-5.2.0.sql @@ -25,5 +25,5 @@ UPDATE sys_post SET dept_id = 100 GO UPDATE sys_post SET dept_id = 103 where post_id = 1 GO -UPDATE sys_menu SET path = N'snailjob', component = N'monitor/snailjob/index', perms = N'monitor:snailjob:list', remark = N'SnailJob控制台菜单' WHERE menu_id = 120 -GO \ No newline at end of file +UPDATE sys_menu SET menu_name = N'SnailJob控制台', path = N'snailjob', component = N'monitor/snailjob/index', perms = N'monitor:snailjob:list', remark = N'SnailJob控制台菜单' WHERE menu_id = 120 +GO diff --git a/script/sql/update/update_5.1.2-5.2.0.sql b/script/sql/update/update_5.1.2-5.2.0.sql index 11d71c89b..33384e773 100644 --- a/script/sql/update/update_5.1.2-5.2.0.sql +++ b/script/sql/update/update_5.1.2-5.2.0.sql @@ -2,4 +2,4 @@ ALTER TABLE sys_dept ADD dept_category VARCHAR(100) DEFAULT NULL COMMENT '部门 ALTER TABLE sys_post ADD dept_id BIGINT(20) NOT NULL COMMENT '部门id', ADD post_category VARCHAR(100) DEFAULT NULL COMMENT '岗位类别编码'; UPDATE sys_post SET dept_id = 100; UPDATE sys_post SET dept_id = 103 where post_id = 1; -UPDATE sys_menu SET path = 'snailjob', component = 'monitor/snailjob/index', perms = 'monitor:snailjob:list', remark = 'SnailJob控制台菜单' WHERE menu_id = 120; +UPDATE sys_menu SET menu_name = 'SnailJob控制台', path = 'snailjob', component = 'monitor/snailjob/index', perms = 'monitor:snailjob:list', remark = 'SnailJob控制台菜单' WHERE menu_id = 120; From 9855f60f1f5531a82705562df49454b978d9511e 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: Fri, 31 May 2024 11:25:12 +0800 Subject: [PATCH 25/58] =?UTF-8?q?update=20=E6=9B=B4=E6=94=B9=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=20=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/controller/TestLeaveController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java index 17b6755bd..2c089b925 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java @@ -32,7 +32,7 @@ import java.util.List; @Validated @RequiredArgsConstructor @RestController -@RequestMapping("/demo/leave") +@RequestMapping("/workflow/leave") public class TestLeaveController extends BaseController { private final ITestLeaveService testLeaveService; From 0f9936a5428f11e25cdc9f1e7222fa187e1607bc 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: Fri, 31 May 2024 11:25:12 +0800 Subject: [PATCH 26/58] =?UTF-8?q?update=20=E6=9B=B4=E6=94=B9=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=20=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/controller/TestLeaveController.java | 12 ++++++------ script/sql/flowable.sql | 14 +++++++------- script/sql/oracle/flowable.sql | 14 +++++++------- script/sql/postgres/flowable.sql | 14 +++++++------- script/sql/sqlserver/flowable.sql | 14 +++++++------- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java index 2c089b925..e1c246f06 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java @@ -40,7 +40,7 @@ public class TestLeaveController extends BaseController { /** * 查询请假列表 */ - @SaCheckPermission("demo:leave:list") + @SaCheckPermission("workflow:leave:list") @GetMapping("/list") public TableDataInfo list(TestLeaveBo bo, PageQuery pageQuery) { return testLeaveService.queryPageList(bo, pageQuery); @@ -49,7 +49,7 @@ public class TestLeaveController extends BaseController { /** * 导出请假列表 */ - @SaCheckPermission("demo:leave:export") + @SaCheckPermission("workflow:leave:export") @Log(title = "请假", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(TestLeaveBo bo, HttpServletResponse response) { @@ -62,7 +62,7 @@ public class TestLeaveController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("demo:leave:query") + @SaCheckPermission("workflow:leave:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { @@ -72,7 +72,7 @@ public class TestLeaveController extends BaseController { /** * 新增请假 */ - @SaCheckPermission("demo:leave:add") + @SaCheckPermission("workflow:leave:add") @Log(title = "请假", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +83,7 @@ public class TestLeaveController extends BaseController { /** * 修改请假 */ - @SaCheckPermission("demo:leave:edit") + @SaCheckPermission("workflow:leave:edit") @Log(title = "请假", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +96,7 @@ public class TestLeaveController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("demo:leave:remove") + @SaCheckPermission("workflow:leave:remove") @Log(title = "请假", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/script/sql/flowable.sql b/script/sql/flowable.sql index c3f7428af..6b3a7e7bf 100644 --- a/script/sql/flowable.sql +++ b/script/sql/flowable.sql @@ -112,7 +112,7 @@ create table wf_form_manage ) comment '表单管理'; -insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/demo/leaveEdit/index', NULL, '000000', 103, 1, sysdate(), 1, sysdate()); +insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, sysdate(), 1, sysdate()); create table wf_node_config ( @@ -134,12 +134,12 @@ create table wf_node_config comment '节点配置'; -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请假申请', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'demo:leave:list', '#', 103, 1, sysdate(), NULL, NULL, '请假申请菜单'); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:query', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:add', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:export', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) 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(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, sysdate(), NULL, NULL, ''); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', '业务状态', 'wf_business_status', 103, 1, sysdate(), NULL, NULL, '业务状态列表'); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表单类型', 'wf_form_type', 103, 1, sysdate(), NULL, NULL, '表单类型列表'); diff --git a/script/sql/oracle/flowable.sql b/script/sql/oracle/flowable.sql index afd5c0b90..7ab6a045a 100644 --- a/script/sql/oracle/flowable.sql +++ b/script/sql/oracle/flowable.sql @@ -182,7 +182,7 @@ comment on column WF_FORM_MANAGE.CREATE_TIME is '创建时间'; comment on column WF_FORM_MANAGE.UPDATE_BY is '更新者'; comment on column WF_FORM_MANAGE.UPDATE_TIME is '更新时间'; -insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/demo/leaveEdit/index', NULL, '000000', 103, 1, sysdate, 1, sysdate); +insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, sysdate, 1, sysdate); create table WF_NODE_CONFIG ( @@ -218,12 +218,12 @@ comment on column WF_NODE_CONFIG.CREATE_TIME is '创建时间'; comment on column WF_NODE_CONFIG.UPDATE_BY is '更新者'; comment on column WF_NODE_CONFIG.UPDATE_TIME is '更新时间'; -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请假申请', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'demo:leave:list', '#', 103, 1, sysdate, NULL, NULL, '请假申请菜单'); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:query', '#', 103, 1, sysdate, NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:add', '#', 103, 1, sysdate, NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:edit', '#', 103, 1, sysdate, NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:remove', '#', 103, 1, sysdate, NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:export', '#', 103, 1, sysdate, NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) 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(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, sysdate, NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, sysdate, NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, sysdate, NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, sysdate, NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, sysdate, NULL, NULL, ''); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', '业务状态', 'wf_business_status', 103, 1, sysdate, NULL, NULL, '业务状态列表'); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表单类型', 'wf_form_type', 103, 1, sysdate, NULL, NULL, '表单类型列表'); diff --git a/script/sql/postgres/flowable.sql b/script/sql/postgres/flowable.sql index eff4eeb9c..bb690164c 100644 --- a/script/sql/postgres/flowable.sql +++ b/script/sql/postgres/flowable.sql @@ -251,7 +251,7 @@ comment on column wf_form_manage.update_by is '修改者'; comment on column wf_form_manage.update_time is '修改时间'; -insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/demo/leaveEdit/index', NULL, '000000', 103, 1, now(), 1, now()); +insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, now(), 1, now()); create table wf_node_config ( @@ -300,12 +300,12 @@ comment on column wf_node_config.update_by is '修改者'; comment on column wf_node_config.update_time is '修改时间'; -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请假申请', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'demo:leave:list', '#', 103, 1, now(), NULL, NULL, '请假申请菜单'); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:query', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:add', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:edit', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:remove', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:export', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) 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(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', '业务状态', 'wf_business_status', 103, 1, now(), NULL, NULL, '业务状态列表'); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表单类型', 'wf_form_type', 103, 1, now(), NULL, NULL, '表单类型列表'); diff --git a/script/sql/sqlserver/flowable.sql b/script/sql/sqlserver/flowable.sql index 519e8d78a..c8fe88bc2 100644 --- a/script/sql/sqlserver/flowable.sql +++ b/script/sql/sqlserver/flowable.sql @@ -339,7 +339,7 @@ exec sp_addextendedproperty 'MS_Description', N'更新时间', 'SCHEMA', 'dbo', 'update_time' go -insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/demo/leaveEdit/index', NULL, '000000', 103, 1, getdate(), 1, getdate()); +insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请假申请', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, getdate(), 1, getdate()); create table wf_node_config ( @@ -411,12 +411,12 @@ exec sp_addextendedproperty 'MS_Description', N'更新时间', 'SCHEMA', 'dbo', 'update_time' go -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请假申请', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'demo:leave:list', '#', 103, 1, getdate(), NULL, NULL, '请假申请菜单'); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:query', '#', 103, 1, getdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:add', '#', 103, 1, getdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:edit', '#', 103, 1, getdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:remove', '#', 103, 1, getdate(), NULL, NULL, ''); -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'demo:leave:export', '#', 103, 1, getdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请假申请', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, getdate(), NULL, NULL, '请假申请菜单'); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请假申请查询', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, getdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请假申请新增', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, getdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请假申请修改', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, getdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请假申请删除', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, getdate(), NULL, NULL, ''); +INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请假申请导出', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, getdate(), NULL, NULL, ''); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', '业务状态', 'wf_business_status', 103, 1, getdate(), NULL, NULL, '业务状态列表'); INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表单类型', 'wf_form_type', 103, 1, getdate(), NULL, NULL, '表单类型列表'); From b6e294c137ba403169f94c95ae18cefa3a26e867 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: Fri, 31 May 2024 15:45:57 +0800 Subject: [PATCH 27/58] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/ruoyi-workflow/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 ruoyi-modules/ruoyi-workflow/README.md diff --git a/ruoyi-modules/ruoyi-workflow/README.md b/ruoyi-modules/ruoyi-workflow/README.md new file mode 100644 index 000000000..59096b10e --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/README.md @@ -0,0 +1,3 @@ +# 工作流说明 + +工作流目前在未成熟阶段 后续仍会经历重构 甚至重写(生产使用前请慎重考虑后续是否要更新维护) \ No newline at end of file From 56531afd1aebdcc8c0e4d8d7667b8db0a5cc8bfb 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: Fri, 31 May 2024 16:17:06 +0800 Subject: [PATCH 28/58] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=20pom=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index a0912de50..014941fde 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,8 @@ 3.2.1 1.2.83 + + 7.0.0 3.2.2 @@ -57,9 +59,6 @@ 3.11.0 3.1.2 1.3.0 - - - 7.0.0 From 1c011fbd7b3598220a1c4b6b8fe3fd0d37f0da5c 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: Fri, 31 May 2024 18:15:06 +0800 Subject: [PATCH 29/58] =?UTF-8?q?update=20=E5=A2=9E=E5=8A=A0=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/flowable/strategy/FlowProcessEventHandler.java | 2 +- .../workflow/flowable/strategy/FlowTaskEventHandler.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java index 4af2c4784..929e7d5b8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java @@ -2,7 +2,7 @@ package org.dromara.workflow.flowable.strategy; /** - * 流程监听 + * 总体流程监听(例如: 撤销 提交 退回 等) * * @author may * @date 2023-12-27 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java index b338900e2..d2b06a735 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java @@ -2,7 +2,7 @@ package org.dromara.workflow.flowable.strategy; /** - * 流程任务监听 + * 流程任务监听(例如: 节点的审批等) * * @author may * @date 2023-12-27 From 9175b7a4c1800da509c111660bb737cd9e8994c5 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Fri, 31 May 2024 22:10:41 +0800 Subject: [PATCH 30/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8B=E6=8E=A5=E5=8F=A3=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E4=B8=9A=E5=8A=A1id=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActProcessInstanceController.java | 52 +++++------ .../workflow/domain/bo/ProcessInvalidBo.java | 6 +- .../service/IActProcessInstanceService.java | 32 +++---- .../impl/ActProcessInstanceServiceImpl.java | 88 ++++++++----------- .../service/impl/TestLeaveServiceImpl.java | 2 +- .../dromara/workflow/utils/QueryUtils.java | 12 +++ 6 files changed, 89 insertions(+), 103 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java index 142386b61..931b9f568 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java @@ -58,33 +58,33 @@ public class ActProcessInstanceController extends BaseController { } /** - * 通过流程实例id获取历史流程图 + * 通过业务id获取历史流程图 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ - @GetMapping("/getHistoryImage/{processInstanceId}") - public R getHistoryImage(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) { - return R.ok("操作成功", actProcessInstanceService.getHistoryImage(processInstanceId)); + @GetMapping("/getHistoryImage/{businessKey}") + public R getHistoryImage(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { + return R.ok("操作成功", actProcessInstanceService.getHistoryImage(businessKey)); } /** - * 通过流程实例id获取历史流程图运行中,历史等节点 + * 通过业务id获取历史流程图运行中,历史等节点 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ - @GetMapping("/getHistoryList/{processInstanceId}") - public R> getHistoryList(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) { - return R.ok("操作成功", actProcessInstanceService.getHistoryList(processInstanceId)); + @GetMapping("/getHistoryList/{businessKey}") + public R> getHistoryList(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { + return R.ok("操作成功", actProcessInstanceService.getHistoryList(businessKey)); } /** * 获取审批记录 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ - @GetMapping("/getHistoryRecord/{processInstanceId}") - public R> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) { - return R.ok(actProcessInstanceService.getHistoryRecord(processInstanceId)); + @GetMapping("/getHistoryRecord/{businessKey}") + public R> getHistoryRecord(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { + return R.ok(actProcessInstanceService.getHistoryRecord(businessKey)); } /** @@ -102,37 +102,37 @@ public class ActProcessInstanceController extends BaseController { /** * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceIds 流程实例id + * @param businessKeys 业务id */ @Log(title = "流程实例管理", businessType = BusinessType.DELETE) @RepeatSubmit() - @DeleteMapping("/deleteRunAndHisInstance/{processInstanceIds}") - public R deleteRunAndHisInstance(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) { - return toAjax(actProcessInstanceService.deleteRunAndHisInstance(Arrays.asList(processInstanceIds))); + @DeleteMapping("/deleteRunAndHisInstance/{businessKeys}") + public R deleteRunAndHisInstance(@NotNull(message = "业务id不能为空") @PathVariable String[] businessKeys) { + return toAjax(actProcessInstanceService.deleteRunAndHisInstance(Arrays.asList(businessKeys))); } /** * 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceIds 流程实例id + * @param businessKeys 业务id */ @Log(title = "流程实例管理", businessType = BusinessType.DELETE) @RepeatSubmit() - @DeleteMapping("/deleteFinishAndHisInstance/{processInstanceIds}") - public R deleteFinishAndHisInstance(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) { - return toAjax(actProcessInstanceService.deleteFinishAndHisInstance(Arrays.asList(processInstanceIds))); + @DeleteMapping("/deleteFinishAndHisInstance/{businessKeys}") + public R deleteFinishAndHisInstance(@NotNull(message = "业务id不能为空") @PathVariable String[] businessKeys) { + return toAjax(actProcessInstanceService.deleteFinishAndHisInstance(Arrays.asList(businessKeys))); } /** * 撤销流程申请 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ @Log(title = "流程实例管理", businessType = BusinessType.INSERT) @RepeatSubmit() - @PostMapping("/cancelProcessApply/{processInstanceId}") - public R cancelProcessApply(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) { - return toAjax(actProcessInstanceService.cancelProcessApply(processInstanceId)); + @PostMapping("/cancelProcessApply/{businessKey}") + public R cancelProcessApply(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { + return toAjax(actProcessInstanceService.cancelProcessApply(businessKey)); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ProcessInvalidBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ProcessInvalidBo.java index 35d565255..41e51c2a6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ProcessInvalidBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ProcessInvalidBo.java @@ -19,10 +19,10 @@ public class ProcessInvalidBo implements Serializable { private static final long serialVersionUID = 1L; /** - * 流程实例id + * 业务id */ - @NotBlank(message = "流程实例id不能为空", groups = {AddGroup.class}) - private String processInstanceId; + @NotBlank(message = "业务id不能为空", groups = {AddGroup.class}) + private String businessKey; /** * 作废原因 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java index 2fc0c1aa6..ca3b6fb8e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java @@ -20,18 +20,18 @@ public interface IActProcessInstanceService { /** * 通过流程实例id获取历史流程图 * - * @param processInstanceId 流程实例id + * @param businessKey 流程实例id * @return 结果 */ - String getHistoryImage(String processInstanceId); + String getHistoryImage(String businessKey); /** - * 通过流程实例id获取历史流程图运行中,历史等节点 + * 通过业务id获取历史流程图运行中,历史等节点 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id * @return 结果 */ - Map getHistoryList(String processInstanceId); + Map getHistoryList(String businessKey); /** * 分页查询正在运行的流程实例 @@ -54,10 +54,10 @@ public interface IActProcessInstanceService { /** * 获取审批记录 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id * @return 结果 */ - List getHistoryRecord(String processInstanceId); + List getHistoryRecord(String businessKey); /** * 作废流程实例,不会删除历史记录(删除运行中的实例) @@ -70,34 +70,26 @@ public interface IActProcessInstanceService { /** * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceIds 流程实例id - * @return 结果 - */ - boolean deleteRunAndHisInstance(List processInstanceIds); - - /** - * 按照业务id删除 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 - * * @param businessKeys 业务id * @return 结果 */ - boolean deleteRunAndHisInstanceByBusinessKeys(List businessKeys); + boolean deleteRunAndHisInstance(List businessKeys); /** * 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceIds 流程实例id + * @param businessKeys 业务id * @return 结果 */ - boolean deleteFinishAndHisInstance(List processInstanceIds); + boolean deleteFinishAndHisInstance(List businessKeys); /** * 撤销流程申请 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id * @return 结果 */ - boolean cancelProcessApply(String processInstanceId); + boolean cancelProcessApply(String businessKey); /** * 分页查询当前登录人单据 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 3e20d7440..f7a3db8d5 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -184,28 +184,28 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService } /** - * 通过流程实例id获取历史流程图 + * 通过业务id获取历史流程图 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ @SneakyThrows @Override - public String getHistoryImage(String processInstanceId) { + public String getHistoryImage(String businessKey) { String processDefinitionId; // 获取当前的流程实例 - ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult(); + ProcessInstance processInstance = QueryUtils.businessKeyQuery(businessKey).singleResult(); // 如果流程已经结束,则得到结束节点 if (Objects.isNull(processInstance)) { - HistoricProcessInstance pi = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); + HistoricProcessInstance pi = QueryUtils.hisInstanceQuery().processInstanceBusinessKey(businessKey).singleResult(); processDefinitionId = pi.getProcessDefinitionId(); } else { // 根据流程实例ID获得当前处于活动状态的ActivityId合集 - ProcessInstance pi = QueryUtils.instanceQuery(processInstanceId).singleResult(); + ProcessInstance pi = QueryUtils.instanceQuery(processInstance.getProcessInstanceId()).singleResult(); processDefinitionId = pi.getProcessDefinitionId(); } // 获得活动的节点 - List highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); + List highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstance.getProcessInstanceId()).orderByHistoricActivityInstanceStartTime().asc().list(); List highLightedFlows = new ArrayList<>(); List highLightedNodes = new ArrayList<>(); @@ -240,15 +240,16 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService } /** - * 通过流程实例id获取历史流程图运行中,历史等节点 + * 通过业务id获取历史流程图运行中,历史等节点 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ @Override - public Map getHistoryList(String processInstanceId) { + public Map getHistoryList(String businessKey) { Map map = new HashMap<>(); List> taskList = new ArrayList<>(); - HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); + HistoricProcessInstance historicProcessInstance = QueryUtils.hisBusinessKeyQuery(businessKey).singleResult(); + String processInstanceId = historicProcessInstance.getId(); StringBuilder xml = new StringBuilder(); ProcessDefinition processDefinition = repositoryService.getProcessDefinition(historicProcessInstance.getProcessDefinitionId()); // 获取节点 @@ -333,13 +334,15 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService /** * 获取审批记录 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ @Override - public List getHistoryRecord(String processInstanceId) { + public List getHistoryRecord(String businessKey) { // 查询任务办理记录 - List list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); + List list = QueryUtils.hisTaskBusinessKeyQuery(businessKey).orderByHistoricTaskInstanceEndTime().desc().list(); list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed()); + HistoricProcessInstance historicProcessInstance = QueryUtils.hisBusinessKeyQuery(businessKey).singleResult(); + String processInstanceId = historicProcessInstance.getId(); List actHistoryInfoVoList = new ArrayList<>(); List processInstanceComments = taskService.getProcessInstanceComments(processInstanceId); //附件 @@ -440,7 +443,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService @Transactional(rollbackFor = Exception.class) public boolean deleteRunInstance(ProcessInvalidBo processInvalidBo) { try { - List list = QueryUtils.taskQuery(processInvalidBo.getProcessInstanceId()).list(); + List list = QueryUtils.taskQuery().processInstanceBusinessKey(processInvalidBo.getBusinessKey()).list(); + String processInstanceId = list.get(0).getProcessInstanceId(); List subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); if (CollUtil.isNotEmpty(subTasks)) { subTasks.forEach(e -> taskService.deleteTask(e.getId())); @@ -452,10 +456,10 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) { taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason); } - HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult(); + HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus()); - runtimeService.updateBusinessStatus(processInvalidBo.getProcessInstanceId(), BusinessStatusEnum.INVALID.getStatus()); - runtimeService.deleteProcessInstance(processInvalidBo.getProcessInstanceId(), deleteReason); + runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.INVALID.getStatus()); + runtimeService.deleteProcessInstance(processInstanceId, deleteReason); FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); if (processHandler != null) { processHandler.handleProcess(historicProcessInstance.getBusinessKey(), BusinessStatusEnum.INVALID.getStatus(), false); @@ -470,40 +474,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService /** * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceIds 流程实例id - */ - @Override - @Transactional(rollbackFor = Exception.class) - public boolean deleteRunAndHisInstance(List processInstanceIds) { - try { - // 1.删除运行中流程实例 - List list = QueryUtils.taskQuery(processInstanceIds).list(); - List subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); - if (CollUtil.isNotEmpty(subTasks)) { - subTasks.forEach(e -> taskService.deleteTask(e.getId())); - } - runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请"); - // 2.删除历史记录 - List historicProcessInstanceList = QueryUtils.hisInstanceQuery(new HashSet<>(processInstanceIds)).list(); - if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { - historyService.bulkDeleteHistoricProcessInstances(processInstanceIds); - } - wfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); - return true; - } catch (Exception e) { - e.printStackTrace(); - throw new ServiceException(e.getMessage()); - } - } - - /** - * 按照业务id删除 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 - * * @param businessKeys 业务id */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteRunAndHisInstanceByBusinessKeys(List businessKeys) { + public boolean deleteRunAndHisInstance(List businessKeys) { try { // 1.删除运行中流程实例 List actHiProcinsts = actHiProcinstService.selectByBusinessKeyIn(businessKeys); @@ -534,12 +509,18 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService /** * 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceIds 流程实例id + * @param businessKeys 业务id */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteFinishAndHisInstance(List processInstanceIds) { + public boolean deleteFinishAndHisInstance(List businessKeys) { try { + List actHiProcinsts = actHiProcinstService.selectByBusinessKeyIn(businessKeys); + if (CollUtil.isEmpty(actHiProcinsts)) { + log.warn("当前业务ID:{}查询到流程实例为空!", businessKeys); + return false; + } + List processInstanceIds = StreamUtils.toList(actHiProcinsts, ActHiProcinst::getId); historyService.bulkDeleteHistoricProcessInstances(processInstanceIds); wfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; @@ -552,13 +533,13 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService /** * 撤销流程申请 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ @Override @Transactional(rollbackFor = Exception.class) - public boolean cancelProcessApply(String processInstanceId) { + public boolean cancelProcessApply(String businessKey) { try { - ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId) + ProcessInstance processInstance = QueryUtils.businessKeyQuery(businessKey) .startedBy(String.valueOf(LoginHelper.getUserId())).singleResult(); if (ObjectUtil.isNull(processInstance)) { throw new ServiceException("您不是流程发起人,撤销失败!"); @@ -566,6 +547,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService if (processInstance.isSuspended()) { throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED); } + String processInstanceId = processInstance.getId(); BusinessStatusEnum.checkCancelStatus(processInstance.getBusinessStatus()); List taskList = QueryUtils.taskQuery(processInstanceId).list(); for (Task task : taskList) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index bee562739..af4b5bb52 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -115,7 +115,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids) { List idList = StreamUtils.toList(ids, String::valueOf); - actProcessInstanceService.deleteRunAndHisInstanceByBusinessKeys(idList); + actProcessInstanceService.deleteRunAndHisInstance(idList); return baseMapper.deleteBatchIds(ids) > 0; } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java index 944d9d78b..0599a1229 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java @@ -75,6 +75,10 @@ public class QueryUtils { return hisTaskInstanceQuery().processInstanceId(processInstanceId); } + public static HistoricTaskInstanceQuery hisTaskBusinessKeyQuery(String businessKey) { + return hisTaskInstanceQuery().processInstanceBusinessKey(businessKey); + } + public static ProcessInstanceQuery instanceQuery() { ProcessInstanceQuery query = PROCESS_ENGINE.getRuntimeService().createProcessInstanceQuery(); if (TenantHelper.isEnable()) { @@ -87,6 +91,10 @@ public class QueryUtils { return instanceQuery().processInstanceId(processInstanceId); } + public static ProcessInstanceQuery businessKeyQuery(String businessKey) { + return instanceQuery().processInstanceBusinessKey(businessKey); + } + public static ProcessInstanceQuery instanceQuery(Set processInstanceIds) { return instanceQuery().processInstanceIds(processInstanceIds); } @@ -103,6 +111,10 @@ public class QueryUtils { return hisInstanceQuery().processInstanceId(processInstanceId); } + public static HistoricProcessInstanceQuery hisBusinessKeyQuery(String businessKey) { + return hisInstanceQuery().processInstanceBusinessKey(businessKey); + } + public static HistoricProcessInstanceQuery hisInstanceQuery(Set processInstanceIds) { return hisInstanceQuery().processInstanceIds(processInstanceIds); } From c84f24fe209dda159b48b428c8f4bf2e4e45b540 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Fri, 31 May 2024 22:58:13 +0800 Subject: [PATCH 31/58] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/service/WorkflowService.java | 33 ++++++++++++ .../service/impl/ActTaskServiceImpl.java | 2 +- .../service/impl/WorkflowServiceImpl.java | 52 +++++++++++++++++++ .../dromara/workflow/utils/QueryUtils.java | 2 +- .../dromara/workflow/utils/WorkflowUtils.java | 6 +-- 5 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java new file mode 100644 index 000000000..fba5295b0 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java @@ -0,0 +1,33 @@ +package org.dromara.common.core.service; + +import java.util.List; + +/** + * 通用 工作流服务 + * + * @author may + */ +public interface WorkflowService { + + /** + * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 + * + * @param businessKeys 业务id + * @return 结果 + */ + boolean deleteRunAndHisInstance(List businessKeys); + + /** + * 获取当前流程状态 + * + * @param taskId 任务id + */ + String getBusinessStatusByTaskId(String taskId); + + /** + * 获取当前流程状态 + * + * @param businessKey 业务id + */ + String getBusinessStatus(String businessKey); +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 6a6b1b1cb..dc74cfe2a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -180,7 +180,7 @@ public class ActTaskServiceImpl implements IActTaskService { AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId()); managementService.executeCommand(attachmentCmd); FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); - String businessStatus = WorkflowUtils.getBusinessStatus(task.getProcessInstanceId()); + String businessStatus = WorkflowUtils.getBusinessStatus(processInstance.getBusinessKey()); if (BusinessStatusEnum.DRAFT.getStatus().equals(businessStatus) || BusinessStatusEnum.BACK.getStatus().equals(businessStatus) || BusinessStatusEnum.CANCEL.getStatus().equals(businessStatus)) { if (processHandler != null) { processHandler.handleProcess(processInstance.getBusinessKey(), businessStatus, true); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java new file mode 100644 index 000000000..0c4118f80 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -0,0 +1,52 @@ +package org.dromara.workflow.service.impl; + +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.service.WorkflowService; +import org.dromara.workflow.service.IActProcessInstanceService; +import org.dromara.workflow.utils.WorkflowUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 通用 工作流服务实现 + * + * @author may + */ +@RequiredArgsConstructor +@Service +public class WorkflowServiceImpl implements WorkflowService { + + private final IActProcessInstanceService iActProcessInstanceService; + + /** + * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 + * + * @param businessKeys 业务id + * @return 结果 + */ + @Override + public boolean deleteRunAndHisInstance(List businessKeys) { + return iActProcessInstanceService.deleteRunAndHisInstance(businessKeys); + } + + /** + * 获取当前流程状态 + * + * @param taskId 任务id + */ + @Override + public String getBusinessStatusByTaskId(String taskId) { + return WorkflowUtils.getBusinessStatusByTaskId(taskId); + } + + /** + * 获取当前流程状态 + * + * @param businessKey 业务id + */ + @Override + public String getBusinessStatus(String businessKey) { + return WorkflowUtils.getBusinessStatus(businessKey); + } +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java index 0599a1229..085ccc649 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java @@ -159,7 +159,7 @@ public class QueryUtils { } TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); - String businessStatus = WorkflowUtils.getBusinessStatus(taskVo.getProcessInstanceId()); + String businessStatus = WorkflowUtils.getBusinessStatus(taskVo.getBusinessKey()); taskVo.setBusinessStatus(businessStatus); return taskVo; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index a620289e9..2281acbd9 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -228,10 +228,10 @@ public class WorkflowUtils { /** * 获取当前流程状态 * - * @param processInstanceId 流程实例id + * @param businessKey 业务id */ - public static String getBusinessStatus(String processInstanceId) { - HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); + public static String getBusinessStatus(String businessKey) { + HistoricProcessInstance historicProcessInstance = QueryUtils.hisBusinessKeyQuery(businessKey).singleResult(); return historicProcessInstance.getBusinessStatus(); } From d443304829a383dd9ce2ceef5bfdb863adb459c9 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 09:38:57 +0800 Subject: [PATCH 32/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=9F=A5=E8=AF=A2=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/workflow/utils/QueryUtils.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java index 085ccc649..277d3d94c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java @@ -8,6 +8,7 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.workflow.domain.vo.TaskVo; import org.flowable.engine.ProcessEngine; import org.flowable.engine.history.HistoricActivityInstanceQuery; +import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.flowable.engine.repository.DeploymentQuery; import org.flowable.engine.repository.ModelQuery; @@ -157,7 +158,9 @@ public class QueryUtils { if (task == null) { return null; } + HistoricProcessInstance instance = QueryUtils.hisInstanceQuery(task.getProcessInstanceId()).singleResult(); TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class); + taskVo.setBusinessKey(instance.getBusinessKey()); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); String businessStatus = WorkflowUtils.getBusinessStatus(taskVo.getBusinessKey()); taskVo.setBusinessStatus(businessStatus); From 6ce92e1669493c732168fecf23906ff05fb586b3 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 09:40:10 +0800 Subject: [PATCH 33/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=9F=A5=E8=AF=A2=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/workflow/utils/QueryUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java index 277d3d94c..df928dc72 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java @@ -8,11 +8,11 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.workflow.domain.vo.TaskVo; import org.flowable.engine.ProcessEngine; import org.flowable.engine.history.HistoricActivityInstanceQuery; -import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.flowable.engine.repository.DeploymentQuery; import org.flowable.engine.repository.ModelQuery; import org.flowable.engine.repository.ProcessDefinitionQuery; +import org.flowable.engine.runtime.ProcessInstance; import org.flowable.engine.runtime.ProcessInstanceQuery; import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; @@ -158,9 +158,9 @@ public class QueryUtils { if (task == null) { return null; } - HistoricProcessInstance instance = QueryUtils.hisInstanceQuery(task.getProcessInstanceId()).singleResult(); + ProcessInstance processInstance = QueryUtils.instanceQuery(task.getProcessInstanceId()).singleResult(); TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class); - taskVo.setBusinessKey(instance.getBusinessKey()); + taskVo.setBusinessKey(processInstance.getBusinessKey()); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); String businessStatus = WorkflowUtils.getBusinessStatus(taskVo.getBusinessKey()); taskVo.setBusinessStatus(businessStatus); From 9b507f06c4a7ff9ad39d25b45bb11982bc814e5d Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 10:19:18 +0800 Subject: [PATCH 34/58] =?UTF-8?q?update=20=E5=A2=9E=E5=8A=A0=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=8E=A5=E5=8F=A3=20=E9=99=8D=E4=BD=8E=E8=80=A6?= =?UTF-8?q?=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/dto/BusinessInstanceDTO.java | 71 +++++++++++++++++++ .../common/core/service/WorkflowService.java | 17 +++++ .../common/constant/FlowConstant.java | 4 +- .../workflow/domain/vo/TestLeaveVo.java | 5 +- .../service/impl/ActTaskServiceImpl.java | 8 +-- .../service/impl/TestLeaveServiceImpl.java | 15 ++-- .../service/impl/WorkflowServiceImpl.java | 23 ++++++ .../dromara/workflow/utils/WorkflowUtils.java | 53 +++++++------- 8 files changed, 154 insertions(+), 42 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java new file mode 100644 index 000000000..ecf83cfcc --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java @@ -0,0 +1,71 @@ +package org.dromara.common.core.domain.dto; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 业务与流程实例关联对象 + * + * @author may + */ +@Data +@NoArgsConstructor +public class BusinessInstanceDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 流程实例id + */ + private String id; + + /** + * 流程定义id + */ + private String processDefinitionId; + + /** + * 流程定义名称 + */ + private String name; + + /** + * 业务id + */ + private String businessKey; + + /** + * 租户id + */ + private String tenantId; + + /** + * 启动时间 + */ + private Date startTime; + + /** + * 结束时间 + */ + private Date endTime; + + /** + * 启动人id + */ + private String startUserId; + + /** + * 流程状态 + */ + private String businessStatus; + + /** + * 流程状态 + */ + private String businessStatusName; +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java index fba5295b0..15c2f4da0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java @@ -30,4 +30,21 @@ public interface WorkflowService { * @param businessKey 业务id */ String getBusinessStatus(String businessKey); + + /** + * 设置流程实例对象 + * + * @param obj 业务对象 + * @param businessKey 业务id + */ + void setBusinessInstanceDTO(Object obj, String businessKey); + + /** + * 设置流程实例对象 + * + * @param obj 业务对象 + * @param idList 业务id + * @param fieldName 主键属性名称 + */ + void setBusinessInstanceListDTO(Object obj, List idList, String fieldName); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java index df27d3cf9..c3fcafa87 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java @@ -71,9 +71,9 @@ public interface FlowConstant { String ZIP = "ZIP"; /** - * 流程实例对象 + * 业务与流程实例关联对象 */ - String PROCESS_INSTANCE_VO = "processInstanceVo"; + String BUSINESS_INSTANCE_DTO = "businessInstanceDTO"; /** * 流程定义配置 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java index c62a35612..7904d5201 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.common.core.domain.dto.BusinessInstanceDTO; import org.dromara.workflow.domain.TestLeave; import java.io.Serial; @@ -62,9 +63,9 @@ public class TestLeaveVo implements Serializable { private String remark; /** - * 流程实例对象 + * 业务与流程实例关联对象 */ - private ProcessInstanceVo processInstanceVo; + private BusinessInstanceDTO businessInstanceDTO; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index dc74cfe2a..84a3749af 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -160,7 +160,7 @@ public class ActTaskServiceImpl implements IActTaskService { public boolean completeTask(CompleteTaskBo completeTaskBo) { try { String userId = String.valueOf(LoginHelper.getUserId()); - Task task = WorkflowUtils.getTaskByCurrUser(completeTaskBo.getTaskId()); + Task task = WorkflowUtils.getTaskByCurrentUser(completeTaskBo.getTaskId()); if (task == null) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -463,7 +463,7 @@ public class ActTaskServiceImpl implements IActTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean delegateTask(DelegateBo delegateBo) { - Task task = WorkflowUtils.getTaskByCurrUser(delegateBo.getTaskId()); + Task task = WorkflowUtils.getTaskByCurrentUser(delegateBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); @@ -537,7 +537,7 @@ public class ActTaskServiceImpl implements IActTaskService { */ @Override public boolean transferTask(TransmitBo transmitBo) { - Task task = WorkflowUtils.getTaskByCurrUser(transmitBo.getTaskId()); + Task task = WorkflowUtils.getTaskByCurrentUser(transmitBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -663,7 +663,7 @@ public class ActTaskServiceImpl implements IActTaskService { @Transactional(rollbackFor = Exception.class) public String backProcess(BackProcessBo backProcessBo) { String userId = String.valueOf(LoginHelper.getUserId()); - Task task = WorkflowUtils.getTaskByCurrUser(backProcessBo.getTaskId()); + Task task = WorkflowUtils.getTaskByCurrentUser(backProcessBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index af4b5bb52..abb6473e0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; @@ -15,9 +16,7 @@ import org.dromara.workflow.domain.TestLeave; import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.vo.TestLeaveVo; import org.dromara.workflow.mapper.TestLeaveMapper; -import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.service.ITestLeaveService; -import org.dromara.workflow.utils.WorkflowUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,7 +34,7 @@ import java.util.List; public class TestLeaveServiceImpl implements ITestLeaveService { private final TestLeaveMapper baseMapper; - private final IActProcessInstanceService actProcessInstanceService; + private final WorkflowService workflowService; /** * 查询请假 @@ -43,7 +42,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { @Override public TestLeaveVo queryById(Long id) { TestLeaveVo testLeaveVo = baseMapper.selectVoById(id); - WorkflowUtils.setProcessInstanceVo(testLeaveVo, String.valueOf(id)); + workflowService.setBusinessInstanceDTO(testLeaveVo, String.valueOf(id)); return testLeaveVo; } @@ -58,7 +57,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { List rows = build.getRows(); if (CollUtil.isNotEmpty(rows)) { List ids = StreamUtils.toList(rows, e -> String.valueOf(e.getId())); - WorkflowUtils.setProcessInstanceListVo(rows, ids, "id"); + workflowService.setBusinessInstanceListDTO(rows, ids, "id"); } return build; } @@ -92,7 +91,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { bo.setId(add.getId()); } TestLeaveVo testLeaveVo = MapstructUtils.convert(add, TestLeaveVo.class); - WorkflowUtils.setProcessInstanceVo(testLeaveVo, String.valueOf(add.getId())); + workflowService.setBusinessInstanceDTO(testLeaveVo, String.valueOf(add.getId())); return testLeaveVo; } @@ -104,7 +103,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { TestLeave update = MapstructUtils.convert(bo, TestLeave.class); baseMapper.updateById(update); TestLeaveVo testLeaveVo = MapstructUtils.convert(update, TestLeaveVo.class); - WorkflowUtils.setProcessInstanceVo(testLeaveVo, String.valueOf(update.getId())); + workflowService.setBusinessInstanceDTO(testLeaveVo, String.valueOf(update.getId())); return testLeaveVo; } @@ -115,7 +114,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids) { List idList = StreamUtils.toList(ids, String::valueOf); - actProcessInstanceService.deleteRunAndHisInstance(idList); + workflowService.deleteRunAndHisInstance(idList); return baseMapper.deleteBatchIds(ids) > 0; } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 0c4118f80..91a899db7 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -49,4 +49,27 @@ public class WorkflowServiceImpl implements WorkflowService { public String getBusinessStatus(String businessKey) { return WorkflowUtils.getBusinessStatus(businessKey); } + + /** + * 设置流程实例对象 + * + * @param obj 业务对象 + * @param businessKey 业务id + */ + @Override + public void setBusinessInstanceDTO(Object obj, String businessKey) { + WorkflowUtils.setBusinessInstanceDTO(obj, businessKey); + } + + /** + * 设置流程实例对象 + * + * @param obj 业务对象 + * @param idList 业务id + * @param fieldName 主键属性名称 + */ + @Override + public void setBusinessInstanceListDTO(Object obj, List idList, String fieldName) { + WorkflowUtils.setBusinessInstanceListDTO(obj, idList, fieldName); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index 2281acbd9..aa84387f4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.dromara.common.core.domain.dto.BusinessInstanceDTO; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.service.UserService; @@ -27,7 +28,6 @@ import org.dromara.workflow.domain.ActHiProcinst; import org.dromara.workflow.domain.ActHiTaskinst; import org.dromara.workflow.domain.vo.MultiInstanceVo; import org.dromara.workflow.domain.vo.ParticipantVo; -import org.dromara.workflow.domain.vo.ProcessInstanceVo; import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd; import org.dromara.workflow.mapper.ActHiTaskinstMapper; import org.dromara.workflow.service.IActHiProcinstService; @@ -46,7 +46,7 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntity; import java.util.*; -import static org.dromara.workflow.common.constant.FlowConstant.PROCESS_INSTANCE_VO; +import static org.dromara.workflow.common.constant.FlowConstant.BUSINESS_INSTANCE_DTO; /** * 工作流工具 @@ -241,20 +241,21 @@ public class WorkflowUtils { * @param obj 业务对象 * @param businessKey 业务id */ - public static void setProcessInstanceVo(Object obj, String businessKey) { + public static void setBusinessInstanceDTO(Object obj, String businessKey) { if (StringUtils.isBlank(businessKey) || obj == null) { return; } ActHiProcinst actHiProcinst = ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey); if (actHiProcinst == null) { - ProcessInstanceVo processInstanceVo = new ProcessInstanceVo(); - processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - ReflectUtils.invokeSetter(obj, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); + businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); + ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); return; } - ProcessInstanceVo processInstanceVo = BeanUtil.toBean(actHiProcinst, ProcessInstanceVo.class); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(obj, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class); + businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); + businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId()); + ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); } /** @@ -264,7 +265,7 @@ public class WorkflowUtils { * @param idList 业务id * @param fieldName 主键属性名称 */ - public static void setProcessInstanceListVo(Object obj, List idList, String fieldName) { + public static void setBusinessInstanceListDTO(Object obj, List idList, String fieldName) { if (CollUtil.isEmpty(idList) || obj == null) { return; } @@ -273,21 +274,22 @@ public class WorkflowUtils { for (Object o : collection) { String fieldValue = ReflectUtils.invokeGetter(o, fieldName).toString(); if (CollUtil.isEmpty(actHiProcinstList)) { - ProcessInstanceVo processInstanceVo = new ProcessInstanceVo(); - processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); + businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); + businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); + ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); } else { ActHiProcinst actHiProcinst = actHiProcinstList.stream().filter(e -> e.getBusinessKey().equals(fieldValue)).findFirst().orElse(null); if (ObjectUtil.isNotEmpty(actHiProcinst)) { - ProcessInstanceVo processInstanceVo = BeanUtil.toBean(actHiProcinst, ProcessInstanceVo.class); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class); + businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); + businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId()); + ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); } else { - ProcessInstanceVo processInstanceVo = new ProcessInstanceVo(); - processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); + businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); + businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); + ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); } } } @@ -346,10 +348,11 @@ public class WorkflowUtils { /** * 根据任务id查询 当前用户的任务,检查 当前人员 是否是该 taskId 的办理人 + * * @param taskId 任务id - * @return + * @return 结果 */ - public static Task getTaskByCurrUser(String taskId){ + public static Task getTaskByCurrentUser(String taskId) { TaskQuery taskQuery = QueryUtils.taskQuery(); taskQuery.taskId(taskId).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())); @@ -358,8 +361,6 @@ public class WorkflowUtils { List groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); taskQuery.taskCandidateGroupIn(groupIds); } - Task task = taskQuery.singleResult(); - - return task; + return taskQuery.singleResult(); } } From 7b02ad3c0019691cd22734ba92c173d721cfbc38 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 11:28:19 +0800 Subject: [PATCH 35/58] =?UTF-8?q?remove=20=E5=88=A0=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/flowable/handler/TaskTimeoutJobHandler.java | 1 - .../dromara/workflow/listener/TestLeaveExecutionListener.java | 1 - 2 files changed, 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/TaskTimeoutJobHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/TaskTimeoutJobHandler.java index 7685423fc..61c938864 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/TaskTimeoutJobHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/TaskTimeoutJobHandler.java @@ -8,7 +8,6 @@ import org.flowable.engine.impl.util.CommandContextUtil; import org.flowable.job.service.JobHandler; import org.flowable.job.service.impl.persistence.entity.JobEntity; import org.flowable.task.api.Task; -import org.flowable.task.api.TaskQuery; import org.flowable.variable.api.delegate.VariableScope; /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java index 11f844e4a..f159d815d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java @@ -3,7 +3,6 @@ package org.dromara.workflow.listener; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.workflow.utils.QueryUtils; -import org.flowable.engine.TaskService; import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.delegate.ExecutionListener; import org.flowable.task.api.Task; From 0b04ac79d0fec886d15683e84e76b2e811814054 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 14:42:05 +0800 Subject: [PATCH 36/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/event/ProcessEvent.java | 49 +++++++++++++ .../core/domain/event/ProcessTaskEvent.java | 42 +++++++++++ .../annotation/FlowListenerAnnotation.java | 27 ------- .../handler/FlowProcessEventHandler.java | 49 +++++++++++++ .../flowable/strategy/FlowEventStrategy.java | 73 ------------------- .../strategy/FlowProcessEventHandler.java | 20 ----- .../strategy/FlowTaskEventHandler.java | 19 ----- .../listener/TestCustomProcessHandler.java | 31 -------- .../listener/TestCustomTaskHandler.java | 23 ------ .../impl/ActProcessInstanceServiceImpl.java | 19 ++--- .../service/impl/ActTaskServiceImpl.java | 40 ++++------ .../service/impl/TestLeaveServiceImpl.java | 27 +++++++ 12 files changed, 191 insertions(+), 228 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/annotation/FlowListenerAnnotation.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowEventStrategy.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomProcessHandler.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomTaskHandler.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java new file mode 100644 index 000000000..44634238e --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java @@ -0,0 +1,49 @@ +package org.dromara.common.core.domain.event; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 总体流程监听 + * + * @author may + */ + +@Data +public class ProcessEvent implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + + /** + * 流程定义key + */ + private String key; + + /** + * 业务id + */ + private String businessKey; + + /** + * 状态 + */ + private String status; + + /** + * 当为true时为申请人节点办理 + */ + private boolean submit; + + /** + * 请求体 + */ + private HttpServletRequest request; + + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java new file mode 100644 index 000000000..e4508407a --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java @@ -0,0 +1,42 @@ +package org.dromara.common.core.domain.event; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 流程办理监听 + * + * @author may + */ + +@Data +public class ProcessTaskEvent implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * 流程定义key与流程节点标识(拼接方式:流程定义key_流程节点) + */ + private String keyNode; + + /** + * 任务id + */ + private String taskId; + + /** + * 业务id + */ + private String businessKey; + + /** + * 请求体 + */ + private HttpServletRequest request; + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/annotation/FlowListenerAnnotation.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/annotation/FlowListenerAnnotation.java deleted file mode 100644 index 5ea262d17..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/annotation/FlowListenerAnnotation.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.dromara.workflow.annotation; - - -import java.lang.annotation.*; - -/** - * 流程任务监听注解 - * - * @author may - * @date 2023-12-27 - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -public @interface FlowListenerAnnotation { - - /** - * 流程定义key - */ - String processDefinitionKey(); - - /** - * 节点id - */ - String taskDefId() default ""; -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java new file mode 100644 index 000000000..92314ac09 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java @@ -0,0 +1,49 @@ +package org.dromara.workflow.flowable.handler; + +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.utils.ServletUtils; +import org.dromara.common.core.utils.SpringUtils; +import org.springframework.stereotype.Component; + +/** + * 流程监听服务 + * + * @author may + * @date 2024-06-02 + */ +@Component +public class FlowProcessEventHandler { + + /** + * @param key 流程key + * @param businessKey 业务id + * @param status 状态 + * @param submit 当为true时为申请人节点办理 + */ + public void processHandler(String key, String businessKey, String status, boolean submit) { + ProcessEvent processEvent = new ProcessEvent(); + processEvent.setKey(key); + processEvent.setBusinessKey(businessKey); + processEvent.setStatus(status); + processEvent.setSubmit(submit); + processEvent.setRequest(ServletUtils.getRequest()); + SpringUtils.context().publishEvent(processEvent); + } + + /** + * 执行办理任务监听 + * + * @param keyNode 流程定义key与流程节点标识(拼接方式:流程定义key_流程节点) + * @param taskId 任务id + * @param businessKey 业务id + */ + public void processTaskHandler(String keyNode, String taskId, String businessKey) { + ProcessTaskEvent processTaskEvent = new ProcessTaskEvent(); + processTaskEvent.setKeyNode(keyNode); + processTaskEvent.setTaskId(taskId); + processTaskEvent.setBusinessKey(businessKey); + processTaskEvent.setRequest(ServletUtils.getRequest()); + SpringUtils.context().publishEvent(processTaskEvent); + } +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowEventStrategy.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowEventStrategy.java deleted file mode 100644 index 9da577633..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowEventStrategy.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.dromara.workflow.flowable.strategy; - -import org.dromara.common.core.utils.StringUtils; -import org.dromara.workflow.annotation.FlowListenerAnnotation; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * 流程任务监听策略 - * - * @author may - * @date 2023-12-27 - */ -@Component -public class FlowEventStrategy implements BeanPostProcessor { - - private final Map flowTaskEventHandlers = new HashMap<>(); - private final Map flowProcessEventHandlers = new HashMap<>(); - - @Override - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - if (bean instanceof FlowTaskEventHandler) { - FlowListenerAnnotation annotation = bean.getClass().getAnnotation(FlowListenerAnnotation.class); - if (null != annotation) { - if (StringUtils.isNotBlank(annotation.processDefinitionKey()) && StringUtils.isNotBlank(annotation.taskDefId())) { - String id = annotation.processDefinitionKey() + "_" + annotation.taskDefId(); - if (!flowTaskEventHandlers.containsKey(id)) { - flowTaskEventHandlers.put(id, (FlowTaskEventHandler) bean); - } - } - } - } - if (bean instanceof FlowProcessEventHandler) { - FlowListenerAnnotation annotation = bean.getClass().getAnnotation(FlowListenerAnnotation.class); - if (null != annotation) { - if (StringUtils.isNotBlank(annotation.processDefinitionKey()) && StringUtils.isBlank(annotation.taskDefId())) { - if (!flowProcessEventHandlers.containsKey(annotation.processDefinitionKey())) { - flowProcessEventHandlers.put(annotation.processDefinitionKey(), (FlowProcessEventHandler) bean); - } - } - } - } - return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName); - } - - /** - * 获取可执行bean - * - * @param key key - */ - public FlowTaskEventHandler getTaskHandler(String key) { - if (!flowTaskEventHandlers.containsKey(key)) { - return null; - } - return flowTaskEventHandlers.get(key); - } - - /** - * 获取可执行bean - * - * @param key key - */ - public FlowProcessEventHandler getProcessHandler(String key) { - if (!flowProcessEventHandlers.containsKey(key)) { - return null; - } - return flowProcessEventHandlers.get(key); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java deleted file mode 100644 index 929e7d5b8..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.dromara.workflow.flowable.strategy; - - -/** - * 总体流程监听(例如: 撤销 提交 退回 等) - * - * @author may - * @date 2023-12-27 - */ -public interface FlowProcessEventHandler { - - /** - * 执行办理任务监听 - * - * @param businessKey 业务id - * @param status 状态 - * @param submit 当为true时为申请人节点办理 - */ - void handleProcess(String businessKey, String status, boolean submit); -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java deleted file mode 100644 index d2b06a735..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.dromara.workflow.flowable.strategy; - - -/** - * 流程任务监听(例如: 节点的审批等) - * - * @author may - * @date 2023-12-27 - */ -public interface FlowTaskEventHandler { - - /** - * 执行办理任务监听 - * - * @param taskId 任务ID - * @param businessKey 业务id - */ - void handleTask(String taskId, String businessKey); -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomProcessHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomProcessHandler.java deleted file mode 100644 index 29886d8d4..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomProcessHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.dromara.workflow.listener; - -import lombok.extern.slf4j.Slf4j; -import org.dromara.workflow.annotation.FlowListenerAnnotation; -import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; -import org.springframework.stereotype.Component; - -/** - * 自定义监听测试 - * - * @author may - * @date 2023-12-27 - */ -@Slf4j -@Component -@FlowListenerAnnotation(processDefinitionKey = "leave1") -public class TestCustomProcessHandler implements FlowProcessEventHandler { - - - /** - * 执行办理任务监听 - * - * @param businessKey 业务id - * @param status 状态 - * @param submit 当为true时为申请人节点办理 - */ - @Override - public void handleProcess(String businessKey, String status, boolean submit) { - log.info("业务ID:" + businessKey + ",状态:" + status); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomTaskHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomTaskHandler.java deleted file mode 100644 index d85286df7..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomTaskHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.workflow.listener; - -import lombok.extern.slf4j.Slf4j; -import org.dromara.workflow.annotation.FlowListenerAnnotation; -import org.dromara.workflow.flowable.strategy.FlowTaskEventHandler; -import org.springframework.stereotype.Component; - -/** - * 自定义监听测试 - * - * @author may - * @date 2023-12-27 - */ -@Slf4j -@Component -@FlowListenerAnnotation(processDefinitionKey = "leave1", taskDefId = "Activity_14633hx") -public class TestCustomTaskHandler implements FlowTaskEventHandler { - - @Override - public void handleTask(String taskId, String businessKey) { - log.info("任务ID:" + taskId + ",业务ID:" + businessKey); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index f7a3db8d5..9937f7aac 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -26,8 +26,7 @@ import org.dromara.workflow.domain.vo.*; import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator; import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd; import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd; -import org.dromara.workflow.flowable.strategy.FlowEventStrategy; -import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; +import org.dromara.workflow.flowable.handler.FlowProcessEventHandler; import org.dromara.workflow.service.IActHiProcinstService; import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.service.IWfNodeConfigService; @@ -75,9 +74,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService private final TaskService taskService; private final IActHiProcinstService actHiProcinstService; private final ManagementService managementService; - private final FlowEventStrategy flowEventStrategy; private final IWfTaskBackNodeService wfTaskBackNodeService; private final IWfNodeConfigService wfNodeConfigService; + private final FlowProcessEventHandler flowProcessEventHandler; @Value("${flowable.activity-font-name}") private String activityFontName; @@ -460,10 +459,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus()); runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.INVALID.getStatus()); runtimeService.deleteProcessInstance(processInstanceId, deleteReason); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(historicProcessInstance.getBusinessKey(), BusinessStatusEnum.INVALID.getStatus(), false); - } + //流程作废监听 + flowProcessEventHandler.processHandler(historicProcessInstance.getProcessDefinitionKey(), + historicProcessInstance.getBusinessKey(), BusinessStatusEnum.INVALID.getStatus(), false); return true; } catch (Exception e) { e.printStackTrace(); @@ -570,10 +568,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService managementService.executeCommand(deleteExecutionCmd); } runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.CANCEL.getStatus()); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.CANCEL.getStatus(), false); - } + //流程作废监听 + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), + processInstance.getBusinessKey(), BusinessStatusEnum.CANCEL.getStatus(), false); return true; } catch (Exception e) { e.printStackTrace(); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 84a3749af..5e9a05099 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -9,8 +9,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.UserService; +import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -25,9 +27,7 @@ import org.dromara.workflow.domain.WfTaskBackNode; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.*; import org.dromara.workflow.flowable.cmd.*; -import org.dromara.workflow.flowable.strategy.FlowEventStrategy; -import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; -import org.dromara.workflow.flowable.strategy.FlowTaskEventHandler; +import org.dromara.workflow.flowable.handler.FlowProcessEventHandler; import org.dromara.workflow.mapper.ActHiTaskinstMapper; import org.dromara.workflow.mapper.ActTaskMapper; import org.dromara.workflow.service.IActTaskService; @@ -75,13 +75,13 @@ public class ActTaskServiceImpl implements IActTaskService { private final HistoryService historyService; private final IdentityService identityService; private final ManagementService managementService; - private final FlowEventStrategy flowEventStrategy; private final ActTaskMapper actTaskMapper; private final IWfTaskBackNodeService wfTaskBackNodeService; private final ActHiTaskinstMapper actHiTaskinstMapper; private final IWfNodeConfigService wfNodeConfigService; private final IWfDefinitionConfigService wfDefinitionConfigService; private final UserService userService; + private final FlowProcessEventHandler flowProcessEventHandler; /** * 启动任务 @@ -179,19 +179,15 @@ public class ActTaskServiceImpl implements IActTaskService { //附件上传 AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId()); managementService.executeCommand(attachmentCmd); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); String businessStatus = WorkflowUtils.getBusinessStatus(processInstance.getBusinessKey()); + //流程提交监听 if (BusinessStatusEnum.DRAFT.getStatus().equals(businessStatus) || BusinessStatusEnum.BACK.getStatus().equals(businessStatus) || BusinessStatusEnum.CANCEL.getStatus().equals(businessStatus)) { - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), businessStatus, true); - } + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), processInstance.getBusinessKey(), businessStatus, true); } runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus()); - String key = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey(); - FlowTaskEventHandler taskHandler = flowEventStrategy.getTaskHandler(key); - if (taskHandler != null) { - taskHandler.handleTask(task.getId(), processInstance.getBusinessKey()); - } + //办理监听 + String keyNode = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey(); + flowProcessEventHandler.processTaskHandler(keyNode, task.getId(), processInstance.getBusinessKey()); //办理意见 taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), TaskStatusEnum.PASS.getStatus(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "同意" : completeTaskBo.getMessage()); //办理任务 @@ -207,9 +203,8 @@ public class ActTaskServiceImpl implements IActTaskService { if (pi == null) { UpdateBusinessStatusCmd updateBusinessStatusCmd = new UpdateBusinessStatusCmd(task.getProcessInstanceId(), BusinessStatusEnum.FINISH.getStatus()); managementService.executeCommand(updateBusinessStatusCmd); - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.FINISH.getStatus(), false); - } + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), processInstance.getBusinessKey(), + BusinessStatusEnum.FINISH.getStatus(), false); } else { List list = QueryUtils.taskQuery(task.getProcessInstanceId()).list(); for (Task t : list) { @@ -520,10 +515,9 @@ public class ActTaskServiceImpl implements IActTaskService { runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.TERMINATION.getStatus()); runtimeService.deleteProcessInstance(task.getProcessInstanceId(), StrUtil.EMPTY); } - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(historicProcessInstance.getBusinessKey(), BusinessStatusEnum.TERMINATION.getStatus(), false); - } + //流程终止监听 + flowProcessEventHandler.processHandler(historicProcessInstance.getProcessDefinitionKey(), + historicProcessInstance.getBusinessKey(), BusinessStatusEnum.TERMINATION.getStatus(), false); return true; } catch (Exception e) { throw new ServiceException(e.getMessage()); @@ -721,10 +715,8 @@ public class ActTaskServiceImpl implements IActTaskService { WfTaskBackNode wfTaskBackNode = wfTaskBackNodeService.getListByInstanceIdAndNodeId(task.getProcessInstanceId(), backProcessBo.getTargetActivityId()); if (ObjectUtil.isNotNull(wfTaskBackNode) && wfTaskBackNode.getOrderNo() == 0) { runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.BACK.getStatus()); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.BACK.getStatus(), false); - } + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), + processInstance.getBusinessKey(), BusinessStatusEnum.BACK.getStatus(), false); } //删除驳回后的流程节点 wfTaskBackNodeService.deleteBackTaskNode(processInstanceId, backProcessBo.getTargetActivityId()); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index abb6473e0..d451b45e7 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; @@ -17,6 +20,7 @@ import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.vo.TestLeaveVo; import org.dromara.workflow.mapper.TestLeaveMapper; import org.dromara.workflow.service.ITestLeaveService; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +35,7 @@ import java.util.List; */ @RequiredArgsConstructor @Service +@Slf4j public class TestLeaveServiceImpl implements ITestLeaveService { private final TestLeaveMapper baseMapper; @@ -117,4 +122,26 @@ public class TestLeaveServiceImpl implements ITestLeaveService { workflowService.deleteRunAndHisInstance(idList); return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.key=='leave1'") + public void processHandler(ProcessEvent processEvent) { + log.info("当前任务执行了{}", processEvent.toString()); + } + + /** + * 执行办理任务监听 + * + * @param processTaskEvent 参数 + */ + @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") + public void processTaskHandler(ProcessTaskEvent processTaskEvent) { + log.info("当前任务执行了{}", processTaskEvent.toString()); + } + + } From 7e2257b224538f06b3a945f520fa33a8e3eaf704 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 14:54:29 +0800 Subject: [PATCH 37/58] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E4=B8=8D=E5=9C=A8=E4=BD=BF=E7=94=A8=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E7=9B=91=E5=90=AC=EF=BC=8C=E5=88=A0=E9=99=A4=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/TestLeaveExecutionListener.java | 27 ------------------ .../listener/TestLeaveTaskListener.java | 21 -------------- script/bpmn/模型.zip | Bin 9767 -> 8407 bytes 3 files changed, 48 deletions(-) delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveTaskListener.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java deleted file mode 100644 index f159d815d..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveExecutionListener.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.dromara.workflow.listener; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dromara.workflow.utils.QueryUtils; -import org.flowable.engine.delegate.DelegateExecution; -import org.flowable.engine.delegate.ExecutionListener; -import org.flowable.task.api.Task; -import org.springframework.stereotype.Component; - -/** - * 流程实例监听测试 - * - * @author may - * @date 2023-12-12 - */ -@Slf4j -@RequiredArgsConstructor -@Component("testLeaveExecutionListener") -public class TestLeaveExecutionListener implements ExecutionListener { - - @Override - public void notify(DelegateExecution execution) { - Task task = QueryUtils.taskQuery().executionId(execution.getId()).singleResult(); - log.info("执行监听【" + task.getName() + "】"); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveTaskListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveTaskListener.java deleted file mode 100644 index 5c62417a2..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestLeaveTaskListener.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.dromara.workflow.listener; - -import lombok.extern.slf4j.Slf4j; -import org.flowable.task.service.delegate.DelegateTask; -import org.flowable.task.service.delegate.TaskListener; -import org.springframework.stereotype.Component; - -/** - * 流程任务监听测试 - * - * @author may - * @date 2023-12-12 - */ -@Slf4j -@Component("testLeaveTaskListener") -public class TestLeaveTaskListener implements TaskListener { - @Override - public void notify(DelegateTask delegateTask) { - log.info("执行监听【" + delegateTask.getName() + "】"); - } -} diff --git a/script/bpmn/模型.zip b/script/bpmn/模型.zip index d886e0f52cbc73b567e207d955e0cbeb308d0091..f232cda1c6a0795d36c4e5fecf4d9e82d1652181 100644 GIT binary patch literal 8407 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 literal 9767 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 J#8Ccz_g_&hC)WS~ From 44bef2d6d981f8840df24059dc07003beb7be5a7 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 15:02:59 +0800 Subject: [PATCH 38/58] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/service/WorkflowService.java | 35 +++++++++++++ .../service/impl/WorkflowServiceImpl.java | 49 +++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java index 15c2f4da0..2c1417ced 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java @@ -1,6 +1,7 @@ package org.dromara.common.core.service; import java.util.List; +import java.util.Map; /** * 通用 工作流服务 @@ -47,4 +48,38 @@ public interface WorkflowService { * @param fieldName 主键属性名称 */ void setBusinessInstanceListDTO(Object obj, List idList, String fieldName); + + /** + * 设置流程变量(全局变量) + * + * @param taskId 任务id + * @param variableName 变量名称 + * @param value 变量值 + */ + void setVariable(String taskId, String variableName, Object value); + + /** + * 设置流程变量(全局变量) + * + * @param taskId 任务id + * @param variables 流程变量 + */ + void setVariables(String taskId, Map variables); + + /** + * 设置流程变量(本地变量,非全局变量) + * + * @param taskId 任务id + * @param variableName 变量名称 + * @param value 变量值 + */ + void setVariableLocal(String taskId, String variableName, Object value); + + /** + * 设置流程变量(本地变量,非全局变量) + * + * @param taskId 任务id + * @param variables 流程变量 + */ + void setVariablesLocal(String taskId, Map variables); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 91a899db7..4d4384a48 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -4,9 +4,11 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.service.WorkflowService; import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.utils.WorkflowUtils; +import org.flowable.engine.RuntimeService; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** * 通用 工作流服务实现 @@ -18,6 +20,7 @@ import java.util.List; public class WorkflowServiceImpl implements WorkflowService { private final IActProcessInstanceService iActProcessInstanceService; + private final RuntimeService runtimeService; /** * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 @@ -72,4 +75,50 @@ public class WorkflowServiceImpl implements WorkflowService { public void setBusinessInstanceListDTO(Object obj, List idList, String fieldName) { WorkflowUtils.setBusinessInstanceListDTO(obj, idList, fieldName); } + + /** + * 设置流程变量(全局变量) + * + * @param taskId 任务id + * @param variableName 变量名称 + * @param value 变量值 + */ + @Override + public void setVariable(String taskId, String variableName, Object value) { + runtimeService.setVariable(taskId, variableName, value); + } + + /** + * 设置流程变量(全局变量) + * + * @param taskId 任务id + * @param variables 流程变量 + */ + @Override + public void setVariables(String taskId, Map variables) { + runtimeService.setVariables(taskId, variables); + } + + /** + * 设置流程变量(本地变量,非全局变量) + * + * @param taskId 任务id + * @param variableName 变量名称 + * @param value 变量值 + */ + @Override + public void setVariableLocal(String taskId, String variableName, Object value) { + runtimeService.setVariableLocal(taskId, variableName, value); + } + + /** + * 设置流程变量(本地变量,非全局变量) + * + * @param taskId 任务id + * @param variables 流程变量 + */ + @Override + public void setVariablesLocal(String taskId, Map variables) { + runtimeService.setVariablesLocal(taskId, variables); + } } From 512b5204bc717b78bfbb76afaf81076de9a9f302 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 18:24:52 +0800 Subject: [PATCH 39/58] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E8=A1=A8=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/core}/enums/BusinessStatusEnum.java | 2 +- .../main/java/org/dromara/workflow/domain/TestLeave.java | 5 +++++ .../java/org/dromara/workflow/domain/bo/TestLeaveBo.java | 5 +++++ .../java/org/dromara/workflow/domain/vo/TestLeaveVo.java | 6 ++++++ .../service/impl/ActProcessInstanceServiceImpl.java | 2 +- .../dromara/workflow/service/impl/ActTaskServiceImpl.java | 4 +--- .../workflow/service/impl/TestLeaveServiceImpl.java | 7 +++++++ .../java/org/dromara/workflow/utils/WorkflowUtils.java | 2 +- script/sql/flowable.sql | 1 + script/sql/oracle/flowable.sql | 2 ++ script/sql/postgres/flowable.sql | 3 +++ script/sql/sqlserver/flowable.sql | 4 ++++ 12 files changed, 37 insertions(+), 6 deletions(-) rename {ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common => ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core}/enums/BusinessStatusEnum.java (99%) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java similarity index 99% rename from ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java rename to ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java index 6eb6ffe6b..0af943a78 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java @@ -1,4 +1,4 @@ -package org.dromara.workflow.common.enums; +package org.dromara.common.core.enums; import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java index 0e2646701..7d42a9b5f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java @@ -54,5 +54,10 @@ public class TestLeave extends BaseEntity { */ private String remark; + /** + * 状态 + */ + private String status; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java index e71be591a..877e98160 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java @@ -71,5 +71,10 @@ public class TestLeaveBo extends BaseEntity { */ private String remark; + /** + * 状态 + */ + private String status; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java index 7904d5201..29709e71e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -62,6 +62,12 @@ public class TestLeaveVo implements Serializable { @ExcelProperty(value = "请假原因") private String remark; + /** + * 状态 + */ + @ExcelProperty(value = "请假原因") + private String status; + /** * 业务与流程实例关联对象 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 9937f7aac..9533cac28 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -16,7 +16,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.workflow.common.constant.FlowConstant; -import org.dromara.workflow.common.enums.BusinessStatusEnum; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.ActHiProcinst; import org.dromara.workflow.domain.bo.ProcessInstanceBo; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 5e9a05099..9dd0d608e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -9,10 +9,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; -import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.UserService; -import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -20,7 +18,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.workflow.common.constant.FlowConstant; -import org.dromara.workflow.common.enums.BusinessStatusEnum; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.ActHiTaskinst; import org.dromara.workflow.domain.WfTaskBackNode; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index d451b45e7..aed3e8900 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; @@ -131,6 +132,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService { @EventListener(condition = "#processEvent.key=='leave1'") public void processHandler(ProcessEvent processEvent) { log.info("当前任务执行了{}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); + testLeave.setStatus(processEvent.getStatus()); + baseMapper.updateById(testLeave); } /** @@ -141,6 +145,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService { @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") public void processTaskHandler(ProcessTaskEvent processTaskEvent) { log.info("当前任务执行了{}", processTaskEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + baseMapper.updateById(testLeave); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index aa84387f4..f342e7821 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -21,7 +21,7 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.workflow.common.constant.FlowConstant; -import org.dromara.workflow.common.enums.BusinessStatusEnum; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.MessageTypeEnum; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.ActHiProcinst; diff --git a/script/sql/flowable.sql b/script/sql/flowable.sql index 6b3a7e7bf..e8dc798a9 100644 --- a/script/sql/flowable.sql +++ b/script/sql/flowable.sql @@ -27,6 +27,7 @@ create table test_leave end_date datetime not null comment '结束时间', leave_days int(10) not null comment '请假天数', remark varchar(255) null comment '请假原因', + status varchar(255) null comment '状态', create_dept bigint null comment '创建部门', create_by bigint null comment '创建者', create_time datetime null comment '创建时间', diff --git a/script/sql/oracle/flowable.sql b/script/sql/oracle/flowable.sql index 7ab6a045a..65474f45f 100644 --- a/script/sql/oracle/flowable.sql +++ b/script/sql/oracle/flowable.sql @@ -30,6 +30,7 @@ create table TEST_LEAVE END_DATE DATE, LEAVE_DAYS NUMBER(10), REMARK VARCHAR2(255), + STATUS VARCHAR2(255), CREATE_DEPT NUMBER(20), CREATE_BY NUMBER(20), CREATE_TIME DATE, @@ -45,6 +46,7 @@ comment on column TEST_LEAVE.START_DATE is '开始时间'; comment on column TEST_LEAVE.END_DATE is '结束时间'; comment on column TEST_LEAVE.LEAVE_DAYS is '请假天数'; comment on column TEST_LEAVE.REMARK is '请假原因'; +comment on column TEST_LEAVE.STATUS is '状态'; comment on column TEST_LEAVE.CREATE_DEPT is '创建部门'; comment on column TEST_LEAVE.CREATE_BY is '创建者'; comment on column TEST_LEAVE.CREATE_TIME is '创建时间'; diff --git a/script/sql/postgres/flowable.sql b/script/sql/postgres/flowable.sql index bb690164c..6e75e4bb3 100644 --- a/script/sql/postgres/flowable.sql +++ b/script/sql/postgres/flowable.sql @@ -29,6 +29,7 @@ create table test_leave end_date timestamp, leave_days bigint, remark varchar(255), + status varchar(255), create_dept bigint, create_by bigint, create_time timestamp, @@ -49,6 +50,8 @@ comment on column test_leave.end_date is '结束时间'; comment on column test_leave.remark is '请假原因'; +comment on column test_leave.status is '状态'; + comment on column test_leave.create_dept is '创建部门'; comment on column test_leave.create_by is '创建者'; diff --git a/script/sql/sqlserver/flowable.sql b/script/sql/sqlserver/flowable.sql index c8fe88bc2..2397c35f2 100644 --- a/script/sql/sqlserver/flowable.sql +++ b/script/sql/sqlserver/flowable.sql @@ -28,6 +28,7 @@ create table test_leave end_date datetime2 not null, leave_days int not null, remark nvarchar(255), + status nvarchar(255), create_dept bigint, create_by bigint, create_time datetime2, @@ -61,6 +62,9 @@ go exec sp_addextendedproperty 'MS_Description', N'请假原因', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'remark' go +exec sp_addextendedproperty 'MS_Description', N'状态', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'status' +go + exec sp_addextendedproperty 'MS_Description', N'创建部门', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'create_dept' go From 2e32b748b6cf5bcc3004b354f56ce007420fb1d9 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 18:30:15 +0800 Subject: [PATCH 40/58] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E7=BC=A9?= =?UTF-8?q?=E8=BF=9B=EF=BC=8C=E8=A1=A5=E5=85=85=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/core/domain/event/ProcessEvent.java | 2 -- .../org/dromara/common/core/domain/event/ProcessTaskEvent.java | 1 - .../workflow/flowable/handler/FlowProcessEventHandler.java | 2 ++ 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java index 44634238e..d145cfc19 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java @@ -18,8 +18,6 @@ public class ProcessEvent implements Serializable { @Serial private static final long serialVersionUID = 1L; - - /** * 流程定义key */ diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java index e4508407a..df8d863a7 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java @@ -18,7 +18,6 @@ public class ProcessTaskEvent implements Serializable { @Serial private static final long serialVersionUID = 1L; - /** * 流程定义key与流程节点标识(拼接方式:流程定义key_流程节点) */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java index 92314ac09..7f4c08d05 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java @@ -16,6 +16,8 @@ import org.springframework.stereotype.Component; public class FlowProcessEventHandler { /** + * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * * @param key 流程key * @param businessKey 业务id * @param status 状态 From f2e0ffb2b267f8517f2e3ae3bb95927d5ae8ac46 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 2 Jun 2024 18:32:47 +0800 Subject: [PATCH 41/58] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java index 29709e71e..a1dc2bc1b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -65,7 +65,7 @@ public class TestLeaveVo implements Serializable { /** * 状态 */ - @ExcelProperty(value = "请假原因") + @ExcelProperty(value = "状态") private String status; /** From 5d3af1a9321da023b7d14b2da1daa6d9544cf445 Mon Sep 17 00:00:00 2001 From: songgaoshuai <1742057357@qq.com> Date: Mon, 3 Jun 2024 13:48:30 +0800 Subject: [PATCH 42/58] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E6=9A=82=E5=AD=98=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/service/impl/TestLeaveServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index aed3e8900..2ae88ad1b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -92,6 +92,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService { @Override public TestLeaveVo insertByBo(TestLeaveBo bo) { TestLeave add = MapstructUtils.convert(bo, TestLeave.class); + if (StringUtils.isBlank(add.getStatus())) { + add.setStatus(BusinessStatusEnum.DRAFT.getStatus()); + } boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); From 2c1769575c64a1024717bbab16bce95f8685a7c5 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Mon, 3 Jun 2024 14:30:20 +0800 Subject: [PATCH 43/58] =?UTF-8?q?feat:=20=E5=8D=87=E7=BA=A7SnailJob=201.0.?= =?UTF-8?q?0-beta3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- ruoyi-admin/src/main/resources/application-dev.yml | 4 ++-- ruoyi-admin/src/main/resources/application-prod.yml | 3 ++- .../java/org/dromara/common/job/config/SnailJobConfig.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 014941fde..a3ad41e80 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.2.7 4.3.0 2.14.4 - 1.0.0-beta2 + 1.0.0-beta3 1.3.6 0.2.0 1.18.32 diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 529a106bd..398af9c91 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ spring.boot.admin.client: snail-job: enabled: true # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group-name: "ruoyi_group" + group: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -21,7 +21,6 @@ snail-job: # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} - --- # 数据源配置 spring: datasource: @@ -102,6 +101,7 @@ spring.data: # 是否开启ssl ssl.enabled: false +--- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 0613bd7df..4dabb6823 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -15,7 +15,7 @@ spring.boot.admin.client: snail-job: enabled: false # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group-name: "ruoyi_group" + group: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -104,6 +104,7 @@ spring.data: # 是否开启ssl ssl.enabled: false +--- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java index d671f0ed8..cba375348 100644 --- a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java @@ -21,7 +21,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @AutoConfiguration @ConditionalOnProperty(prefix = "snail-job", name = "enabled", havingValue = "true") @EnableScheduling -@EnableSnailJob(group = "${snail-job.group-name}") +@EnableSnailJob public class SnailJobConfig { @EventListener(SnailClientStartingEvent.class) From a17211dc9666ba7f7d69d3e4cee9303516fe6ed2 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, 3 Jun 2024 15:04:42 +0800 Subject: [PATCH 44/58] =?UTF-8?q?update=20=E5=88=A0=E9=99=A4=20=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E4=BA=8B=E4=BB=B6=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/core/domain/event/ProcessEvent.java | 6 ------ .../dromara/common/core/domain/event/ProcessTaskEvent.java | 6 ------ 2 files changed, 12 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java index d145cfc19..61c7efc39 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java @@ -1,6 +1,5 @@ package org.dromara.common.core.domain.event; -import jakarta.servlet.http.HttpServletRequest; import lombok.Data; import java.io.Serial; @@ -38,10 +37,5 @@ public class ProcessEvent implements Serializable { */ private boolean submit; - /** - * 请求体 - */ - private HttpServletRequest request; - } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java index df8d863a7..09c84bd91 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java @@ -1,6 +1,5 @@ package org.dromara.common.core.domain.event; -import jakarta.servlet.http.HttpServletRequest; import lombok.Data; import java.io.Serial; @@ -33,9 +32,4 @@ public class ProcessTaskEvent implements Serializable { */ private String businessKey; - /** - * 请求体 - */ - private HttpServletRequest request; - } From e7e988f97ad4fb37fb766a86461957ba5b184a1b 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, 3 Jun 2024 15:05:27 +0800 Subject: [PATCH 45/58] =?UTF-8?q?update=20=E5=88=A0=E9=99=A4=20=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E4=BA=8B=E4=BB=B6=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/flowable/handler/FlowProcessEventHandler.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java index 7f4c08d05..17dba8c7a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java @@ -2,7 +2,6 @@ package org.dromara.workflow.flowable.handler; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent; -import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.SpringUtils; import org.springframework.stereotype.Component; @@ -29,7 +28,6 @@ public class FlowProcessEventHandler { processEvent.setBusinessKey(businessKey); processEvent.setStatus(status); processEvent.setSubmit(submit); - processEvent.setRequest(ServletUtils.getRequest()); SpringUtils.context().publishEvent(processEvent); } @@ -45,7 +43,6 @@ public class FlowProcessEventHandler { processTaskEvent.setKeyNode(keyNode); processTaskEvent.setTaskId(taskId); processTaskEvent.setBusinessKey(businessKey); - processTaskEvent.setRequest(ServletUtils.getRequest()); SpringUtils.context().publishEvent(processTaskEvent); } } From 51d66199b101ea16bc14041568ea61ab69111cda 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, 3 Jun 2024 15:47:35 +0800 Subject: [PATCH 46/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E8=AF=B7=E5=81=87=E6=A1=88=E4=BE=8B=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/dto/BusinessInstanceDTO.java | 71 ------------------- .../workflow/domain/vo/TestLeaveVo.java | 7 -- .../service/impl/TestLeaveServiceImpl.java | 21 ++---- 3 files changed, 4 insertions(+), 95 deletions(-) delete mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java deleted file mode 100644 index ecf83cfcc..000000000 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/BusinessInstanceDTO.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.dromara.common.core.domain.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serial; -import java.io.Serializable; -import java.util.Date; - -/** - * 业务与流程实例关联对象 - * - * @author may - */ -@Data -@NoArgsConstructor -public class BusinessInstanceDTO implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 流程实例id - */ - private String id; - - /** - * 流程定义id - */ - private String processDefinitionId; - - /** - * 流程定义名称 - */ - private String name; - - /** - * 业务id - */ - private String businessKey; - - /** - * 租户id - */ - private String tenantId; - - /** - * 启动时间 - */ - private Date startTime; - - /** - * 结束时间 - */ - private Date endTime; - - /** - * 启动人id - */ - private String startUserId; - - /** - * 流程状态 - */ - private String businessStatus; - - /** - * 流程状态 - */ - private String businessStatusName; -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java index a1dc2bc1b..47886d721 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -4,7 +4,6 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.common.core.domain.dto.BusinessInstanceDTO; import org.dromara.workflow.domain.TestLeave; import java.io.Serial; @@ -68,10 +67,4 @@ public class TestLeaveVo implements Serializable { @ExcelProperty(value = "状态") private String status; - /** - * 业务与流程实例关联对象 - */ - private BusinessInstanceDTO businessInstanceDTO; - - } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 2ae88ad1b..6431b3f80 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -1,6 +1,5 @@ package org.dromara.workflow.service.impl; -import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -47,9 +46,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { */ @Override public TestLeaveVo queryById(Long id) { - TestLeaveVo testLeaveVo = baseMapper.selectVoById(id); - workflowService.setBusinessInstanceDTO(testLeaveVo, String.valueOf(id)); - return testLeaveVo; + return baseMapper.selectVoById(id); } /** @@ -59,13 +56,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { public TableDataInfo queryPageList(TestLeaveBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - TableDataInfo build = TableDataInfo.build(result); - List rows = build.getRows(); - if (CollUtil.isNotEmpty(rows)) { - List ids = StreamUtils.toList(rows, e -> String.valueOf(e.getId())); - workflowService.setBusinessInstanceListDTO(rows, ids, "id"); - } - return build; + return TableDataInfo.build(result); } /** @@ -99,9 +90,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { if (flag) { bo.setId(add.getId()); } - TestLeaveVo testLeaveVo = MapstructUtils.convert(add, TestLeaveVo.class); - workflowService.setBusinessInstanceDTO(testLeaveVo, String.valueOf(add.getId())); - return testLeaveVo; + return MapstructUtils.convert(add, TestLeaveVo.class); } /** @@ -111,9 +100,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { public TestLeaveVo updateByBo(TestLeaveBo bo) { TestLeave update = MapstructUtils.convert(bo, TestLeave.class); baseMapper.updateById(update); - TestLeaveVo testLeaveVo = MapstructUtils.convert(update, TestLeaveVo.class); - workflowService.setBusinessInstanceDTO(testLeaveVo, String.valueOf(update.getId())); - return testLeaveVo; + return MapstructUtils.convert(update, TestLeaveVo.class); } /** From 11842742462d031b4744f1214fabb029ddd16d49 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, 3 Jun 2024 15:48:46 +0800 Subject: [PATCH 47/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=97=A0=E7=94=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/service/WorkflowService.java | 17 -------------- .../service/impl/WorkflowServiceImpl.java | 23 ------------------- 2 files changed, 40 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java index 2c1417ced..58cb063be 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java @@ -32,23 +32,6 @@ public interface WorkflowService { */ String getBusinessStatus(String businessKey); - /** - * 设置流程实例对象 - * - * @param obj 业务对象 - * @param businessKey 业务id - */ - void setBusinessInstanceDTO(Object obj, String businessKey); - - /** - * 设置流程实例对象 - * - * @param obj 业务对象 - * @param idList 业务id - * @param fieldName 主键属性名称 - */ - void setBusinessInstanceListDTO(Object obj, List idList, String fieldName); - /** * 设置流程变量(全局变量) * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 4d4384a48..2c60b6616 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -53,29 +53,6 @@ public class WorkflowServiceImpl implements WorkflowService { return WorkflowUtils.getBusinessStatus(businessKey); } - /** - * 设置流程实例对象 - * - * @param obj 业务对象 - * @param businessKey 业务id - */ - @Override - public void setBusinessInstanceDTO(Object obj, String businessKey) { - WorkflowUtils.setBusinessInstanceDTO(obj, businessKey); - } - - /** - * 设置流程实例对象 - * - * @param obj 业务对象 - * @param idList 业务id - * @param fieldName 主键属性名称 - */ - @Override - public void setBusinessInstanceListDTO(Object obj, List idList, String fieldName) { - WorkflowUtils.setBusinessInstanceListDTO(obj, idList, fieldName); - } - /** * 设置流程变量(全局变量) * From 62a2e9de3754141baeb6fe31909a965b5f7fe125 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, 3 Jun 2024 15:52:58 +0800 Subject: [PATCH 48/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8E=BB?= =?UTF-8?q?=E9=99=A4WorkflowUtils=20=E5=B7=A5=E5=85=B7=E7=B1=BB=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/utils/WorkflowUtils.java | 68 ------------------- 1 file changed, 68 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index f342e7821..d5597fb3e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -1,30 +1,25 @@ package org.dromara.workflow.utils; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.AccessLevel; import lombok.NoArgsConstructor; -import org.dromara.common.core.domain.dto.BusinessInstanceDTO; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.core.utils.reflect.ReflectUtils; import org.dromara.common.mail.utils.MailUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.workflow.common.constant.FlowConstant; -import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.MessageTypeEnum; import org.dromara.workflow.common.enums.TaskStatusEnum; -import org.dromara.workflow.domain.ActHiProcinst; import org.dromara.workflow.domain.ActHiTaskinst; import org.dromara.workflow.domain.vo.MultiInstanceVo; import org.dromara.workflow.domain.vo.ParticipantVo; @@ -46,8 +41,6 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntity; import java.util.*; -import static org.dromara.workflow.common.constant.FlowConstant.BUSINESS_INSTANCE_DTO; - /** * 工作流工具 * @@ -235,67 +228,6 @@ public class WorkflowUtils { return historicProcessInstance.getBusinessStatus(); } - /** - * 设置流程实例对象 - * - * @param obj 业务对象 - * @param businessKey 业务id - */ - public static void setBusinessInstanceDTO(Object obj, String businessKey) { - if (StringUtils.isBlank(businessKey) || obj == null) { - return; - } - ActHiProcinst actHiProcinst = ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey); - if (actHiProcinst == null) { - BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); - businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - return; - } - BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId()); - ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } - - /** - * 设置流程实例对象 - * - * @param obj 业务对象 - * @param idList 业务id - * @param fieldName 主键属性名称 - */ - public static void setBusinessInstanceListDTO(Object obj, List idList, String fieldName) { - if (CollUtil.isEmpty(idList) || obj == null) { - return; - } - List actHiProcinstList = ACT_HI_PROCINST_SERVICE.selectByBusinessKeyIn(idList); - if (obj instanceof Collection collection) { - for (Object o : collection) { - String fieldValue = ReflectUtils.invokeGetter(o, fieldName).toString(); - if (CollUtil.isEmpty(actHiProcinstList)) { - BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); - businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } else { - ActHiProcinst actHiProcinst = actHiProcinstList.stream().filter(e -> e.getBusinessKey().equals(fieldValue)).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(actHiProcinst)) { - BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId()); - ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } else { - BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); - businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } - } - } - } - } - /** * 发送消息 * From 8a388a0d8b13811fce6080c6be78e38e103b373c 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, 3 Jun 2024 16:39:20 +0800 Subject: [PATCH 49/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=A1=A5?= =?UTF-8?q?=E5=85=A8=E7=BC=BA=E5=A4=B1=E7=9A=84=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/ruoyi-workflow/pom.xml | 5 ++++- .../main/java/org/dromara/workflow/utils/WorkflowUtils.java | 2 -- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/pom.xml b/ruoyi-modules/ruoyi-workflow/pom.xml index 021709868..9ed40970a 100644 --- a/ruoyi-modules/ruoyi-workflow/pom.xml +++ b/ruoyi-modules/ruoyi-workflow/pom.xml @@ -109,7 +109,10 @@ org.dromara ruoyi-common-tenant - + + org.dromara + ruoyi-common-security + diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index d5597fb3e..62b1a6e89 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -25,7 +25,6 @@ import org.dromara.workflow.domain.vo.MultiInstanceVo; import org.dromara.workflow.domain.vo.ParticipantVo; import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd; import org.dromara.workflow.mapper.ActHiTaskinstMapper; -import org.dromara.workflow.service.IActHiProcinstService; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.common.engine.api.delegate.Expression; @@ -51,7 +50,6 @@ public class WorkflowUtils { private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); private static final UserService USER_SERVICE = SpringUtils.getBean(UserService.class); - private static final IActHiProcinstService ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class); private static final ActHiTaskinstMapper ACT_HI_TASKINST_MAPPER = SpringUtils.getBean(ActHiTaskinstMapper.class); /** From 7c448aed9f9af52b46645d489371867d02065931 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, 3 Jun 2024 16:44:20 +0800 Subject: [PATCH 50/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=8E=A5=E5=8F=A3=E7=94=A8=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/utils/WorkflowUtils.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index 62b1a6e89..385bd23a2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -49,7 +49,6 @@ import java.util.*; public class WorkflowUtils { private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); - private static final UserService USER_SERVICE = SpringUtils.getBean(UserService.class); private static final ActHiTaskinstMapper ACT_HI_TASKINST_MAPPER = SpringUtils.getBean(ActHiTaskinstMapper.class); /** @@ -127,6 +126,7 @@ public class WorkflowUtils { * @param taskId 任务id */ public static ParticipantVo getCurrentTaskParticipant(String taskId) { + UserService userService = SpringUtils.getBean(UserService.class); ParticipantVo participantVo = new ParticipantVo(); List linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId); Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); @@ -134,10 +134,10 @@ public class WorkflowUtils { List groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId())); if (CollUtil.isNotEmpty(groupList)) { List groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId())); - List userIds = USER_SERVICE.selectUserIdsByRoleIds(groupIds); + List userIds = userService.selectUserIdsByRoleIds(groupIds); if (CollUtil.isNotEmpty(userIds)) { participantVo.setGroupIds(groupIds); - List userList = USER_SERVICE.selectListByIds(userIds); + List userList = userService.selectListByIds(userIds); if (CollUtil.isNotEmpty(userList)) { List userIdList = StreamUtils.toList(userList, UserDTO::getUserId); List nickNames = StreamUtils.toList(userList, UserDTO::getNickName); @@ -156,7 +156,7 @@ public class WorkflowUtils { } } - List userList = USER_SERVICE.selectListByIds(userIdList); + List userList = userService.selectListByIds(userIdList); if (CollUtil.isNotEmpty(userList)) { List userIds = StreamUtils.toList(userList, UserDTO::getUserId); List nickNames = StreamUtils.toList(userList, UserDTO::getNickName); @@ -235,6 +235,7 @@ public class WorkflowUtils { * @param message 消息内容,为空则发送默认配置的消息内容 */ public static void sendMessage(List list, String name, List messageType, String message) { + UserService userService = SpringUtils.getBean(UserService.class); Set userIds = new HashSet<>(); if (StringUtils.isBlank(message)) { message = "有新的【" + name + "】单据已经提交至您的待办,请您及时处理。"; @@ -242,7 +243,7 @@ public class WorkflowUtils { for (Task t : list) { ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId()); if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { - List userIdList = USER_SERVICE.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); + List userIdList = userService.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); if (CollUtil.isNotEmpty(userIdList)) { userIds.addAll(userIdList); } @@ -253,7 +254,7 @@ public class WorkflowUtils { } } if (CollUtil.isNotEmpty(userIds)) { - List userList = USER_SERVICE.selectListByIds(new ArrayList<>(userIds)); + List userList = userService.selectListByIds(new ArrayList<>(userIds)); for (String code : messageType) { MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); if (ObjectUtil.isNotEmpty(messageTypeEnum)) { From 867e7bf66562dbc00d76ca17d6eeb3d553257b28 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Mon, 3 Jun 2024 21:03:58 +0800 Subject: [PATCH 51/58] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E9=83=A8=E7=BD=B2=E9=94=99=E8=AF=AF=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=8E=B7=E5=8F=96=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?id=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/service/WorkflowService.java | 8 +++++++ .../workflow/domain/vo/TestLeaveVo.java | 6 ++++++ .../service/impl/TestLeaveServiceImpl.java | 4 +++- .../service/impl/WorkflowServiceImpl.java | 20 +++++++++++++++++- script/bpmn/模型.zip | Bin 8407 -> 8543 bytes 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java index 58cb063be..4e556c9cb 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java @@ -65,4 +65,12 @@ public interface WorkflowService { * @param variables 流程变量 */ void setVariablesLocal(String taskId, Map variables); + + /** + * 按照业务id查询流程实例id + * + * @param businessKey 业务id + * @return 结果 + */ + String getInstanceIdByBusinessKey(String businessKey); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java index 47886d721..b1c9b9e41 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -67,4 +67,10 @@ public class TestLeaveVo implements Serializable { @ExcelProperty(value = "状态") private String status; + /** + * 流程实例id + */ + @ExcelProperty(value = "流程实例id") + private String processInstanceId; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 6431b3f80..9d14bc812 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -46,7 +46,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService { */ @Override public TestLeaveVo queryById(Long id) { - return baseMapper.selectVoById(id); + TestLeaveVo testLeaveVo = baseMapper.selectVoById(id); + testLeaveVo.setProcessInstanceId(workflowService.getInstanceIdByBusinessKey(String.valueOf(id))); + return testLeaveVo; } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 2c60b6616..11f6ef106 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -1,7 +1,10 @@ package org.dromara.workflow.service.impl; +import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.service.WorkflowService; +import org.dromara.workflow.domain.ActHiProcinst; +import org.dromara.workflow.service.IActHiProcinstService; import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.utils.WorkflowUtils; import org.flowable.engine.RuntimeService; @@ -21,7 +24,7 @@ public class WorkflowServiceImpl implements WorkflowService { private final IActProcessInstanceService iActProcessInstanceService; private final RuntimeService runtimeService; - + private final IActHiProcinstService iActHiProcinstService; /** * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * @@ -98,4 +101,19 @@ public class WorkflowServiceImpl implements WorkflowService { public void setVariablesLocal(String taskId, Map variables) { runtimeService.setVariablesLocal(taskId, variables); } + + /** + * 按照业务id查询流程实例id + * + * @param businessKey 业务id + * @return 结果 + */ + @Override + public String getInstanceIdByBusinessKey(String businessKey) { + ActHiProcinst actHiProcinst = iActHiProcinstService.selectByBusinessKey(businessKey); + if (actHiProcinst == null) { + return StrUtil.EMPTY; + } + return actHiProcinst.getId(); + } } diff --git a/script/bpmn/模型.zip b/script/bpmn/模型.zip index f232cda1c6a0795d36c4e5fecf4d9e82d1652181..6f30952ab14f0b60dc64674e7eef083141856458 100644 GIT binary patch literal 8543 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 From cfc2dba275ba45e5f38a4570f50341e57715a26a Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Mon, 3 Jun 2024 21:22:38 +0800 Subject: [PATCH 52/58] =?UTF-8?q?remove=20=E5=88=A0=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/workflow/domain/vo/TestLeaveVo.java | 6 ------ .../dromara/workflow/service/impl/TestLeaveServiceImpl.java | 4 +--- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java index b1c9b9e41..47886d721 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -67,10 +67,4 @@ public class TestLeaveVo implements Serializable { @ExcelProperty(value = "状态") private String status; - /** - * 流程实例id - */ - @ExcelProperty(value = "流程实例id") - private String processInstanceId; - } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 9d14bc812..6431b3f80 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -46,9 +46,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { */ @Override public TestLeaveVo queryById(Long id) { - TestLeaveVo testLeaveVo = baseMapper.selectVoById(id); - testLeaveVo.setProcessInstanceId(workflowService.getInstanceIdByBusinessKey(String.valueOf(id))); - return testLeaveVo; + return baseMapper.selectVoById(id); } /** From e0253a4ea803eaf9413a8a8de4244a41668ef607 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Mon, 3 Jun 2024 21:32:23 +0800 Subject: [PATCH 53/58] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=AE=B0=E5=BD=95=E7=89=88=E6=9C=AC=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/domain/vo/ActHistoryInfoVo.java | 4 ++++ .../service/impl/ActProcessInstanceServiceImpl.java | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ActHistoryInfoVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ActHistoryInfoVo.java index 31b972262..e4c1142ac 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ActHistoryInfoVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ActHistoryInfoVo.java @@ -36,6 +36,10 @@ public class ActHistoryInfoVo implements Serializable { * 流程实例id */ private String processInstanceId; + /** + * 版本 + */ + private Integer version; /** * 开始时间 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 9533cac28..5a4697836 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -280,7 +280,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService } } map.put("taskList", taskList); - List historyTaskList = getHistoryTaskList(processInstanceId); + List historyTaskList = getHistoryTaskList(processInstanceId, processInstance.getProcessDefinitionVersion()); map.put("historyList", historyTaskList); InputStream inputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getResourceName()); xml.append(IoUtil.read(inputStream, StandardCharsets.UTF_8)); @@ -292,8 +292,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService * 获取历史任务节点信息 * * @param processInstanceId 流程实例id + * @param version 版本 */ - private List getHistoryTaskList(String processInstanceId) { + private List getHistoryTaskList(String processInstanceId, Integer version) { //查询任务办理记录 List list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed()); @@ -305,6 +306,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService if (ObjectUtil.isNotEmpty(historicTaskInstance.getDurationInMillis())) { actHistoryInfoVo.setRunDuration(getDuration(historicTaskInstance.getDurationInMillis())); } + actHistoryInfoVo.setVersion(version); actHistoryInfoVoList.add(actHistoryInfoVo); } List historyInfoVoList = new ArrayList<>(); From 95791254a9ca91811d85c579b33effbba7ccac74 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Mon, 3 Jun 2024 22:27:25 +0800 Subject: [PATCH 54/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=8A=84?= =?UTF-8?q?=E9=80=81=E5=90=8E=E6=9C=89=E5=A4=9A=E6=9D=A1=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=B1=95=E7=A4=BA=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ActProcessInstanceServiceImpl.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 5a4697836..e790438be 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -313,21 +313,41 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService Map> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey); for (Map.Entry> entry : groupByKey.entrySet()) { ActHistoryInfoVo historyInfoVo = new ActHistoryInfoVo(); - BeanUtils.copyProperties(entry.getValue().get(0), historyInfoVo); - actHistoryInfoVoList.stream().filter(e -> e.getTaskDefinitionKey().equals(entry.getKey()) && e.getEndTime() == null).findFirst() - .ifPresent(e -> { - historyInfoVo.setStatus("待处理"); - historyInfoVo.setStartTime(e.getStartTime()); - historyInfoVo.setEndTime(null); - historyInfoVo.setRunDuration(null); - if (ObjectUtil.isEmpty(e.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId()); + if (entry.getValue().size() > 1) { + List historyInfoVos = StreamUtils.filter(entry.getValue(), e -> StringUtils.isNotBlank(e.getAssignee())); + if (CollUtil.isNotEmpty(historyInfoVos)) { + ActHistoryInfoVo infoVo = historyInfoVos.get(0); + BeanUtils.copyProperties(infoVo, historyInfoVo); + historyInfoVo.setStatus(infoVo.getEndTime() == null ? "待处理" : "已处理"); + historyInfoVo.setStartTime(infoVo.getStartTime()); + historyInfoVo.setEndTime(infoVo.getEndTime() == null ? null : infoVo.getEndTime()); + historyInfoVo.setRunDuration(infoVo.getEndTime() == null ? null : infoVo.getRunDuration()); + if (ObjectUtil.isEmpty(infoVo.getAssignee())) { + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(infoVo.getId()); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } } - }); + } + } else { + actHistoryInfoVoList.stream().filter(e -> e.getTaskDefinitionKey().equals(entry.getKey())).findFirst() + .ifPresent(e -> { + BeanUtils.copyProperties(e, historyInfoVo); + historyInfoVo.setStatus(e.getEndTime() == null ? "待处理" : "已处理"); + historyInfoVo.setStartTime(e.getStartTime()); + historyInfoVo.setEndTime(e.getEndTime() == null ? null : e.getEndTime()); + historyInfoVo.setRunDuration(e.getEndTime() == null ? null : e.getRunDuration()); + if (ObjectUtil.isEmpty(e.getAssignee())) { + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId()); + if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { + historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); + } + } + }); + + } historyInfoVoList.add(historyInfoVo); + } return historyInfoVoList; } From b4f512f667e1d4b36e0d52c079c518aa497812f2 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, 3 Jun 2024 22:47:04 +0800 Subject: [PATCH 55/58] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E9=94=99=E8=AF=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/src/main/resources/application-dev.yml | 2 +- ruoyi-admin/src/main/resources/application-prod.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 398af9c91..5b5597369 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -101,7 +101,7 @@ spring.data: # 是否开启ssl ssl.enabled: false ---- # redisson 配置 +# redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 4dabb6823..d21644d42 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -104,7 +104,7 @@ spring.data: # 是否开启ssl ssl.enabled: false ---- # redisson 配置 +# redisson 配置 redisson: # redis key前缀 keyPrefix: From 0b4f6dd29b4243ffbc6bd59ed1eeb554e975c90a Mon Sep 17 00:00:00 2001 From: songgaoshuai <1742057357@qq.com> Date: Tue, 4 Jun 2024 13:37:01 +0800 Subject: [PATCH 56/58] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=9B=BE=E6=9F=A5=E8=AF=A2=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/service/impl/ActProcessInstanceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index e790438be..dafd05994 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -280,7 +280,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService } } map.put("taskList", taskList); - List historyTaskList = getHistoryTaskList(processInstanceId, processInstance.getProcessDefinitionVersion()); + List historyTaskList = getHistoryTaskList(processInstanceId, processDefinition.getVersion()); map.put("historyList", historyTaskList); InputStream inputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getResourceName()); xml.append(IoUtil.read(inputStream, StandardCharsets.UTF_8)); From ff684cad44763ef22f655d244455d19e798f8451 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Tue, 4 Jun 2024 22:26:03 +0800 Subject: [PATCH 57/58] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E9=A9=B3?= =?UTF-8?q?=E5=9B=9E=E5=88=A0=E9=99=A4=E4=BB=BB=E5=8A=A1=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E5=BC=82=E5=B8=B8=EF=BC=8C=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E7=A4=BA=E4=BE=8B=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/service/impl/ActTaskServiceImpl.java | 4 +++- .../dromara/workflow/service/impl/TestLeaveServiceImpl.java | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 9dd0d608e..523a77c49 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -690,7 +690,9 @@ public class ActTaskServiceImpl implements IActTaskService { MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()); if (multiInstance == null && taskList.size() > 1) { List tasks = StreamUtils.filter(taskList, e -> !e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey())); - actHiTaskinstMapper.deleteBatchIds(StreamUtils.toList(tasks, Task::getId)); + if (CollUtil.isNotEmpty(tasks)) { + actHiTaskinstMapper.deleteBatchIds(StreamUtils.toList(tasks, Task::getId)); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 6431b3f80..b938a989a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -124,6 +124,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService { log.info("当前任务执行了{}", processEvent.toString()); TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); testLeave.setStatus(processEvent.getStatus()); + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } baseMapper.updateById(testLeave); } From 7b9358a4f0f95431e9012b6d9a4330fc17e73dc7 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: Thu, 6 Jun 2024 11:13:39 +0800 Subject: [PATCH 58/58] =?UTF-8?q?=E2=99=A5=EF=B8=8F=E5=8F=91=E5=B8=83=205.?= =?UTF-8?q?2.0-BETA2=20=E5=85=AC=E6=B5=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- ruoyi-common/ruoyi-common-bom/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a3ad41e80..7d89d8a85 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ RuoYi-Vue-Plus多租户管理系统 - 5.2.0-BETA + 5.2.0-BETA2 3.2.6 UTF-8 UTF-8 diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml index f9af9de0f..39ef2b337 100644 --- a/ruoyi-common/ruoyi-common-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-bom/pom.xml @@ -14,7 +14,7 @@ - 5.2.0-BETA + 5.2.0-BETA2