Merge branch 'feature/REQ-5965' into pre
This commit is contained in:
commit
e7eca766b6
@ -15,12 +15,15 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
|
import org.flowable.bpmn.model.Process;
|
||||||
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
|
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
|
||||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||||
import org.flowable.engine.HistoryService;
|
import org.flowable.engine.HistoryService;
|
||||||
import org.flowable.engine.history.HistoricProcessInstance;
|
import org.flowable.engine.history.HistoricProcessInstance;
|
||||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||||
|
import org.flowable.engine.impl.util.ProcessDefinitionUtil;
|
||||||
import org.flowable.form.api.FormInfo;
|
import org.flowable.form.api.FormInfo;
|
||||||
import org.flowable.form.api.FormRepositoryService;
|
import org.flowable.form.api.FormRepositoryService;
|
||||||
import org.flowable.form.api.FormService;
|
import org.flowable.form.api.FormService;
|
||||||
@ -36,10 +39,12 @@ import java.io.Serializable;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.axzo.workflow.common.code.FormModelRespCode.FORM_MODEL_NOT_EXISTS;
|
import static cn.axzo.workflow.common.code.FormModelRespCode.FORM_MODEL_NOT_EXISTS;
|
||||||
@ -57,7 +62,6 @@ import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCE
|
|||||||
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INSTANCE_ID_DESC;
|
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INSTANCE_ID_DESC;
|
||||||
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_START_TIME;
|
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_START_TIME;
|
||||||
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_START_TIME_DESC;
|
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_START_TIME_DESC;
|
||||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义获取流程实例中的变量命令实现
|
* 自定义获取流程实例中的变量命令实现
|
||||||
@ -130,7 +134,7 @@ public class CustomGetProcessInstanceVariablesToObjectCmd extends AbstractComman
|
|||||||
.build());
|
.build());
|
||||||
|
|
||||||
// 电子签名
|
// 电子签名
|
||||||
addSignature(returnVariables, (List<SignatureDTO>) processVariables.get(SIGNATURE_COLLECTION));
|
addSignature(returnVariables, (List<SignatureDTO>) processVariables.get(SIGNATURE_COLLECTION), historicProcessInstance);
|
||||||
|
|
||||||
// 表单中的变量
|
// 表单中的变量
|
||||||
addFormFieldValue(commandContext, historicProcessInstance, returnVariables, processVariables);
|
addFormFieldValue(commandContext, historicProcessInstance, returnVariables, processVariables);
|
||||||
@ -241,20 +245,28 @@ public class CustomGetProcessInstanceVariablesToObjectCmd extends AbstractComman
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addSignature(List<VariableObjectDTO> variables, List<SignatureDTO> signatures) {
|
private void addSignature(List<VariableObjectDTO> variables, List<SignatureDTO> signatures, HistoricProcessInstance historicProcessInstance) {
|
||||||
log.info("addSignature:{}", JSON.toJSONString(signatures));
|
log.info("addSignature:{}", JSON.toJSONString(signatures));
|
||||||
if (CollectionUtils.isEmpty(signatures)) {
|
if (CollectionUtils.isEmpty(signatures)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
signatures.forEach(sign -> {
|
|
||||||
if (!Objects.equals(NODE_STARTER.getType(), sign.getActivityId())) {
|
Process process = ProcessDefinitionUtil.getProcess(historicProcessInstance.getProcessDefinitionId());
|
||||||
variables.add(VariableObjectDTO.builder()
|
Map<String, FlowElement> bpmnElementMap = process.getFlowElements().stream().collect(Collectors.toMap(FlowElement::getId, Function.identity(), (s, t) -> s));
|
||||||
.key(sign.getActivityId())
|
|
||||||
.desc(sign.getActivityName())
|
if (CollectionUtils.isEmpty(bpmnElementMap)) {
|
||||||
.value(sign.getSignatures())
|
return;
|
||||||
.type(VariableObjectDTO.Type.signatureAndAdvice)
|
}
|
||||||
.build());
|
Map<String, SignatureDTO> signMap = signatures.stream().collect(Collectors.toMap(SignatureDTO::getActivityId, Function.identity(), (s, t) -> s));
|
||||||
}
|
|
||||||
|
bpmnElementMap.forEach((k, v) -> {
|
||||||
|
SignatureDTO sign = signMap.getOrDefault(k, null);
|
||||||
|
variables.add(VariableObjectDTO.builder()
|
||||||
|
.key(Objects.nonNull(sign) ? sign.getActivityId() : v.getId())
|
||||||
|
.desc(Objects.nonNull(sign) ? sign.getActivityName() : v.getName())
|
||||||
|
.value(Objects.nonNull(sign) ? sign.getSignatures() : Collections.emptyList())
|
||||||
|
.type(VariableObjectDTO.Type.signatureAndAdvice)
|
||||||
|
.build());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -206,8 +206,8 @@ public class WpsUtil {
|
|||||||
wpsVariables.stream().filter(i -> Objects.equals(signatureAndAdvice, i.getType())).forEach(variableObjectDTO -> {
|
wpsVariables.stream().filter(i -> Objects.equals(signatureAndAdvice, i.getType())).forEach(variableObjectDTO -> {
|
||||||
List<SignatureDTO.SignDetail> signDetails = (List<SignatureDTO.SignDetail>) variableObjectDTO.getValue();
|
List<SignatureDTO.SignDetail> signDetails = (List<SignatureDTO.SignDetail>) variableObjectDTO.getValue();
|
||||||
log.info("getWpsReplaceVariables signDetails: {}", JSON.toJSONString(signDetails));
|
log.info("getWpsReplaceVariables signDetails: {}", JSON.toJSONString(signDetails));
|
||||||
if (!CollectionUtils.isEmpty(signDetails)) {
|
// if (!CollectionUtils.isEmpty(signDetails)) {
|
||||||
SignatureDTO.SignDetail signDetail = signDetails.get(0);
|
SignatureDTO.SignDetail signDetail = CollectionUtils.isEmpty(signDetails) ? new SignatureDTO.SignDetail() : signDetails.get(0);
|
||||||
signatureAndAdvices.add(VariableObjectDTO.builder()
|
signatureAndAdvices.add(VariableObjectDTO.builder()
|
||||||
.key(variableObjectDTO.getKey() + "_approverName")
|
.key(variableObjectDTO.getKey() + "_approverName")
|
||||||
.desc(variableObjectDTO.getDesc() + "姓名")
|
.desc(variableObjectDTO.getDesc() + "姓名")
|
||||||
@ -241,7 +241,7 @@ public class WpsUtil {
|
|||||||
.value(DateUtil.format(signDetail.getOperationTime(), "yyyy.MM.dd"))
|
.value(DateUtil.format(signDetail.getOperationTime(), "yyyy.MM.dd"))
|
||||||
.type(VariableObjectDTO.Type.text)
|
.type(VariableObjectDTO.Type.text)
|
||||||
.build());
|
.build());
|
||||||
}
|
// }
|
||||||
});
|
});
|
||||||
wpsVariables.addAll(signatureAndAdvices);
|
wpsVariables.addAll(signatureAndAdvices);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user