From e30e4fe447c2eea8ea0a00915753e2f769d124cd Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期一, 11 三月 2024 21:02:05 +0800 Subject: [PATCH] update 修改我的已办过滤抄送数据,添加已审批过得节点查询接口 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/ActTaskMapper.java | 9 ++++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java | 12 +++++ ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/ActTaskMapper.xml | 20 ++++++++- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java | 5 ++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java | 63 +++++++++++++++---------------- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java | 9 ++++ 6 files changed, 82 insertions(+), 36 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java index 06727f2..9f50cdc 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java @@ -17,13 +17,13 @@ import org.dromara.workflow.domain.vo.VariableVo; import org.dromara.workflow.service.IActTaskService; import org.dromara.workflow.utils.QueryUtils; -import org.dromara.workflow.utils.WorkflowUtils; import org.flowable.engine.TaskService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; +import java.util.Set; /** * 浠诲姟绠$悊 鎺у埗灞� @@ -257,4 +257,14 @@ public R<List<VariableVo>> getProcessInstVariable(@PathVariable String taskId) { return R.ok(actTaskService.getInstanceVariable(taskId)); } + + /** + * 鑾峰彇鍙┏鍥炲緱浠诲姟鑺傜偣 + * + * @param processInstanceId 娴佺▼瀹炰緥id + */ + @GetMapping("/getTaskNodeList/{processInstanceId}") + public R<Set<TaskVo>> getNodeList(@PathVariable String processInstanceId) { + return R.ok(actTaskService.getTaskNodeList(processInstanceId)); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java index b8a230f..0210b57 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java @@ -82,6 +82,11 @@ private Date createTime; /** + * 宸插姙浠诲姟-鍒涘缓鏃堕棿 + */ + private Date startTime; + + /** * 缁撴潫鏃堕棿 */ private Date endTime; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/ActTaskMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/ActTaskMapper.java index e7094f5..5682862 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/ActTaskMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/ActTaskMapper.java @@ -28,6 +28,15 @@ Page<TaskVo> getTaskWaitByPage(@Param("page") Page<TaskVo> page, @Param(Constants.WRAPPER) Wrapper<TaskVo> queryWrapper); /** + * 鑾峰彇宸插姙 + * + * @param page 鍒嗛〉 + * @param queryWrapper 鏉′欢 + * @return 缁撴灉 + */ + Page<TaskVo> getTaskFinishByPage(@Param("page") Page<TaskVo> page, @Param(Constants.WRAPPER) Wrapper<TaskVo> queryWrapper); + + /** * 鏌ヨ褰撳墠鐢ㄦ埛鐨勬妱閫� * * @param page 鍒嗛〉 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java index 45c3de2..72a5ea1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; +import java.util.Set; /** * 浠诲姟 鏈嶅姟灞� @@ -142,4 +143,12 @@ * @return 缁撴灉 */ List<VariableVo> getInstanceVariable(String taskId); + + /** + * 鑾峰彇鍙┏鍥炲緱浠诲姟鑺傜偣 + * + * @param processInstanceId 娴佺▼瀹炰緥id + * @return 缁撴灉 + */ + Set<TaskVo> getTaskNodeList(String processInstanceId); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index cfd9ea2..a44502a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -336,39 +336,18 @@ @Override public TableDataInfo<TaskVo> getPageByTaskFinish(TaskBo taskBo, PageQuery pageQuery) { String userId = String.valueOf(LoginHelper.getUserId()); - HistoricTaskInstanceQuery query = QueryUtils.hisTaskInstanceQuery(); - query.taskAssignee(userId).finished().orderByHistoricTaskInstanceStartTime().desc(); - if (StringUtils.isNotBlank(taskBo.getName())) { - query.taskNameLike("%" + taskBo.getName() + "%"); + QueryWrapper<TaskVo> queryWrapper = new QueryWrapper<>(); + queryWrapper.like(StringUtils.isNotBlank(taskBo.getName()), "t.name_", taskBo.getName()); + queryWrapper.like(StringUtils.isNotBlank(taskBo.getProcessDefinitionName()), "t.processDefinitionName", taskBo.getProcessDefinitionName()); + queryWrapper.eq(StringUtils.isNotBlank(taskBo.getProcessDefinitionKey()), "t.processDefinitionKey", taskBo.getProcessDefinitionKey()); + queryWrapper.eq("t.assignee_", userId); + Page<TaskVo> page = actTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper); + + List<TaskVo> taskList = page.getRecords(); + for (TaskVo task : taskList) { + task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus())); } - if (StringUtils.isNotBlank(taskBo.getProcessDefinitionName())) { - query.processDefinitionNameLike("%" + taskBo.getProcessDefinitionName() + "%"); - } - if (StringUtils.isNotBlank(taskBo.getProcessDefinitionKey())) { - query.processDefinitionKey(taskBo.getProcessDefinitionKey()); - } - List<HistoricTaskInstance> taskInstanceList = query.listPage(pageQuery.getFirstNum(), pageQuery.getPageSize()); - List<HistoricProcessInstance> historicProcessInstanceList = null; - if (CollUtil.isNotEmpty(taskInstanceList)) { - Set<String> processInstanceIds = StreamUtils.toSet(taskInstanceList, HistoricTaskInstance::getProcessInstanceId); - historicProcessInstanceList = QueryUtils.hisInstanceQuery(processInstanceIds).list(); - } - List<TaskVo> list = new ArrayList<>(); - for (HistoricTaskInstance task : taskInstanceList) { - TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class); - if (CollUtil.isNotEmpty(historicProcessInstanceList)) { - historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> { - taskVo.setBusinessStatus(e.getBusinessStatus()); - taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus())); - taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey()); - taskVo.setProcessDefinitionName(e.getProcessDefinitionName()); - }); - } - taskVo.setAssignee(StringUtils.isNotBlank(task.getAssignee()) ? Long.valueOf(task.getAssignee()) : null); - list.add(taskVo); - } - long count = query.count(); - return new TableDataInfo<>(list, count); + return new TableDataInfo<>(taskList, page.getTotal()); } /** @@ -742,4 +721,24 @@ } return variableVoList; } + + /** + * 鑾峰彇鍙┏鍥炲緱浠诲姟鑺傜偣 + * + * @param processInstanceId 娴佺▼瀹炰緥id + */ + @Override + public Set<TaskVo> getTaskNodeList(String processInstanceId) { + Set<TaskVo> list = new HashSet<>(); + List<HistoricTaskInstance> historicTaskInstances = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); + for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) { + if (historicTaskInstance.getEndTime() != null) { + TaskVo taskVo = new TaskVo(); + taskVo.setName(historicTaskInstance.getName()); + taskVo.setTaskDefinitionKey(historicTaskInstance.getTaskDefinitionKey()); + list.add(taskVo); + } + } + return list; + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/ActTaskMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/ActTaskMapper.xml index a36f880..342ce09 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/ActTaskMapper.xml +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/ActTaskMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.workflow.mapper.ActTaskMapper"> - <resultMap type="org.dromara.workflow.domain.vo.TaskVo" id="TaskWaitingVoResult"> + <resultMap type="org.dromara.workflow.domain.vo.TaskVo" id="TaskVoResult"> <result property="id" column="ID_"/> <result property="name" column="NAME_"/> <result property="description" column="DESCRIPTION_"/> @@ -15,6 +15,7 @@ <result property="taskDefinitionId" column="TASK_DEF_ID_"/> <result property="processDefinitionId" column="PROC_DEF_ID_"/> <result property="createTime" column="CREATE_TIME_"/> + <result property="startTime" column="START_TIME_"/> <result property="endTime" column="END_TIME_"/> <result property="taskDefinitionKey" column="TASK_DEF_KEY_"/> <result property="dueDate" column="DUE_DATE_"/> @@ -28,7 +29,7 @@ <result property="processDefinitionKey" column="processDefinitionName"/> </resultMap> - <select id="getTaskWaitByPage" resultMap="TaskWaitingVoResult"> + <select id="getTaskWaitByPage" resultMap="TaskVoResult"> select * from (SELECT RES.*, AHP.BUSINESS_STATUS_, @@ -41,7 +42,20 @@ ORDER BY RES.CREATE_TIME_ DESC) t ${ew.getCustomSqlSegment} </select> - <select id="getTaskCopyByPage" resultMap="TaskWaitingVoResult"> + <select id="getTaskFinishByPage" resultMap="TaskVoResult"> + select * + from (SELECT HTI.*, + AHP.BUSINESS_STATUS_, + ARP.NAME_ AS processDefinitionName, + ARP.KEY_ AS processDefinitionKey + FROM ACT_HI_TASKINST HTI + INNER JOIN ACT_HI_PROCINST AHP ON HTI.PROC_INST_ID_ = AHP.PROC_INST_ID_ + INNER JOIN ACT_RE_PROCDEF ARP ON ARP.ID_ = HTI.PROC_DEF_ID_ + WHERE HTI.PARENT_TASK_ID_ IS NULL + ORDER BY HTI.START_TIME_ DESC) t ${ew.getCustomSqlSegment} + </select> + + <select id="getTaskCopyByPage" resultMap="TaskVoResult"> select * from (SELECT AHT.*, AHP.BUSINESS_STATUS_, -- Gitblit v1.9.3