feat(REQ-3004) - 调整使用表单发起流程时,需要对附件类型做额外处理
This commit is contained in:
parent
d214e80e31
commit
50db7c9e3f
@ -0,0 +1,58 @@
|
||||
package cn.axzo.workflow.common.model.dto;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 上传附件字段类型
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024-11-22 14:48
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class UploadFieldDTO {
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
private String fileType;
|
||||
|
||||
/**
|
||||
* 文件 oss 的 key
|
||||
*/
|
||||
private String fileKey;
|
||||
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
|
||||
public String toSpecString() {
|
||||
return this.toString().replaceAll(",", "|");
|
||||
}
|
||||
|
||||
public static UploadFieldDTO toObject(String str) {
|
||||
str = str.trim().replaceAll("\\|",",");
|
||||
return JSON.parseObject(str, UploadFieldDTO.class);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
UploadFieldDTO dto = new UploadFieldDTO();
|
||||
dto.setFileName("文件 1");
|
||||
dto.setFileType(".xlxs");
|
||||
dto.setFileKey("123456");
|
||||
String string = dto.toSpecString();
|
||||
System.out.println("string = " + string);
|
||||
|
||||
UploadFieldDTO dto2 = UploadFieldDTO.toObject(string);
|
||||
System.out.println("dto2 = " + dto2);
|
||||
}
|
||||
}
|
||||
@ -8,6 +8,7 @@ import cn.axzo.workflow.common.enums.BpmnFlowNodeType;
|
||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.common.enums.WorkspaceType;
|
||||
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
|
||||
import cn.axzo.workflow.common.model.request.BpmnApproveConf;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonConf;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
|
||||
@ -61,6 +62,7 @@ import cn.axzo.workflow.core.service.converter.BpmnProcessInstancePageItemConver
|
||||
import cn.axzo.workflow.core.service.support.FlowNodeForecastService;
|
||||
import cn.axzo.workflow.core.service.support.ProcessGraphicService;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.google.common.collect.Lists;
|
||||
@ -96,6 +98,7 @@ import org.flowable.form.api.FormInfo;
|
||||
import org.flowable.spring.SpringProcessEngineConfiguration;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.flowable.variable.api.history.HistoricVariableInstance;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
@ -219,6 +222,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
private ExtAxProcessLogService processLogService;
|
||||
@Resource
|
||||
private ExtAxBpmnFormRelationService bpmnFormRelationService;
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
@Override
|
||||
public HistoricProcessInstance getProcessInstanceByBusinessKey(String businessKey, @Nullable String tenantId,
|
||||
@ -380,7 +385,14 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
} else {
|
||||
dto.getStartFormVariables().entrySet().forEach(e-> {
|
||||
if(e.getValue() instanceof Collection) {
|
||||
e.setValue(StringUtils.collectionToCommaDelimitedString((Collection) e.getValue()));
|
||||
List<String> convertUploads = ((Collection<?>) e.getValue()).stream().map(i -> {
|
||||
if(i instanceof String) {
|
||||
return UploadFieldDTO.toObject(String.valueOf(i)).toSpecString();
|
||||
}else {
|
||||
return objectMapper.convertValue(i, UploadFieldDTO.class).toSpecString();
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
e.setValue(StringUtils.collectionToCommaDelimitedString(convertUploads));
|
||||
}
|
||||
});
|
||||
instanceBuilder.startFormVariables(dto.getStartFormVariables())
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.workflow.form.service.converter;
|
||||
|
||||
import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
|
||||
import cn.axzo.workflow.common.model.request.form.definition.FormFieldDTO;
|
||||
import cn.axzo.workflow.common.model.response.form.instance.FormInstanceVO;
|
||||
import cn.axzo.workflow.common.model.response.form.model.FormModelVO;
|
||||
@ -7,6 +8,7 @@ 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.FormFieldTypes;
|
||||
import org.flowable.form.model.SimpleFormModel;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
@ -64,7 +66,7 @@ public interface FormInstanceConverter extends EntityConverter<FormInstanceVO, F
|
||||
formFieldDTO.setType(formField.getType());
|
||||
formFieldDTO.setId(formField.getId());
|
||||
formFieldDTO.setName(formField.getName());
|
||||
formFieldDTO.setValue(castList(formField.getValue()));
|
||||
formFieldDTO.setValue(castList(formField));
|
||||
formFieldDTO.setPlaceholder(formField.getPlaceholder());
|
||||
formFieldDTO.setParams(formField.getParams());
|
||||
if (formField instanceof FormContainer) {
|
||||
@ -75,7 +77,13 @@ public interface FormInstanceConverter extends EntityConverter<FormInstanceVO, F
|
||||
return formFieldDTO;
|
||||
}
|
||||
|
||||
default List<String> castList(Object value) {
|
||||
default List<String> castList(FormField field) {
|
||||
if (Objects.equals(field.getType(), FormFieldTypes.UPLOAD)) {
|
||||
return ((Collection<String>) field.getValue()).stream()
|
||||
.map(i -> UploadFieldDTO.toObject(i).toString())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
Object value = field.getValue();
|
||||
if (Objects.isNull(value) || value instanceof Collection) {
|
||||
return (List<String>) value;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user