diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/common/config/CustomFlowableConfig.java b/hz-pm-api/src/main/java/com/hz/pm/api/common/config/CustomFlowableConfig.java
deleted file mode 100644
index c430398..0000000
--- a/hz-pm-api/src/main/java/com/hz/pm/api/common/config/CustomFlowableConfig.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.hz.pm.api.common.config;
-
-import com.google.common.collect.Lists;
-import com.hz.pm.api.scheduler.listener.TaskCreatedListener;
-import lombok.RequiredArgsConstructor;
-import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
-import org.flowable.spring.SpringProcessEngineConfiguration;
-import org.flowable.spring.boot.EngineConfigurationConfigurer;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.List;
-
-/**
- *
- * FlowableConfig
- *
- *
- * @author WendyYang
- * @since 12:16 2024/3/12
- */
-@RequiredArgsConstructor
-@Configuration("customFlowableConfig")
-public class CustomFlowableConfig implements EngineConfigurationConfigurer {
-
- private final TaskCreatedListener taskCreatedListener;
-
- @Override
- public void configure(SpringProcessEngineConfiguration engineConfiguration) {
- List listeners = engineConfiguration.getEventListeners();
- if (listeners == null) {
- engineConfiguration.setEventListeners(Lists.newArrayList(taskCreatedListener));
- } else {
- engineConfiguration.getEventListeners().add(taskCreatedListener);
- }
- }
-
-}
\ No newline at end of file
diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java
index 3e89fce..b37c89d 100644
--- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java
+++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java
@@ -25,15 +25,18 @@ import com.hz.pm.api.user.security.model.UserFullInfoDTO;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.util.CollUtils;
import com.wflow.bean.entity.WflowModelHistorys;
+import com.wflow.workflow.notify.event.NodeCompleteEvent;
+import com.wflow.workflow.notify.event.NodeCreateEvent;
import com.wflow.workflow.service.ProcessModelHistorysService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent;
-import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
-import org.flowable.common.engine.api.delegate.event.FlowableEvent;
-import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import java.time.Instant;
@@ -51,7 +54,7 @@ import java.util.Set;
@Slf4j
@Component
@RequiredArgsConstructor
-public class TaskCreatedListener implements FlowableEventListener {
+public class TaskCreatedListener {
private final IProjectService projectService;
private final IProjectInstService projectInstService;
@@ -62,22 +65,31 @@ public class TaskCreatedListener implements FlowableEventListener {
private final IPurchaseInstService purchaseInstService;
private final IXinchuangInstService xinchuangInstService;
private final IXinchuangService xinchuangService;
+ private final TaskService taskService;
- @Override
- public void onEvent(FlowableEvent event) {
+ @EventListener(classes = NodeCreateEvent.class)
+ public void onEvent(NodeCreateEvent event) {
Instant instant = Instant.now().plusSeconds(5);
ThreadPoolUtil.SCHEDULER.schedule(() -> handleEvent(event), instant);
}
- private void handleEvent(FlowableEvent event) {
- if (event.getType().equals(FlowableEngineEventType.TASK_CREATED)) {
- FlowableEngineEntityEvent entityEvent = (FlowableEngineEntityEvent) event;
+ @EventListener(classes = NodeCompleteEvent.class)
+ public void onEvent(NodeCompleteEvent event) {
+ Instant instant = Instant.now().plusSeconds(5);
+ ThreadPoolUtil.SCHEDULER.schedule(() -> handleEvent(event), instant);
+ }
+
+ private void handleEvent(ApplicationEvent event) {
+ if (event instanceof NodeCreateEvent) {
+ NodeCreateEvent entityEvent = (NodeCreateEvent) event;
String procDefId = entityEvent.getProcessDefinitionId();
- String procInstId = entityEvent.getProcessInstanceId();
+ String procInstId = entityEvent.getInstCode();
WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId);
ProjectProcessType procType = ProjectProcessType.getNoNull(models.getProcessType());
- TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
- UserFullInfoDTO assignee = userInfoHelper.getUserFullInfo(taskEntity.getAssignee());
+ Task task = taskService.createTaskQuery()
+ .taskId(entityEvent.getTaskId())
+ .singleResult();
+ UserFullInfoDTO assignee = userInfoHelper.getUserFullInfo(task.getAssignee());
if (assignee == null || StrUtil.isBlank(assignee.getMhUserId())) {
return;
}
@@ -95,9 +107,9 @@ public class TaskCreatedListener implements FlowableEventListener {
// 发送信产平台待办
MHTodoTypeEnum todoType = getMhTodoTypeEnum(procType);
MhTodoExtraParamDTO paramObj = MhTodoExtraParamDTO.builder()
- .taskId(taskEntity.getId())
- .instanceId(taskEntity.getProcessInstanceId())
- .nodeId(taskEntity.getTaskDefinitionId())
+ .taskId(task.getId())
+ .instanceId(task.getProcessInstanceId())
+ .nodeId(task.getTaskDefinitionId())
.userId(assignee.getUserId())
.userName(assignee.getRealName())
.path("/toDoCenter/handleDuringExamine")
@@ -109,30 +121,32 @@ public class TaskCreatedListener implements FlowableEventListener {
|| procType.equals(ProjectProcessType.SELF_TEST)) {
PurchaseInst purchaseInst = purchaseInstService.getByProjectIdAndInstCode(paramObj.getProjectId(), procInstId);
paramObj.setBidId(purchaseInst.getBidId());
+ paramObj.setProjectId(purchaseInst.getProjectId());
}
- String projectName;
+ String projectName = "";
// 上边查不到ID的时候说明是手动新增的信创项目
if (paramObj.getBidId() == null) {
XinchuangInst xinchuangInst = xinchuangInstService.getByInstCode(procInstId);
- if (xinchuangInst == null) {
- return;
- }
- Xinchuang xinchuang = xinchuangService.getById(xinchuangInst.getXinchuangId());
- paramObj.setXinchuangId(xinchuangInst.getId());
- projectName = xinchuang.getProjectName();
- } else {
- ProjectInst projectInst = projectInstService.getByInstCode(procInstId);
- if (projectInst == null) {
- return;
+ if (xinchuangInst != null) {
+ Xinchuang xinchuang = xinchuangService.getById(xinchuangInst.getXinchuangId());
+ paramObj.setXinchuangId(xinchuang.getId());
+ projectName = xinchuang.getProjectName();
+ } else {
+ ProjectInst projectInst = projectInstService.getByInstCode(procInstId);
+ if (projectInst == null) {
+ return;
+ }
+ paramObj.setProjectId(projectInst.getProjectId());
}
- Project project = projectService.getById(projectInst.getProjectId());
+ }
+ if (paramObj.getProjectId() != null) {
+ Project project = projectService.getNewProject(paramObj.getProjectId());
projectName = project.getProjectName();
paramObj.setProjectId(project.getId());
paramObj.setProjectCode(project.getProjectCode());
}
- String content = String.format("【%s】的【%s】需要您审核,请及时处理。",
- projectName, procType.getDesc());
- mhTodoClient.addTodo(paramObj, assignee, todoType, taskEntity.getId(), content);
+ String content = String.format("【%s】的【%s】需要您审核,请及时处理。", projectName, procType.getDesc());
+ mhTodoClient.addTodo(paramObj, assignee, todoType, task.getId(), content);
// 发送浙政钉工作通知
if (assignee.getAccountId() != null) {
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder()
@@ -146,7 +160,7 @@ public class TaskCreatedListener implements FlowableEventListener {
default:
break;
}
- } else if (event.getType().equals(FlowableEngineEventType.TASK_COMPLETED)) {
+ } else if (event instanceof NodeCompleteEvent) {
FlowableEngineEntityEvent entityEvent = (FlowableEngineEntityEvent) event;
String procDefId = entityEvent.getProcessDefinitionId();
WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId);
@@ -221,18 +235,4 @@ public class TaskCreatedListener implements FlowableEventListener {
return todoType;
}
- @Override
- public boolean isFailOnException() {
- return false;
- }
-
- @Override
- public boolean isFireOnTransactionLifecycleEvent() {
- return false;
- }
-
- @Override
- public String getOnTransaction() {
- return null;
- }
}