From 7e7e620f28584ffe595917702cc5c05e6722bc31 Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Tue, 13 Jan 2026 18:51:19 +0800 Subject: [PATCH] commit --- .../engine/handlers/impl/CountersignHandler.java | 9 ++++++++- .../transact/ProposalMineController.java | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/budwk/app/flow/engine/handlers/impl/CountersignHandler.java b/src/main/java/com/budwk/app/flow/engine/handlers/impl/CountersignHandler.java index 6d22201..de6c981 100644 --- a/src/main/java/com/budwk/app/flow/engine/handlers/impl/CountersignHandler.java +++ b/src/main/java/com/budwk/app/flow/engine/handlers/impl/CountersignHandler.java @@ -5,11 +5,15 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.expression.ExpressionUtil; import com.budwk.app.flow.constant.FlowConst; +import com.budwk.app.flow.engine.FlowEngine; import com.budwk.app.flow.engine.core.Execution; import com.budwk.app.flow.engine.handlers.IHandler; import com.budwk.app.flow.engine.model.TaskModel; +import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.CountersignTypeEnum; +import org.nutz.lang.Lang; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -80,7 +84,7 @@ public class CountersignHandler implements IHandler { } if (!isMerged && CountersignTypeEnum.PARALLEL.toString().equalsIgnoreCase(countersignType)) { // 是否所有会签任务已完成 - isMerged = execution.getEngine().processTaskService().getDoingTaskList(execution.getProcessInstanceId(), new String[]{taskModel.getName()}).size() == 0; + boolean finished = execution.getEngine().processTaskService().getDoingTaskList(execution.getProcessInstanceId(), new String[]{taskModel.getName()}).size() == 0; if (!isMerged) { // 未通过,更新已完成实例数量 Dict addVariable = Dict.create(); @@ -88,6 +92,9 @@ public class CountersignHandler implements IHandler { addVariable.put(prefix + FlowConst.NR_OF_COMPLETED_AGREE_INSTANCES, execution.getArgs().get(prefix + FlowConst.NR_OF_COMPLETED_AGREE_INSTANCES)); execution.getEngine().processInstanceService().addVariable(execution.getProcessInstanceId(), addVariable); } + if(finished) { + execution.getEngine().processTaskService().rejectTask(execution.getProcessModel(), execution.getProcessTask()); + } } if (isMerged) { // 获取所有会签参数键值 diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalMineController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalMineController.java index 0b273eb..fc56056 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalMineController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalMineController.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HtmlUtil; +import cn.hutool.json.JSONUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; @@ -44,6 +45,7 @@ import org.nutz.mvc.annotation.Param; import javax.validation.Valid; import java.util.Date; import java.util.List; +import java.util.Objects; @IocBean @At("/platform/proposal/mine") @@ -262,15 +264,25 @@ public class ProposalMineController { .desc(ProcessTask::getCreatedAt)); // 已完成附议的代表 - List taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstance.getId()) + /*List taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstance.getId()) .and(ProcessTask::getTaskName, "=", "second") .and(ProcessTask::getTaskState, "in", List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) .and(ProcessTask::getId, ">", inviteTask.getId()) + );*/ + + List taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstance.getId()) + .and(ProcessTask::getTaskName, "=", "second") + .and(ProcessTask::getTaskState, "in", List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) ); + List tasks = taskList.stream().filter(o -> { + Dict args = JSONUtil.toBean(o.getVariable(), Dict.class); + return Objects.equals(args.getInt("submitType"), ProcessSubmitTypeEnum.AGREE.getCode()); + }).toList(); + ProposalConfig proposalConfig = dao.fetch(ProposalConfig.class, Cnd.NEW()); - if (taskList.size() + seconders.length < proposalConfig.getSeconderNum()) { + if (tasks.size() + seconders.length < proposalConfig.getSeconderNum()) { return Result.error("至少邀请" + proposalConfig.getSeconderNum() + "个附议人"); }