From cb296ef2cd5f00b5593e3691ff7681a1dcfbd9d4 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期四, 09 五月 2024 15:09:54 +0800 Subject: [PATCH] update 重构 workflow 模块与 system 模块解耦 --- ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java | 19 + ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java | 21 + ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java | 1 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java | 4 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java | 73 ++++++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java | 22 - ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java | 20 + ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java | 26 ++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java | 47 ++-- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java | 86 +++++++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java | 4 /dev/null | 214 ------------------- ruoyi-modules/ruoyi-workflow/pom.xml | 35 ++ ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/OssDTO.java | 46 ++++ ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/OssService.java | 11 + ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java | 5 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java | 1 17 files changed, 377 insertions(+), 258 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/OssDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/OssDTO.java new file mode 100644 index 0000000..463821c --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/OssDTO.java @@ -0,0 +1,46 @@ +package org.dromara.common.core.domain.dto; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * OSS瀵硅薄 + * + * @author Lion Li + */ +@Data +@NoArgsConstructor +public class OssDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 瀵硅薄瀛樺偍涓婚敭 + */ + private Long ossId; + + /** + * 鏂囦欢鍚� + */ + private String fileName; + + /** + * 鍘熷悕 + */ + private String originalName; + + /** + * 鏂囦欢鍚庣紑鍚� + */ + private String fileSuffix; + + /** + * URL鍦板潃 + */ + private String url; + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java index 03d6166..aea8e7a 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java @@ -3,6 +3,7 @@ import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serial; import java.io.Serializable; /** @@ -15,6 +16,9 @@ @NoArgsConstructor public class RoleDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + /** * 瑙掕壊ID */ diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java new file mode 100644 index 0000000..cb5def9 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java @@ -0,0 +1,73 @@ +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 Michelle.Chung + */ +@Data +@NoArgsConstructor +public class UserDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 鐢ㄦ埛ID + */ + private Long userId; + + /** + * 閮ㄩ棬ID + */ + private Long deptId; + + /** + * 鐢ㄦ埛璐﹀彿 + */ + private String userName; + + /** + * 鐢ㄦ埛鏄电О + */ + private String nickName; + + /** + * 鐢ㄦ埛绫诲瀷锛坰ys_user绯荤粺鐢ㄦ埛锛� + */ + private String userType; + + /** + * 鐢ㄦ埛閭 + */ + private String email; + + /** + * 鎵嬫満鍙风爜 + */ + private String phonenumber; + + /** + * 鐢ㄦ埛鎬у埆锛�0鐢� 1濂� 2鏈煡锛� + */ + private String sex; + + /** + * 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� + */ + private String status; + + /** + * 鍒涘缓鏃堕棿 + */ + private Date createTime; + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/OssService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/OssService.java index 43742b3..1a52de0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/OssService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/OssService.java @@ -1,5 +1,9 @@ package org.dromara.common.core.service; +import org.dromara.common.core.domain.dto.OssDTO; + +import java.util.List; + /** * 閫氱敤 OSS鏈嶅姟 * @@ -15,4 +19,11 @@ */ String selectUrlByIds(String ossIds); + /** + * 閫氳繃ossId鏌ヨ鍒楄〃 + * + * @param ossIds ossId涓查�楀彿鍒嗛殧 + * @return 鍒楄〃 + */ + List<OssDTO> selectByIds(String ossIds); } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java index f8c7193..0f2878d 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java @@ -1,5 +1,9 @@ package org.dromara.common.core.service; +import org.dromara.common.core.domain.dto.UserDTO; + +import java.util.List; + /** * 閫氱敤 鐢ㄦ埛鏈嶅姟 * @@ -47,4 +51,19 @@ */ String selectEmailById(Long userId); + /** + * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃 + * + * @param userIds 鐢ㄦ埛ids + * @return 鐢ㄦ埛鍒楄〃 + */ + List<UserDTO> selectListByIds(List<Long> userIds); + + /** + * 閫氳繃瑙掕壊ID鏌ヨ鐢ㄦ埛ID + * + * @param roleIds 瑙掕壊ids + * @return 鐢ㄦ埛ids + */ + List<Long> selectUserIdsByRoleIds(List<Long> roleIds); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java index e0011d9..36104d6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -296,4 +296,5 @@ public R<List<SysUserVo>> listByDept(@PathVariable @NotNull Long deptId) { return R.ok(userService.selectUserListByDept(deptId)); } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java index 011254e..7ad2759 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java @@ -103,6 +103,11 @@ */ private Long roleId; + /** + * 鎺掗櫎涓嶆煡璇㈢殑鐢ㄦ埛(宸ヤ綔娴佺敤) + */ + private String excludeUserIds; + public SysUserBo(Long userId) { this.userId = userId; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index 1df221c..c901a2f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.system.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ObjectUtil; @@ -9,6 +10,7 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.domain.dto.OssDTO; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.OssService; import org.dromara.common.core.utils.MapstructUtils; @@ -114,6 +116,24 @@ return String.join(StringUtils.SEPARATOR, list); } + @Override + public List<OssDTO> selectByIds(String ossIds) { + List<OssDTO> list = new ArrayList<>(); + for (Long id : StringUtils.splitTo(ossIds, Convert::toLong)) { + SysOssVo vo = SpringUtils.getAopProxy(this).getById(id); + if (ObjectUtil.isNotNull(vo)) { + try { + vo.setUrl(this.matchingUrl(vo).getUrl()); + list.add(BeanUtil.toBean(vo, OssDTO.class)); + } catch (Exception ignored) { + // 濡傛灉oss寮傚父鏃犳硶杩炴帴鍒欏皢鏁版嵁鐩存帴杩斿洖 + list.add(BeanUtil.toBean(vo, OssDTO.class)); + } + } + } + return list; + } + private LambdaQueryWrapper<SysOss> buildQueryWrapper(SysOssBo bo) { Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<SysOss> lqw = Wrappers.lambdaQuery(); 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 ad73de4..93f1cc7 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 @@ -1,5 +1,6 @@ package org.dromara.system.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ArrayUtil; @@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.UserConstants; +import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.MapstructUtils; @@ -29,7 +31,10 @@ import org.dromara.system.domain.SysUserPost; import org.dromara.system.domain.SysUserRole; import org.dromara.system.domain.bo.SysUserBo; -import org.dromara.system.domain.vo.*; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.domain.vo.SysRoleVo; +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.Cacheable; @@ -92,6 +97,9 @@ ids.add(user.getDeptId()); w.in("u.dept_id", ids); }).orderByAsc("u.user_id"); + if (StringUtils.isNotBlank(user.getExcludeUserIds())) { + wrapper.notIn("u.user_id", StringUtils.splitList(user.getExcludeUserIds())); + } return wrapper; } @@ -623,4 +631,20 @@ return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail(); } + @Override + public List<UserDTO> selectListByIds(List<Long> userIds) { + if (CollUtil.isEmpty(userIds)) { + return List.of(); + } + List<SysUserVo> list = this.selectUserByIds(userIds, null); + return BeanUtil.copyToList(list, UserDTO.class); + } + + @Override + public List<Long> selectUserIdsByRoleIds(List<Long> roleIds) { + List<SysUserRole> userRoles = userRoleMapper.selectList( + new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds)); + return StreamUtils.toList(userRoles, SysUserRole::getUserId); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/pom.xml b/ruoyi-modules/ruoyi-workflow/pom.xml index f0391e3..0217098 100644 --- a/ruoyi-modules/ruoyi-workflow/pom.xml +++ b/ruoyi-modules/ruoyi-workflow/pom.xml @@ -66,12 +66,6 @@ </exclusions> </dependency> - <!--绯荤粺妯″潡--> - <dependency> - <groupId>org.dromara</groupId> - <artifactId>ruoyi-system</artifactId> - </dependency> - <dependency> <groupId>org.dromara</groupId> <artifactId>ruoyi-common-websocket</artifactId> @@ -87,6 +81,35 @@ <artifactId>ruoyi-common-sms</artifactId> </dependency> + <dependency> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-common-mybatis</artifactId> + </dependency> + <dependency> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-common-web</artifactId> + </dependency> + <dependency> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-common-log</artifactId> + </dependency> + <dependency> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-common-idempotent</artifactId> + </dependency> + <dependency> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-common-excel</artifactId> + </dependency> + <dependency> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-common-translation</artifactId> + </dependency> + <dependency> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-common-tenant</artifactId> + </dependency> + </dependencies> </project> 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 aa29012..9073464 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 @@ -271,4 +271,25 @@ public R<List<WfTaskBackNode>> getNodeList(@PathVariable String processInstanceId) { return R.ok(CollUtil.reverse(iWfTaskBackNodeService.getListByInstanceId(processInstanceId))); } + + /** + * 鏌ヨ宸ヤ綔娴佷换鍔$敤鎴烽�夋嫨鍔犵浜哄憳 + * + * @param taskId 浠诲姟id + */ + @GetMapping("/getTaskUserIdsByAddMultiInstance/{taskId}") + public R<String> getTaskUserIdsByAddMultiInstance(@PathVariable String taskId) { + return R.ok(actTaskService.getTaskUserIdsByAddMultiInstance(taskId)); + } + + /** + * 鏌ヨ宸ヤ綔娴侀�夋嫨鍑忕浜哄憳 + * + * @param taskId 浠诲姟id + */ + @GetMapping("/getListByDeleteMultiInstance/{taskId}") + public R<List<TaskVo>> getListByDeleteMultiInstance(@PathVariable String taskId) { + return R.ok(actTaskService.getListByDeleteMultiInstance(taskId)); + } + } 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 16d92ff..17b6755 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 @@ -15,7 +15,6 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; -import org.dromara.workflow.domain.TestLeave; import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.vo.TestLeaveVo; import org.dromara.workflow.service.ITestLeaveService; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/WorkflowUserController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/WorkflowUserController.java deleted file mode 100644 index d553ad8..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/WorkflowUserController.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.dromara.workflow.controller; - -import lombok.RequiredArgsConstructor; -import org.dromara.common.core.domain.R; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.web.core.BaseController; -import org.dromara.system.domain.bo.SysUserBo; -import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.workflow.domain.bo.SysUserMultiBo; -import org.dromara.workflow.domain.vo.TaskVo; -import org.dromara.workflow.service.IWorkflowUserService; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - - -/** - * 宸ヤ綔娴佺敤鎴烽�変汉绠$悊 鎺у埗灞� - * - * @author may - */ -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/workflow/user") -public class WorkflowUserController extends BaseController { - - private final IWorkflowUserService workflowUserService; - - /** - * 鍒嗛〉鏌ヨ宸ヤ綔娴侀�夋嫨鍔犵浜哄憳 - * - * @param bo 鍙傛暟 - */ - @GetMapping("/getPageByAddMultiInstance") - public TableDataInfo<SysUserVo> getPageByAddMultiInstance(SysUserMultiBo bo, PageQuery pageQuery) { - return workflowUserService.getPageByAddMultiInstance(bo, pageQuery); - } - - /** - * 鏌ヨ宸ヤ綔娴侀�夋嫨鍑忕浜哄憳 - * - * @param taskId 浠诲姟id - */ - @GetMapping("/getListByDeleteMultiInstance/{taskId}") - public R<List<TaskVo>> getListByDeleteMultiInstance(@PathVariable String taskId) { - return R.ok(workflowUserService.getListByDeleteMultiInstance(taskId)); - } - - /** - * 鎸夌収鐢ㄦ埛id鏌ヨ鐢ㄦ埛 - * - * @param userIds 鐢ㄦ埛id - */ - @GetMapping("/getUserListByIds/{userIds}") - public R<List<SysUserVo>> getUserListByIds(@PathVariable List<Long> userIds) { - return R.ok(workflowUserService.getUserListByIds(userIds)); - } - - /** - * 鍒嗛〉鏌ヨ鐢ㄦ埛 - * - * @param sysUserBo 鍙傛暟 - * @param pageQuery 鍒嗛〉 - */ - @GetMapping("/getPageByUserList") - public TableDataInfo<SysUserVo> getPageByUserList(SysUserBo sysUserBo, PageQuery pageQuery) { - return workflowUserService.getPageByUserList(sysUserBo, pageQuery); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java index f011252..dd9849a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java @@ -1,20 +1,17 @@ package org.dromara.workflow.flowable.cmd; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import org.dromara.common.core.domain.dto.OssDTO; +import org.dromara.common.core.service.OssService; 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.satoken.utils.LoginHelper; -import org.dromara.system.domain.vo.SysOssVo; -import org.dromara.system.service.ISysOssService; import org.flowable.common.engine.impl.interceptor.Command; import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.engine.impl.persistence.entity.AttachmentEntity; import org.flowable.engine.impl.persistence.entity.AttachmentEntityManager; import org.flowable.engine.impl.util.CommandContextUtil; -import java.util.Arrays; import java.util.Date; import java.util.List; @@ -41,20 +38,19 @@ public Boolean execute(CommandContext commandContext) { try { if (StringUtils.isNotBlank(fileId)) { - List<Long> fileIds = StreamUtils.toList(Arrays.asList(fileId.split(StrUtil.COMMA)), Long::valueOf); - List<SysOssVo> sysOssVos = SpringUtils.getBean(ISysOssService.class).listByIds(fileIds); - if (CollUtil.isNotEmpty(sysOssVos)) { - for (SysOssVo sysOssVo : sysOssVos) { + List<OssDTO> ossList = SpringUtils.getBean(OssService.class).selectByIds(fileId); + if (CollUtil.isNotEmpty(ossList)) { + for (OssDTO oss : ossList) { AttachmentEntityManager attachmentEntityManager = CommandContextUtil.getAttachmentEntityManager(); AttachmentEntity attachmentEntity = attachmentEntityManager.create(); attachmentEntity.setRevision(1); attachmentEntity.setUserId(LoginHelper.getUserId().toString()); - attachmentEntity.setName(sysOssVo.getOriginalName()); - attachmentEntity.setDescription(sysOssVo.getOriginalName()); - attachmentEntity.setType(sysOssVo.getFileSuffix()); + attachmentEntity.setName(oss.getOriginalName()); + attachmentEntity.setDescription(oss.getOriginalName()); + attachmentEntity.setType(oss.getFileSuffix()); attachmentEntity.setTaskId(taskId); attachmentEntity.setProcessInstanceId(processInstanceId); - attachmentEntity.setContentId(sysOssVo.getOssId().toString()); + attachmentEntity.setContentId(oss.getOssId().toString()); attachmentEntity.setTime(new Date()); attachmentEntityManager.insert(attachmentEntity); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java index 45c3de2..d43828c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java @@ -142,4 +142,8 @@ * @return 缁撴灉 */ List<VariableVo> getInstanceVariable(String taskId); + + String getTaskUserIdsByAddMultiInstance(String taskId); + + List<TaskVo> getListByDeleteMultiInstance(String taskId); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IWorkflowUserService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IWorkflowUserService.java deleted file mode 100644 index 22639d5..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IWorkflowUserService.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.dromara.workflow.service; - -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.system.domain.SysUserRole; -import org.dromara.system.domain.bo.SysUserBo; -import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.workflow.domain.bo.SysUserMultiBo; -import org.dromara.workflow.domain.vo.TaskVo; - -import java.util.List; - -/** - * 宸ヤ綔娴佺敤鎴烽�変汉绠$悊 鏈嶅姟灞� - * - * @author may - */ -public interface IWorkflowUserService { - - /** - * 鍒嗛〉鏌ヨ宸ヤ綔娴侀�夋嫨鍔犵浜哄憳 - * - * @param sysUserMultiBo 鍙傛暟 - * @param pageQuery 鍒嗛〉 - * @return 缁撴灉 - */ - TableDataInfo<SysUserVo> getPageByAddMultiInstance(SysUserMultiBo sysUserMultiBo, PageQuery pageQuery); - - /** - * 鏌ヨ宸ヤ綔娴侀�夋嫨鍑忕浜哄憳 - * - * @param taskId 浠诲姟id - * @return 缁撴灉 - */ - List<TaskVo> getListByDeleteMultiInstance(String taskId); - - /** - * 鎸夌収鐢ㄦ埛id鏌ヨ鐢ㄦ埛 - * - * @param userIds 鐢ㄦ埛id - * @return 缁撴灉 - */ - List<SysUserVo> getUserListByIds(List<Long> userIds); - - /** - * 鎸夌収瑙掕壊id鏌ヨ鍏宠仈鐢ㄦ埛id - * - * @param roleIds 瑙掕壊id - * @return 缁撴灉 - */ - List<SysUserRole> getUserRoleListByRoleIds(List<Long> roleIds); - - /** - * 鍒嗛〉鏌ヨ鐢ㄦ埛 - * - * @param sysUserBo 鍙傛暟 - * @param pageQuery 鍒嗛〉 - * @return 缁撴灉 - */ - TableDataInfo<SysUserVo> getPageByUserList(SysUserBo sysUserBo, PageQuery pageQuery); -} 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 d5c7599..64cd9ae 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 @@ -8,7 +8,9 @@ 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.exception.ServiceException; +import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -79,6 +81,7 @@ private final ActHiTaskinstMapper actHiTaskinstMapper; private final IWfNodeConfigService iWfNodeConfigService; private final IWfDefinitionConfigService iWfDefinitionConfigService; + private final UserService userService; /** * 鍚姩浠诲姟 @@ -777,4 +780,87 @@ } return variableVoList; } + + @Override + @SuppressWarnings("unchecked") + public String getTaskUserIdsByAddMultiInstance(String taskId) { + Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); + if (task == null) { + throw new ServiceException("浠诲姟涓嶅瓨鍦�"); + } + MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()); + if (multiInstance == null) { + return ""; + } + List<Long> userIds; + if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { + userIds = (List<Long>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList()); + } else { + List<Task> list = QueryUtils.taskQuery(task.getProcessInstanceId()).list(); + userIds = StreamUtils.toList(list, e -> Long.valueOf(e.getAssignee())); + } + return StringUtils.join(userIds, StringUtils.SEPARATOR); + } + + /** + * 鏌ヨ宸ヤ綔娴侀�夋嫨鍑忕浜哄憳 + * + * @param taskId 浠诲姟id 浠诲姟id + */ + @Override + @SuppressWarnings("unchecked") + public List<TaskVo> getListByDeleteMultiInstance(String taskId) { + Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); + List<Task> taskList = QueryUtils.taskQuery(task.getProcessInstanceId()).list(); + MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()); + List<TaskVo> taskListVo = new ArrayList<>(); + if (multiInstance == null) { + return List.of(); + } + List<Long> assigneeList = new ArrayList<>(); + if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { + List<Object> variable = (List<Object>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList()); + for (Object o : variable) { + assigneeList.add(Long.valueOf(o.toString())); + } + } + + if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { + List<Long> userIds = StreamUtils.filter(assigneeList, e -> !String.valueOf(e).equals(task.getAssignee())); + List<UserDTO> userList = userService.selectListByIds(userIds); + for (Long userId : userIds) { + TaskVo taskVo = new TaskVo(); + taskVo.setId("涓茶浼氱"); + taskVo.setExecutionId("涓茶浼氱"); + taskVo.setProcessInstanceId(task.getProcessInstanceId()); + taskVo.setName(task.getName()); + taskVo.setAssignee(userId); + if (CollUtil.isNotEmpty(userList)) { + userList.stream().filter(u -> u.getUserId().toString().equals(userId.toString())).findFirst().ifPresent(u -> taskVo.setAssigneeName(u.getNickName())); + } + taskListVo.add(taskVo); + } + return taskListVo; + } else if (multiInstance.getType() instanceof ParallelMultiInstanceBehavior) { + List<Task> tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey())); + if (CollUtil.isNotEmpty(tasks)) { + List<Long> userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee())); + List<UserDTO> userList = userService.selectListByIds(userIds); + for (Task t : tasks) { + TaskVo taskVo = new TaskVo(); + taskVo.setId(t.getId()); + taskVo.setExecutionId(t.getExecutionId()); + taskVo.setProcessInstanceId(t.getProcessInstanceId()); + taskVo.setName(t.getName()); + taskVo.setAssignee(Long.valueOf(t.getAssignee())); + if (CollUtil.isNotEmpty(userList)) { + userList.stream().filter(u -> u.getUserId().toString().equals(t.getAssignee())).findFirst().ifPresent(e -> taskVo.setAssigneeName(e.getNickName())); + } + taskListVo.add(taskVo); + } + return taskListVo; + } + } + return List.of(); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java deleted file mode 100644 index 23dd1b6..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java +++ /dev/null @@ -1,214 +0,0 @@ -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; -import lombok.RequiredArgsConstructor; -import org.dromara.common.core.enums.UserStatus; -import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.utils.StreamUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.system.domain.SysUser; -import org.dromara.system.domain.SysUserRole; -import org.dromara.system.domain.bo.SysUserBo; -import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.mapper.SysUserMapper; -import org.dromara.system.mapper.SysUserRoleMapper; -import org.dromara.workflow.domain.bo.SysUserMultiBo; -import org.dromara.workflow.domain.vo.MultiInstanceVo; -import org.dromara.workflow.domain.vo.TaskVo; -import org.dromara.workflow.service.IWorkflowUserService; -import org.dromara.workflow.utils.QueryUtils; -import org.dromara.workflow.utils.WorkflowUtils; -import org.flowable.engine.RuntimeService; -import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; -import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; -import org.flowable.task.api.Task; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * 宸ヤ綔娴佺敤鎴烽�変汉绠$悊 涓氬姟澶勭悊灞� - * - * @author may - */ -@RequiredArgsConstructor -@Service -public class WorkflowUserServiceImpl implements IWorkflowUserService { - - private final SysUserMapper sysUserMapper; - private final SysUserRoleMapper sysUserRoleMapper; - private final RuntimeService runtimeService; - - /** - * 鍒嗛〉鏌ヨ宸ヤ綔娴侀�夋嫨鍔犵浜哄憳 - * - * @param bo 鍙傛暟 - * @param pageQuery 鍒嗛〉 - */ - @Override - @SuppressWarnings("unchecked") - public TableDataInfo<SysUserVo> getPageByAddMultiInstance(SysUserMultiBo bo, PageQuery pageQuery) { - Task task = QueryUtils.taskQuery().taskId(bo.getTaskId()).singleResult(); - if (task == null) { - throw new ServiceException("浠诲姟涓嶅瓨鍦�"); - } - MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()); - if (multiInstance == null) { - return TableDataInfo.build(); - } - LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery(); - //妫�绱㈡潯浠� - queryWrapper.eq(StringUtils.isNotEmpty(bo.getDeptId()), SysUser::getDeptId, bo.getDeptId()); - queryWrapper.eq(SysUser::getStatus, UserStatus.OK.getCode()); - if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { - List<Long> assigneeList = (List<Long>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList()); - queryWrapper.notIn(CollUtil.isNotEmpty(assigneeList), SysUser::getUserId, assigneeList); - } else { - List<Task> list = QueryUtils.taskQuery(task.getProcessInstanceId()).list(); - List<Long> userIds = StreamUtils.toList(list, e -> Long.valueOf(e.getAssignee())); - queryWrapper.notIn(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds); - } - queryWrapper.like(StringUtils.isNotEmpty(bo.getUserName()), SysUser::getUserName, bo.getUserName()); - queryWrapper.like(StringUtils.isNotEmpty(bo.getNickName()), SysUser::getNickName, bo.getNickName()); - Page<SysUser> page = new Page<>(pageQuery.getFirstNum(), pageQuery.getPageSize()); - Page<SysUserVo> userPage = sysUserMapper.selectVoPage(page, queryWrapper); - return TableDataInfo.build(recordPage(userPage)); - } - - /** - * 鏌ヨ宸ヤ綔娴侀�夋嫨鍑忕浜哄憳 - * - * @param taskId 浠诲姟id 浠诲姟id - */ - @Override - @SuppressWarnings("unchecked") - public List<TaskVo> getListByDeleteMultiInstance(String taskId) { - Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); - List<Task> taskList = QueryUtils.taskQuery(task.getProcessInstanceId()).list(); - MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()); - List<TaskVo> taskListVo = new ArrayList<>(); - if (multiInstance == null) { - return Collections.emptyList(); - } - List<Long> assigneeList = new ArrayList<>(); - if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { - List<Object> variable = (List<Object>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList()); - for (Object o : variable) { - assigneeList.add(Long.valueOf(o.toString())); - } - } - - if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { - List<Long> userIds = StreamUtils.filter(assigneeList, e -> !String.valueOf(e).equals(task.getAssignee())); - List<SysUserVo> sysUsers = null; - if (CollUtil.isNotEmpty(userIds)) { - sysUsers = sysUserMapper.selectVoBatchIds(userIds); - } - for (Long userId : userIds) { - TaskVo taskVo = new TaskVo(); - taskVo.setId("涓茶浼氱"); - taskVo.setExecutionId("涓茶浼氱"); - taskVo.setProcessInstanceId(task.getProcessInstanceId()); - taskVo.setName(task.getName()); - taskVo.setAssignee(userId); - if (CollUtil.isNotEmpty(sysUsers)) { - sysUsers.stream().filter(u -> u.getUserId().toString().equals(userId.toString())).findFirst().ifPresent(u -> taskVo.setAssigneeName(u.getNickName())); - } - taskListVo.add(taskVo); - } - return taskListVo; - } else if (multiInstance.getType() instanceof ParallelMultiInstanceBehavior) { - List<Task> tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey())); - if (CollUtil.isNotEmpty(tasks)) { - List<Long> userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee())); - List<SysUserVo> sysUsers = null; - if (CollUtil.isNotEmpty(userIds)) { - sysUsers = sysUserMapper.selectVoBatchIds(userIds); - } - for (Task t : tasks) { - TaskVo taskVo = new TaskVo(); - taskVo.setId(t.getId()); - taskVo.setExecutionId(t.getExecutionId()); - taskVo.setProcessInstanceId(t.getProcessInstanceId()); - taskVo.setName(t.getName()); - taskVo.setAssignee(Long.valueOf(t.getAssignee())); - if (CollUtil.isNotEmpty(sysUsers)) { - sysUsers.stream().filter(u -> u.getUserId().toString().equals(t.getAssignee())).findFirst().ifPresent(e -> taskVo.setAssigneeName(e.getNickName())); - } - taskListVo.add(taskVo); - } - return taskListVo; - } - } - return Collections.emptyList(); - } - - /** - * 缈昏瘧閮ㄩ棬 - * - * @param page 鐢ㄦ埛鍒嗛〉鏁版嵁 - */ - private Page<SysUserVo> recordPage(Page<SysUserVo> page) { - List<SysUserVo> records = page.getRecords(); - if (CollUtil.isEmpty(records)) { - return page; - } - List<Long> collectDeptId = StreamUtils.toList(records, SysUserVo::getDeptId); - if (CollUtil.isEmpty(collectDeptId)) { - return page; - } - page.setRecords(records); - return page; - } - - /** - * 鎸夌収鐢ㄦ埛id鏌ヨ鐢ㄦ埛 - * - * @param userIds 鐢ㄦ埛id - */ - @Override - public List<SysUserVo> getUserListByIds(List<Long> userIds) { - if (CollUtil.isEmpty(userIds)) { - return Collections.emptyList(); - } - LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery(); - // 妫�绱㈡潯浠� - queryWrapper.eq(SysUser::getStatus, UserStatus.OK.getCode()); - queryWrapper.in(SysUser::getUserId, userIds); - return sysUserMapper.selectVoList(queryWrapper); - } - - /** - * 鎸夌収瑙掕壊id鏌ヨ鍏宠仈鐢ㄦ埛id - * - * @param roleIds 瑙掕壊id - */ - @Override - public List<SysUserRole> getUserRoleListByRoleIds(List<Long> roleIds) { - return sysUserRoleMapper.selectList(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds)); - } - - /** - * 鍒嗛〉鏌ヨ鐢ㄦ埛 - * - * @param sysUserBo 鍙傛暟 - * @param pageQuery 鍒嗛〉 - */ - @Override - public TableDataInfo<SysUserVo> getPageByUserList(SysUserBo sysUserBo, PageQuery pageQuery) { - LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(sysUserBo.getDeptId() != null, SysUser::getDeptId, sysUserBo.getDeptId()); - queryWrapper.eq(SysUser::getStatus, UserStatus.OK.getCode()); - queryWrapper.like(StringUtils.isNotEmpty(sysUserBo.getUserName()), SysUser::getUserName, sysUserBo.getUserName()); - queryWrapper.like(StringUtils.isNotEmpty(sysUserBo.getNickName()), SysUser::getNickName, sysUserBo.getNickName()); - Page<SysUserVo> userPage = sysUserMapper.selectVoPage(pageQuery.build(), queryWrapper); - return TableDataInfo.build(recordPage(userPage)); - } -} 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 6979671..f475f19 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,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.AccessLevel; import lombok.NoArgsConstructor; +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; @@ -15,18 +17,18 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; -import org.dromara.system.domain.SysUserRole; -import org.dromara.system.domain.vo.SysUserVo; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.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.*; +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.*; +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; @@ -41,7 +43,7 @@ import java.util.*; -import static org.dromara.workflow.common.constant.FlowConstant.*; +import static org.dromara.workflow.common.constant.FlowConstant.PROCESS_INSTANCE_VO; /** * 宸ヤ綔娴佸伐鍏� @@ -52,7 +54,7 @@ public class WorkflowUtils { private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); - private static final IWorkflowUserService WORKFLOW_USER_SERVICE = SpringUtils.getBean(IWorkflowUserService.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); @@ -138,15 +140,14 @@ List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId())); if (CollUtil.isNotEmpty(groupList)) { List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId())); - List<SysUserRole> sysUserRoles = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds); - if (CollUtil.isNotEmpty(sysUserRoles)) { + List<Long> userIds = USER_SERVICE.selectUserIdsByRoleIds(groupIds); + if (CollUtil.isNotEmpty(userIds)) { participantVo.setGroupIds(groupIds); - List<Long> userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId); - List<SysUserVo> sysUsers = WORKFLOW_USER_SERVICE.getUserListByIds(userIdList); - if (CollUtil.isNotEmpty(sysUsers)) { - List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId); - List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName); - participantVo.setCandidate(userIds); + List<UserDTO> userList = USER_SERVICE.selectListByIds(userIds); + if (CollUtil.isNotEmpty(userList)) { + List<Long> userIdList = StreamUtils.toList(userList, UserDTO::getUserId); + List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); + participantVo.setCandidate(userIdList); participantVo.setCandidateName(nickNames); participantVo.setClaim(!StringUtils.isBlank(task.getAssignee())); } @@ -161,10 +162,10 @@ } } - List<SysUserVo> sysUsers = WORKFLOW_USER_SERVICE.getUserListByIds(userIdList); - if (CollUtil.isNotEmpty(sysUsers)) { - List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId); - List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName); + List<UserDTO> userList = USER_SERVICE.selectListByIds(userIdList); + if (CollUtil.isNotEmpty(userList)) { + List<Long> userIds = StreamUtils.toList(userList, UserDTO::getUserId); + List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); participantVo.setCandidate(userIds); participantVo.setCandidateName(nickNames); // 鍒ゆ柇褰撳墠浠诲姟鏄惁鍏锋湁澶氫釜鍔炵悊浜� @@ -306,9 +307,9 @@ for (Task t : list) { ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId()); if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { - List<SysUserRole> sysUserRoles = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(taskParticipant.getGroupIds()); - if (CollUtil.isNotEmpty(sysUserRoles)) { - userIds.addAll(StreamUtils.toList(sysUserRoles, SysUserRole::getUserId)); + List<Long> userIdList = USER_SERVICE.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); + if (CollUtil.isNotEmpty(userIdList)) { + userIds.addAll(userIdList); } } List<Long> candidate = taskParticipant.getCandidate(); @@ -317,7 +318,7 @@ } } if (CollUtil.isNotEmpty(userIds)) { - List<SysUserVo> sysUserVoList = WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds)); + List<UserDTO> userList = USER_SERVICE.selectListByIds(new ArrayList<>(userIds)); for (String code : messageType) { MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); if (ObjectUtil.isNotEmpty(messageTypeEnum)) { @@ -329,7 +330,7 @@ WebSocketUtils.publishMessage(dto); break; case EMAIL_MESSAGE: - MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "鍗曟嵁瀹℃壒鎻愰啋", message); + MailUtils.sendText(StreamUtils.join(userList, UserDTO::getEmail), "鍗曟嵁瀹℃壒鎻愰啋", message); break; case SMS_MESSAGE: //todo 鐭俊鍙戦�� -- Gitblit v1.9.3