From 878272307efb1ae11dc6354b2694b67a490ec740 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Fri, 23 Aug 2024 23:46:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=20=E6=8A=84?= =?UTF-8?q?=E9=80=81=E6=88=91=E7=9A=84=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8F=AA=E8=83=BD=E6=9F=A5=E8=AF=A2=E7=AC=AC=E4=B8=80=E9=A1=B5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=20=E6=96=B0=E5=A2=9E=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=A4=84=E7=90=86=E4=B8=AD=E6=B5=81=E7=A8=8B=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E5=AE=A1=E6=A0=B8=E4=BA=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/task/BpmTaskController.java | 2 +- .../task/vo/task/BpmTaskCCPageItemRespVO.java | 10 +++++-- .../bpm/convert/task/BpmTaskConvert.java | 29 ++++++++++++------- .../bpm/dal/mysql/task/BpmTaskExtMapper.java | 3 +- .../bpm/service/task/BpmTaskService.java | 2 +- .../bpm/service/task/BpmTaskServiceImpl.java | 22 +++++++------- 6 files changed, 43 insertions(+), 25 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java index f38aa143..2a79a1aa 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java @@ -40,7 +40,7 @@ public class BpmTaskController { @Operation(summary = "获取 cc 抄送任务分页", description = "在【抄送我的】菜单中,进行调用") //@PreAuthorize("@ss.hasPermission('bpm:task:query')") //@PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") - public CommonResult> getMyProcessInstancePage( + public CommonResult> getMyProcessInstancePage( @Valid BpmTaskDonePageReqVO pageReqVO) { return success(taskService.getCCTaskPage(SecurityFrameworkUtils.getLoginUserId(), pageReqVO)); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskCCPageItemRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskCCPageItemRespVO.java index 3a608c81..ffbd8b22 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskCCPageItemRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskCCPageItemRespVO.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.ToString; import java.time.LocalDateTime; @@ -35,13 +34,20 @@ public class BpmTaskCCPageItemRespVO { @Schema(description = "任务结果-参见 bpm_process_instance_result", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") private Integer result; + @Schema(description = "审批建议", requiredMode = Schema.RequiredMode.REQUIRED, example = "不请假了!") private String reason; + @Schema(description = "审批人用户编号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long assigneeUser; + + @Schema(description = "审批人用户名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String assigneeUserName; + /** * 所属流程实例 */ - private BpmTaskTodoPageItemRespVO.ProcessInstance processInstance; + private ProcessInstance processInstance; @Data @Schema(description = "流程实例") diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java index 18e3b490..21c5d8c2 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.bpm.convert.task; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -7,10 +8,12 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; import cn.iocoder.yudao.module.bpm.enums.task.BpmConstants; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; @@ -24,7 +27,6 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntityImpl; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -42,19 +44,26 @@ public interface BpmTaskConvert { BpmTaskConvert INSTANCE = Mappers.getMapper(BpmTaskConvert.class); - BpmTaskDonePageItemRespVO convertCC(BpmProcessInstanceExtDO bean); - default List convertListCC(List tasks, - Map bpmTaskExtDOMap, - Map historicProcessInstanceMap, - Map userMap) { + BpmTaskCCPageItemRespVO convertCC(BpmProcessInstanceExtDO bean); + default List convertListCC(List tasks, + Map> bpmTaskExtDOMap, + Map historicProcessInstanceMap, + Map userMap) { return CollectionUtils.convertList(tasks, task -> { - BpmTaskDonePageItemRespVO respVO = convertCC(task); - BpmTaskExtDO taskExtDO = bpmTaskExtDOMap.get(task.getId()); - copyTo(taskExtDO, respVO); + BpmTaskCCPageItemRespVO respVO = convertCC(task); + List taskExtDOs = bpmTaskExtDOMap.get(task.getProcessInstanceId()); + HistoricProcessInstance processInstance = historicProcessInstanceMap.get(task.getProcessInstanceId()); if (processInstance != null) { AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId())); - respVO.setProcessInstance(convert(processInstance, startUser)); + respVO.setProcessInstance(BeanUtils.toBean(convert(processInstance, startUser), BpmTaskCCPageItemRespVO.ProcessInstance.class)); + } + + if (!CollectionUtil.isEmpty(taskExtDOs) && task.getResult().equals(BpmProcessInstanceResultEnum.PROCESS.getResult())) { + + BpmTaskExtDO taskExtDO = taskExtDOs.get(0); + respVO.setAssigneeUser(taskExtDO.getAssigneeUserId()); + respVO.setAssigneeUserName(userMap.get(taskExtDO.getAssigneeUserId()).getNickname()); } return respVO; }); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java index 40f9a8aa..dab3b6fd 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java @@ -49,6 +49,7 @@ public interface BpmTaskExtMapper extends BaseMapperX { return selectList(new LambdaQueryWrapperX() .inIfPresent(BpmTaskExtDO::getProcessInstanceId, processInstanceId) - .eqIfPresent(BpmTaskExtDO::getResult, result)); + .eqIfPresent(BpmTaskExtDO::getResult, result) + .orderByDesc(BpmTaskExtDO::getCreateTime)); } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java index 9e3f742e..59b7fa63 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java @@ -25,7 +25,7 @@ public interface BpmTaskService { * @param pageReqVO 分页请求 * @return 流程实例的分页 */ - PageResult getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageReqVO); + PageResult getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageReqVO); /** * 获得待办的流程任务分页 diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index 310b8262..e6814335 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.PageUtils; import cn.iocoder.yudao.framework.flowable.core.util.BpmnModelUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -100,11 +101,11 @@ public class BpmTaskServiceImpl implements BpmTaskService { private BpmProcessInstanceExtMapper processInstanceExtMapper; @Override - public PageResult getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) { + public PageResult getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) { // 查询被抄送的Task - BpmProcessInstanceMyPageReqVO reqVO = new BpmProcessInstanceMyPageReqVO(); - reqVO.setName(pageVO.getName()); - reqVO.setCreateTime(pageVO.getCreateTime()); + BpmProcessInstanceMyPageReqVO reqVO = BeanUtils.toBean(pageVO, BpmProcessInstanceMyPageReqVO.class); +// reqVO.setName(pageVO.getName()); +// reqVO.setCreateTime(pageVO.getCreateTime()); // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO); if (CollUtil.isEmpty(pageResult.getList())) { @@ -113,20 +114,21 @@ public class BpmTaskServiceImpl implements BpmTaskService { // 获得流程 Task Map List processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); // 获得 TaskExtDO Map - List bpmTaskExtDOs = - taskExtMapper.selectListByTaskIds(processInstanceIds); - Map bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId); + List bpmTaskExtDOs = getTaskByProcessInstanceIdAndResult(processInstanceIds, null); + Map> bpmTaskExtDOMap = convertMultiMap(bpmTaskExtDOs, BpmTaskExtDO::getProcessInstanceId); // 获得 ProcessInstance Map Set ids = new HashSet<>(processInstanceIds); Map historicProcessInstanceMap = processInstanceService.getHistoricProcessInstanceMap(ids); + // 获得 User Map - Map userMap = adminUserApi.getUserMap( - convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()))); + List userIds = convertList(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())); + userIds.addAll(convertList(bpmTaskExtDOs, BpmTaskExtDO::getAssigneeUserId)); + Map userMap = adminUserApi.getUserMap(new HashSet<>(userIds)); // 拼接结果 - return new PageResult<>(BpmTaskConvert.INSTANCE.convertListCC(pageResult.getList(), bpmTaskExtDOMap, historicProcessInstanceMap, userMap), new Long(pageResult.getTotal())); + return new PageResult<>(BpmTaskConvert.INSTANCE.convertListCC(pageResult.getList(), bpmTaskExtDOMap, historicProcessInstanceMap, userMap), pageResult.getTotal()); } @Override