diff --git a/pom.xml b/pom.xml index 18b5f7e..4a045c7 100644 --- a/pom.xml +++ b/pom.xml @@ -269,7 +269,14 @@ qsj + dev + + 172.16.46.63:30848 qsj + DEFAULT_GROUP + nacos + P@ssword25 + 1.0.0 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..748a941 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..c9d609d 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"; + } } diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/resources/logback-spring.xml b/zt-module-bpm/zt-module-bpm-server/src/main/resources/logback-spring.xml index 0e55141..590fafc 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/resources/logback-spring.xml +++ b/zt-module-bpm/zt-module-bpm-server/src/main/resources/logback-spring.xml @@ -5,6 +5,10 @@ + + + +       @@ -56,18 +60,43 @@ + + + ${LOG_DIR}-error.log + + ERROR + ACCEPT + DENY + + + ${LOG_DIR}-error.%d{yyyy-MM-dd}.log + 30 + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + - - + + + + + + + + +