diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/listener/DqInspectTaskStageIncrementListener.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/listener/DqInspectTaskStageIncrementListener.java new file mode 100644 index 0000000..59e60e7 --- /dev/null +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/listener/DqInspectTaskStageIncrementListener.java @@ -0,0 +1,52 @@ +package org.jeecg.inspectimprove.listener; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.ExecutionListener; +import org.jeecg.inspectimprove.InspectImproveConfig; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; +import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 流程结束时将 DqInspectTask.completedStage 原子递增 1 + * + *
配置方式:在 BPMN 流程定义的 end 事件上添加 ExecutionListener, + * event="end",delegateExpression="${DqInspectTaskStageIncrementListener}"
+ */ +@Slf4j +@Component("DqInspectTaskStageIncrementListener") +@RequiredArgsConstructor +public class DqInspectTaskStageIncrementListener implements ExecutionListener { + + private static final long serialVersionUID = 1L; + + private final InspectImproveConfig inspectImproveConfig; + private final IDqInspectTaskService dqInspectTaskService; + + @Override + public void notify(DelegateExecution execution) { + Object businessKeyObj = execution.getVariable(inspectImproveConfig.getInspectImprove().getBusinessKey()); + if (businessKeyObj == null || StringUtils.isBlank(businessKeyObj.toString())) { + log.warn("【巡视整改-阶段递增监听器】未获取到业务表单ID,跳过, processInstanceId: {}", + execution.getProcessInstanceId()); + return; + } + + String businessKey = businessKeyObj.toString(); + boolean updated = dqInspectTaskService.lambdaUpdate() + .setSql("completed_stage = completed_stage + 1") + .eq(DqInspectTask::getId, businessKey) + .update(); + + if (updated) { + log.info("【巡视整改-阶段递增监听器】completedStage 已递增, businessKey: {}, processInstanceId: {}", + businessKey, execution.getProcessInstanceId()); + } else { + log.warn("【巡视整改-阶段递增监听器】递增未影响任何行,可能记录已删除, businessKey: {}", businessKey); + } + } +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java index 6e90f33..847a94b 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java @@ -146,6 +146,9 @@ public class DqInspectTask implements Serializable { @Dict(dicCode = "super_status") @Schema(description = "流程状态") private java.lang.String bpmStatus; + /**已完成阶段数(初始0,每完成一个流程+1,第n个流程要求该字段为n-1才可发起)*/ + @Schema(description = "已完成阶段数") + private java.lang.Integer completedStage = 0; /**整改状态*/ @Excel(name = "整改状态", width = 15) @ExcelColumn(name = "整改状态", width = 15) diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml index 2b15231..069acf9 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml @@ -29,6 +29,7 @@ t.bpm_process_id as bpmProcessId, t.bpm_status as bpmStatus, t.task_status as taskStatus, + t.completed_stage as completedStage, t.supervise_count as superviseCount, t.sort_no as sortNo, t.create_time as createTime @@ -57,6 +58,9 @@