ソースを参照

Update 重构 workflow 模块与 system 模块解耦

YueYunyun 1 年間 前
コミット
81ec5a5203
29 ファイル変更444 行追加446 行削除
  1. 46 0
      SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/domain/dto/OssDTO.java
  2. 3 0
      SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/domain/dto/RoleDTO.java
  3. 73 0
      SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/domain/dto/UserDTO.java
  4. 13 0
      SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/service/OssService.java
  5. 21 0
      SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/service/UserService.java
  6. 5 0
      SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/domain/bo/SysUserBo.java
  7. 20 0
      SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/impl/SysOssServiceImpl.java
  8. 30 4
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/pom.xml
  9. 22 2
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/controller/ActTaskController.java
  10. 0 75
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/controller/WorkflowUserController.java
  11. 9 13
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/flowable/cmd/AttachmentCmd.java
  12. 2 0
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/ActHiProcinstMapper.java
  13. 3 1
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/ActHiTaskinstMapper.java
  14. 3 1
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/ActTaskMapper.java
  15. 2 0
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/TestLeaveMapper.java
  16. 3 1
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfDefinitionConfigMapper.java
  17. 3 1
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfFormManageMapper.java
  18. 3 1
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfNodeConfigMapper.java
  19. 2 0
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfTaskBackNodeMapper.java
  20. 17 0
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/IActTaskService.java
  21. 0 61
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/IWorkflowUserService.java
  22. 11 11
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActModelServiceImpl.java
  23. 13 13
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActProcessDefinitionServiceImpl.java
  24. 11 11
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActProcessInstanceServiceImpl.java
  25. 107 13
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActTaskServiceImpl.java
  26. 2 2
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/LeaveApplyServiceImpl.java
  27. 2 2
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/WfNodeConfigServiceImpl.java
  28. 0 214
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/WorkflowUserServiceImpl.java
  29. 18 20
      SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/utils/WorkflowUtils.java

+ 46 - 0
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/domain/dto/OssDTO.java

@@ -0,0 +1,46 @@
+package com.vber.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;
+
+}

+ 3 - 0
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/domain/dto/RoleDTO.java

@@ -3,6 +3,7 @@ package com.vber.common.core.domain.dto;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 /**
@@ -15,6 +16,8 @@ import java.io.Serializable;
 @NoArgsConstructor
 public class RoleDTO implements Serializable {
 
+    @Serial
+    private static final long serialVersionUID = 1L;
     /**
      * 角色ID
      */

+ 73 - 0
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/domain/dto/UserDTO.java

@@ -0,0 +1,73 @@
+package com.vber.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;
+
+    /**
+     * 用户类型(sys_user系统用户)
+     */
+    private String userType;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private String sex;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+}

+ 13 - 0
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/service/OssService.java

@@ -1,5 +1,9 @@
 package com.vber.common.core.service;
 
+import com.vber.common.core.domain.dto.OssDTO;
+
+import java.util.List;
+
 /**
  * 通用 OSS服务
  *
@@ -15,4 +19,13 @@ public interface OssService {
      */
     String selectUrlByIds(String ossIds);
 
+
+    /**
+     * 通过ossId查询列表
+     *
+     * @param ossIds ossId串逗号分隔
+     * @return 列表
+     */
+    List<OssDTO> selectByIds(String ossIds);
+
 }

+ 21 - 0
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/service/UserService.java

@@ -1,5 +1,9 @@
 package com.vber.common.core.service;
 
+import com.vber.common.core.domain.dto.UserDTO;
+
+import java.util.List;
+
 /**
  * 通用 用户服务
  *
@@ -31,4 +35,21 @@ public interface UserService {
      */
     String selectNicknameByIds(String userIds);
 
+
+    /**
+     * 通过用户ID查询用户列表
+     *
+     * @param userIds 用户ids
+     * @return 用户列表
+     */
+    List<UserDTO> selectListByIds(List<Long> userIds);
+
+    /**
+     * 通过角色ID查询用户ID
+     *
+     * @param roleIds 角色ids
+     * @return 用户ids
+     */
+    List<Long> selectUserIdsByRoleIds(List<Long> roleIds);
+
 }

+ 5 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/domain/bo/SysUserBo.java

