From 038bd825bd0b89081c5ed0b7ba873411306d4307 Mon Sep 17 00:00:00 2001 From: hongqiwei <1143662660@qq.com> Date: Thu, 22 Oct 2026 11:42:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E5=8A=9E=E5=8A=9E=E7=90=86=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E8=A2=AB=E8=A6=86=E7=9B=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProposalUnderTakeInfoInterceptor.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalUnderTakeInfoInterceptor.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalUnderTakeInfoInterceptor.java index 57c7ac5..66b1169 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalUnderTakeInfoInterceptor.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalUnderTakeInfoInterceptor.java @@ -9,8 +9,10 @@ import com.budwk.app.flow.engine.util.FlowUtil; import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.entity.ProcessTaskActor; import com.budwk.app.zhgh.democratic.proposal.models.ProposalReplyUnit; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; import org.nutz.json.Json; import java.util.ArrayList; @@ -26,7 +28,13 @@ import java.util.Set; public class ProposalUnderTakeInfoInterceptor implements FlowInterceptor { private static final Set REPLY_TASK_NAMES = Set.of("master_reply", "slave_reply", "opinion_master_reply"); + /** + * 为本次流转涉及的答复任务补充承办单位信息,保留任务已保存的最新表单数据。 + * + * @param execution 当前 WF 执行上下文,包含提案业务编号、当前任务和本次新建任务 + */ @Override + @Aop(TransAop.READ_COMMITTED) public void intercept(Execution execution) { Dao dao = ServiceContext.find(Dao.class); @@ -53,7 +61,13 @@ public class ProposalUnderTakeInfoInterceptor implements FlowInterceptor { throw new BaseException("Proposal undertaking unit is empty, cannot write proposal undertaking unit info."); } - Dict variable = FlowUtil.variableToDict(task.getVariable()); + // 完成任务后,执行上下文中的任务仍可能保留提交前的变量。 + // 必须以数据库中已保存的最新变量补充单位信息,避免覆盖本次办理人和答复内容。 + ProcessTask savedTask = dao.fetch(ProcessTask.class, task.getId()); + if (savedTask == null) { + throw new BaseException("答复任务不存在,无法补充承办单位信息。"); + } + Dict variable = FlowUtil.variableToDict(savedTask.getVariable()); variable.set("underTakeName", replyUnit.getUnitName()); variable.set("underTakeId", replyUnit.getUnitId()); variable.set("underTakeIsMaster", replyUnit.getIsMaster());