yxk-20260728
改善提案 流程启动成功后,以提案名称写入运行时变量 title。 写入固定流程名称 flow_name=改善提案审批。 同步覆盖 bpm_biz_title 为 提案名称【改善提案审批】,修正启动时因表达式变量缺失产生的空标题。 启动前校验 proposal_name 非空。
This commit is contained in:
+13
@@ -17,9 +17,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.TaskService;
|
import org.flowable.engine.TaskService;
|
||||||
import org.flowable.task.api.Task;
|
import org.flowable.task.api.Task;
|
||||||
@@ -38,6 +40,7 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
|||||||
private static final String NORMAL_DEL_FLAG = "0";
|
private static final String NORMAL_DEL_FLAG = "0";
|
||||||
private static final String BPM_STATUS_DRAFT = "1";
|
private static final String BPM_STATUS_DRAFT = "1";
|
||||||
private static final String FLOW_CODE = "dev_improvement_proposal_001";
|
private static final String FLOW_CODE = "dev_improvement_proposal_001";
|
||||||
|
private static final String FLOW_NAME = "改善提案审批";
|
||||||
private static final String BPM_FORM_URL = "gh/improvementProposal/components/ImprovementProposalBPMForm";
|
private static final String BPM_FORM_URL = "gh/improvementProposal/components/ImprovementProposalBPMForm";
|
||||||
private static final String TASK_INITIAL_REVIEW = "Task_improve001";
|
private static final String TASK_INITIAL_REVIEW = "Task_improve001";
|
||||||
private static final String TASK_LEADER_AWARD = "Task_improve003";
|
private static final String TASK_LEADER_AWARD = "Task_improve003";
|
||||||
@@ -65,6 +68,9 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String startProcess(String id, String username) {
|
public String startProcess(String id, String username) {
|
||||||
ImprovementProposal proposal = getDraftProposalForUpdate(id);
|
ImprovementProposal proposal = getDraftProposalForUpdate(id);
|
||||||
|
if (oConvertUtils.isEmpty(proposal.getProposalName())) {
|
||||||
|
throw new IllegalStateException("提案名称不能为空,无法发起流程");
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
// 改善提案以自身主表 ID 作为流程业务键,不引入 task_task 的重复督办中间表。
|
// 改善提案以自身主表 ID 作为流程业务键,不引入 task_task 的重复督办中间表。
|
||||||
Result<String> result = bpmBaseExtApi.startMutilProcess(FLOW_CODE, proposal.getId(), BPM_FORM_URL, BPM_FORM_URL, username, null);
|
Result<String> result = bpmBaseExtApi.startMutilProcess(FLOW_CODE, proposal.getId(), BPM_FORM_URL, BPM_FORM_URL, username, null);
|
||||||
@@ -73,6 +79,13 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 流程引擎会按 BPM 配置将 bpm_status 回写为处理中;此处使用局部对象更新,避免旧实体的草稿状态将其覆盖。
|
// 流程引擎会按 BPM 配置将 bpm_status 回写为处理中;此处使用局部对象更新,避免旧实体的草稿状态将其覆盖。
|
||||||
|
// 主表没有 title、flow_name 字段,启动时标题表达式无法解析;在流程实例创建后立即补齐并覆盖空业务标题。
|
||||||
|
Map<String, Object> titleVariables = new HashMap<>(3);
|
||||||
|
titleVariables.put("title", proposal.getProposalName());
|
||||||
|
titleVariables.put("flow_name", FLOW_NAME);
|
||||||
|
titleVariables.put("bpm_biz_title", proposal.getProposalName() + "【" + FLOW_NAME + "】");
|
||||||
|
runtimeService.setVariables(result.getResult(), titleVariables);
|
||||||
|
|
||||||
ImprovementProposal processUpdate = new ImprovementProposal();
|
ImprovementProposal processUpdate = new ImprovementProposal();
|
||||||
processUpdate.setId(proposal.getId());
|
processUpdate.setId(proposal.getId());
|
||||||
processUpdate.setProcessInstanceId(result.getResult());
|
processUpdate.setProcessInstanceId(result.getResult());
|
||||||
|
|||||||
Reference in New Issue
Block a user