This commit is contained in:
=
2026-05-19 14:54:33 +08:00
parent e82322685d
commit 118374c749
3 changed files with 80 additions and 4 deletions
@@ -191,7 +191,7 @@ public class ProposalPositiveSecondedController {
}
@At
@SaCheckPermission(value = {"proposal.seconded", "h5.proposal.seconded"}, mode = SaMode.OR)
@SaCheckPermission(value = {"proposal.seconded", "h5.proposal.seconded", "proposal.schoolLeaderApproval", "h5.proposal.schoolLeaderApproval"}, mode = SaMode.OR)
public Result listPositiveSeconded(String bizId) {
List<ProposalSecond> list = dao.query(ProposalSecond.class, Cnd.where(ProposalSecond::getProposalId, "=", bizId).and(ProposalSecond::getMode, "=", false));
return Result.success(list);
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.democratic.proposal.interceptor;
import cn.hutool.core.lang.Dict;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.flow.engine.FlowInterceptor;
import com.budwk.app.flow.engine.core.Execution;
import com.budwk.app.flow.engine.core.ServiceContext;
@@ -12,13 +13,19 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.json.Json;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 提案承办单位答复任务设置信息拦截器
* 承办单位名称、ID、是否主办等信息
*/
public class ProposalUnderTakeInfoInterceptor implements FlowInterceptor {
private static final Set<String> REPLY_TASK_NAMES = Set.of("master_reply", "slave_reply", "opinion_master_reply");
@Override
public void intercept(Execution execution) {
Dao dao = ServiceContext.find(Dao.class);
@@ -26,20 +33,41 @@ public class ProposalUnderTakeInfoInterceptor implements FlowInterceptor {
// 提案ID
String proposalId = execution.getProcessInstance().getBusinessNo();
// 当前任务
List<ProcessTask> processTaskList = execution.getProcessTaskList();
// Include the current completed reply task and any reply tasks created by this transition.
Map<Long, ProcessTask> processTaskMap = new LinkedHashMap<>();
addReplyTask(processTaskMap, execution.getProcessTask());
for (ProcessTask task : execution.getProcessTaskList()) {
addReplyTask(processTaskMap, task);
}
for (ProcessTask task : processTaskList) {
List<ProcessTask> updateTaskList = new ArrayList<>();
for (ProcessTask task : processTaskMap.values()) {
// 办理人
ProcessTaskActor taskActor = dao.fetch(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "=", task.getId()));
if (taskActor == null) {
throw new BaseException("Task actor is empty, cannot write proposal undertaking unit info.");
}
String actorUnitId = taskActor.getActorUnitId();
ProposalReplyUnit replyUnit = dao.fetch(ProposalReplyUnit.class, Cnd.where(ProposalReplyUnit::getProposalId, "=", proposalId).and(ProposalReplyUnit::getUnitId, "=", actorUnitId));
if (replyUnit == null) {
throw new BaseException("Proposal undertaking unit is empty, cannot write proposal undertaking unit info.");
}
Dict variable = FlowUtil.variableToDict(task.getVariable());
variable.set("underTakeName", replyUnit.getUnitName());
variable.set("underTakeId", replyUnit.getUnitId());
variable.set("underTakeIsMaster", replyUnit.getIsMaster());
task.setVariable(Json.toJson(variable));
updateTaskList.add(task);
}
if (!updateTaskList.isEmpty()) {
dao.update(updateTaskList, "variable");
}
}
private void addReplyTask(Map<Long, ProcessTask> processTaskMap, ProcessTask task) {
if (task != null && REPLY_TASK_NAMES.contains(task.getTaskName())) {
processTaskMap.put(task.getId(), task);
}
dao.update(processTaskList,"variable");
}
}
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.democratic.proposal.service.common;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -23,6 +24,7 @@ import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.sys.services.SysDictService;
import com.budwk.app.sys.services.SysRoleService;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.web.commons.base.Globals;
import com.budwk.app.zhgh.democratic.proposal.models.ProposalConsolidation;
@@ -210,6 +212,51 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl<ProposalInfo> imp
List<ProcessTask> doneTaskList = flowEngine.processTaskService().getDoneTaskList(processInstance.getId(), null);
for (ProcessTask doneTask : doneTaskList) {
ProcessTaskVO taskVO = flowEngine.processTaskService().findById(doneTask.getId());
String taskName = taskVO.getTaskName();
// 模板按当前 JDHTA_NC 节点名称展示,按任务编码处理可兼容历史提案中已保存的旧节点显示名称。
if ("startTask".equals(taskName)) {
taskVO.setDisplayName("撰写提案");
} else if ("invite".equals(taskName)) {
taskVO.setDisplayName("邀请附议人");
} else if ("second".equals(taskName)) {
taskVO.setDisplayName("提案附议");
} else if ("delegation".equals(taskName)) {
taskVO.setDisplayName("团长审核");
} else if ("committee_member_review".equals(taskName)) {
taskVO.setDisplayName("提案委委员审议");
} else if ("committee".equals(taskName)) {
taskVO.setDisplayName("提案委主任意见");
} else if ("school_leader_instruction".equals(taskName)) {
taskVO.setDisplayName("分管校领导批示");
} else if ("master_reply".equals(taskName) || "opinion_master_reply".equals(taskName)) {
taskVO.setDisplayName("主办单位答复");
} else if ("slave_reply".equals(taskName)) {
taskVO.setDisplayName("协办单位答复");
} else if ("committee_director_opinion".equals(taskName)) {
taskVO.setDisplayName("提案委主任审核");
} else if ("school_leader".equals(taskName)) {
taskVO.setDisplayName("分管校领导审核");
} else if ("feedback".equals(taskName)) {
taskVO.setDisplayName("反馈评价");
Dict variable = FlowUtil.variableToDict(taskVO.getVariable());
String feedback = variable.getStr(FlowConst.TASK_FORM_DATA_PREFIX + "feedback");
variable.put(FlowConst.TASK_FORM_DATA_PREFIX + "feedback_name", feedBackMap.getOrDefault(feedback, feedback));
taskVO.setVariable(Json.toJson(variable));
}
if ("second".equals(taskName) || "committee_member_review".equals(taskName)) {
Dict variable = FlowUtil.variableToDict(taskVO.getVariable());
View_user user = null;
if (StrUtil.isNotBlank(taskVO.getOperator())) {
user = dao().fetch(View_user.class, Cnd.where(View_user::getId, "=", taskVO.getOperator()));
}
if (user == null && StrUtil.isNotBlank(variable.getStr(FlowConst.TASK_FORM_DATA_PREFIX + "loginName"))) {
user = dao().fetch(View_user.class, Cnd.where(View_user::getLoginname, "=", variable.getStr(FlowConst.TASK_FORM_DATA_PREFIX + "loginName")));
}
if (user != null && StrUtil.isNotBlank(user.getUnitName())) {
variable.put(FlowConst.TASK_FORM_DATA_PREFIX + "unitName", user.getUnitName());
taskVO.setVariable(Json.toJson(variable));
}
}
doneTaskVos.add(taskVO);
}
@@ -224,6 +271,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl<ProposalInfo> imp
Configure config = Configure.builder()
.bind("seconders", policy)
.bind("提案附议", policy)
.bind("提案委委员审议", policy)
.bind("brief", htmlRenderPolicy)
.bind("measures", htmlRenderPolicy)
.bind("taskFormData.tf_opinion", htmlRenderPolicy)