This commit is contained in:
@jyuhsin
2026-01-14 09:23:36 +08:00
parent ce9f815cf0
commit c7593dcb35
8 changed files with 26 additions and 12 deletions
@@ -80,7 +80,7 @@ public class CountersignHandler implements IHandler {
} }
if (!isMerged && CountersignTypeEnum.PARALLEL.toString().equalsIgnoreCase(countersignType)) { 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) { if (!isMerged) {
// 未通过,更新已完成实例数量 // 未通过,更新已完成实例数量
Dict addVariable = Dict.create(); Dict addVariable = Dict.create();
@@ -88,6 +88,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)); 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); execution.getEngine().processInstanceService().addVariable(execution.getProcessInstanceId(), addVariable);
} }
if(finished) {
execution.getEngine().processTaskService().rejectTask(execution.getProcessModel(), execution.getProcessTask());
}
} }
if (isMerged) { if (isMerged) {
// 获取所有会签参数键值 // 获取所有会签参数键值
@@ -168,7 +168,7 @@ public class SysClubServiceImpl extends BaseServiceImpl<SysClub> implements SysC
SysClub sysClub = dao().insertWith(club, "sponsors"); SysClub sysClub = dao().insertWith(club, "sponsors");
if(ObjectUtil.isNotEmpty(managePerson)){ if(ObjectUtil.isNotEmpty(managePerson)){
List<ClubUser> clubUsers = managePerson.stream().map(person -> { List<ClubUser> clubUsers = managePerson.stream().filter(o -> StrUtil.isNotBlank(o.getString("userId"))).map(person -> {
ClubUser clubUser = new ClubUser(); ClubUser clubUser = new ClubUser();
clubUser.setClubId(club.getId()); clubUser.setClubId(club.getId());
clubUser.setRoleCode(List.of(person.getString("roleCode"))); clubUser.setRoleCode(List.of(person.getString("roleCode")));
@@ -193,7 +193,7 @@ public class SysClubServiceImpl extends BaseServiceImpl<SysClub> implements SysC
dao().clear(ClubUser.class, Cnd.where(ClubUser::getClubId, "=", club.getId())); dao().clear(ClubUser.class, Cnd.where(ClubUser::getClubId, "=", club.getId()));
if (ObjectUtil.isNotEmpty(managePerson)) { if (ObjectUtil.isNotEmpty(managePerson)) {
List<ClubUser> clubUsers = managePerson.stream().map(person -> { List<ClubUser> clubUsers = managePerson.stream().filter(o -> StrUtil.isNotBlank(o.getString("userId"))).map(person -> {
ClubUser clubUser = new ClubUser(); ClubUser clubUser = new ClubUser();
clubUser.setClubId(club.getId()); clubUser.setClubId(club.getId());
clubUser.setRoleCode(List.of(person.getString("roleCode"))); clubUser.setRoleCode(List.of(person.getString("roleCode")));
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil; import cn.hutool.http.HtmlUtil;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm; import com.budwk.app.base.param.PageForm;
@@ -44,6 +45,7 @@ import org.nutz.mvc.annotation.Param;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
@IocBean @IocBean
@At("/platform/proposal/mine") @At("/platform/proposal/mine")
@@ -262,15 +264,25 @@ public class ProposalMineController {
.desc(ProcessTask::getCreatedAt)); .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::getTaskName, "=", "second")
.and(ProcessTask::getTaskState, "in", List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) .and(ProcessTask::getTaskState, "in", List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode()))
.and(ProcessTask::getId, ">", inviteTask.getId()) .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()); 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() + "个附议人"); return Result.error("至少邀请" + proposalConfig.getSeconderNum() + "个附议人");
} }
@@ -91,6 +91,7 @@ module.exports = {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("设置成功") this.$message.success("设置成功")
this.dialogVisible = false this.dialogVisible = false
this.listOpinion()
} }
}) })
}, },
@@ -96,7 +96,7 @@ layout("/layouts/platform.html"){
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="基础类型备注" label-width="110px" prop="note"> <el-form-item label="基础类型备注" label-width="110px" prop="note">
<el-input maxlength="100" placeholder="请输入基础类型备注" type="textarea" v-model="formData.note"></el-input> <el-input maxlength="50" placeholder="请输入基础类型备注" type="textarea" v-model="formData.note"></el-input>
</el-form-item> </el-form-item>
</el-row> </el-row>
</el-form> </el-form>
@@ -71,7 +71,7 @@ layout("/layouts/platform.html"){
code="UserType"></dict-select> code="UserType"></dict-select>
</div>--> </div>-->
<el-button type="primary" size="small" icon="el-icon-printer" @click="exportExcel">导出会员名单</el-button> <!--<el-button type="primary" size="small" icon="el-icon-printer" @click="exportExcel">导出会员名单</el-button>-->
<el-popover <el-popover
placement="bottom" placement="bottom"
@@ -71,7 +71,7 @@ layout("/layouts/platform_h5.html"){
</van-form> </van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px"> <div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click="handleTaskAction(6)">退回</van-button> <van-button type="danger" block @click="handleTaskAction(6)">退回</van-button>
<van-button type="danger" block @click="handleTaskAction(20)">不同意</van-button> <van-button type="danger" block @click="handleTaskAction(2)">不同意</van-button>
<van-button type="primary" block @click="handleTaskAction(1)">同意</van-button> <van-button type="primary" block @click="handleTaskAction(1)">同意</van-button>
</div> </div>
</div> </div>
@@ -46,9 +46,7 @@ const todo = {
title="variable.instanceName"> title="variable.instanceName">
<template v-slot="{index,row}"> <template v-slot="{index,row}">
<table-column label="任务节点">{{row.taskName}}</table-column> <table-column label="任务节点">{{row.taskName}}</table-column>
<table-column label="流程分类">{{categoryOptions.find(item => item.id === row.category)?.name || <table-column label="流程分类">{{row.categoryName}}</table-column>
'未知分类'}}
</table-column>
<table-column label="申请人">{{row.variable?.initiatorName || '未知'}}</table-column> <table-column label="申请人">{{row.variable?.initiatorName || '未知'}}</table-column>
<table-column label="状态" v-if="activeTab === 'started'">{{processStatusMap[row.state]?.text || <table-column label="状态" v-if="activeTab === 'started'">{{processStatusMap[row.state]?.text ||
'未知状态'}} '未知状态'}}