feat(REQ-3004) - 详细描述获取表单数据的 API
This commit is contained in:
parent
805ae9ae72
commit
1111b0c6ec
@ -3,10 +3,8 @@ package cn.axzo.workflow.client.feign.manage;
|
||||
import cn.axzo.workflow.client.annotation.WorkflowEngineFeignClient;
|
||||
import cn.axzo.workflow.common.annotation.InvokeMode;
|
||||
import cn.axzo.workflow.common.annotation.Manageable;
|
||||
import cn.axzo.workflow.common.model.request.form.definition.FormDefinitionSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.form.definition.StartFormSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.form.instance.FormDetailDTO;
|
||||
import cn.axzo.workflow.common.model.request.form.instance.FormInstanceSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.form.instance.FormSearchDTO;
|
||||
import cn.axzo.workflow.common.model.response.form.FormVO;
|
||||
import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO;
|
||||
@ -38,6 +36,15 @@ public interface FormInstanceApi {
|
||||
@InvokeMode(SYNC)
|
||||
CommonResponse<FormDefinitionVO> getFormDefinition(@Validated @RequestBody StartFormSearchDTO dto);
|
||||
|
||||
/**
|
||||
* 查询指定审批实例的表单模型和数据
|
||||
* <p>
|
||||
* dto 中的 processInstanceId 与 taskId,至少有一个属性有值,一般建议直接使用实例 ID。
|
||||
* 当传入 taskId 时,将只查询该任务绑定的表单模型和数据。
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/form/instance/render")
|
||||
@InvokeMode(SYNC)
|
||||
CommonResponse<FormInstanceVO> getFormInstance(@Validated @RequestBody FormDetailDTO dto);
|
||||
|
||||
@ -32,7 +32,8 @@ public class FormDetailDTO {
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 访问表单的人
|
||||
* 访问表单的人,该属性内部主要用于计算表单字段权限
|
||||
* 支持为 null,则表单所有字段默认全部隐藏
|
||||
*/
|
||||
@ApiModelProperty(value = "访问表单的人")
|
||||
private BpmnTaskDelegateAssigner assigner;
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
package cn.axzo.workflow.common.model.response.form.instance;
|
||||
|
||||
import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO;
|
||||
import cn.axzo.workflow.common.model.response.form.model.FormModelVO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
@ -16,16 +15,64 @@ import java.util.Date;
|
||||
@ApiModel("表单实例的响应模型")
|
||||
@Data
|
||||
public class FormInstanceVO {
|
||||
/**
|
||||
* 表单定义 ID
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 表单定义名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 表单唯一标识
|
||||
*/
|
||||
private String key;
|
||||
|
||||
/**
|
||||
* 表单定义版本
|
||||
*/
|
||||
private Integer version;
|
||||
|
||||
/**
|
||||
* 表单模型数据
|
||||
*/
|
||||
private FormModelVO formModel;
|
||||
|
||||
/**
|
||||
* 表单实例 ID
|
||||
*/
|
||||
private String formInstanceId;
|
||||
|
||||
/**
|
||||
* 表单数据操作人,格式:"ouId|personId"
|
||||
* 示例数据:"5144|43893"
|
||||
*/
|
||||
private String submittedBy;
|
||||
|
||||
/**
|
||||
* 表单提交时间
|
||||
*/
|
||||
private Date submittedDate;
|
||||
|
||||
/**
|
||||
* 这个表单数据关联的任务,如果是发起时提交的表单,则 taskId 为空
|
||||
*/
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 流程实例 ID
|
||||
*/
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 流程定义 ID
|
||||
*/
|
||||
private String processDefinitionId;
|
||||
|
||||
/**
|
||||
* 租户 ID
|
||||
*/
|
||||
private String tenantId;
|
||||
}
|
||||
|
||||
@ -15,9 +15,21 @@ import java.util.List;
|
||||
@ApiModel("表单模型响应模型")
|
||||
@Data
|
||||
public class FormModelVO {
|
||||
/**
|
||||
* 表单模型 ID
|
||||
*/
|
||||
private String id;
|
||||
/**
|
||||
* 表单模型名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 表单模型标识
|
||||
*/
|
||||
private String key;
|
||||
private Integer version;
|
||||
/**
|
||||
* 表单字段
|
||||
*/
|
||||
private List<FormFieldDTO> fields;
|
||||
}
|
||||
|
||||
@ -38,7 +38,6 @@ import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_ID_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TASK_COMPLETE_FAIL_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.common.code.FormInstanceRespCode.FORM_FIELD_NOT_FOUND;
|
||||
import static cn.axzo.workflow.common.code.FormInstanceRespCode.FORM_PARAM_ERROR;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FIELD_PROPERTY_DEFAULT_VALUE;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FIELD_PROPERTY_EDITABLE;
|
||||
@ -174,7 +173,7 @@ public class GetFormInstanceAndPermissionCmd implements Command<FormInstanceInfo
|
||||
// 默认全字段都是隐藏
|
||||
ExtAxProcessLog starterLog = logs.stream().filter(e -> Objects.equals(NODE_STARTER.getType(), e.getActivityId()))
|
||||
.findFirst().orElse(new ExtAxProcessLog());
|
||||
starterLog.getFormFieldPermissionConf().forEach(perm->{
|
||||
starterLog.getFormFieldPermissionConf().forEach(perm -> {
|
||||
// 防预编程, 强制设置为 hidden
|
||||
perm.setRequired(false);
|
||||
perm.setEditable(false);
|
||||
@ -198,6 +197,9 @@ public class GetFormInstanceAndPermissionCmd implements Command<FormInstanceInfo
|
||||
|
||||
private List<String> collectActivityIds(List<ExtAxProcessLog> logs) {
|
||||
List<String> activityIds = new ArrayList<>();
|
||||
if (Objects.isNull(assigner)) {
|
||||
return activityIds;
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(logs)) {
|
||||
Map<String, List<BpmnTaskDelegateAssigner>> nodeUserMap = rebuildToNodeUserMap(logs);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user