This commit is contained in:
@jyuhsin
2026-01-13 18:51:19 +08:00
parent aa4e56458f
commit 7e7e620f28
2 changed files with 22 additions and 3 deletions
@@ -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) {
// 获取所有会签参数键值
@@ -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<ProcessTask> taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstance.getId())
/*List<ProcessTask> 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<ProcessTask> 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<ProcessTask> 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() + "个附议人");
}