From 1a993a7899c2128e78975754502fba0993a8079e Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期二, 12 十一月 2024 18:17:47 +0800
Subject: [PATCH] update 优化 xss包装器 Parameter 处理 兼容某些容器不允许改参数的情况
---
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java | 37 +++++++++++++++++--------------------
1 files changed, 17 insertions(+), 20 deletions(-)
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 6fe0b4e..d9a674a 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
@@ -52,6 +52,7 @@
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import org.flowable.variable.api.persistence.entity.VariableInstance;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -71,11 +72,16 @@
@Service
public class ActTaskServiceImpl implements IActTaskService {
- private final RuntimeService runtimeService;
- private final TaskService taskService;
- private final HistoryService historyService;
- private final IdentityService identityService;
- private final ManagementService managementService;
+ @Autowired(required = false)
+ private RuntimeService runtimeService;
+ @Autowired(required = false)
+ private TaskService taskService;
+ @Autowired(required = false)
+ private HistoryService historyService;
+ @Autowired(required = false)
+ private IdentityService identityService;
+ @Autowired(required = false)
+ private ManagementService managementService;
private final ActTaskMapper actTaskMapper;
private final IWfTaskBackNodeService wfTaskBackNodeService;
private final ActHiTaskinstMapper actHiTaskinstMapper;
@@ -260,7 +266,8 @@
String userId = String.valueOf(LoginHelper.getUserId());
queryWrapper.eq("t.business_status_", BusinessStatusEnum.WAITING.getStatus());
queryWrapper.eq(TenantHelper.isEnable(), "t.tenant_id_", TenantHelper.getTenantId());
- queryWrapper.and(w1 -> w1.eq("t.assignee_", userId).or(w2 -> w2.isNull("t.assignee_").apply("exists ( select LINK.ID_ from ACT_RU_IDENTITYLINK LINK where LINK.TASK_ID_ = t.ID_ and LINK.TYPE_ = 'candidate' " + "and (LINK.USER_ID_ = {0} or ( LINK.GROUP_ID_ IN " + getInParam(roleIds) + " ) ))", userId)));
+ String ids = StreamUtils.join(roleIds, x -> "'" + x + "'");
+ queryWrapper.and(w1 -> w1.eq("t.assignee_", userId).or(w2 -> w2.isNull("t.assignee_").apply("exists ( select LINK.ID_ from ACT_RU_IDENTITYLINK LINK where LINK.TASK_ID_ = t.ID_ and LINK.TYPE_ = 'candidate' and (LINK.USER_ID_ = {0} or ( LINK.GROUP_ID_ IN (" + ids + ") ) ))", userId)));
if (StringUtils.isNotBlank(taskBo.getName())) {
queryWrapper.like("t.name_", taskBo.getName());
}
@@ -270,6 +277,7 @@
if (StringUtils.isNotBlank(taskBo.getProcessDefinitionKey())) {
queryWrapper.eq("t.processDefinitionKey", taskBo.getProcessDefinitionKey());
}
+ queryWrapper.orderByDesc("t.CREATE_TIME_");
Page<TaskVo> page = actTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper);
List<TaskVo> taskList = page.getRecords();
@@ -287,19 +295,6 @@
}
}
return TableDataInfo.build(page);
- }
-
- private String getInParam(List<String> param) {
- StringBuilder sb = new StringBuilder();
- sb.append("(");
- for (int i = 0; i < param.size(); i++) {
- sb.append("'").append(param.get(i)).append("'");
- if (i != param.size() - 1) {
- sb.append(",");
- }
- }
- sb.append(")");
- return sb.toString();
}
/**
@@ -372,6 +367,7 @@
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);
+ queryWrapper.orderByDesc("t.START_TIME_");
Page<TaskVo> page = actTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper);
List<TaskVo> taskList = page.getRecords();
@@ -408,6 +404,7 @@
queryWrapper.eq("t.processDefinitionKey", taskBo.getProcessDefinitionKey());
}
queryWrapper.eq("t.assignee_", userId);
+ queryWrapper.orderByDesc("t.START_TIME_");
Page<TaskVo> page = actTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper);
List<TaskVo> taskList = page.getRecords();
@@ -696,7 +693,7 @@
if (multiInstance == null && taskList.size() > 1) {
List<Task> tasks = StreamUtils.filter(taskList, e -> !e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey()));
if (CollUtil.isNotEmpty(tasks)) {
- actHiTaskinstMapper.deleteBatchIds(StreamUtils.toList(tasks, Task::getId));
+ actHiTaskinstMapper.deleteByIds(StreamUtils.toList(tasks, Task::getId));
}
}
--
Gitblit v1.9.3