feat(RDMP-3845) - 新增单选、复选的代码逻辑
This commit is contained in:
parent
4824a8a315
commit
464e94f368
@ -23,6 +23,8 @@ public enum FormInstanceRespCode implements IModuleRespCode {
|
||||
FORM_DATA_PARSE_ERROR_BY_IMAGE("008", "表单图片组件的数据解析异常"),
|
||||
FORM_DATA_PARSE_ERROR_BY_CUSTOM_COMPONENT("009", "表单自定义组件的数据解析异常"),
|
||||
FORM_DATA_PARSE_ERROR_BY_AMOUNT("010", "表单金额组件的数据解析异常"),
|
||||
FORM_DATA_PARSE_ERROR_BY_CHECKBOX("011", "表单复选框组件的数据解析异常"),
|
||||
FORM_DATA_PARSE_ERROR_BY_RADIO("012", "表单单选框组件的数据解析异常"),
|
||||
;
|
||||
|
||||
private final String code;
|
||||
|
||||
@ -46,6 +46,10 @@ public enum FormFieldTypeEnum {
|
||||
}),
|
||||
decimal("decimal", "小数", new TypeReference<Map<String, Object>>() {
|
||||
}),
|
||||
checkbox("checkbox", "复选框", new TypeReference<List<String>>() {
|
||||
}),
|
||||
radio("radio", "单选框", new TypeReference<String>() {
|
||||
})
|
||||
;
|
||||
|
||||
private final String type;
|
||||
|
||||
@ -27,6 +27,8 @@ import org.flowable.form.api.FormService;
|
||||
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.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
@ -42,6 +44,8 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.code.FormInstanceRespCode.FORM_DATA_PARSE_ERROR_BY_CHECKBOX;
|
||||
import static cn.axzo.workflow.common.code.FormInstanceRespCode.FORM_DATA_PARSE_ERROR_BY_RADIO;
|
||||
import static cn.axzo.workflow.common.code.FormModelRespCode.FORM_MODEL_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.BPM_MODEL_CATEGORY;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||
@ -75,7 +79,7 @@ public class CustomGetProcessInstanceVariablesToObjectCmd extends AbstractComman
|
||||
|
||||
private final String processInstanceId;
|
||||
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
|
||||
private static final List<String> SUPPORTED_FORM_TYPES = Lists.newArrayList("input", "date", "textarea", "image", "contacts", "amount", "decimal");
|
||||
private static final List<String> SUPPORTED_FORM_TYPES = Lists.newArrayList("input", "date", "textarea", "image", "contacts", "amount", "decimal", "checkbox", "radio");
|
||||
|
||||
public CustomGetProcessInstanceVariablesToObjectCmd(String processInstanceId) {
|
||||
this.processInstanceId = processInstanceId;
|
||||
@ -219,6 +223,39 @@ public class CustomGetProcessInstanceVariablesToObjectCmd extends AbstractComman
|
||||
.type(convert(field.getType()))
|
||||
.build());
|
||||
}
|
||||
} else if (Objects.equals(field.getType(), "checkbox")) {
|
||||
if (field instanceof OptionFormField) {
|
||||
OptionFormField optionField = (OptionFormField) field;
|
||||
if (StringUtils.hasText(fieldValue.toString())
|
||||
&& fieldValue.toString().startsWith("[")
|
||||
&& fieldValue.toString().endsWith("]")) {
|
||||
List<String> selectedOptions = JSON.parseArray((String) fieldValue, String.class);
|
||||
List<String> optionNames = optionField.getOptions().stream().filter(i -> selectedOptions.contains(i.getId())).map(Option::getName).collect(Collectors.toList());
|
||||
variables.add(VariableObjectDTO.builder()
|
||||
.key(field.getId())
|
||||
.desc(field.getName())
|
||||
.value(StringUtils.collectionToCommaDelimitedString(optionNames))
|
||||
.type(convert(field.getType()))
|
||||
.build());
|
||||
}
|
||||
} else {
|
||||
throw new WorkflowEngineException(FORM_DATA_PARSE_ERROR_BY_CHECKBOX);
|
||||
}
|
||||
} else if (Objects.equals(field.getType(), "radio")) {
|
||||
if (field instanceof OptionFormField) {
|
||||
OptionFormField optionField = (OptionFormField) field;
|
||||
if (StringUtils.hasText(fieldValue.toString())) {
|
||||
List<String> optionNames = optionField.getOptions().stream().filter(i -> Objects.equals(fieldValue, i.getId())).map(Option::getName).collect(Collectors.toList());
|
||||
variables.add(VariableObjectDTO.builder()
|
||||
.key(field.getId())
|
||||
.desc(field.getName())
|
||||
.value(StringUtils.collectionToCommaDelimitedString(optionNames))
|
||||
.type(convert(field.getType()))
|
||||
.build());
|
||||
}
|
||||
} else {
|
||||
throw new WorkflowEngineException(FORM_DATA_PARSE_ERROR_BY_RADIO);
|
||||
}
|
||||
} else {
|
||||
variables.add(VariableObjectDTO.builder()
|
||||
.key(field.getId())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user