feat:报告流程回调优化;转pdf;发起iwork流程;
This commit is contained in:
@@ -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(); //节点执行监听里配置的扩展字段
|
||||||
|
|||||||
@@ -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";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user