diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java index 80a6d44efb57fe74ec85825883aafeb78ce21bff..b5d1d7cb6e835c930718f3a988100a09fa1d9a1d 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java @@ -64,13 +64,14 @@ import neatlogic.framework.process.exception.processtask.*; import neatlogic.framework.process.exception.processtask.task.ProcessTaskStepTaskNotCompleteException; import neatlogic.framework.process.fulltextindex.ProcessFullTextIndexType; import neatlogic.framework.process.notify.constvalue.ProcessTaskStepNotifyTriggerType; -import neatlogic.framework.process.notify.constvalue.ProcessTaskStepTaskNotifyTriggerType; import neatlogic.framework.process.operationauth.core.ProcessAuthManager; import neatlogic.framework.process.stephandler.core.IProcessStepHandler; import neatlogic.framework.process.stephandler.core.IProcessStepInternalHandler; import neatlogic.framework.process.stephandler.core.ProcessStepHandlerFactory; import neatlogic.framework.process.stephandler.core.ProcessStepInternalHandlerFactory; import neatlogic.framework.process.stepremind.core.ProcessTaskStepRemindTypeFactory; +import neatlogic.framework.process.steptaskhandler.core.IProcessStepTaskHandler; +import neatlogic.framework.process.steptaskhandler.core.ProcessStepTaskHandlerFactory; import neatlogic.framework.process.task.TaskConfigManager; import neatlogic.framework.process.workerpolicy.core.IWorkerPolicyHandler; import neatlogic.framework.process.workerpolicy.core.WorkerPolicyHandlerFactory; @@ -1608,21 +1609,13 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC receiverMap.computeIfAbsent(ProcessUserType.MAJOR.getValue(), k -> new ArrayList<>()) .add(new NotifyReceiverVo(GroupSearch.USER.getValue(), processTaskStepUserVo.getUserUuid())); } - if (notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.COMPLETETASK - || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.CREATETASK - || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.DELETETASK - || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.EDITTASK - || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.COMPLETEALLTASK) { - /* 当前任务处理人 */ - ProcessTaskStepTaskVo stepTaskVo = currentProcessTaskStepVo.getProcessTaskStepTaskVo(); - if (stepTaskVo != null) { - List taskUserVoList = stepTaskVo.getStepTaskUserVoList(); - if (CollectionUtils.isNotEmpty(taskUserVoList)) { - for (ProcessTaskStepTaskUserVo taskUserVo : taskUserVoList) { - receiverMap.computeIfAbsent(ProcessUserType.MINOR.getValue(), k -> new ArrayList<>()) - .add(new NotifyReceiverVo(GroupSearch.USER.getValue(), taskUserVo.getUserUuid())); - } - } + + IProcessStepTaskHandler processStepTaskHandler = ProcessStepTaskHandlerFactory.getHandler(currentProcessTaskStepVo.getHandler()); + if (processStepTaskHandler != null) { + List minorUserList = processStepTaskHandler.getMinorUserListForNotifyReceiver(currentProcessTaskStepVo); + for (ProcessTaskStepUserVo processTaskStepUserVo : minorUserList) { + receiverMap.computeIfAbsent(ProcessUserType.MINOR.getValue(), k -> new ArrayList<>()) + .add(new NotifyReceiverVo(GroupSearch.USER.getValue(), processTaskStepUserVo.getUserUuid())); } } else { /* 所有任务处理人 **/ @@ -1634,6 +1627,32 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC } } +// if (notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.COMPLETETASK +// || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.CREATETASK +// || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.DELETETASK +// || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.EDITTASK +// || notifyTriggerType == ProcessTaskStepTaskNotifyTriggerType.COMPLETEALLTASK) { +// /* 当前任务处理人 */ +// ProcessTaskStepTaskVo stepTaskVo = currentProcessTaskStepVo.getProcessTaskStepTaskVo(); +// if (stepTaskVo != null) { +// List taskUserVoList = stepTaskVo.getStepTaskUserVoList(); +// if (CollectionUtils.isNotEmpty(taskUserVoList)) { +// for (ProcessTaskStepTaskUserVo taskUserVo : taskUserVoList) { +// receiverMap.computeIfAbsent(ProcessUserType.MINOR.getValue(), k -> new ArrayList<>()) +// .add(new NotifyReceiverVo(GroupSearch.USER.getValue(), taskUserVo.getUserUuid())); +// } +// } +// } +// } else { +// /* 所有任务处理人 **/ +// processTaskStepUser.setUserType(ProcessUserType.MINOR.getValue()); +// List minorUserList = processTaskMapper.getProcessTaskStepUserList(processTaskStepUser); +// for (ProcessTaskStepUserVo processTaskStepUserVo : minorUserList) { +// receiverMap.computeIfAbsent(ProcessUserType.MINOR.getValue(), k -> new ArrayList<>()) +// .add(new NotifyReceiverVo(GroupSearch.USER.getValue(), processTaskStepUserVo.getUserUuid())); +// } +// } + /* 待处理人 **/ List workerList = processTaskMapper.getProcessTaskStepWorkerByProcessTaskIdAndProcessTaskStepId( diff --git a/src/main/java/neatlogic/module/process/steptaskhandler/component/SubTaskHandler.java b/src/main/java/neatlogic/module/process/steptaskhandler/component/SubTaskHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..ca908bfb74ea9b6cf95451d685e5d2c6d11b9ef6 --- /dev/null +++ b/src/main/java/neatlogic/module/process/steptaskhandler/component/SubTaskHandler.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2024 深圳极向量科技有限公司 All Rights Reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package neatlogic.module.process.steptaskhandler.component; + +import neatlogic.framework.process.constvalue.ProcessStepHandlerType; +import neatlogic.framework.process.constvalue.ProcessUserType; +import neatlogic.framework.process.dto.ProcessTaskStepTaskUserVo; +import neatlogic.framework.process.dto.ProcessTaskStepTaskVo; +import neatlogic.framework.process.dto.ProcessTaskStepUserVo; +import neatlogic.framework.process.dto.ProcessTaskStepVo; +import neatlogic.framework.process.steptaskhandler.core.ProcessStepTaskHandlerBase; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class SubTaskHandler extends ProcessStepTaskHandlerBase { + @Override + public List getHandlerList() { + List list = new ArrayList<>(); + list.add(ProcessStepHandlerType.OMNIPOTENT.getHandler()); + list.add("event"); + return list; + } + + @Override + public List getMinorUserListForNotifyReceiver(ProcessTaskStepVo currentProcessTaskStepVo) { + List resultList = new ArrayList<>(); + /* 当前任务处理人 */ + ProcessTaskStepTaskVo stepTaskVo = currentProcessTaskStepVo.getProcessTaskStepTaskVo(); + if (stepTaskVo != null) { + List taskUserVoList = stepTaskVo.getStepTaskUserVoList(); + if (CollectionUtils.isNotEmpty(taskUserVoList)) { + for (ProcessTaskStepTaskUserVo taskUserVo : taskUserVoList) { + ProcessTaskStepUserVo processTaskStepUserVo = new ProcessTaskStepUserVo(); + processTaskStepUserVo.setProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); + processTaskStepUserVo.setProcessTaskStepId(currentProcessTaskStepVo.getId()); + processTaskStepUserVo.setUserType(ProcessUserType.MINOR.getValue()); + processTaskStepUserVo.setUserUuid(taskUserVo.getUserUuid()); + resultList.add(processTaskStepUserVo); + } + } + } + return resultList; + } +} diff --git a/src/main/java/neatlogic/module/process/thread/ProcessTaskNotifyThread.java b/src/main/java/neatlogic/module/process/thread/ProcessTaskNotifyThread.java index 953ec3cd29072d49ad6c77d15f34b25e7dbcc72f..6bcfa9b6453d8b0a21a1db0e8bac0c205982ca85 100644 --- a/src/main/java/neatlogic/module/process/thread/ProcessTaskNotifyThread.java +++ b/src/main/java/neatlogic/module/process/thread/ProcessTaskNotifyThread.java @@ -29,8 +29,6 @@ import neatlogic.framework.notify.dto.NotifyReceiverVo; import neatlogic.framework.notify.dto.ParamMappingVo; import neatlogic.framework.process.condition.core.ProcessTaskConditionFactory; import neatlogic.framework.process.constvalue.ConditionProcessTaskOptions; -import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; -import neatlogic.module.process.dao.mapper.SelectContentByHashMapper; import neatlogic.framework.process.dto.ProcessTaskStepVo; import neatlogic.framework.process.dto.ProcessTaskVo; import neatlogic.framework.process.exception.process.ProcessStepUtilHandlerNotFoundException; @@ -38,6 +36,8 @@ import neatlogic.framework.process.notify.constvalue.ProcessTaskNotifyTriggerTyp import neatlogic.framework.process.stephandler.core.IProcessStepInternalHandler; import neatlogic.framework.process.stephandler.core.ProcessStepInternalHandlerFactory; import neatlogic.framework.util.NotifyPolicyUtil; +import neatlogic.module.process.dao.mapper.SelectContentByHashMapper; +import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; import neatlogic.module.process.message.handler.ProcessTaskMessageHandler; import neatlogic.module.process.service.ProcessTaskService; import org.apache.commons.collections4.CollectionUtils; @@ -122,6 +122,19 @@ public class ProcessTaskNotifyThread extends NeatLogicThread { notifyAuditMessageStringBuilder.append("("); notifyAuditMessageStringBuilder.append(stepVo.getId()); notifyAuditMessageStringBuilder.append(")"); + + currentProcessTaskStepVo.setProcessTaskId(stepVo.getProcessTaskId()); + currentProcessTaskStepVo.setName(stepVo.getName()); + currentProcessTaskStepVo.setProcessStepUuid(stepVo.getProcessStepUuid()); + currentProcessTaskStepVo.setStatus(stepVo.getStatus()); + currentProcessTaskStepVo.setType(stepVo.getType()); + currentProcessTaskStepVo.setHandler(stepVo.getHandler()); + currentProcessTaskStepVo.setIsActive(stepVo.getIsActive()); + currentProcessTaskStepVo.setConfigHash(stepVo.getConfigHash()); + currentProcessTaskStepVo.setActiveTime(stepVo.getActiveTime()); + currentProcessTaskStepVo.setStartTime(stepVo.getStartTime()); + currentProcessTaskStepVo.setEndTime(stepVo.getEndTime()); + currentProcessTaskStepVo.setError(stepVo.getError()); } InvokeNotifyPolicyConfigVo invokeNotifyPolicyConfigVo = notifyServiceCrossoverService.regulateNotifyPolicyConfig(notifyPolicyConfig);