diff --git a/pjcloud-flow/pjcloud-flow-engine/pjcloud-flow-engine-biz/src/main/java/com/bsd/pjcloud/flow/engine/controller/EngineFlowController.java b/pjcloud-flow/pjcloud-flow-engine/pjcloud-flow-engine-biz/src/main/java/com/bsd/pjcloud/flow/engine/controller/EngineFlowController.java index f74645b2..007404cb 100644 --- a/pjcloud-flow/pjcloud-flow-engine/pjcloud-flow-engine-biz/src/main/java/com/bsd/pjcloud/flow/engine/controller/EngineFlowController.java +++ b/pjcloud-flow/pjcloud-flow-engine/pjcloud-flow-engine-biz/src/main/java/com/bsd/pjcloud/flow/engine/controller/EngineFlowController.java @@ -8,7 +8,9 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.flow.task.entity.Process; import com.fasterxml.jackson.databind.ObjectMapper; import com.bsd.pjcloud.common.core.util.R; @@ -30,11 +32,9 @@ import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.history.HistoricActivityInstanceQuery; import org.flowable.engine.runtime.Execution; import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -250,6 +250,14 @@ public class EngineFlowController { } } + if (CollUtil.isNotEmpty(taskQueryParamDto.getProcessInstanceIds()) && StrUtil.isEmpty(taskQueryParamDto.getProcessName())) { + taskQuery.processInstanceIdIn(taskQueryParamDto.getProcessInstanceIds()); + } + + if (Objects.nonNull(taskQueryParamDto.getIsActive()) && taskQueryParamDto.getIsActive()) { + taskQuery.active(); + } + if (ArrayUtil.isNotEmpty(taskQueryParamDto.getTaskTime())) { ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedBeforeDateTime = taskQueryParamDto.getTaskTime()[0].atZone(zoneId); @@ -289,4 +297,30 @@ public class EngineFlowController { return R.ok(pageResultDto); } + @GetMapping("/queryAssignTaskOne") + public R queryAssignTaskOne(@RequestParam String processInstanceId) { + String assign = SecurityUtils.getUser().getId().toString(); + TaskQuery taskQuery = taskService.createTaskQuery().taskAssignee(assign).orderByTaskCreateTime().processInstanceId(processInstanceId).active().desc(); + long count = taskQuery.count(); + if (count != 1) { + log.debug("queryAssignTaskOne查询错误,count!=1,processInstanceId:{}", processInstanceId); + return null; + } + Task task = taskQuery.singleResult(); + String taskId = task.getId(); + log.debug("queryAssignTaskOne查询错误(taskId) {} processInstanceId={} executrionId={}", task.getName(), processInstanceId, task.getExecutionId()); + String taskDefinitionKey = task.getTaskDefinitionKey(); + String processDefinitionId = task.getProcessDefinitionId(); + String flowId = NodeUtil.getFlowId(processDefinitionId); + TaskDto taskDto = new TaskDto(); + taskDto.setFlowId(flowId); + taskDto.setTaskCreateTime(task.getCreateTime()); + taskDto.setNodeId(taskDefinitionKey); + taskDto.setProcessInstanceId(processInstanceId); + taskDto.setTaskId(taskId); + taskDto.setAssign(task.getAssignee()); + taskDto.setTaskName(task.getName()); + return R.ok(taskDto); + } + } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowEngineService.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowEngineService.java index e5f2310d..b4a985f9 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowEngineService.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowEngineService.java @@ -20,110 +20,133 @@ import java.util.Map; @FeignClient(contextId = "remoteFlowEngineService", value = ServiceNameConstants.FLOW_ENGINE_SERVER) public interface RemoteFlowEngineService { - /** - * 查询任务变量 - * @param variableQueryParamDto 变量查询参数 - * @return 任务变量结果 - */ - @PostMapping("/task/queryTaskVariables") - R> queryTaskVariables(@RequestBody VariableQueryParamDto variableQueryParamDto); + /** + * 查询任务变量 + * + * @param variableQueryParamDto 变量查询参数 + * @return 任务变量结果 + */ + @PostMapping("/task/queryTaskVariables") + R> queryTaskVariables(@RequestBody VariableQueryParamDto variableQueryParamDto); - /** - * 查询简单数据 - * @param userId 用户ID - * @return 索引页统计数据 - */ - @GetMapping("/process-instance/querySimpleData") - R querySimpleData(@RequestParam("userId") Long userId); + /** + * 查询简单数据 + * + * @param userId 用户ID + * @return 索引页统计数据 + */ + @GetMapping("/process-instance/querySimpleData") + R querySimpleData(@RequestParam("userId") Long userId); - /** - * 创建流程 - * @param map 流程JSON对象 - * @return 创建流程结果 - */ - @PostMapping("/flow/create") - R createFlow(@RequestBody Map map); + /** + * 创建流程 + * + * @param map 流程JSON对象 + * @return 创建流程结果 + */ + @PostMapping("/flow/create") + R createFlow(@RequestBody Map map); - /** - * 启动流程实例 - * @param processInstanceParamDto 流程实例参数 - * @return 启动流程结果 - */ - @NoToken - @PostMapping("/flow/start") - R startProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto); + /** + * 启动流程实例 + * + * @param processInstanceParamDto 流程实例参数 + * @return 启动流程结果 + */ + @NoToken + @PostMapping("/flow/start") + R startProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto); - /** - * 查询待办任务 - * @param paramDto 任务查询参数 - * @return 待办任务列表 - */ - @PostMapping("/flow/queryAssignTask") - R> queryAssignTask(@RequestBody TaskQueryParamDto paramDto); + /** + * 查询待办任务 + * + * @param paramDto 任务查询参数 + * @return 待办任务列表 + */ + @PostMapping("/flow/queryAssignTask") + R> queryAssignTask(@RequestBody TaskQueryParamDto paramDto); - /** - * 查询已完成任务 - * @param paramDto 任务查询参数 - * @return 已完成任务列表 - */ - @PostMapping("/flow/queryCompletedTask") - R> queryCompletedTask(@RequestBody TaskQueryParamDto paramDto); + /** + * 根据processInstanceId和当前登录用户id查询待办任务 + * + * @param processInstanceId + * @return + */ + @GetMapping("/flow/queryAssignTaskOne") + R queryAssignTaskOne(@RequestParam String processInstanceId); - /** - * 完成任务 - * @param taskParamDto 任务参数 - * @return 完成任务结果 - */ - @PostMapping("/task/complete") - R completeTask(@RequestBody TaskParamDto taskParamDto); - /** - * 设置任务负责人 - * @param taskParamDto 任务参数 - * @return 设置负责人结果 - */ - @PostMapping("/task/transferTask") - R transferTask(@RequestBody TaskParamDto taskParamDto); + /** + * 查询已完成任务 + * + * @param paramDto 任务查询参数 + * @return 已完成任务列表 + */ + @PostMapping("/flow/queryCompletedTask") + R> queryCompletedTask(@RequestBody TaskQueryParamDto paramDto); - /** - * 停止流程实例 - * @param taskParamDto 任务参数 - * @return 停止流程实例结果 - */ - @PostMapping("/flow/stopProcessInstance") - R stopProcessInstance(@RequestBody TaskParamDto taskParamDto); + /** + * 完成任务 + * + * @param taskParamDto 任务参数 + * @return 完成任务结果 + */ + @PostMapping("/task/complete") + R completeTask(@RequestBody TaskParamDto taskParamDto); - /** - * 解决任务 - * @param taskParamDto 任务参数 - * @return 解决任务结果 - */ - @PostMapping("/task/resolveTask") - R resolveTask(@RequestBody TaskParamDto taskParamDto); + /** + * 设置任务负责人 + * + * @param taskParamDto 任务参数 + * @return 设置负责人结果 + */ + @PostMapping("/task/transferTask") + R transferTask(@RequestBody TaskParamDto taskParamDto); - /** - * 退回任务 - * @param taskParamDto 任务参数 - * @return 退回任务结果 - */ - @PostMapping("/task/back") - R back(@RequestBody TaskParamDto taskParamDto); + /** + * 停止流程实例 + * + * @param taskParamDto 任务参数 + * @return 停止流程实例结果 + */ + @PostMapping("/flow/stopProcessInstance") + R stopProcessInstance(@RequestBody TaskParamDto taskParamDto); - /** - * 委派任务 - * @param taskParamDto 任务参数 - * @return 委派任务结果 - */ - @PostMapping("/task/delegateTask") - R delegateTask(@RequestBody TaskParamDto taskParamDto); + /** + * 解决任务 + * + * @param taskParamDto 任务参数 + * @return 解决任务结果 + */ + @PostMapping("/task/resolveTask") + R resolveTask(@RequestBody TaskParamDto taskParamDto); - /** - * 查询任务 - * @param taskId 任务ID - * @param userId 用户ID - * @return 任务查询结果 - */ - @GetMapping("/task/engine/queryTask") - R queryTask(@RequestParam("taskId") String taskId, @RequestParam("userId") Long userId); + /** + * 退回任务 + * + * @param taskParamDto 任务参数 + * @return 退回任务结果 + */ + @PostMapping("/task/back") + R back(@RequestBody TaskParamDto taskParamDto); + + /** + * 委派任务 + * + * @param taskParamDto 任务参数 + * @return 委派任务结果 + */ + @PostMapping("/task/delegateTask") + R delegateTask(@RequestBody TaskParamDto taskParamDto); + + /** + * 查询任务 + * + * @param taskId 任务ID + * @param userId 用户ID + * @return 任务查询结果 + */ + @GetMapping("/task/engine/queryTask") + R queryTask(@RequestParam("taskId") String taskId, @RequestParam("userId") Long userId); } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/TaskQueryParamDto.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/TaskQueryParamDto.java index 159a5019..ca7dd9c9 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/TaskQueryParamDto.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/TaskQueryParamDto.java @@ -3,6 +3,7 @@ package com.bsd.pjcloud.flow.task.dto; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; /** * 用户任务查询参数 @@ -40,4 +41,14 @@ public class TaskQueryParamDto { */ private Integer status; + /** + * 流程实例ids + */ + private List processInstanceIds; + + /** + * 是否只查询激活状态的任务 + */ + private Boolean isActive = false; + } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java index 33d69b27..ce85ae58 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java @@ -55,6 +55,12 @@ public class ProcessInstanceController { return processInstanceService.queryMineTask(queryParamDto); } + @SneakyThrows + @GetMapping("/queryAssignTaskOne") + public R queryAssignTaskOne(@RequestParam String processInstanceId) { + return processInstanceService.queryAssignTaskOne(processInstanceId); + } + /** * 查询当前登录用户已办任务 * @param taskQueryParamDto diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java index f91d83a9..d7b1e1cd 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java @@ -66,4 +66,5 @@ public interface IProcessInstanceService { */ R detail(String processInstanceId); + R queryAssignTaskOne(String processInstanceId); } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java index c2bcc076..e612c8ab 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java @@ -443,4 +443,8 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { return R.ok(set); } + @Override + public R queryAssignTaskOne(String processInstanceId) { + return flowEngineService.queryAssignTaskOne(processInstanceId); + } } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeApplyDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeApplyDto.java index 4915aa9a..c51cca29 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeApplyDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeApplyDto.java @@ -12,4 +12,8 @@ public class WalletRechargeApplyDto extends WalletRechargeApplyEntity { private List walletTypeIds; + /** + * 审批相关 + */ + private Boolean isFindCheckUser = false; } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/utils/WalletDataUtil.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/utils/WalletDataUtil.java index ea6e4df3..f1dd69c2 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/utils/WalletDataUtil.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/utils/WalletDataUtil.java @@ -58,5 +58,4 @@ public class WalletDataUtil { v.setWalletActiveBindStatus(vo.getActiveBindStatus()); return v; } - } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyVo.java index 430faf7d..d8a5c8c7 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyVo.java @@ -33,4 +33,9 @@ public class WalletRechargeApplyVo extends WalletRechargeApplyEntity implements */ private String deptName; + /** + * 审批相关 + */ + private Boolean isCheckUser = false; + } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java index 8a04401e..f78c54de 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java @@ -57,7 +57,7 @@ public class WalletRechargeApplyController { @Operation(summary = "提交申请", description = "提交申请") @SysLog("提交申请") @GetMapping("/apply") - @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_apply')") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_apply')") public R apply(@RequestParam Long id) { walletRechargeApplyService.apply(id); return R.ok(true); @@ -84,6 +84,7 @@ public class WalletRechargeApplyController { @GetMapping("/page-join") @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_view')") public R getWalletRechargeApplyPage(@ParameterObject Page page, @ParameterObject WalletRechargeApplyDto dto) { + dto.setIsFindCheckUser(true); return R.ok(walletRechargeApplyService.scopePageList(page, dto)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java index 3bc6b2c0..6661d2c3 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java @@ -23,9 +23,11 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.excel.vo.ErrorMessage; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; +import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowEngineService; import com.bsd.pjcloud.flow.task.constant.NodeStatusEnum; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.flow.task.dto.TaskDto; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletBizRechargeEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; @@ -86,6 +88,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl scopePageList(Page page, WalletRechargeApplyDto dto) { Page list = baseMapper.scopePageList(page, dto); - if (ObjectUtil.isNotEmpty(list.getRecords())) { - // 用户 - List userIds = list.getRecords().stream().map(WalletRechargeApplyVo::getUserId).distinct().toList(); - if (ObjectUtil.isNotEmpty(userIds)) { - R> userList = userService.getUserById(new ArrayList<>(userIds)); - if (ObjectUtil.isNotEmpty(userList.getData())) { - DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); - } - } - // 部门 - List deptIds = list.getRecords().stream().map(WalletRechargeApplyVo::getDeptId).distinct().toList(); - if (ObjectUtil.isNotEmpty(deptIds)) { - R> deptList = deptService.getDeptByDeptIds(deptIds); - if (ObjectUtil.isNotEmpty(deptList.getData())) { - DataUtil.convertDeptList(list.getRecords(), deptList.getData()); - } - } - // 饭卡类型 - List walletTypeIds = list.getRecords().stream().map(WalletRechargeApplyVo::getWalletTypeId).distinct().toList(); - if (ObjectUtil.isNotEmpty(walletTypeIds)) { - WalletTypeDto walletTypeDto = new WalletTypeDto(); - walletTypeDto.setWalletTypeIds(walletTypeIds); - List walletTypeList = walletTypeMapper.list(walletTypeDto); - if (ObjectUtil.isNotEmpty(walletTypeList)) { - WalletDataUtil.convertWalletTypeList(list.getRecords(), CollectionUtils.convertMap(walletTypeList, WalletTypeEntity::getId)); - } - } - } + disposeList(list.getRecords(), dto); return list; } @@ -392,6 +368,54 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl list, WalletRechargeApplyDto dto) { + if (ObjectUtil.isNotEmpty(list)) { + // 用户 + List userIds = list.stream().map(WalletRechargeApplyVo::getUserId).distinct().toList(); + if (ObjectUtil.isNotEmpty(userIds)) { + R> userList = userService.getUserById(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList.getData())) { + DataUtil.convertUserList(list, CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); + } + } + // 部门 + List deptIds = list.stream().map(WalletRechargeApplyVo::getDeptId).distinct().toList(); + if (ObjectUtil.isNotEmpty(deptIds)) { + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(list, deptList.getData()); + } + } + // 饭卡类型 + List walletTypeIds = list.stream().map(WalletRechargeApplyVo::getWalletTypeId).distinct().toList(); + if (ObjectUtil.isNotEmpty(walletTypeIds)) { + WalletTypeDto walletTypeDto = new WalletTypeDto(); + walletTypeDto.setWalletTypeIds(walletTypeIds); + List walletTypeList = walletTypeMapper.list(walletTypeDto); + if (ObjectUtil.isNotEmpty(walletTypeList)) { + WalletDataUtil.convertWalletTypeList(list, CollectionUtils.convertMap(walletTypeList, WalletTypeEntity::getId)); + } + } + // 审批流程 + if (dto.getIsFindCheckUser()) { + List processInstanceIds = list.stream().map(WalletRechargeApplyVo::getProcessId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(processInstanceIds)) { + List taskList = flowUtil.queryProcessInstanceList(SecurityUtils.getUser().getId().toString(), processInstanceIds); + if (ObjectUtil.isNotEmpty(taskList)) { + Map taskMap = CollectionUtils.convertMap(taskList, TaskDto::getProcessInstanceId); + CollectionUtils.convertList(list, v -> { + TaskDto task = taskMap.get(v.getProcessId()); + if (ObjectUtil.isNotEmpty(task)) { + v.setIsCheckUser(true); + } + return v; + }); + } + } + } + } + } + private boolean isCheckData(Long walletId) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() .eq(WalletRechargeApplyEntity::getUserId, walletId) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/flow/FlowUtil.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/flow/FlowUtil.java index 351a51b1..3dbbafd0 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/flow/FlowUtil.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/flow/FlowUtil.java @@ -6,13 +6,17 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.resolver.ParamResolver; import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService; +import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowEngineService; import com.bsd.pjcloud.flow.task.constant.NodeUserTypeEnum; import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.flow.task.dto.TaskDto; +import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto; import com.bsd.pjcloud.flow.task.entity.Process; import com.bsd.pjcloud.flow.task.vo.ProcessVO; import com.fasterxml.jackson.databind.ObjectMapper; @@ -21,9 +25,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; +import java.util.*; @Validated @Slf4j @@ -34,6 +36,7 @@ public class FlowUtil { static private final String TAG = "钱包审批流工具类"; private final RemoteFlowApiFlowService flowApiFlowService; + private final RemoteFlowEngineService flowEngineService; private final ObjectMapper objectMapper; @@ -78,6 +81,19 @@ public class FlowUtil { return paramMap; } + public List queryProcessInstanceList(String userId, List processInstanceIds) { + List result = new ArrayList<>(); + TaskQueryParamDto taskQueryParamDto = new TaskQueryParamDto(); + taskQueryParamDto.setAssign(userId); + taskQueryParamDto.setProcessInstanceIds(processInstanceIds); + taskQueryParamDto.setIsActive(true); + taskQueryParamDto.setCurrent(1); + taskQueryParamDto.setSize(processInstanceIds.size() + 10); + Page taskList = flowEngineService.queryAssignTask(taskQueryParamDto).getData(); + if (ObjectUtil.isEmpty(taskList) || ObjectUtil.isEmpty(taskList.getRecords())) return result; + return taskList.getRecords(); + } + // 检查回调是否正确 public Boolean checkCallback(ProcessNodeRecordAssignUserParamDto dto) { if (!ObjectUtil.isAllNotEmpty(dto, dto.getFlowId())) return false;