@@ -103,6 +103,11 @@ public class SysUserBo extends BaseEntity {
      */
     private Long roleId;
 
+    /**
+     * 排除不查询的用户(工作流用)
+     */
+    private String excludeUserIds;
+
     public SysUserBo(Long userId) {
         this.userId = userId;
     }

+ 20 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/impl/SysOssServiceImpl.java

@@ -1,5 +1,6 @@
 package com.vber.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;
@@ -7,6 +8,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 com.vber.common.core.constant.CacheNames;
+import com.vber.common.core.domain.dto.OssDTO;
 import com.vber.common.core.exception.ServiceException;
 import com.vber.common.core.service.OssService;
 import com.vber.common.core.utils.MapstructUtils;
@@ -96,6 +98,24 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
         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();

+ 30 - 4
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/pom.xml

@@ -63,24 +63,50 @@
 
         <dependency>
             <groupId>com.vap</groupId>
-            <artifactId>vber-system</artifactId>
+            <artifactId>vber-common-websocket</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.vap</groupId>
-            <artifactId>vber-common-websocket</artifactId>
+            <artifactId>vber-common-mail</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.vap</groupId>
-            <artifactId>vber-common-mail</artifactId>
+            <artifactId>vber-common-sms</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.vap</groupId>
-            <artifactId>vber-common-sms</artifactId>
+            <artifactId>vber-common-web</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>com.vap</groupId>
+            <artifactId>vber-common-log</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.vap</groupId>
+            <artifactId>vber-common-idempotent</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.vap</groupId>
+            <artifactId>vber-common-excel</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.vap</groupId>
+            <artifactId>vber-common-translation</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.vap</groupId>
+            <artifactId>vber-common-tenant</artifactId>
+        </dependency>
+
+
     </dependencies>
 
 </project>

+ 22 - 2
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/controller/ActTaskController.java

@@ -42,7 +42,7 @@ public class ActTaskController extends BaseController {
 
     private final TaskService taskService;
 
-    private final IWfTaskBackNodeService iWfTaskBackNodeService;
+    private final IWfTaskBackNodeService wfTaskBackNodeService;
 
 
     /**
@@ -269,6 +269,26 @@ public class ActTaskController extends BaseController {
      */
     @GetMapping("/getTaskNodeList/{processInstanceId}")
     public R<List<WfTaskBackNode>> getNodeList(@PathVariable String processInstanceId) {
-        return R.ok(CollUtil.reverse(iWfTaskBackNodeService.getListByInstanceId(processInstanceId)));
+        return R.ok(CollUtil.reverse(wfTaskBackNodeService.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));
     }
 }

+ 0 - 75
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/controller/WorkflowUserController.java

@@ -1,75 +0,0 @@
-package com.vber.workflow.controller;
-
-import com.vber.common.core.domain.R;
-import com.vber.common.mybatis.core.page.PageQuery;
-import com.vber.common.mybatis.core.page.TableDataInfo;
-import com.vber.common.web.core.BaseController;
-import com.vber.system.domain.bo.SysUserBo;
-import com.vber.system.domain.vo.SysUserVo;
-import com.vber.workflow.domain.bo.SysUserMultiBo;
-import com.vber.workflow.domain.vo.TaskVo;
-import com.vber.workflow.service.IWorkflowUserService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-
-/**
- * 工作流用户选人管理 控制层
- *
- * @author iwb
- */
-@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);
-    }
-}

+ 9 - 13
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/flowable/cmd/AttachmentCmd.java

@@ -1,20 +1,17 @@
 package com.vber.workflow.flowable.cmd;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
+import com.vber.common.core.domain.dto.OssDTO;
+import com.vber.common.core.service.OssService;
 import com.vber.common.core.utils.SpringUtils;
-import com.vber.common.core.utils.StreamUtils;
 import com.vber.common.core.utils.StringUtils;
 import com.vber.common.satoken.utils.LoginHelper;
-import com.vber.system.domain.vo.SysOssVo;
-import com.vber.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 class AttachmentCmd implements Command<Boolean> {
     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);
                     }

+ 2 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/ActHiProcinstMapper.java

@@ -3,6 +3,7 @@ package com.vber.workflow.mapper;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import com.vber.workflow.domain.ActHiProcinst;
+import org.springframework.stereotype.Repository;
 
 /**
  * 流程实例Mapper接口
@@ -11,6 +12,7 @@ import com.vber.workflow.domain.ActHiProcinst;
  * @date 2023-07-22
  */
 @InterceptorIgnore(tenantLine = "true")
+@Repository
 public interface ActHiProcinstMapper extends BaseMapperPlus<ActHiProcinst, ActHiProcinst> {
 
 }

+ 3 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/ActHiTaskinstMapper.java

@@ -1,8 +1,9 @@
 package com.vber.workflow.mapper;
 
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.vber.workflow.domain.ActHiTaskinst;
 import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
+import com.vber.workflow.domain.ActHiTaskinst;
+import org.springframework.stereotype.Repository;
 
 /**
  * 流程历史任务Mapper接口
@@ -11,6 +12,7 @@ import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
  * @date 2024-03-02
  */
 @InterceptorIgnore(tenantLine = "true")
+@Repository
 public interface ActHiTaskinstMapper extends BaseMapperPlus<ActHiTaskinst, ActHiTaskinst> {
 
 }

+ 3 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/ActTaskMapper.java

@@ -5,9 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.ibatis.annotations.Param;
 import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import com.vber.workflow.domain.vo.TaskVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
 
 
 /**
@@ -17,6 +18,7 @@ import com.vber.workflow.domain.vo.TaskVo;
  * @date 2024-03-02
  */
 @InterceptorIgnore(tenantLine = "true")
