update 优化 SpringUtils 获取 dubbo 接口代理问题

This commit is contained in:
疯狂的狮子Li
2024-06-03 16:43:16 +08:00
parent ca0b11d104
commit 7b4c84a8f8
8 changed files with 45 additions and 20 deletions

View File

@@ -1,4 +1,4 @@
package org.dromara.workflow.common.enums; package org.dromara.common.core.enums;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@@ -5,7 +5,6 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -13,11 +12,7 @@ import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.resource.api.RemoteFileService;
import org.dromara.resource.api.domain.RemoteFile;
import org.dromara.system.api.model.LoginUser;
import org.dromara.workflow.domain.bo.ModelBo; import org.dromara.workflow.domain.bo.ModelBo;
import org.dromara.workflow.domain.vo.ModelVo; import org.dromara.workflow.domain.vo.ModelVo;
import org.dromara.workflow.service.IActModelService; import org.dromara.workflow.service.IActModelService;
@@ -53,8 +48,6 @@ public class ActModelController extends BaseController {
*/ */
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<Model> page(ModelBo modelBo, PageQuery pageQuery) { public TableDataInfo<Model> page(ModelBo modelBo, PageQuery pageQuery) {
RemoteFileService bean = SpringUtils.getBean(RemoteFileService.class);
List<RemoteFile> remoteFiles = bean.selectByIds("1");
return actModelService.page(modelBo, pageQuery); return actModelService.page(modelBo, pageQuery);
} }

View File

@@ -38,7 +38,8 @@ public class AttachmentCmd implements Command<Boolean> {
public Boolean execute(CommandContext commandContext) { public Boolean execute(CommandContext commandContext) {
try { try {
if (StringUtils.isNotBlank(fileId)) { if (StringUtils.isNotBlank(fileId)) {
List<RemoteFile> ossList = SpringUtils.getBean(RemoteFileService.class).selectByIds(fileId); RemoteFileService remoteFileService = SpringUtils.getBean(RemoteFileService.class);
List<RemoteFile> ossList = remoteFileService.selectByIds(fileId);
if (CollUtil.isNotEmpty(ossList)) { if (CollUtil.isNotEmpty(ossList)) {
for (RemoteFile oss : ossList) { for (RemoteFile oss : ossList) {
AttachmentEntityManager attachmentEntityManager = CommandContextUtil.getAttachmentEntityManager(); AttachmentEntityManager attachmentEntityManager = CommandContextUtil.getAttachmentEntityManager();

View File

@@ -0,0 +1,31 @@
package org.dromara.workflow.runner;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.resource.api.RemoteFileService;
import org.dromara.system.api.RemoteUserService;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
/**
* 初始化 dubbo 接口生成接口代理 不然无法直接用 SpringUtils 注入 dubbo 接口使用
*
* @author Lion Li
*/
@Slf4j
@RequiredArgsConstructor
@Component
public class WorkflowApplicationRunner implements ApplicationRunner {
@DubboReference
private RemoteUserService remoteUserService;
@DubboReference
private RemoteFileService remoteFileService;
@Override
public void run(ApplicationArguments args) throws Exception {
}
}

View File

@@ -16,7 +16,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.common.enums.BusinessStatusEnum; import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.ActHiProcinst; import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.domain.bo.ProcessInstanceBo; import org.dromara.workflow.domain.bo.ProcessInstanceBo;

View File

@@ -19,7 +19,7 @@ import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.dromara.system.api.model.RoleDTO; import org.dromara.system.api.model.RoleDTO;
import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.common.enums.BusinessStatusEnum; import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.ActHiTaskinst; import org.dromara.workflow.domain.ActHiTaskinst;
import org.dromara.workflow.domain.WfTaskBackNode; import org.dromara.workflow.domain.WfTaskBackNode;

View File

@@ -15,7 +15,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.workflow.api.domain.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteWorkflowService;
import org.dromara.workflow.api.domain.event.ProcessEvent; import org.dromara.workflow.api.domain.event.ProcessEvent;
import org.dromara.workflow.api.domain.event.ProcessTaskEvent; import org.dromara.workflow.api.domain.event.ProcessTaskEvent;
import org.dromara.workflow.common.enums.BusinessStatusEnum; import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.workflow.domain.TestLeave; import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.bo.TestLeaveBo;
import org.dromara.workflow.domain.vo.TestLeaveVo; import org.dromara.workflow.domain.vo.TestLeaveVo;

View File

@@ -25,7 +25,6 @@ import org.dromara.workflow.domain.vo.MultiInstanceVo;
import org.dromara.workflow.domain.vo.ParticipantVo; import org.dromara.workflow.domain.vo.ParticipantVo;
import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd; import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd;
import org.dromara.workflow.mapper.ActHiTaskinstMapper; import org.dromara.workflow.mapper.ActHiTaskinstMapper;
import org.dromara.workflow.service.IActHiProcinstService;
import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowNode; import org.flowable.bpmn.model.FlowNode;
import org.flowable.common.engine.api.delegate.Expression; import org.flowable.common.engine.api.delegate.Expression;
@@ -50,8 +49,6 @@ import java.util.*;
public class WorkflowUtils { public class WorkflowUtils {
private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class);
private static final RemoteUserService USER_SERVICE = SpringUtils.getBean(RemoteUserService.class);
private static final IActHiProcinstService ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class);
private static final ActHiTaskinstMapper ACT_HI_TASKINST_MAPPER = SpringUtils.getBean(ActHiTaskinstMapper.class); private static final ActHiTaskinstMapper ACT_HI_TASKINST_MAPPER = SpringUtils.getBean(ActHiTaskinstMapper.class);
/** /**
@@ -129,6 +126,7 @@ public class WorkflowUtils {
* @param taskId 任务id * @param taskId 任务id
*/ */
public static ParticipantVo getCurrentTaskParticipant(String taskId) { public static ParticipantVo getCurrentTaskParticipant(String taskId) {
RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class);
ParticipantVo participantVo = new ParticipantVo(); ParticipantVo participantVo = new ParticipantVo();
List<HistoricIdentityLink> linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId); List<HistoricIdentityLink> linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId);
Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); Task task = QueryUtils.taskQuery().taskId(taskId).singleResult();
@@ -136,10 +134,11 @@ public class WorkflowUtils {
List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId())); List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId()));
if (CollUtil.isNotEmpty(groupList)) { if (CollUtil.isNotEmpty(groupList)) {
List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId())); List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId()));
List<Long> userIds = USER_SERVICE.selectUserIdsByRoleIds(groupIds);
List<Long> userIds = remoteUserService.selectUserIdsByRoleIds(groupIds);
if (CollUtil.isNotEmpty(userIds)) { if (CollUtil.isNotEmpty(userIds)) {
participantVo.setGroupIds(groupIds); participantVo.setGroupIds(groupIds);
List<RemoteUserVo> userList = USER_SERVICE.selectListByIds(userIds); List<RemoteUserVo> userList = remoteUserService.selectListByIds(userIds);
if (CollUtil.isNotEmpty(userList)) { if (CollUtil.isNotEmpty(userList)) {
List<Long> userIdList = StreamUtils.toList(userList, RemoteUserVo::getUserId); List<Long> userIdList = StreamUtils.toList(userList, RemoteUserVo::getUserId);
List<String> nickNames = StreamUtils.toList(userList, RemoteUserVo::getNickName); List<String> nickNames = StreamUtils.toList(userList, RemoteUserVo::getNickName);
@@ -158,7 +157,7 @@ public class WorkflowUtils {
} }
} }
List<RemoteUserVo> userList = USER_SERVICE.selectListByIds(userIdList); List<RemoteUserVo> userList = remoteUserService.selectListByIds(userIdList);
if (CollUtil.isNotEmpty(userList)) { if (CollUtil.isNotEmpty(userList)) {
List<Long> userIds = StreamUtils.toList(userList, RemoteUserVo::getUserId); List<Long> userIds = StreamUtils.toList(userList, RemoteUserVo::getUserId);
List<String> nickNames = StreamUtils.toList(userList, RemoteUserVo::getNickName); List<String> nickNames = StreamUtils.toList(userList, RemoteUserVo::getNickName);
@@ -237,6 +236,7 @@ public class WorkflowUtils {
* @param message 消息内容,为空则发送默认配置的消息内容 * @param message 消息内容,为空则发送默认配置的消息内容
*/ */
public static void sendMessage(List<Task> list, String name, List<String> messageType, String message) { public static void sendMessage(List<Task> list, String name, List<String> messageType, String message) {
RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class);
Set<Long> userIds = new HashSet<>(); Set<Long> userIds = new HashSet<>();
if (StringUtils.isBlank(message)) { if (StringUtils.isBlank(message)) {
message = "有新的【" + name + "】单据已经提交至您的待办,请您及时处理。"; message = "有新的【" + name + "】单据已经提交至您的待办,请您及时处理。";
@@ -244,7 +244,7 @@ public class WorkflowUtils {
for (Task t : list) { for (Task t : list) {
ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId()); ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId());
if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) {
List<Long> userIdList = USER_SERVICE.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); List<Long> userIdList = remoteUserService.selectUserIdsByRoleIds(taskParticipant.getGroupIds());
if (CollUtil.isNotEmpty(userIdList)) { if (CollUtil.isNotEmpty(userIdList)) {
userIds.addAll(userIdList); userIds.addAll(userIdList);
} }
@@ -255,7 +255,7 @@ public class WorkflowUtils {
} }
} }
if (CollUtil.isNotEmpty(userIds)) { if (CollUtil.isNotEmpty(userIds)) {
List<RemoteUserVo> userList = USER_SERVICE.selectListByIds(new ArrayList<>(userIds)); List<RemoteUserVo> userList = remoteUserService.selectListByIds(new ArrayList<>(userIds));
for (String code : messageType) { for (String code : messageType) {
MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code);
if (ObjectUtil.isNotEmpty(messageTypeEnum)) { if (ObjectUtil.isNotEmpty(messageTypeEnum)) {