diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index 27eaadb1b..8deb8e879 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -95,6 +95,29 @@ public class FlwTaskController extends BaseController { return flwTaskService.getPageByTaskFinish(flowTaskBo, pageQuery); } + /** + * 查询待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @GetMapping("/getPageByAllTaskWait") + public TableDataInfo getPageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + return flwTaskService.getPageByAllTaskWait(flowTaskBo, pageQuery); + } + + /** + * 查询已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + + @GetMapping("/getPageByAllTaskFinish") + public TableDataInfo getPageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + return flwTaskService.getPageByAllTaskFinish(flowTaskBo, pageQuery); + } + /** * 查询当前用户的抄送 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java index 1155d1dce..f708b9796 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java @@ -102,6 +102,12 @@ public class FlowHisTaskVo implements Serializable { */ private String approver; + /** + * 审批者 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "approver") + private String approveName; + /** * 协作人(只有转办、会签、票签、委派) */ @@ -122,6 +128,11 @@ public class FlowHisTaskVo implements Serializable { */ private Integer flowStatus; + /** + * 流程状态 + */ + private String flowStatusName; + /** * 审批意见 */ @@ -152,10 +163,4 @@ public class FlowHisTaskVo implements Serializable { * 流程定义编码 */ private String flowCode; - - /** - * 审批者 - */ - @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "approver") - private String approverName; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java index c39c90914..cad896379 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java @@ -32,12 +32,10 @@ public interface FlwTaskMapper { * * @param page 分页 * @param queryWrapper 条件 - * @param flowTaskBo 条件 * @return 结果 */ Page getTaskFinishByPage(@Param("page") Page page, - @Param(Constants.WRAPPER) Wrapper queryWrapper, - @Param("flowTaskBo") FlowTaskBo flowTaskBo); + @Param(Constants.WRAPPER) Wrapper queryWrapper); /** * 查询当前用户的抄送 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index d6a2389c3..237fe56b3 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -49,6 +49,26 @@ public interface IFlwTaskService { */ TableDataInfo getPageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + + /** + * 查询待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo getPageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + /** + * 查询已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo getPageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery); + /** * 查询当前用户的抄送 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 8f005576b..ea62842d1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -172,7 +172,6 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override public TableDataInfo getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - if (StringUtils.isNotBlank(instanceBo.getFlowCode())) { List flowDefinitions = flowDefinitionMapper.selectList( new LambdaQueryWrapper().eq(FlowDefinition::getFlowCode, instanceBo.getFlowCode())); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 1023ddaac..5f52eba03 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -7,6 +7,8 @@ import com.warm.flow.core.dto.FlowParams; import com.warm.flow.core.entity.Instance; import com.warm.flow.core.entity.Task; import com.warm.flow.core.entity.User; +import com.warm.flow.core.enums.FlowStatus; +import com.warm.flow.core.enums.NodeType; import com.warm.flow.core.enums.SkipType; import com.warm.flow.core.service.InsService; import com.warm.flow.core.service.TaskService; @@ -135,21 +137,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public TableDataInfo getPageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { - QueryWrapper queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("t.processed_by", WorkflowUtils.permissionList()); - Page page = flwTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper); - List records = page.getRecords(); - if (CollUtil.isNotEmpty(records)) { - List taskIds = StreamUtils.toList(records, FlowTaskVo::getId); - List userList = userService.getByAssociateds(taskIds); - for (FlowTaskVo record : records) { - if (CollUtil.isNotEmpty(userList)) { - List users = StreamUtils.filter(userList, e -> e.getAssociated().toString().equals(record.getId().toString())); - record.setUserList(CollUtil.isEmpty(users) ? Collections.emptyList() : users); - record.setUserDTOList(WorkflowUtils.getHandlerUser(users)); - } - } - } + queryWrapper.in("t.flow_status", FlowStatus.APPROVAL.getKey()); + Page page = buildTaskWaitingPage(pageQuery, queryWrapper, flowTaskBo); return TableDataInfo.build(page); } @@ -161,12 +152,83 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public TableDataInfo getPageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { - QueryWrapper queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo); - flowTaskBo.setPermissionList(WorkflowUtils.permissionList()); - Page page = flwTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper, flowTaskBo); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("t.approver", LoginHelper.getUserId()); + Page page = buildTaskFinishPage(pageQuery, queryWrapper, flowTaskBo); return TableDataInfo.build(page); } + /** + * 查询待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo getPageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("t.processed_by", WorkflowUtils.permissionList()); + Page page = buildTaskWaitingPage(pageQuery, queryWrapper, flowTaskBo); + return TableDataInfo.build(page); + } + + private Page buildTaskWaitingPage(PageQuery pageQuery, QueryWrapper queryWrapper, FlowTaskBo flowTaskBo) { + commonCondition(queryWrapper, flowTaskBo); + Page page = flwTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper); + List records = page.getRecords(); + if (CollUtil.isNotEmpty(records)) { + List taskIds = StreamUtils.toList(records, FlowTaskVo::getId); + List userList = userService.getByAssociateds(taskIds); + for (FlowTaskVo data : records) { + if (CollUtil.isNotEmpty(userList)) { + List users = StreamUtils.filter(userList, e -> e.getAssociated().toString().equals(data.getId().toString())); + data.setUserList(CollUtil.isEmpty(users) ? Collections.emptyList() : users); + data.setUserDTOList(WorkflowUtils.getHandlerUser(users)); + } + data.setFlowStatusName(FlowStatus.getValueByKey(data.getFlowStatus())); + } + } + return page; + } + + /** + * 通用条件 + * + * @param queryWrapper 查询条件 + * @param flowTaskBo 参数 + */ + private void commonCondition(QueryWrapper queryWrapper, FlowTaskBo flowTaskBo) { + queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getNodeName()), "t.node_name", flowTaskBo.getNodeName()); + queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName()); + queryWrapper.eq(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode()); + queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); + } + + /** + * 查询已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo getPageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Page page = buildTaskFinishPage(pageQuery, queryWrapper, flowTaskBo); + return TableDataInfo.build(page); + } + + private Page buildTaskFinishPage(PageQuery pageQuery, QueryWrapper queryWrapper, FlowTaskBo flowTaskBo) { + commonCondition(queryWrapper, flowTaskBo); + Page page = flwTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper); + List records = page.getRecords(); + if (CollUtil.isNotEmpty(records)) { + for (FlowHisTaskVo data : records) { + data.setFlowStatusName(FlowStatus.getValueByKey(data.getFlowStatus())); + } + } + return page; + } + /** * 查询当前用户的抄送 * @@ -175,24 +237,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public TableDataInfo getPageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { - QueryWrapper queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo); - flowTaskBo.setPermissionList(WorkflowUtils.permissionList()); - Page page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper); - return TableDataInfo.build(page); - } - - - /** - * 查询参数 - * - * @param flowTaskBo 参数 - */ - private QueryWrapper getFlowTaskBoQueryWrapper(FlowTaskBo flowTaskBo) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getNodeName()), "t.node_name", flowTaskBo.getNodeName()); queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName()); queryWrapper.eq(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode()); - return queryWrapper; + Page page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper); + return TableDataInfo.build(page); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml index 813186382..0a10a3de8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml @@ -67,54 +67,38 @@ FROM flow_task AS t LEFT JOIN flow_user uu ON uu.associated = t.id LEFT JOIN flow_definition d on t.definition_id = d.id - LEFT JOIN flow_instance i on t.instance_id = i.id where t.node_type = 1 and i.flow_status = '1' and t.del_flag = '0') t + LEFT JOIN flow_instance i on t.instance_id = i.id where t.node_type = 1 and t.del_flag = '0') t ${ew.getCustomSqlSegment}