+@Repository
 public interface ActTaskMapper extends BaseMapperPlus<TaskVo, TaskVo> {
     /**
      * 获取待办信息

+ 2 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/TestLeaveMapper.java

@@ -3,6 +3,7 @@ package com.vber.workflow.mapper;
 import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import com.vber.workflow.domain.WfiLeaveApply;
 import com.vber.workflow.domain.vo.LeaveApplyVo;
+import org.springframework.stereotype.Repository;
 
 /**
  * 请假Mapper接口
@@ -10,6 +11,7 @@ import com.vber.workflow.domain.vo.LeaveApplyVo;
  * @author iwb
  * @date 2023-07-21
  */
+@Repository
 public interface TestLeaveMapper extends BaseMapperPlus<WfiLeaveApply, LeaveApplyVo> {
 
 }

+ 3 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfDefinitionConfigMapper.java

@@ -1,8 +1,9 @@
 package com.vber.workflow.mapper;
 
+import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import com.vber.workflow.domain.WfDefinitionConfig;
 import com.vber.workflow.domain.vo.WfDefinitionConfigVo;
-import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
+import org.springframework.stereotype.Repository;
 
 /**
  * 流程定义配置Mapper接口
@@ -10,6 +11,7 @@ import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
  * @author iwb
  * @date 2024-03-18
  */
+@Repository
 public interface WfDefinitionConfigMapper extends BaseMapperPlus<WfDefinitionConfig, WfDefinitionConfigVo> {
 
 }

+ 3 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfFormManageMapper.java

@@ -1,8 +1,9 @@
 package com.vber.workflow.mapper;
 
+import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import com.vber.workflow.domain.WfFormManage;
 import com.vber.workflow.domain.vo.WfFormManageVo;
-import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
+import org.springframework.stereotype.Repository;
 
 /**
  * 表单管理Mapper接口
@@ -10,6 +11,7 @@ import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
  * @author iwb
  * @date 2024-03-29
  */
+@Repository
 public interface WfFormManageMapper extends BaseMapperPlus<WfFormManage, WfFormManageVo> {
 
 }

+ 3 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfNodeConfigMapper.java

@@ -1,8 +1,9 @@
 package com.vber.workflow.mapper;
 
+import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import com.vber.workflow.domain.WfNodeConfig;
 import com.vber.workflow.domain.vo.WfNodeConfigVo;
-import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
+import org.springframework.stereotype.Repository;
 
 /**
  * 节点配置Mapper接口
@@ -10,6 +11,7 @@ import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
  * @author iwb
  * @date 2024-03-30
  */
+@Repository
 public interface WfNodeConfigMapper extends BaseMapperPlus<WfNodeConfig, WfNodeConfigVo> {
 
 }

+ 2 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/mapper/WfTaskBackNodeMapper.java

@@ -2,6 +2,7 @@ package com.vber.workflow.mapper;
 
 import com.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import com.vber.workflow.domain.WfTaskBackNode;
+import org.springframework.stereotype.Repository;
 
 /**
  * 节点驳回记录Mapper接口
@@ -9,5 +10,6 @@ import com.vber.workflow.domain.WfTaskBackNode;
  * @author iwb
  * @date 2024-03-13
  */
+@Repository
 public interface WfTaskBackNodeMapper extends BaseMapperPlus<WfTaskBackNode, WfTaskBackNode> {
 }

+ 17 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/IActTaskService.java

@@ -142,4 +142,21 @@ public interface IActTaskService {
      * @return 结果
      */
     List<VariableVo> getInstanceVariable(String taskId);
+
+
+    /**
+     * 查询工作流任务用户选择加签人员
+     *
+     * @param taskId 任务id
+     * @return 结果
+     */
+    String getTaskUserIdsByAddMultiInstance(String taskId);
+
+    /**
+     * 查询工作流选择减签人员
+     *
+     * @param taskId 任务id
+     * @return 结果
+     */
+    List<TaskVo> getListByDeleteMultiInstance(String taskId);
 }

+ 0 - 61
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/IWorkflowUserService.java

@@ -1,61 +0,0 @@
-package com.vber.workflow.service;
-
-import com.vber.common.mybatis.core.page.PageQuery;
-import com.vber.common.mybatis.core.page.TableDataInfo;
-import com.vber.system.domain.SysUserRole;
-import com.vber.system.domain.bo.SysUserBo;
-import com.vber.system.domain.vo.SysUserVo;
-import com.vber.workflow.domain.bo.SysUserMultiBo;
-import com.vber.workflow.domain.vo.TaskVo;
-
-import java.util.List;
-
-/**
- * 工作流用户选人管理 服务层
- *
- * @author iwb
- */
-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);
-}

+ 11 - 11
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActModelServiceImpl.java

