From 53bfc7f1cf048b5302b8b8b071ea3f54969bd208 Mon Sep 17 00:00:00 2001 From: hongqiwei <1143662660@qq.com> Date: Fri, 9 Oct 2026 10:09:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E6=A1=88=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tBranchUnionChairmanAssignmentHandler.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalApplicantBranchUnionChairmanAssignmentHandler.java diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalApplicantBranchUnionChairmanAssignmentHandler.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalApplicantBranchUnionChairmanAssignmentHandler.java new file mode 100644 index 0000000..0627140 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalApplicantBranchUnionChairmanAssignmentHandler.java @@ -0,0 +1,75 @@ +package com.budwk.app.zhgh.democratic.proposal.handler; + +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.exception.BaseException; +import com.budwk.app.flow.engine.AssignmentHandler; +import com.budwk.app.flow.engine.core.Execution; +import com.budwk.app.flow.engine.core.ServiceContext; +import com.budwk.app.flow.engine.model.TaskModel; +import com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.services.SysRoleService; +import com.budwk.app.sys.views.View_user; +import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; + +import java.util.List; + +/** + * 按提案申请人所属分工会分配主席审核人,不使用当前附议人的组织信息。 + */ +public class ProposalApplicantBranchUnionChairmanAssignmentHandler implements AssignmentHandler { + + /** + * 从流程业务编号定位提案申请人,再查询其所属分工会已启用的主席角色用户。 + * + * @param model 当前审核任务模型,无需额外配置人员参数 + * @param execution 流程执行上下文,流程实例的 businessNo 应为提案 ID + * @return 分工会主席用户 ID 列表;申请人或主席配置缺失时抛出业务异常 + */ + @Override + public List assign(TaskModel model, Execution execution) { + Dao dao = ServiceContext.find(Dao.class); + String proposalId = execution.getProcessInstance().getBusinessNo(); + ProposalInfo proposal = StrUtil.isBlank(proposalId) ? null : dao.fetch(ProposalInfo.class, proposalId); + if (proposal == null || StrUtil.isBlank(proposal.getCreateUserId())) { + throw new BaseException("提案申请人不存在,无法分配分工会主席审核人"); + } + + View_user applicant = dao.fetch(View_user.class, Cnd.where(View_user::getId, "=", proposal.getCreateUserId())); + if (applicant == null || StrUtil.isBlank(applicant.getUnionId())) { + throw new BaseException("提案申请人未设置所属分工会,无法分配主席审核人"); + } + + Sys_role chairmanRole = ServiceContext.find(SysRoleService.class) + .getByCode(RoleConstant.BRANCH_UNION_CHAIRMAN); + if (chairmanRole == null) { + throw new BaseException("分工会主席角色不存在,请联系校工会进行设置"); + } + List chairmanIds = dao.query(Sys_user_role.class, + Cnd.where(Sys_user_role::getRoleId, "=", chairmanRole.getId()) + .and(Sys_user_role::getUnionId, "=", applicant.getUnionId()) + .and(Sys_user_role::getEnable, "=", true)) + .stream() + .map(Sys_user_role::getUserId) + .filter(StrUtil::isNotBlank) + .distinct() + .toList(); + if (chairmanIds.isEmpty()) { + throw new BaseException("提案申请人所属分工会没有设置主席,请联系校工会进行设置"); + } + return chairmanIds; + } + + @Override + public String getMessage() { + return "提案申请人所属分工会主席"; + } + + @Override + public int getOrder() { + return 10; + } +}