Merge branch 'master-jdk21' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts: # yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
This commit is contained in:
commit
6b79058417
|
@ -1,6 +1,5 @@
|
||||||
package cn.iocoder.yudao.framework.tenant.core.context;
|
package cn.iocoder.yudao.framework.tenant.core.context;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.DocumentEnum;
|
import cn.iocoder.yudao.framework.common.enums.DocumentEnum;
|
||||||
import com.alibaba.ttl.TransmittableThreadLocal;
|
import com.alibaba.ttl.TransmittableThreadLocal;
|
||||||
|
|
||||||
|
@ -30,16 +29,6 @@ public class TenantContextHolder {
|
||||||
return TENANT_ID.get();
|
return TENANT_ID.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得租户编号 String
|
|
||||||
*
|
|
||||||
* @return 租户编号
|
|
||||||
*/
|
|
||||||
public static String getTenantIdStr() {
|
|
||||||
Long tenantId = getTenantId();
|
|
||||||
return StrUtil.toStringOrNull(tenantId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得租户编号。如果不存在,则抛出 NullPointerException 异常
|
* 获得租户编号。如果不存在,则抛出 NullPointerException 异常
|
||||||
*
|
*
|
||||||
|
|
|
@ -53,8 +53,10 @@ public interface BpmProcessInstanceConvert {
|
||||||
// user
|
// user
|
||||||
if (userMap != null) {
|
if (userMap != null) {
|
||||||
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(pageResult.getList().get(i).getStartUserId()));
|
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(pageResult.getList().get(i).getStartUserId()));
|
||||||
respVO.setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class));
|
if (startUser != null) {
|
||||||
MapUtils.findAndThen(deptMap, startUser.getDeptId(), dept -> respVO.getStartUser().setDeptName(dept.getName()));
|
respVO.setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class));
|
||||||
|
MapUtils.findAndThen(deptMap, startUser.getDeptId(), dept -> respVO.getStartUser().setDeptName(dept.getName()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return vpPageResult;
|
return vpPageResult;
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
|
package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
|
||||||
import org.flowable.common.engine.api.delegate.Expression;
|
import org.flowable.common.engine.api.delegate.Expression;
|
||||||
import org.flowable.common.engine.api.variable.VariableContainer;
|
import org.flowable.common.engine.api.variable.VariableContainer;
|
||||||
import org.flowable.common.engine.impl.el.ExpressionManager;
|
import org.flowable.common.engine.impl.el.ExpressionManager;
|
||||||
import org.flowable.common.engine.impl.identity.Authentication;
|
import org.flowable.common.engine.impl.identity.Authentication;
|
||||||
|
import org.flowable.engine.ProcessEngineConfiguration;
|
||||||
import org.flowable.engine.history.HistoricProcessInstance;
|
import org.flowable.engine.history.HistoricProcessInstance;
|
||||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||||
|
@ -32,6 +34,11 @@ public class FlowableUtils {
|
||||||
Authentication.setAuthenticatedUserId(null);
|
Authentication.setAuthenticatedUserId(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getTenantId() {
|
||||||
|
Long tenantId = TenantContextHolder.getTenantId();
|
||||||
|
return tenantId != null ? String.valueOf(tenantId) : ProcessEngineConfiguration.NO_TENANT_ID;
|
||||||
|
}
|
||||||
|
|
||||||
// ========== Execution 相关的工具方法 ==========
|
// ========== Execution 相关的工具方法 ==========
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
|
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
|
import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelCreateReqVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelCreateReqVO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelPageReqVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelPageReqVO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelUpdateReqVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelUpdateReqVO;
|
||||||
|
@ -14,6 +13,7 @@ import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum;
|
import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateInvoker;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateInvoker;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
|
||||||
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
|
import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.bpmn.model.BpmnModel;
|
import org.flowable.bpmn.model.BpmnModel;
|
||||||
|
@ -78,7 +78,7 @@ public class BpmModelServiceImpl implements BpmModelService {
|
||||||
return PageResult.empty(count);
|
return PageResult.empty(count);
|
||||||
}
|
}
|
||||||
List<Model> models = modelQuery
|
List<Model> models = modelQuery
|
||||||
.modelTenantId(TenantContextHolder.getTenantIdStr())
|
.modelTenantId(FlowableUtils.getTenantId())
|
||||||
.orderByCreateTime().desc()
|
.orderByCreateTime().desc()
|
||||||
.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize());
|
.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize());
|
||||||
return new PageResult<>(models, count);
|
return new PageResult<>(models, count);
|
||||||
|
@ -99,7 +99,7 @@ public class BpmModelServiceImpl implements BpmModelService {
|
||||||
// 创建流程定义
|
// 创建流程定义
|
||||||
Model model = repositoryService.newModel();
|
Model model = repositoryService.newModel();
|
||||||
BpmModelConvert.INSTANCE.copyToCreateModel(model, createReqVO);
|
BpmModelConvert.INSTANCE.copyToCreateModel(model, createReqVO);
|
||||||
model.setTenantId(TenantContextHolder.getTenantIdStr());
|
model.setTenantId(FlowableUtils.getTenantId());
|
||||||
// 保存流程定义
|
// 保存流程定义
|
||||||
repositoryService.saveModel(model);
|
repositoryService.saveModel(model);
|
||||||
// 保存 BPMN XML
|
// 保存 BPMN XML
|
||||||
|
|
|
@ -5,12 +5,12 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
|
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageReqVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageReqVO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmProcessDefinitionInfoMapper;
|
import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmProcessDefinitionInfoMapper;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
|
||||||
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
|
import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.bpmn.model.BpmnModel;
|
import org.flowable.bpmn.model.BpmnModel;
|
||||||
|
@ -109,7 +109,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ
|
||||||
Deployment deploy = repositoryService.createDeployment()
|
Deployment deploy = repositoryService.createDeployment()
|
||||||
.key(model.getKey()).name(model.getName()).category(model.getCategory())
|
.key(model.getKey()).name(model.getName()).category(model.getCategory())
|
||||||
.addBytes(model.getKey() + BpmnModelConstants.BPMN_FILE_SUFFIX, bpmnBytes)
|
.addBytes(model.getKey() + BpmnModelConstants.BPMN_FILE_SUFFIX, bpmnBytes)
|
||||||
.tenantId(TenantContextHolder.getTenantIdStr())
|
.tenantId(FlowableUtils.getTenantId())
|
||||||
.disableSchemaValidation() // 禁用 XML Schema 验证,因为有自定义的属性
|
.disableSchemaValidation() // 禁用 XML Schema 验证,因为有自定义的属性
|
||||||
.deploy();
|
.deploy();
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ
|
||||||
query.active();
|
query.active();
|
||||||
}
|
}
|
||||||
// 执行查询
|
// 执行查询
|
||||||
query.processDefinitionTenantId(TenantContextHolder.getTenantIdStr());
|
query.processDefinitionTenantId(FlowableUtils.getTenantId());
|
||||||
return query.list();
|
return query.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -134,6 +134,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||||
public PageResult<HistoricTaskInstance> getTaskPage(Long userId, BpmTaskPageReqVO pageVO) {
|
public PageResult<HistoricTaskInstance> getTaskPage(Long userId, BpmTaskPageReqVO pageVO) {
|
||||||
HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery()
|
HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery()
|
||||||
.includeTaskLocalVariables()
|
.includeTaskLocalVariables()
|
||||||
|
.taskTenantId(FlowableUtils.getTenantId())
|
||||||
.orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序
|
.orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序
|
||||||
if (StrUtil.isNotBlank(pageVO.getName())) {
|
if (StrUtil.isNotBlank(pageVO.getName())) {
|
||||||
taskQuery.taskNameLike("%" + pageVO.getName() + "%");
|
taskQuery.taskNameLike("%" + pageVO.getName() + "%");
|
||||||
|
|
Loading…
Reference in New Issue