@@ -8,11 +8,6 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ZipUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.util.StringUtils;
-import jakarta.servlet.http.HttpServletResponse;
-import lombok.RequiredArgsConstructor;
-import org.apache.batik.transcoder.TranscoderInput;
-import org.apache.batik.transcoder.TranscoderOutput;
-import org.apache.batik.transcoder.image.PNGTranscoder;
 import com.vber.common.core.exception.ServiceException;
 import com.vber.common.mybatis.core.page.PageQuery;
 import com.vber.common.mybatis.core.page.TableDataInfo;
@@ -28,6 +23,11 @@ import com.vber.workflow.service.IWfDefinitionConfigService;
 import com.vber.workflow.service.IWfNodeConfigService;
 import com.vber.workflow.utils.ModelUtils;
 import com.vber.workflow.utils.QueryUtils;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.image.PNGTranscoder;
 import org.flowable.bpmn.converter.BpmnXMLConverter;
 import org.flowable.bpmn.model.BpmnModel;
 import org.flowable.bpmn.model.Process;
@@ -64,8 +64,8 @@ import java.util.zip.ZipOutputStream;
 public class ActModelServiceImpl implements IActModelService {
 
     private final RepositoryService repositoryService;
-    private final IWfNodeConfigService iWfNodeConfigService;
-    private final IWfDefinitionConfigService iWfDefinitionConfigService;
+    private final IWfNodeConfigService wfNodeConfigService;
+    private final IWfDefinitionConfigService wfDefinitionConfigService;
 
     /**
      * 分页查询模型
@@ -291,16 +291,16 @@ public class ActModelServiceImpl implements IActModelService {
             repositoryService.setProcessDefinitionCategory(definition.getId(), model.getCategory());
             //更新流程定义配置
             if (processDefinition != null) {
-                WfDefinitionConfigVo definitionVo = iWfDefinitionConfigService.getByDefId(processDefinition.getId());
+                WfDefinitionConfigVo definitionVo = wfDefinitionConfigService.getByDefId(processDefinition.getId());
                 if (definitionVo != null) {
-                    iWfDefinitionConfigService.deleteByDefIds(Collections.singletonList(processDefinition.getId()));
+                    wfDefinitionConfigService.deleteByDefIds(Collections.singletonList(processDefinition.getId()));
                     WfDefinitionConfigBo wfFormDefinition = new WfDefinitionConfigBo();
                     wfFormDefinition.setDefinitionId(definition.getId());
                     wfFormDefinition.setProcessKey(definition.getKey());
                     wfFormDefinition.setTableName(definitionVo.getTableName());
                     wfFormDefinition.setVersion(definition.getVersion());
                     wfFormDefinition.setRemark(definitionVo.getRemark());
-                    iWfDefinitionConfigService.saveOrUpdate(wfFormDefinition);
+                    wfDefinitionConfigService.saveOrUpdate(wfFormDefinition);
                 }
             }
             //更新流程节点配置表单
@@ -321,7 +321,7 @@ public class ActModelServiceImpl implements IActModelService {
                 }
             }
             if (CollUtil.isNotEmpty(wfNodeConfigList)) {
-                iWfNodeConfigService.saveOrUpdate(wfNodeConfigList);
+                wfNodeConfigService.saveOrUpdate(wfNodeConfigList);
             }
             return true;
         } catch (Exception e) {

+ 13 - 13
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActProcessDefinitionServiceImpl.java

@@ -7,8 +7,6 @@ import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
 import com.vber.common.core.exception.ServiceException;
 import com.vber.common.core.utils.StreamUtils;
 import com.vber.common.core.utils.StringUtils;
@@ -30,6 +28,8 @@ import com.vber.workflow.service.IWfDefinitionConfigService;
 import com.vber.workflow.service.IWfNodeConfigService;
 import com.vber.workflow.utils.ModelUtils;
 import com.vber.workflow.utils.QueryUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 import org.flowable.bpmn.model.UserTask;
 import org.flowable.engine.ProcessMigrationService;
 import org.flowable.engine.RepositoryService;
@@ -62,9 +62,9 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
     private final RepositoryService repositoryService;
     private final ProcessMigrationService processMigrationService;
     private final IWfCategoryService wfCategoryService;
-    private final IWfDefinitionConfigService iWfDefinitionConfigService;
+    private final IWfDefinitionConfigService wfDefinitionConfigService;
     private final WfDefinitionConfigMapper wfDefinitionConfigMapper;
-    private final IWfNodeConfigService iWfNodeConfigService;
+    private final IWfNodeConfigService wfNodeConfigService;
 
     /**
      * 分页查询
@@ -95,7 +95,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
         }
         if (CollUtil.isNotEmpty(definitionList)) {
             List<String> ids = StreamUtils.toList(definitionList, ProcessDefinition::getId);
-            List<WfDefinitionConfigVo> wfDefinitionConfigVos = iWfDefinitionConfigService.queryList(ids);
+            List<WfDefinitionConfigVo> wfDefinitionConfigVos = wfDefinitionConfigService.queryList(ids);
             for (ProcessDefinition processDefinition : definitionList) {
                 ProcessDefinitionVo processDefinitionVo = BeanUtil.toBean(processDefinition, ProcessDefinitionVo.class);
                 if (CollUtil.isNotEmpty(deploymentList)) {
@@ -135,7 +135,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
         }
         if (CollUtil.isNotEmpty(definitionList)) {
             List<String> ids = StreamUtils.toList(definitionList, ProcessDefinition::getId);
-            List<WfDefinitionConfigVo> wfDefinitionConfigVos = iWfDefinitionConfigService.queryList(ids);
+            List<WfDefinitionConfigVo> wfDefinitionConfigVos = wfDefinitionConfigService.queryList(ids);
             for (ProcessDefinition processDefinition : definitionList) {
                 ProcessDefinitionVo processDefinitionVo = BeanUtil.toBean(processDefinition, ProcessDefinitionVo.class);
                 if (CollUtil.isNotEmpty(deploymentList)) {
@@ -203,9 +203,9 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
                 repositoryService.deleteDeployment(deploymentId);
             }
             //删除流程定义配置
-            iWfDefinitionConfigService.deleteByDefIds(processDefinitionIds);
+            wfDefinitionConfigService.deleteByDefIds(processDefinitionIds);
             //删除节点配置
-            iWfNodeConfigService.deleteByDefIds(processDefinitionIds);
+            wfNodeConfigService.deleteByDefIds(processDefinitionIds);
             return true;
         } catch (Exception e) {
             e.printStackTrace();
@@ -387,7 +387,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
                 wfDefinitionConfigBo.setProcessKey(processDefinition.getKey());
                 wfDefinitionConfigBo.setTableName("test_leave");
                 wfDefinitionConfigBo.setVersion(processDefinition.getVersion());
-                iWfDefinitionConfigService.saveOrUpdate(wfDefinitionConfigBo);
+                wfDefinitionConfigService.saveOrUpdate(wfDefinitionConfigBo);
             }
         }
 
@@ -402,16 +402,16 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
     private void setWfConfig(ProcessDefinition oldProcessDefinition, ProcessDefinition definition) {
         //更新流程定义表单
         if (oldProcessDefinition != null) {
-            WfDefinitionConfigVo definitionVo = iWfDefinitionConfigService.getByDefId(oldProcessDefinition.getId());
+            WfDefinitionConfigVo definitionVo = wfDefinitionConfigService.getByDefId(oldProcessDefinition.getId());
             if (definitionVo != null) {
-                iWfDefinitionConfigService.deleteByDefIds(Collections.singletonList(oldProcessDefinition.getId()));
+                wfDefinitionConfigService.deleteByDefIds(Collections.singletonList(oldProcessDefinition.getId()));
                 WfDefinitionConfigBo wfDefinitionConfigBo = new WfDefinitionConfigBo();
                 wfDefinitionConfigBo.setDefinitionId(definition.getId());
                 wfDefinitionConfigBo.setProcessKey(definition.getKey());
                 wfDefinitionConfigBo.setTableName(definitionVo.getTableName());
                 wfDefinitionConfigBo.setVersion(definition.getVersion());
                 wfDefinitionConfigBo.setRemark(definitionVo.getRemark());
-                iWfDefinitionConfigService.saveOrUpdate(wfDefinitionConfigBo);
+                wfDefinitionConfigService.saveOrUpdate(wfDefinitionConfigBo);
             }
         }
         //更新流程节点配置表单
@@ -432,7 +432,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
             }
         }
         if (CollUtil.isNotEmpty(wfNodeConfigList)) {
-            iWfNodeConfigService.saveOrUpdate(wfNodeConfigList);
+            wfNodeConfigService.saveOrUpdate(wfNodeConfigList);
         }
     }
 }

+ 11 - 11
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActProcessInstanceServiceImpl.java

@@ -6,9 +6,6 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.ObjectUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
 import com.vber.common.core.exception.ServiceException;
 import com.vber.common.core.utils.StreamUtils;
 import com.vber.common.core.utils.StringUtils;
@@ -34,6 +31,9 @@ import com.vber.workflow.service.IWfNodeConfigService;
 import com.vber.workflow.service.IWfTaskBackNodeService;
 import com.vber.workflow.utils.QueryUtils;
 import com.vber.workflow.utils.WorkflowUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
 import org.flowable.bpmn.model.*;
 import org.flowable.engine.*;
 import org.flowable.engine.history.HistoricActivityInstance;
@@ -76,8 +76,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     private final IActHiProcinstService actHiProcinstService;
     private final ManagementService managementService;
     private final FlowEventStrategy flowEventStrategy;
-    private final IWfTaskBackNodeService iWfTaskBackNodeService;
-    private final IWfNodeConfigService iWfNodeConfigService;
+    private final IWfTaskBackNodeService wfTaskBackNodeService;
+    private final IWfNodeConfigService wfNodeConfigService;
 
     @Value("${flowable.activity-font-name}")
     private String activityFontName;
@@ -122,7 +122,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
         }
         if (CollUtil.isNotEmpty(list)) {
             List<String> processDefinitionIds = StreamUtils.toList(list, ProcessInstanceVo::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (ProcessInstanceVo processInstanceVo : list) {
                 if (CollUtil.isNotEmpty(wfNodeConfigVoList)) {
                     wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(processInstanceVo.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(processInstanceVo::setWfNodeConfigVo);
@@ -169,7 +169,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
         }
         if (CollUtil.isNotEmpty(list)) {
             List<String> processDefinitionIds = StreamUtils.toList(list, ProcessInstanceVo::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (ProcessInstanceVo processInstanceVo : list) {
                 if (CollUtil.isNotEmpty(wfNodeConfigVoList)) {
                     wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(processInstanceVo.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(processInstanceVo::setWfNodeConfigVo);
@@ -523,7 +523,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
             if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
                 historyService.bulkDeleteHistoricProcessInstances(processInstanceIds);
             }
-            iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds);
+            wfTaskBackNodeService.deleteByInstanceIds(processInstanceIds);
             return true;
         } catch (Exception e) {
             e.printStackTrace();
@@ -558,7 +558,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
             if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
                 historyService.bulkDeleteHistoricProcessInstances(processInstanceIds);
             }
-            iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds);
+            wfTaskBackNodeService.deleteByInstanceIds(processInstanceIds);
             return true;
         } catch (Exception e) {
             e.printStackTrace();
@@ -576,7 +576,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     public boolean deleteFinishAndHisInstance(List<String> processInstanceIds) {
         try {
             historyService.bulkDeleteHistoricProcessInstances(processInstanceIds);
-            iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds);
+            wfTaskBackNodeService.deleteByInstanceIds(processInstanceIds);
             return true;
         } catch (Exception e) {
             e.printStackTrace();
@@ -677,7 +677,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
         }
         if (CollUtil.isNotEmpty(list)) {
             List<String> processDefinitionIds = StreamUtils.toList(list, ProcessInstanceVo::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (ProcessInstanceVo processInstanceVo : list) {
                 if (CollUtil.isNotEmpty(wfNodeConfigVoList)) {
                     wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(processInstanceVo.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(processInstanceVo::setWfNodeConfigVo);

+ 107 - 13
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActTaskServiceImpl.java

@@ -6,9 +6,10 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
 import com.vber.common.core.domain.dto.RoleDTO;
+import com.vber.common.core.domain.dto.UserDTO;
 import com.vber.common.core.exception.ServiceException;
+import com.vber.common.core.service.UserService;
 import com.vber.common.core.utils.StreamUtils;
 import com.vber.common.core.utils.StringUtils;
 import com.vber.common.mybatis.core.page.PageQuery;
@@ -35,6 +36,7 @@ import com.vber.workflow.service.IWfTaskBackNodeService;
 import com.vber.workflow.utils.ModelUtils;
 import com.vber.workflow.utils.QueryUtils;
 import com.vber.workflow.utils.WorkflowUtils;
+import lombok.RequiredArgsConstructor;
 import org.flowable.common.engine.api.FlowableObjectNotFoundException;
 import org.flowable.common.engine.impl.identity.Authentication;
 import org.flowable.engine.*;
@@ -74,11 +76,14 @@ public class ActTaskServiceImpl implements IActTaskService {
     private final IdentityService identityService;
     private final ManagementService managementService;
     private final FlowEventStrategy flowEventStrategy;
+    private final IWfTaskBackNodeService wfTaskBackNodeService;
+    private final IWfNodeConfigService wfNodeConfigService;
+    private final IWfDefinitionConfigService wfDefinitionConfigService;
+    private final UserService userService;
+
     private final ActTaskMapper actTaskMapper;
-    private final IWfTaskBackNodeService iWfTaskBackNodeService;
     private final ActHiTaskinstMapper actHiTaskinstMapper;
-    private final IWfNodeConfigService iWfNodeConfigService;
-    private final IWfDefinitionConfigService iWfDefinitionConfigService;
+
 
     /**
      * 启动任务
@@ -107,7 +112,7 @@ public class ActTaskServiceImpl implements IActTaskService {
             map.put("taskId", taskResult.get(0).getId());
             return map;
         }
-        WfDefinitionConfigVo wfDefinitionConfigVo = iWfDefinitionConfigService.getByTableNameLastVersion(startProcessBo.getTableName());
+        WfDefinitionConfigVo wfDefinitionConfigVo = wfDefinitionConfigService.getByTableNameLastVersion(startProcessBo.getTableName());
         if (wfDefinitionConfigVo == null) {
             throw new ServiceException("请到流程定义绑定业务表名与流程KEY!");
         }
@@ -206,7 +211,7 @@ public class ActTaskServiceImpl implements IActTaskService {
                 taskService.complete(completeTaskBo.getTaskId());
             }
             //记录执行过的流程任务节点
-            iWfTaskBackNodeService.recordExecuteNode(task);
+            wfTaskBackNodeService.recordExecuteNode(task);
             ProcessInstance pi = QueryUtils.instanceQuery(task.getProcessInstanceId()).singleResult();
             if (pi == null) {
                 UpdateBusinessStatusCmd updateBusinessStatusCmd = new UpdateBusinessStatusCmd(task.getProcessInstanceId(), BusinessStatusEnum.FINISH.getStatus());
@@ -281,7 +286,7 @@ public class ActTaskServiceImpl implements IActTaskService {
         List<TaskVo> taskList = page.getRecords();
         if (CollUtil.isNotEmpty(taskList)) {
             List<String> processDefinitionIds = StreamUtils.toList(taskList, TaskVo::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (TaskVo task : taskList) {
                 task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus()));
                 task.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId()));
@@ -335,7 +340,7 @@ public class ActTaskServiceImpl implements IActTaskService {
         List<TaskVo> list = new ArrayList<>();
         if (CollUtil.isNotEmpty(taskList)) {
             List<String> processDefinitionIds = StreamUtils.toList(taskList, Task::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (Task task : taskList) {
                 TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class);
                 if (CollUtil.isNotEmpty(processInstanceList)) {
@@ -383,7 +388,7 @@ public class ActTaskServiceImpl implements IActTaskService {
         List<TaskVo> taskList = page.getRecords();
         if (CollUtil.isNotEmpty(taskList)) {
             List<String> processDefinitionIds = StreamUtils.toList(taskList, TaskVo::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (TaskVo task : taskList) {
                 task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus()));
                 if (CollUtil.isNotEmpty(wfNodeConfigVoList)) {
@@ -419,7 +424,7 @@ public class ActTaskServiceImpl implements IActTaskService {
         List<TaskVo> taskList = page.getRecords();
         if (CollUtil.isNotEmpty(taskList)) {
             List<String> processDefinitionIds = StreamUtils.toList(taskList, TaskVo::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (TaskVo task : taskList) {
                 task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus()));
                 if (CollUtil.isNotEmpty(wfNodeConfigVoList)) {
@@ -447,7 +452,7 @@ public class ActTaskServiceImpl implements IActTaskService {
         List<TaskVo> taskList = page.getRecords();
         if (CollUtil.isNotEmpty(taskList)) {
             List<String> processDefinitionIds = StreamUtils.toList(taskList, TaskVo::getProcessDefinitionId);
-            List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds);
+            List<WfNodeConfigVo> wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds);
             for (TaskVo task : taskList) {
                 task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus()));
                 if (CollUtil.isNotEmpty(wfNodeConfigVoList)) {
@@ -722,7 +727,7 @@ public class ActTaskServiceImpl implements IActTaskService {
                 managementService.executeCommand(deleteExecutionCmd);
             }
 
-            WfTaskBackNode wfTaskBackNode = iWfTaskBackNodeService.getListByInstanceIdAndNodeId(task.getProcessInstanceId(), backProcessBo.getTargetActivityId());
+            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());
@@ -731,7 +736,7 @@ public class ActTaskServiceImpl implements IActTaskService {
                 }
             }
             //删除驳回后的流程节点
-            iWfTaskBackNodeService.deleteBackTaskNode(processInstanceId, backProcessBo.getTargetActivityId());
+            wfTaskBackNodeService.deleteBackTaskNode(processInstanceId, backProcessBo.getTargetActivityId());
         } catch (Exception e) {
             throw new ServiceException(e.getMessage());
         }
@@ -777,4 +782,93 @@ public class ActTaskServiceImpl implements IActTaskService {
         }
         return variableVoList;
     }
+
+    /**
+     * 查询工作流任务用户选择加签人员
+     *
+     * @param taskId 任务id
+     * @return
+     */
+    @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();
+    }
 }

