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.google.common.collect.Lists;
|
||||
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.impl.interceptor.CommandContext;
|
||||
import org.flowable.engine.HistoryService;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||
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.FormRepositoryService;
|
||||
import org.flowable.form.api.FormService;
|
||||
@ -36,10 +39,12 @@ import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
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_START_TIME;
|
||||
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());
|
||||
|
||||
// 电子签名
|
||||
addSignature(returnVariables, (List<SignatureDTO>) processVariables.get(SIGNATURE_COLLECTION));
|
||||
addSignature(returnVariables, (List<SignatureDTO>) processVariables.get(SIGNATURE_COLLECTION), historicProcessInstance);
|
||||
|
||||
// 表单中的变量
|
||||
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));
|
||||
if (CollectionUtils.isEmpty(signatures)) {
|
||||
return;
|
||||
}
|
||||
signatures.forEach(sign -> {
|
||||
if (!Objects.equals(NODE_STARTER.getType(), sign.getActivityId())) {
|
||||
variables.add(VariableObjectDTO.builder()
|
||||
.key(sign.getActivityId())
|
||||
.desc(sign.getActivityName())
|
||||
.value(sign.getSignatures())
|
||||
.type(VariableObjectDTO.Type.signatureAndAdvice)
|
||||
.build());
|
||||
}
|
||||
|
||||
Process process = ProcessDefinitionUtil.getProcess(historicProcessInstance.getProcessDefinitionId());
|
||||
Map<String, FlowElement> bpmnElementMap = process.getFlowElements().stream().collect(Collectors.toMap(FlowElement::getId, Function.identity(), (s, t) -> s));
|
||||
|
||||
if (CollectionUtils.isEmpty(bpmnElementMap)) {
|
||||
return;
|
||||
}
|
||||
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 -> {
|
||||
List<SignatureDTO.SignDetail> signDetails = (List<SignatureDTO.SignDetail>) variableObjectDTO.getValue();
|
||||
log.info("getWpsReplaceVariables signDetails: {}", JSON.toJSONString(signDetails));
|
||||
if (!CollectionUtils.isEmpty(signDetails)) {
|
||||
SignatureDTO.SignDetail signDetail = signDetails.get(0);
|
||||
// if (!CollectionUtils.isEmpty(signDetails)) {
|
||||
SignatureDTO.SignDetail signDetail = CollectionUtils.isEmpty(signDetails) ? new SignatureDTO.SignDetail() : signDetails.get(0);
|
||||
signatureAndAdvices.add(VariableObjectDTO.builder()
|
||||
.key(variableObjectDTO.getKey() + "_approverName")
|
||||
.desc(variableObjectDTO.getDesc() + "姓名")
|
||||
@ -241,7 +241,7 @@ public class WpsUtil {
|
||||
.value(DateUtil.format(signDetail.getOperationTime(), "yyyy.MM.dd"))
|
||||
.type(VariableObjectDTO.Type.text)
|
||||
.build());
|
||||
}
|
||||
// }
|
||||
});
|
||||
wpsVariables.addAll(signatureAndAdvices);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user