Merge branch 'feature/RDMP-3845' into dev
This commit is contained in:
commit
cf118d42f6
@ -1,15 +1,19 @@
|
||||
package cn.axzo.workflow.form.service.converter;
|
||||
|
||||
import cn.axzo.workflow.common.model.request.form.definition.FormFieldDTO;
|
||||
import cn.axzo.workflow.common.model.request.form.definition.OptionDTO;
|
||||
import cn.axzo.workflow.common.model.response.form.instance.FormInstanceVO;
|
||||
import cn.axzo.workflow.common.model.response.form.model.FormModelVO;
|
||||
import org.flowable.form.api.FormInstanceInfo;
|
||||
import org.flowable.form.api.FormModel;
|
||||
import org.flowable.form.model.FormContainer;
|
||||
import org.flowable.form.model.FormField;
|
||||
import org.flowable.form.model.Option;
|
||||
import org.flowable.form.model.OptionFormField;
|
||||
import org.flowable.form.model.SimpleFormModel;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@ -64,6 +68,10 @@ public interface FormInstanceConverter extends EntityConverter<FormInstanceVO, F
|
||||
formFieldDTO.setValue(ConversionUtils.convertObject(formField.getValue()));
|
||||
formFieldDTO.setPlaceholder(formField.getPlaceholder());
|
||||
formFieldDTO.setParams(formField.getParams());
|
||||
if (formField instanceof OptionFormField) {
|
||||
OptionFormField optionFormField = (OptionFormField) formField;
|
||||
formFieldDTO.setOptions(optionsToOptionDTOs(optionFormField.getOptions()));
|
||||
}
|
||||
if (formField instanceof FormContainer) {
|
||||
FormContainer formContainer = (FormContainer) formField;
|
||||
formFieldDTO.setFieldType(formContainer.getClass().getSimpleName());
|
||||
@ -72,6 +80,19 @@ public interface FormInstanceConverter extends EntityConverter<FormInstanceVO, F
|
||||
return formFieldDTO;
|
||||
}
|
||||
|
||||
default List<OptionDTO> optionsToOptionDTOs(List<Option> options) {
|
||||
if (CollectionUtils.isEmpty(options)) {
|
||||
return null;
|
||||
}
|
||||
return options.stream()
|
||||
.map(option -> {
|
||||
OptionDTO optionDTO = new OptionDTO();
|
||||
optionDTO.setId(option.getId());
|
||||
optionDTO.setName(option.getName());
|
||||
return optionDTO;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 辅助方法,用于处理List<FormContainer>到List<FormFieldDTO>的转换,调用上面自定义的转换方法
|
||||
default List<FormFieldDTO> formContainersToFormFieldDTOs(List<FormField> formContainers) {
|
||||
|
||||
@ -69,6 +69,8 @@ import org.flowable.form.api.FormRepositoryService;
|
||||
import org.flowable.form.model.FormContainer;
|
||||
import org.flowable.form.model.FormField;
|
||||
import org.flowable.form.model.FormFieldTypes;
|
||||
import org.flowable.form.model.Option;
|
||||
import org.flowable.form.model.OptionFormField;
|
||||
import org.flowable.form.model.SimpleFormModel;
|
||||
import org.flowable.spring.SpringProcessEngineConfiguration;
|
||||
import org.slf4j.Logger;
|
||||
@ -422,7 +424,15 @@ public class PrintAdminController implements PrintAdminApi {
|
||||
if (!(value instanceof String)) {
|
||||
return;
|
||||
}
|
||||
if (((String) value).startsWith("[")) {
|
||||
|
||||
if (stringFormFieldMap.containsKey(key) && stringFormFieldMap.get(key) instanceof OptionFormField) {
|
||||
OptionFormField optionFormField = (OptionFormField) stringFormFieldMap.get(key);
|
||||
if (Objects.equals("checkbox", optionFormField.getType())) {
|
||||
result.put(key, buildOptionFieldValue(optionFormField, JSONObject.parseArray((String) value, String.class)));
|
||||
} else if (Objects.equals("radio", optionFormField.getType())) {
|
||||
result.put(key, buildOptionFieldValue(optionFormField, Lists.newArrayList((String) value)));
|
||||
}
|
||||
} else if (((String) value).startsWith("[")) {
|
||||
result.put(key, JSONArray.parseArray((String) value));
|
||||
} else if (((String) value).startsWith("{")) {
|
||||
result.put(key, JSONObject.parseObject((String) value));
|
||||
@ -430,6 +440,16 @@ public class PrintAdminController implements PrintAdminApi {
|
||||
});
|
||||
}
|
||||
|
||||
private String buildOptionFieldValue(OptionFormField optionFormField, List<String> selectedValues) {
|
||||
if (CollectionUtils.isEmpty(optionFormField.getOptions())) {
|
||||
return "";
|
||||
}
|
||||
return optionFormField.getOptions().stream()
|
||||
.filter(i -> selectedValues.contains(i.getId()))
|
||||
.map(Option::getName)
|
||||
.collect(Collectors.joining(","));
|
||||
}
|
||||
|
||||
private void generateSystemFieldVariables(String processInstanceId, Map<String, Object> result) {
|
||||
CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
|
||||
Map<String, Object> variables = commandExecutor.execute(new CustomGetProcessInstanceVariablesCmd(processInstanceId));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user