+ 2 - 2
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/LeaveApplyServiceImpl.java

@@ -35,7 +35,7 @@ import java.util.List;
 public class LeaveApplyServiceImpl implements ILeaveApplyService {
 
     private final TestLeaveMapper baseMapper;
-    private final IActProcessInstanceService iActProcessInstanceService;
+    private final IActProcessInstanceService actProcessInstanceService;
 
     /**
      * 查询请假
@@ -115,7 +115,7 @@ public class LeaveApplyServiceImpl implements ILeaveApplyService {
     @Transactional(rollbackFor = Exception.class)
     public Boolean deleteWithValidByIds(Collection<Long> ids) {
         List<String> idList = StreamUtils.toList(ids, String::valueOf);
-        iActProcessInstanceService.deleteRunAndHisInstanceByBusinessKeys(idList);
+        actProcessInstanceService.deleteRunAndHisInstanceByBusinessKeys(idList);
         return baseMapper.deleteBatchIds(ids) > 0;
     }
 }

+ 2 - 2
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/WfNodeConfigServiceImpl.java

@@ -26,7 +26,7 @@ import java.util.List;
 public class WfNodeConfigServiceImpl implements IWfNodeConfigService {
 
     private final WfNodeConfigMapper baseMapper;
-    private final IWfFormManageService iWfFormManageService;
+    private final IWfFormManageService wfFormManageService;
 
     /**
      * 查询节点配置
@@ -63,7 +63,7 @@ public class WfNodeConfigServiceImpl implements IWfNodeConfigService {
         List<WfNodeConfigVo> wfNodeConfigVos = baseMapper.selectVoList(new LambdaQueryWrapper<WfNodeConfig>().in(WfNodeConfig::getDefinitionId, ids));
         if (CollUtil.isNotEmpty(wfNodeConfigVos)) {
             List<Long> formIds = StreamUtils.toList(wfNodeConfigVos, WfNodeConfigVo::getFormId);
-            List<WfFormManageVo> wfFormManageVos = iWfFormManageService.queryByIds(formIds);
+            List<WfFormManageVo> wfFormManageVos = wfFormManageService.queryByIds(formIds);
             for (WfNodeConfigVo wfNodeConfigVo : wfNodeConfigVos) {
                 wfFormManageVos.stream().filter(e -> ObjectUtil.equals(e.getId(), wfNodeConfigVo.getFormId())).findFirst().ifPresent(wfNodeConfigVo::setWfFormManageVo);
             }

+ 0 - 214
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/WorkflowUserServiceImpl.java

@@ -1,214 +0,0 @@
-package com.vber.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 com.vber.common.core.enums.UserStatus;
-import com.vber.common.core.exception.ServiceException;
-import com.vber.common.core.utils.StreamUtils;
-import com.vber.common.core.utils.StringUtils;
-import com.vber.common.mybatis.core.page.PageQuery;
-import com.vber.common.mybatis.core.page.TableDataInfo;
-import com.vber.system.domain.SysUser;
-import com.vber.system.domain.SysUserRole;
-import com.vber.system.domain.bo.SysUserBo;
-import com.vber.system.domain.vo.SysUserVo;
-import com.vber.system.mapper.SysUserMapper;
-import com.vber.system.mapper.SysUserRoleMapper;
-import com.vber.workflow.domain.bo.SysUserMultiBo;
-import com.vber.workflow.domain.vo.MultiInstanceVo;
-import com.vber.workflow.domain.vo.TaskVo;
-import com.vber.workflow.service.IWorkflowUserService;
-import com.vber.workflow.utils.QueryUtils;
-import com.vber.workflow.utils.WorkflowUtils;
-import lombok.RequiredArgsConstructor;
-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 iwb
- */
-@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.getOrgId()), SysUser::getOrgId, bo.getOrgId());
-        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> collectOrgId = StreamUtils.toList(records, SysUserVo::getOrgId);
-        if (CollUtil.isEmpty(collectOrgId)) {
-            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.getOrgId() != null, SysUser::getOrgId, sysUserBo.getOrgId());
-        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));
-    }
-}

