From f06e0a4d5c45cc7c2be53ee60078373ca9f55463 Mon Sep 17 00:00:00 2001 From: FCL Date: Tue, 16 Dec 2025 16:11:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=8A=A5=E5=91=8A=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E4=BC=98=E5=8C=96=EF=BC=9B=E8=BD=ACpdf?= =?UTF-8?q?=EF=BC=9B=E5=8F=91=E8=B5=B7iwork=E6=B5=81=E7=A8=8B=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qms/listener/QmsExecutionListener.java | 22 +++++++-- .../service/qms/listener/QmsTaskListener.java | 47 +++++++++++++++++-- 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsExecutionListener.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsExecutionListener.java index 3b9ea74..9f247ea 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsExecutionListener.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsExecutionListener.java @@ -10,9 +10,11 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.flowable.bpmn.model.FieldExtension; import org.flowable.bpmn.model.FlowableListener; +import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.delegate.JavaDelegate; +import org.flowable.engine.history.HistoricActivityInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -33,14 +35,28 @@ public class QmsExecutionListener implements JavaDelegate { @Autowired private QmsApi qmsApi; @Resource private RuntimeService runtimeService; + @Resource private HistoryService historyService; @Override @Transactional(rollbackFor = Exception.class) public void execute(DelegateExecution execution) { - log.info("[QmsExecutionListener][execution({}) 被调用!变量有:{}]", execution.getId(), execution.getCurrentFlowableListener().getFieldExtensions()); - Map variables = execution.getVariables(); - JSONObject jsonObject = new JSONObject(variables); +// log.info("[QmsExecutionListener][execution({}) 被调用!变量有:{}]", execution.getId(), execution.getCurrentFlowableListener().getFieldExtensions()); String insId = execution.getProcessInstanceId(); + Map variables = execution.getVariables(); + String activityId = execution.getCurrentActivityId(); + + List instances = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(insId) + .activityId(activityId) + .orderByHistoricActivityInstanceStartTime().desc() + .list(); + String currentActivityInsId = ""; + if(instances != null && !instances.isEmpty()) + currentActivityInsId = instances.get(0).getId(); + variables.put("currentActivityInsId", currentActivityInsId); + variables.put("processInstanceId", insId); + JSONObject jsonObject = new JSONObject(variables); + log.error("============[QmsExecutionListener][execution({})] 参数有:{}", execution.getId(), JSONObject.toJSONString(variables)); String businessKey = execution.getProcessInstanceBusinessKey(); FlowableListener listener = execution.getCurrentFlowableListener(); List fieldExtensions = listener.getFieldExtensions(); //节点执行监听里配置的扩展字段 diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsTaskListener.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsTaskListener.java index d9e072c..c53559b 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsTaskListener.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/qms/listener/QmsTaskListener.java @@ -5,13 +5,18 @@ import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.qms.api.task.QmsApi; import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO; import com.zt.plat.module.qms.enums.ErrorCodeConstants; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.TaskListener; +import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.task.service.delegate.DelegateTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.List; import java.util.Map; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; @@ -23,21 +28,53 @@ import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.e @Component @Slf4j public class QmsTaskListener implements TaskListener { - @Autowired - private QmsApi qmsApi; + @Autowired private QmsApi qmsApi; + @Resource private RuntimeService runtimeService; + @Resource private HistoryService historyService; + + @Override @Transactional(rollbackFor = Exception.class) public void notify(DelegateTask delegateTask) { - log.info("[QmsTaskListener][delegateTask({})]", delegateTask); +// log.info("[QmsTaskListener][delegateTask({})]", delegateTask); String state = delegateTask.getState(); Map variables = delegateTask.getVariables(); + String processInsId = delegateTask.getProcessInstanceId(); + String activityId = delegateTask.getTaskDefinitionKey(); + String currentActivityInsId = ""; + List instances = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(processInsId) + .activityId(activityId) + .orderByHistoricActivityInstanceStartTime().desc() + .list(); + if(instances != null && !instances.isEmpty()) + currentActivityInsId = instances.get(0).getId(); + variables.put("currentActivityInsId", currentActivityInsId); + variables.put("processInstanceId", processInsId); + + String rejectToFirstActivity = checkFirstActivityReject(activityId, instances); + + //todo 判断退回 + Map execVariables = runtimeService.getVariables(delegateTask.getExecutionId()); + variables.put("rejectToFirstActivity", rejectToFirstActivity); + log.error("================[QmsTaskListener][delegateTask({})] 参数有:{}", delegateTask.getId(), JSONObject.toJSONString(variables)); JSONObject jsonObject = new JSONObject(variables); - String insId = delegateTask.getProcessInstanceId(); - QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(insId, "", jsonObject, state); + QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(processInsId, "", jsonObject, state); CommonResult result = qmsApi.bpmCallback(qmsBpmDTO); if (!result.isSuccess()) { log.error("[QmsExecutionListener][execution({}) 回调失败!错误码:{},错误信息:{}]", delegateTask.getId(), result.getCode(), result.getMsg()); throw exception0(ErrorCodeConstants.ERROR_CODE_MODULE_QMS_BPM, result.getMsg()); } } + + /* + * 判断是否退回发起节点 + * */ + private String checkFirstActivityReject(String activityId, List instances){ + if(!activityId.contains("001")) + return "0"; + if(instances == null || instances.isEmpty()) + return "0"; + return "1"; + } }