diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmTaskService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmTaskService.java index 3b0e717ce..ebfe7ac48 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmTaskService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmTaskService.java @@ -1,9 +1,10 @@ package cn.axzo.workflow.core.service; import cn.axzo.workflow.core.service.dto.request.task.BpmTaskAuditDTO; -import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoBpmPageDTO; +import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoPageSearchDTO; import cn.axzo.workflow.core.service.dto.response.BpmPageResult; -import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO; +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemVO; +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO; import org.flowable.form.api.FormInfo; import org.flowable.task.api.Task; import org.flowable.task.api.history.HistoricTaskInstance; @@ -14,14 +15,14 @@ public interface BpmTaskService { /** * 待审核列表 - * */ - BpmPageResult getTodoTaskPage(BpmTaskTodoBpmPageDTO taskTodoPageDTO); + */ + BpmPageResult getTodoTaskPage(BpmTaskTodoPageSearchDTO dto); /** * 已完成的审批列表 * * @return*/ - BpmPageResult getDoneTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD); + BpmPageResult getDoneTaskPage(BpmTaskTodoPageSearchDTO dto); /** * 同意 diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskConvert.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskConvert.java index 0f43cd749..21e73c504 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskConvert.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskConvert.java @@ -1,10 +1,6 @@ package cn.axzo.workflow.core.service.converter; -import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemRespVO; -import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO; import org.flowable.common.engine.impl.db.SuspensionState; -import org.flowable.task.api.Task; -import org.flowable.task.api.history.HistoricTaskInstance; import org.mapstruct.factory.Mappers; public class BpmTaskConvert { @@ -49,21 +45,21 @@ public class BpmTaskConvert { // }); // } - public static BpmTaskDonePageItemRespVO convert2(HistoricTaskInstance bean) { - if (bean == null) { - return null; - } - - BpmTaskDonePageItemRespVO bpmTaskDonePageItemRespVO = new BpmTaskDonePageItemRespVO(); - bpmTaskDonePageItemRespVO.setId(bean.getId()); - bpmTaskDonePageItemRespVO.setName(bean.getName()); - bpmTaskDonePageItemRespVO.setClaimTime(bean.getClaimTime()); - bpmTaskDonePageItemRespVO.setCreateTime(bean.getCreateTime()); - bpmTaskDonePageItemRespVO.setEndTime(bean.getEndTime()); - bpmTaskDonePageItemRespVO.setDurationInMillis(bean.getDurationInMillis()); - - return bpmTaskDonePageItemRespVO; - } + // public static BpmTaskDoneTodoPageItemVO convert2(HistoricTaskInstance bean) { + // if (bean == null) { + // return null; + // } + // + // BpmTaskDoneTodoPageItemVO bpmTaskDonePageItemRespVO = new BpmTaskDoneTodoPageItemVO(); + // bpmTaskDonePageItemRespVO.setId(bean.getId()); + // bpmTaskDonePageItemRespVO.setName(bean.getName()); + // bpmTaskDonePageItemRespVO.setClaimTime(bean.getClaimTime()); + // bpmTaskDonePageItemRespVO.setCreateTime(bean.getCreateTime()); + // bpmTaskDonePageItemRespVO.setEndTime(bean.getEndTime()); + // bpmTaskDonePageItemRespVO.setDurationInMillis(bean.getDurationInMillis()); + // + // return bpmTaskDonePageItemRespVO; + // } BpmTaskConvert INSTANCE = Mappers.getMapper(BpmTaskConvert.class); @@ -89,21 +85,21 @@ public class BpmTaskConvert { // } - public static BpmTaskTodoPageItemRespVO convert1(Task bean) { - if (bean == null) { - return null; - } - - BpmTaskTodoPageItemRespVO bpmTaskTodoPageItemRespVO = new BpmTaskTodoPageItemRespVO(); - - bpmTaskTodoPageItemRespVO.setSuspensionState(convertSuspendedToSuspensionState(bean.isSuspended())); - bpmTaskTodoPageItemRespVO.setId( bean.getId() ); - bpmTaskTodoPageItemRespVO.setName( bean.getName() ); - bpmTaskTodoPageItemRespVO.setClaimTime( bean.getClaimTime() ); - bpmTaskTodoPageItemRespVO.setCreateTime( bean.getCreateTime() ); - - return bpmTaskTodoPageItemRespVO; - } + // public static BpmTaskTodoPageItemVO convert1(Task bean) { + // if (bean == null) { + // return null; + // } + // + // BpmTaskTodoPageItemVO bpmTaskTodoPageItemRespVO = new BpmTaskTodoPageItemVO(); + // + // bpmTaskTodoPageItemRespVO.setSuspensionState(convertSuspendedToSuspensionState(bean.isSuspended())); + // bpmTaskTodoPageItemRespVO.setId( bean.getId() ); + // bpmTaskTodoPageItemRespVO.setName( bean.getName() ); + // bpmTaskTodoPageItemRespVO.setClaimTime( bean.getClaimTime() ); + // bpmTaskTodoPageItemRespVO.setCreateTime( bean.getCreateTime() ); + // + // return bpmTaskTodoPageItemRespVO; + // } public static Integer convertSuspendedToSuspensionState(boolean suspended) { return suspended ? SuspensionState.SUSPENDED.getStateCode() : diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskDonePageItemConverter.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskDonePageItemConverter.java new file mode 100644 index 000000000..791665c95 --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskDonePageItemConverter.java @@ -0,0 +1,65 @@ +package cn.axzo.workflow.core.service.converter; + +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemVO; +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import org.springframework.beans.BeanUtils; + +import java.util.*; + +import static org.mapstruct.NullValueCheckStrategy.ALWAYS; + +/** + * TODO + * + * @author wangli + * @sine 2023/7/26 23:37 + */ +@Mapper( + componentModel = "spring", + nullValueCheckStrategy = ALWAYS, + imports = Arrays.class +) + +public interface BpmTaskDonePageItemConverter extends EntityConverter { + + BpmTaskTodoPageItemConverter todoConverter = Mappers.getMapper(BpmTaskTodoPageItemConverter.class); + + @Override + default BpmTaskDonePageItemVO toVo(HistoricTaskInstance entity) { + BpmTaskTodoPageItemVO todo = todoConverter.toVo(entity); + BpmTaskDonePageItemVO vo = new BpmTaskDonePageItemVO(); + BeanUtils.copyProperties(todo, vo); + vo.setEndTime(entity.getEndTime()); + vo.setDurationInMillis(entity.getDurationInMillis()); + vo.setComment(entity.getDeleteReason()); + return vo; + } + + default List toVos(List tasks, + Map historicProcessInstanceMap) { + if (tasks.isEmpty()) { + return Collections.emptyList(); + } + List vos = new ArrayList<>(); + tasks.forEach(i -> { + BpmTaskDonePageItemVO vo = toVo(i); + HistoricProcessInstance instance = historicProcessInstanceMap.getOrDefault(i.getProcessInstanceId(), null); + if (Objects.nonNull(instance)) { + vo.setProcessInstanceId(instance.getId()); + vo.setProcessInstanceName(instance.getName()); + vo.setBusinessKey(instance.getBusinessKey()); + vo.setStartUserId(instance.getStartUserId()); + vo.setStartTime(instance.getStartTime()); + vo.setProcessInstanceEndTime(instance.getEndTime()); + vos.add(vo); + } + }); + return vos; + } + +} + diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskTodoPageItemConverter.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskTodoPageItemConverter.java new file mode 100644 index 000000000..313b7251d --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmTaskTodoPageItemConverter.java @@ -0,0 +1,56 @@ +package cn.axzo.workflow.core.service.converter; + +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import java.util.*; + +import static org.mapstruct.NullValueCheckStrategy.ALWAYS; + +/** + * TODO + * + * @author wangli + * @sine 2023/7/26 23:00 + */ +@Mapper( + componentModel = "spring", + nullValueCheckStrategy = ALWAYS, + imports = Arrays.class +) +public interface BpmTaskTodoPageItemConverter extends EntityConverter { + + @Mapping(target = "id", source = "id") + @Mapping(target = "taskName", source = "name") + @Mapping(target = "category", source = "category") + @Mapping(target = "claimTime", source = "createTime") + @Mapping(target = "owner", source = "owner") + @Mapping(target = "assignee", source = "assignee") + @Mapping(target = "formKey", source = "formKey") + @Override + BpmTaskTodoPageItemVO toVo(HistoricTaskInstance entity); + + default List toVos(List tasks, + Map processInstanceMap) { + if (tasks.isEmpty()) { + return Collections.emptyList(); + } + List vos = new ArrayList<>(); + tasks.forEach(i -> { + BpmTaskTodoPageItemVO vo = toVo(i); + ProcessInstance instance = processInstanceMap.getOrDefault(i.getProcessInstanceId(), null); + if (Objects.nonNull(instance)) { + vo.setProcessInstanceId(instance.getProcessInstanceId()); + vo.setProcessInstanceName(instance.getName()); + vo.setBusinessKey(instance.getBusinessKey()); + vo.setStartUserId(instance.getStartUserId()); + vo.setStartTime(instance.getStartTime()); + vos.add(vo); + } + }); + return vos; + } +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/request/task/BpmTaskTodoBpmPageDTO.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/request/task/BpmTaskTodoPageSearchDTO.java similarity index 95% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/request/task/BpmTaskTodoBpmPageDTO.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/request/task/BpmTaskTodoPageSearchDTO.java index ee2bf8e64..eae991f40 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/request/task/BpmTaskTodoBpmPageDTO.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/request/task/BpmTaskTodoPageSearchDTO.java @@ -12,7 +12,7 @@ import java.util.Date; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class BpmTaskTodoBpmPageDTO extends BpmPageParam { +public class BpmTaskTodoPageSearchDTO extends BpmPageParam { @ApiModelProperty(value = "用户ID,唯一标识", example = "1") private String userId; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskDonePageItemRespVO.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskDonePageItemVO.java similarity index 63% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskDonePageItemRespVO.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskDonePageItemVO.java index ffac89fab..648e836b6 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskDonePageItemRespVO.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskDonePageItemVO.java @@ -1,5 +1,6 @@ package cn.axzo.workflow.core.service.dto.response.task; +import cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,15 +13,20 @@ import java.util.Date; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class BpmTaskDonePageItemRespVO extends BpmTaskTodoPageItemRespVO{ +public class BpmTaskDonePageItemVO extends BpmTaskTodoPageItemVO { - @ApiModelProperty(value = "结束时间", required = true) + @ApiModelProperty(value = "审批任务结束时间", required = true) private Date endTime; + @ApiModelProperty(value = "持续时间", required = true, example = "1000") private Long durationInMillis; - @ApiModelProperty(value = "任务结果", required = true, notes = "参见 bpm_process_instance_result", example = "2") - private Integer result; + @ApiModelProperty(value = "任务结果", required = true, notes = "参见 BpmProcessInstanceResultEnum", example = "2") + private BpmProcessInstanceResultEnum result; + @ApiModelProperty(value = "审批建议", required = true, example = "不请假了!") private String comment; + + @ApiModelProperty(value = "流程实例结束时间") + private Date processInstanceEndTime; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskTodoPageItemRespVO.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskTodoPageItemRespVO.java deleted file mode 100644 index bdd7f062f..000000000 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskTodoPageItemRespVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.axzo.workflow.core.service.dto.response.task; - -import cn.axzo.workflow.core.service.dto.response.process.BpmProcessInstanceVO; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Date; - -@Data -@ApiModel("管理后台 - 流程任务的 Running 进行中的分页项 Response VO") -public class BpmTaskTodoPageItemRespVO { - - @ApiModelProperty(value = "任务编号", required = true, example = "1024") - private String id; - - @ApiModelProperty(value = "任务名字", required = true, example = "芋道") - private String name; - - @ApiModelProperty(value = "接收时间", required = true) - private Date claimTime; - - @ApiModelProperty(value = "创建时间", required = true) - private Date createTime; - - @ApiModelProperty(value = "激活状态", required = true, example = "1", notes = "参见 SuspensionState 枚举") - private Integer suspensionState; - - /** - * 所属流程实例 - */ - private BpmProcessInstanceVO processInstance; - -} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskTodoPageItemVO.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskTodoPageItemVO.java new file mode 100644 index 000000000..23d651d33 --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/dto/response/task/BpmTaskTodoPageItemVO.java @@ -0,0 +1,52 @@ +package cn.axzo.workflow.core.service.dto.response.task; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel("管理后台 - 流程任务的 Running 进行中的分页项 Response VO") +public class BpmTaskTodoPageItemVO { + + @ApiModelProperty(value = "任务编号", required = true, example = "1024") + private String id; + + @ApiModelProperty(value = "任务名字", required = true, example = "芋道") + private String taskName; + + @ApiModelProperty(value = "分类") + private String category; + + @ApiModelProperty(value = "审批任务接收时间", required = true) + private Date claimTime; + + @ApiModelProperty(value = "任务所属人", hidden = true) + private String owner; + + @ApiModelProperty(value = "任务审批人") + private String assignee; + + @ApiModelProperty(value = "激活状态", required = true, example = "1", notes = "参见 SuspensionState 枚举") + private Boolean suspensionState; + + @ApiModelProperty(value = "当前任务关联的表单 key") + private String formKey; + + @ApiModelProperty(value = "流程实例 ID") + private String processInstanceId; + + @ApiModelProperty(value = "流程实例名称") + private String processInstanceName; + + @ApiModelProperty(value = "业务 key") + private String businessKey; + + @ApiModelProperty(value = "流程发起人") + private String startUserId; + + @ApiModelProperty(value = "工作流实例创建时间", required = true) + private Date startTime; + +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmProcessInstanceServiceImpl.java index dc99db5c4..a44d091ae 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmProcessInstanceServiceImpl.java @@ -51,8 +51,6 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService private RepositoryService repositoryService; @Autowired private RuntimeService runtimeService; - // @Autowired - // private BpmProcessInstanceExtMapper processInstanceExtMapper; @Autowired @Lazy // 解决循环依赖 private BpmTaskServiceImpl taskService; @@ -408,6 +406,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService // processInstanceExtMapper.updateByProcessInstanceId(processInstanceExtDO); // } + @Override public void deleteProcessInstance(String id, String reason, BpmProcessInstanceResultEnum resultEnum) { log.info("当前线程: {}", Thread.currentThread().getName()); runtimeService.updateBusinessStatus(id, resultEnum.getStatus()); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmTaskServiceImpl.java index f670c134c..0b5967bdf 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmTaskServiceImpl.java @@ -5,10 +5,13 @@ import cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum; import cn.axzo.workflow.core.common.exception.WorkflowEngineException; import cn.axzo.workflow.core.common.utils.BpmCollectionUtils; import cn.axzo.workflow.core.service.BpmTaskService; +import cn.axzo.workflow.core.service.converter.BpmTaskDonePageItemConverter; +import cn.axzo.workflow.core.service.converter.BpmTaskTodoPageItemConverter; import cn.axzo.workflow.core.service.dto.request.task.BpmTaskAuditDTO; -import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoBpmPageDTO; +import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoPageSearchDTO; import cn.axzo.workflow.core.service.dto.response.BpmPageResult; -import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO; +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemVO; +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; @@ -25,6 +28,7 @@ import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; @@ -49,81 +53,60 @@ public class BpmTaskServiceImpl implements BpmTaskService { private RepositoryService repositoryService; @Resource private BpmProcessInstanceServiceImpl processInstanceService; + @Resource + private BpmTaskTodoPageItemConverter todoPageItemConverter; + @Resource + private BpmTaskDonePageItemConverter donePageItemConverter; // @Resource // private BpmTaskExtMapper taskExtMapper; // @Resource // private BpmProcessInstanceExtMapper bpmProcessInstanceExtMapper; @Override - public BpmPageResult getTodoTaskPage(BpmTaskTodoBpmPageDTO taskTodoPageDTO) { - // BpmProcessInstanceExtDO one = null; - - // 查询待办任务 - TaskQuery taskQuery = taskService.createTaskQuery() - .taskAssignee(taskTodoPageDTO.getUserId()) // 分配给自己 - .orderByTaskCreateTime().desc(); // 创建时间倒序 - if (org.springframework.util.StringUtils.hasLength(taskTodoPageDTO.getCategories())) { - List categorys = Arrays.stream(taskTodoPageDTO.getCategories().split(",")) + public BpmPageResult getTodoTaskPage(BpmTaskTodoPageSearchDTO dto) { + HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery() + .unfinished() + .taskAssignee(dto.getUserId()) // 分配给自己 + .taskTenantId(dto.getTenantId()) + .orderByTaskCreateTime() + .desc(); + if (StringUtils.hasLength(dto.getCategories())) { + List categories = Arrays.stream(dto.getCategories().split(",")) .map(String::trim).collect(Collectors.toList()); - taskQuery.processCategoryIn(categorys); + query.processCategoryIn(categories); } - if (StrUtil.isNotBlank(taskTodoPageDTO.getName())) { - taskQuery.taskNameLike("%" + taskTodoPageDTO.getName() + "%"); + if (StrUtil.isNotBlank(dto.getName())) { + query.taskNameLike("%" + dto.getName() + "%"); } - if (taskTodoPageDTO.getBeginCreateTime() != null) { - taskQuery.taskCreatedAfter(taskTodoPageDTO.getBeginCreateTime()); + if (Objects.nonNull(dto.getBeginCreateTime()) && Objects.nonNull(dto.getEndCreateTime())) { + query.taskCreatedBefore(dto.getEndCreateTime()); + query.taskCreatedAfter(dto.getBeginCreateTime()); } - if (taskTodoPageDTO.getEndCreateTime() != null) { - taskQuery.taskCreatedBefore(taskTodoPageDTO.getEndCreateTime()); - } - // if (Objects.nonNull(one)) { - // taskQuery.processInstanceId(one.getProcessInstanceId()); - // } - // 执行查询 - List tasks = taskQuery.listPage((taskTodoPageDTO.getPageNo() - 1) * taskTodoPageDTO.getPageSize(), - taskTodoPageDTO.getPageSize()); + List tasks = query.listPage((dto.getPageNo() - 1) * dto.getPageSize(), + dto.getPageSize()); if (CollUtil.isEmpty(tasks)) { return BpmPageResult.empty(); } - Set processInstanceIds = convertSet(tasks, Task::getProcessInstanceId); + Set processInstanceIds = convertSet(tasks, HistoricTaskInstance::getProcessInstanceId); + // 获得 ProcessInstance Map Map processInstanceMap = processInstanceService.getProcessInstanceMap( processInstanceIds); - // 拼接结果 - // List bpmTaskTodoPageItemRespVOS = BpmTaskConvert.convertList1( - // tasks, processInstanceMap); - - // Map instanceExtMap = convertMap( - // bpmProcessInstanceExtMapper.selectList( - // new LambdaQueryWrapper().in( - // BpmProcessInstanceExtDO::getProcessInstanceId, processInstanceIds)), - // BpmProcessInstanceExtDO::getProcessInstanceId, Function.identity(), (s, t) -> s); - - // 设置发起人姓名 - // bpmTaskTodoPageItemRespVOS.forEach(vo -> { - // BpmTaskTodoPageItemRespVO.ProcessInstance processInstance = vo.getProcessInstance(); - // BpmProcessInstanceExtDO instanceExtDO = instanceExtMap.get(processInstance.getId()); - // if (Objects.nonNull(instanceExtDO)) { - // processInstance.setCustomProInstId(instanceExtDO.getCustomProInstId()); - // processInstance.setCategory(instanceExtDO.getCategory()); - // processInstance.setStartUserName(instanceExtDO.getStartUserName()); - // processInstance.setStartTime(instanceExtDO.getCreateAt()); - // } - // }); - // return new BpmPageResult<>(bpmTaskTodoPageItemRespVOS, taskQuery.count()); - return BpmPageResult.empty(); + List vos = todoPageItemConverter.toVos(tasks, processInstanceMap); + return new BpmPageResult<>(vos, query.count()); } @Override - public BpmPageResult getDoneTaskPage(BpmTaskTodoBpmPageDTO dto) { - + public BpmPageResult getDoneTaskPage(BpmTaskTodoPageSearchDTO dto) { // 查询已办任务 HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery() .finished() // 已完成 .taskAssignee(dto.getUserId()) // 分配给自己 - .orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序 + .taskTenantId(dto.getTenantId()) + .orderByHistoricTaskInstanceEndTime() + .desc(); // 审批时间倒序 if (StrUtil.isNotBlank(dto.getName())) { query.taskNameLike("%" + dto.getName() + "%"); } @@ -137,49 +120,24 @@ public class BpmTaskServiceImpl implements BpmTaskService { query.taskCreatedBefore(dto.getEndCreateTime()); } if (StringUtils.hasLength(dto.getCategories())) { - List categories = - Arrays.stream(dto.getCategories().split(",")).map(String::trim).collect(Collectors.toList()); + List categories = Arrays.stream(dto.getCategories().split(",")) + .map(String::trim).collect(Collectors.toList()); query.processCategoryIn(categories); } // 执行查询 List tasks = query.listPage((dto.getPageNo() - 1) * dto.getPageSize(), dto.getPageSize()); - if (CollUtil.isEmpty(tasks)) { - return BpmPageResult.empty(query.count()); + if (CollectionUtils.isEmpty(tasks)) { + return BpmPageResult.empty(); } - // 获得 TaskExtDO Map - // List bpmTaskExtDOs = taskExtMapper.selectListByTaskIds( - // convertSet(tasks, HistoricTaskInstance::getId)); - // Map bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, TaskExtDO::getTaskId); - // 获得 ProcessInstance Map Set processInstanceIds = convertSet(tasks, HistoricTaskInstance::getProcessInstanceId); Map historicProcessInstanceMap = processInstanceService.getHistoricProcessInstanceMap( processInstanceIds); - - // 拼接数据 - // List bpmTaskDonePageItemRespVOS = BpmTaskConvert.convertList2( - // tasks, bpmTaskExtDOMap, historicProcessInstanceMap); - // - // Map instanceExtMap = convertMap( - // bpmProcessInstanceExtMapper.selectList( - // new LambdaQueryWrapper().in( - // BpmProcessInstanceExtDO::getProcessInstanceId, processInstanceIds)), - // BpmProcessInstanceExtDO::getProcessInstanceId, Function.identity(), (s, t) -> s); - // - // // 设置发起人姓名 - // bpmTaskDonePageItemRespVOS.forEach(vo -> { - // BpmTaskTodoPageItemRespVO.ProcessInstance processInstance = vo.getProcessInstance(); - // BpmProcessInstanceExtDO instanceExtDO = instanceExtMap.get(processInstance.getId()); - // processInstance.setCustomProInstId(instanceExtDO.getCustomProInstId()); - // processInstance.setCategory(instanceExtDO.getCategory()); - // processInstance.setStartUserName(instanceExtDO.getStartUserName()); - // processInstance.setStartTime(instanceExtDO.getCreateAt()); - // }); - // return new BpmPageResult(bpmTaskDonePageItemRespVOS, query.count()); - return null; + List vos = donePageItemConverter.toVos(tasks, historicProcessInstanceMap); + return new BpmPageResult<>(vos, query.count()); } @Override diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/BpmTaskController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/BpmTaskController.java index 0c7eded2c..823cb9928 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/BpmTaskController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/BpmTaskController.java @@ -2,9 +2,10 @@ package cn.axzo.workflow.server.controller.web; import cn.axzo.workflow.core.service.BpmTaskService; import cn.axzo.workflow.core.service.dto.request.task.BpmTaskAuditDTO; -import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoBpmPageDTO; +import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoPageSearchDTO; import cn.axzo.workflow.core.service.dto.response.BpmPageResult; -import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO; +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemVO; +import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO; import cn.azxo.framework.common.model.CommonResponse; import lombok.extern.slf4j.Slf4j; import org.flowable.form.api.FormInfo; @@ -30,20 +31,18 @@ public class BpmTaskController { * 待审核列表 */ @GetMapping("/page/todo") - public CommonResponse> getTodoTaskPage(@RequestBody BpmTaskTodoBpmPageDTO dto) { + public CommonResponse> getTodoTaskPage(@RequestBody BpmTaskTodoPageSearchDTO dto) { log.info("待审核列表 getTodoTaskPage===>>>参数:{}", dto); - BpmPageResult result = bpmTaskService.getTodoTaskPage(dto); - return CommonResponse.success(result); + return CommonResponse.success(bpmTaskService.getTodoTaskPage(dto)); } /** * 已完成的审批列表 */ @GetMapping("/page/done") - public CommonResponse> getDoneTaskPage(@RequestBody BpmTaskTodoBpmPageDTO dto) { + public CommonResponse> getDoneTaskPage(@RequestBody BpmTaskTodoPageSearchDTO dto) { log.info("已完成的审批列表 getDoneTaskPage===>>>参数:{}", dto); - BpmPageResult result = bpmTaskService.getDoneTaskPage(dto); - return CommonResponse.success(result); + return CommonResponse.success(bpmTaskService.getDoneTaskPage(dto)); }