+ 18 - 20
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/utils/WorkflowUtils.java

@@ -5,6 +5,8 @@ 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 com.vber.common.core.domain.dto.UserDTO;
+import com.vber.common.core.service.UserService;
 import com.vber.common.core.utils.SpringUtils;
 import com.vber.common.core.utils.StreamUtils;
 import com.vber.common.core.utils.StringUtils;
@@ -13,8 +15,6 @@ import com.vber.common.mail.utils.MailUtils;
 import com.vber.common.tenant.helper.TenantHelper;
 import com.vber.common.websocket.dto.WebSocketMessageDto;
 import com.vber.common.websocket.utils.WebSocketUtils;
-import com.vber.system.domain.SysUserRole;
-import com.vber.system.domain.vo.SysUserVo;
 import com.vber.workflow.common.constant.FlowConstant;
 import com.vber.workflow.common.enums.BusinessStatusEnum;
 import com.vber.workflow.common.enums.MessageTypeEnum;
@@ -27,7 +27,6 @@ import com.vber.workflow.domain.vo.ProcessInstanceVo;
 import com.vber.workflow.flowable.cmd.UpdateHiTaskInstCmd;
 import com.vber.workflow.mapper.ActHiTaskinstMapper;
 import com.vber.workflow.service.IActHiProcinstService;
-import com.vber.workflow.service.IWorkflowUserService;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.flowable.bpmn.model.BpmnModel;
@@ -55,7 +54,7 @@ import static com.vber.workflow.common.constant.FlowConstant.PROCESS_INSTANCE_VO
 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);
 
@@ -141,14 +140,13 @@ public class WorkflowUtils {
             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);
+                    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(userIds);
                         participantVo.setCandidateName(nickNames);
                         participantVo.setClaim(!StringUtils.isBlank(task.getAssignee()));
@@ -164,10 +162,10 @@ public class WorkflowUtils {
 
                     }
                 }
-                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);
                     // 判断当前任务是否具有多个办理人
@@ -309,9 +307,9 @@ public class WorkflowUtils {
         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();
@@ -320,7 +318,7 @@ public class WorkflowUtils {
             }
         }
         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)) {
@@ -332,7 +330,7 @@ public class WorkflowUtils {
                             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 短信发送