update 优化 工作流相关代码方法

This commit is contained in:
疯狂的狮子Li 2024-07-06 14:42:08 +08:00
parent 6cc24dc763
commit b0b6d01357
2 changed files with 13 additions and 26 deletions

View File

@ -9,6 +9,7 @@ import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.StreamUtils;
@ -17,7 +18,6 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
@ -34,7 +34,7 @@ import org.dromara.workflow.service.IWfNodeConfigService;
import org.dromara.workflow.service.IWfTaskBackNodeService;
import org.dromara.workflow.utils.QueryUtils;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.engine.*;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
@ -57,7 +57,6 @@ import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* 流程实例 服务层实现
@ -257,15 +256,15 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
List<HistoricActivityInstance> highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
for (HistoricActivityInstance tempActivity : highLightedFlowList) {
Map<String, Object> task = new HashMap<>();
if (!FlowConstant.SEQUENCE_FLOW.equals(tempActivity.getActivityType()) &&
!FlowConstant.PARALLEL_GATEWAY.equals(tempActivity.getActivityType()) &&
!FlowConstant.EXCLUSIVE_GATEWAY.equals(tempActivity.getActivityType()) &&
!FlowConstant.INCLUSIVE_GATEWAY.equals(tempActivity.getActivityType())
) {
task.put("key", tempActivity.getActivityId());
task.put("completed", tempActivity.getEndTime() != null);
task.put("activityType", tempActivity.getActivityType());
taskList.add(task);
switch (tempActivity.getActivityType()) {
case FlowConstant.SEQUENCE_FLOW, FlowConstant.PARALLEL_GATEWAY,
FlowConstant.EXCLUSIVE_GATEWAY, FlowConstant.INCLUSIVE_GATEWAY -> {}
default -> {
task.put("key", tempActivity.getActivityId());
task.put("completed", tempActivity.getEndTime() != null);
task.put("activityType", tempActivity.getActivityType());
taskList.add(task);
}
}
}
ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult();

View File

@ -260,7 +260,8 @@ public class ActTaskServiceImpl implements IActTaskService {
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 ({1}) ) ))", userId, ids)));
if (StringUtils.isNotBlank(taskBo.getName())) {
queryWrapper.like("t.name_", taskBo.getName());
}
@ -289,19 +290,6 @@ public class ActTaskServiceImpl implements IActTaskService {
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();
}
/**
* 查询当前租户所有待办任务
*