feat:报告流程回调优化;转pdf;发起iwork流程;

This commit is contained in:
FCL
2025-12-16 16:11:09 +08:00
parent 39ff226c9b
commit f06e0a4d5c
2 changed files with 61 additions and 8 deletions

View File

@@ -10,9 +10,11 @@ import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.FieldExtension; import org.flowable.bpmn.model.FieldExtension;
import org.flowable.bpmn.model.FlowableListener; import org.flowable.bpmn.model.FlowableListener;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService; import org.flowable.engine.RuntimeService;
import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate; import org.flowable.engine.delegate.JavaDelegate;
import org.flowable.engine.history.HistoricActivityInstance;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -33,14 +35,28 @@ public class QmsExecutionListener implements JavaDelegate {
@Autowired @Autowired
private QmsApi qmsApi; private QmsApi qmsApi;
@Resource private RuntimeService runtimeService; @Resource private RuntimeService runtimeService;
@Resource private HistoryService historyService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void execute(DelegateExecution execution) { public void execute(DelegateExecution execution) {
log.info("[QmsExecutionListener][execution({}) 被调用!变量有:{}]", execution.getId(), execution.getCurrentFlowableListener().getFieldExtensions()); // log.info("[QmsExecutionListener][execution({}) 被调用!变量有:{}]", execution.getId(), execution.getCurrentFlowableListener().getFieldExtensions());
Map<String, Object> variables = execution.getVariables();
JSONObject jsonObject = new JSONObject(variables);
String insId = execution.getProcessInstanceId(); String insId = execution.getProcessInstanceId();
Map<String, Object> variables = execution.getVariables();
String activityId = execution.getCurrentActivityId();
List<HistoricActivityInstance> 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(); String businessKey = execution.getProcessInstanceBusinessKey();
FlowableListener listener = execution.getCurrentFlowableListener(); FlowableListener listener = execution.getCurrentFlowableListener();
List<FieldExtension> fieldExtensions = listener.getFieldExtensions(); //节点执行监听里配置的扩展字段 List<FieldExtension> fieldExtensions = listener.getFieldExtensions(); //节点执行监听里配置的扩展字段

View File

@@ -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.QmsApi;
import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO; import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO;
import com.zt.plat.module.qms.enums.ErrorCodeConstants; import com.zt.plat.module.qms.enums.ErrorCodeConstants;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; 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.delegate.TaskListener;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.task.service.delegate.DelegateTask; import org.flowable.task.service.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map; import java.util.Map;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; 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 @Component
@Slf4j @Slf4j
public class QmsTaskListener implements TaskListener { public class QmsTaskListener implements TaskListener {
@Autowired @Autowired private QmsApi qmsApi;
private QmsApi qmsApi; @Resource private RuntimeService runtimeService;
@Resource private HistoryService historyService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void notify(DelegateTask delegateTask) { public void notify(DelegateTask delegateTask) {
log.info("[QmsTaskListener][delegateTask({})]", delegateTask); // log.info("[QmsTaskListener][delegateTask({})]", delegateTask);
String state = delegateTask.getState(); String state = delegateTask.getState();
Map<String, Object> variables = delegateTask.getVariables(); Map<String, Object> variables = delegateTask.getVariables();
String processInsId = delegateTask.getProcessInstanceId();
String activityId = delegateTask.getTaskDefinitionKey();
String currentActivityInsId = "";
List<HistoricActivityInstance> 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<String, Object> execVariables = runtimeService.getVariables(delegateTask.getExecutionId());
variables.put("rejectToFirstActivity", rejectToFirstActivity);
log.error("================[QmsTaskListener][delegateTask({})] 参数有:{}", delegateTask.getId(), JSONObject.toJSONString(variables));
JSONObject jsonObject = new JSONObject(variables); JSONObject jsonObject = new JSONObject(variables);
String insId = delegateTask.getProcessInstanceId(); QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(processInsId, "", jsonObject, state);
QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(insId, "", jsonObject, state);
CommonResult<JSONObject> result = qmsApi.bpmCallback(qmsBpmDTO); CommonResult<JSONObject> result = qmsApi.bpmCallback(qmsBpmDTO);
if (!result.isSuccess()) { if (!result.isSuccess()) {
log.error("[QmsExecutionListener][execution({}) 回调失败!错误码:{},错误信息:{}]", delegateTask.getId(), result.getCode(), result.getMsg()); log.error("[QmsExecutionListener][execution({}) 回调失败!错误码:{},错误信息:{}]", delegateTask.getId(), result.getCode(), result.getMsg());
throw exception0(ErrorCodeConstants.ERROR_CODE_MODULE_QMS_BPM, result.getMsg()); throw exception0(ErrorCodeConstants.ERROR_CODE_MODULE_QMS_BPM, result.getMsg());
} }
} }
/*
* 判断是否退回发起节点
* */
private String checkFirstActivityReject(String activityId, List<HistoricActivityInstance> instances){
if(!activityId.contains("001"))
return "0";
if(instances == null || instances.isEmpty())
return "0";
return "1";
}
} }