!63 fix(bpm): 修复节点默认审批意见 MyBatis 查询缺失列,补充条件变量原始字段返回

* fix(bpm): 修复节点默认审批意见 MyBatis 查询缺失列,补充条件变量原始字段返回
* feat(bpm): 流程节点支持配置默认审批意见,按条件变量动态选择
This commit is contained in:
wsm
2026-07-01 11:05:50 +00:00
parent a062f22aab
commit d6baa52d9f
7 changed files with 55 additions and 8 deletions
@@ -0,0 +1,8 @@
-- 流程节点增加默认审批意见字段(双意见 + 条件变量)
ALTER TABLE `ext_act_process_node` ADD COLUMN `default_opinion` varchar(500) NULL COMMENT '默认审批意见(条件变量=0时)' AFTER `allow_counter_sign_add_user`;
ALTER TABLE `ext_act_process_node` ADD COLUMN `default_opinion2` varchar(500) NULL COMMENT '默认审批意见(条件变量=1时)' AFTER `default_opinion`;
ALTER TABLE `ext_act_process_node` ADD COLUMN `default_opinion_var` varchar(100) NULL COMMENT '条件变量名' AFTER `default_opinion2`;
ALTER TABLE `ext_act_process_node_deploy` ADD COLUMN `default_opinion` varchar(500) NULL COMMENT '默认审批意见(条件变量=0时)' AFTER `msg_status`;
ALTER TABLE `ext_act_process_node_deploy` ADD COLUMN `default_opinion2` varchar(500) NULL COMMENT '默认审批意见(条件变量=1时)' AFTER `default_opinion`;
ALTER TABLE `ext_act_process_node_deploy` ADD COLUMN `default_opinion_var` varchar(100) NULL COMMENT '条件变量名' AFTER `default_opinion2`;
@@ -340,6 +340,21 @@ public class ActTaskController {
map.put("rejectStatus", extActProcessNode.getRejectStatus());
//是否允许转办 1是0否
map.put("transferStatus", extActProcessNode.getTransferStatus());
//默认审批意见 — 根据条件变量选择
// 未填流程变量名 或 流程变量未找到时,默认使用 默认审批意见(变量=0)
String defaultOpinion = extActProcessNode.getDefaultOpinion();
String opinionVar = extActProcessNode.getDefaultOpinionVar();
if (oConvertUtils.isNotEmpty(opinionVar)) {
Object varValue = runtimeService.getVariable(task.getProcessInstanceId(), opinionVar);
if (varValue != null && "1".equals(String.valueOf(varValue))) {
defaultOpinion = extActProcessNode.getDefaultOpinion2();
}
}
map.put("defaultOpinion", defaultOpinion);
// 返回条件变量的 raw 值,供前端结合表单变量做二次解析 (extraVars > vars)
map.put("defaultOpinionVar", extActProcessNode.getDefaultOpinionVar());
map.put("defaultOpinionCond0", extActProcessNode.getDefaultOpinion());
map.put("defaultOpinionCond1", extActProcessNode.getDefaultOpinion2());
}
//--update--end------author:scott-----date:20220705-----for:【VUEN-1332】流程节点配置智能化-------------
@@ -56,6 +56,12 @@ public class ExtActProcessNode implements Serializable {
private String rejectStatus;
/**会签节点是否允许加人0否 1允许*/
private String allowCounterSignAddUser;
/**默认审批意见(条件变量=0)*/
private String defaultOpinion;
/**默认审批意见(条件变量=1)*/
private String defaultOpinion2;
/**条件变量名*/
private String defaultOpinionVar;
//--update--end------author:scott-----date:20220705-----for:【VUEN-1332】流程节点配置智能化---------------
//--update--begin------ author: scott---date:20220908-----for: 节点扩展配置(存邮件\系统消息\钉钉推送的配置)---
@@ -51,6 +51,12 @@ public class ExtActProcessNodeDeployment implements Serializable {
private String selnextUserStatus;
/**是否支持消息通知1是0否*/
private String msgStatus;
/**默认审批意见(条件变量=0)*/
private String defaultOpinion;
/**默认审批意见(条件变量=1)*/
private String defaultOpinion2;
/**条件变量名*/
private String defaultOpinionVar;
//--update--end------author:scott-----date:20220705-----for:【VUEN-1332】流程节点配置智能化---------------
//--update--begin------ author: scott---date:20220908-----for: 节点扩展配置(存邮件\系统消息\钉钉推送的配置)---
@@ -14,9 +14,9 @@
<result column="node_bpm_status" property="nodeBpmStatus" jdbcType="VARCHAR"/>
<result column="node_config_json" property="nodeConfigJson" jdbcType="VARCHAR"/>
</resultMap>
<select id="queryByNodeCodeAndProcessKey" resultMap="ExtActProcessNode">
SELECT
SELECT
eapn.id
,eapn.form_id
,eapn.process_id
@@ -35,6 +35,9 @@
,eapn.add_sign_status
,eapn.reject_status
,eapn.allow_counter_sign_add_user
,eapn.default_opinion
,eapn.default_opinion2
,eapn.default_opinion_var
FROM ext_act_process_node eapn,
ext_act_process eap
WHERE eapn.process_id = eap.id
@@ -48,15 +51,15 @@
SELECT v.NAME_ AS name,
v.TEXT_ AS val
FROM ACT_RU_VARIABLE v
WHERE v.TYPE_ != 'serializable'
AND v.TYPE_ != 'bpmnParallelMultiInstanceCompleted'
WHERE v.TYPE_ != 'serializable'
AND v.TYPE_ != 'bpmnParallelMultiInstanceCompleted'
AND v.TEXT_ is not null
AND v.PROC_INST_ID_ = #{processId}
</select>
<!-- 查询流程的所有节点 -->
<select id="queryAllNodesByProcessKey" resultMap="ExtActProcessNode">
SELECT
SELECT
eapn.id
,eapn.form_id
,eapn.process_id
@@ -75,6 +78,9 @@
,eapn.add_sign_status
,eapn.reject_status
,eapn.allow_counter_sign_add_user
,eapn.default_opinion
,eapn.default_opinion2
,eapn.default_opinion_var
FROM ext_act_process_node eapn,
ext_act_process eap
WHERE eapn.process_id = eap.id
@@ -204,6 +204,9 @@ public class ExtActProcessServiceImpl extends ServiceImpl<ExtActProcessMapper, E
processnodeDeployment.setProcessId(node.getProcessId());
processnodeDeployment.setProcessNodeCode(node.getProcessNodeCode());
processnodeDeployment.setProcessNodeName(node.getProcessNodeName());
processnodeDeployment.setDefaultOpinion(node.getDefaultOpinion());
processnodeDeployment.setDefaultOpinion2(node.getDefaultOpinion2());
processnodeDeployment.setDefaultOpinionVar(node.getDefaultOpinionVar());
extActProcessNodeDeploymentMapper.insert(processnodeDeployment);
}
}
@@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import java.util.Objects;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.common.system.vo.SelectTreeModel;
@@ -72,8 +73,10 @@ public class BgXiSpeakServiceImpl extends ServiceImpl<BgXiSpeakMapper, BgXiSpeak
}
String old_pid = entity.getPid();
String new_pid = bgXiSpeak.getPid();
if(!old_pid.equals(new_pid)) {
updateOldParentNode(old_pid);
if(!Objects.equals(old_pid, new_pid)) {
if (old_pid != null) {
updateOldParentNode(old_pid);
}
if(oConvertUtils.isEmpty(new_pid)){
bgXiSpeak.setPid(IBgXiSpeakService.ROOT_PID_VALUE);
}