package com.qmth.distributed.print.business.bean.flow;

import com.qmth.distributed.print.business.enums.*;
import com.qmth.teachcloud.common.enums.TFCustomModelTypeEnum;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.List;

/**
 * @Description: 自定义流程节点变量 dto
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2022/2/10
 */
public class CustomFlowVarDto implements Serializable {

    @ApiModelProperty(value = "流程节点变量")
    String flowTaskVar;

    @ApiModelProperty(value = "审批人id")
    List<String> approveIds;

    @ApiModelProperty(value = "流程模式")
    TFCustomModelTypeEnum modelType;

    @ApiModelProperty(value = "属性")
    CustomFlowApproveUserTypeEnum approveUserType;

    @ApiModelProperty(value = "自定义流程审核类型")
    CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType;

    @ApiModelProperty(value = "自定义流程驳回类型")
    CustomFlowRejectTypeEnum rejectType;

    @ApiModelProperty(value = "自定义流程驳回重新提交类型")
    CustomFlowRejectResubmitTypeEnum rejectResubmitType;

    @ApiModelProperty(value = "审批人姓名")
    String approveUserNames;

    @ApiModelProperty(value = "抄送人id")
    List<String> copyForUserIds;

    @ApiModelProperty(value = "抄送人姓名")
    String copyForUserNames;

    @ApiModelProperty(value = "审批角色ids")
    List<String> approveRoleIds;

    @ApiModelProperty(value = "发起人指定审批角色ids")
    List<String> approveUserSelectRolesIds;

    @ApiModelProperty(value = "自定义流程发起人指定选择人数")
    CustomFlowApproveUserCountTypeEnum approveUserCountType;

    @ApiModelProperty(value = "自定义流程发起人指定选择用户类型")
    CustomFlowApproveUserSelectRangeEnum approveUserSelectRange;

    public CustomFlowVarDto() {

    }

    public CustomFlowVarDto(String flowTaskVar) {
        this.flowTaskVar = flowTaskVar;
    }

    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds, List<String> copyForUserIds, String copyForUserNames, List<String> approveRoleIds, List<String> approveUserSelectRolesIds, CustomFlowApproveUserCountTypeEnum approveUserCountType, CustomFlowApproveUserSelectRangeEnum approveUserSelectRange, TFCustomModelTypeEnum modelType) {
        this.flowTaskVar = flowTaskVar;
        this.approveIds = approveIds;
        this.copyForUserIds = copyForUserIds;
        this.copyForUserNames = copyForUserNames;
        this.approveRoleIds = approveRoleIds;
        this.approveUserSelectRolesIds = approveUserSelectRolesIds;
        this.approveUserCountType = approveUserCountType;
        this.approveUserSelectRange = approveUserSelectRange;
        this.modelType = modelType;
    }

    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds, String approveUserNames, List<String> copyForUserIds, String copyForUserNames, List<String> approveRoleIds, List<String> approveUserSelectRolesIds, CustomFlowApproveUserCountTypeEnum approveUserCountType, CustomFlowApproveUserSelectRangeEnum approveUserSelectRange, TFCustomModelTypeEnum modelType) {
        this.flowTaskVar = flowTaskVar;
        this.approveIds = approveIds;
        this.approveUserNames = approveUserNames;
        this.copyForUserIds = copyForUserIds;
        this.copyForUserNames = copyForUserNames;
        this.approveRoleIds = approveRoleIds;
        this.approveUserSelectRolesIds = approveUserSelectRolesIds;
        this.approveUserCountType = approveUserCountType;
        this.approveUserSelectRange = approveUserSelectRange;
        this.modelType = modelType;
    }

    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds,
                            CustomFlowApproveUserTypeEnum approveUserType,
                            CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType,
                            CustomFlowRejectTypeEnum rejectType,
                            CustomFlowRejectResubmitTypeEnum rejectResubmitType,
                            String approveUserNames,
                            List<String> copyForUserIds,
                            String copyForUserNames,
                            List<String> approveRoleIds,
                            List<String> approveUserSelectRolesIds,
                            CustomFlowApproveUserCountTypeEnum approveUserCountType,
                            CustomFlowApproveUserSelectRangeEnum approveUserSelectRange,
                            TFCustomModelTypeEnum modelType) {
        this.flowTaskVar = flowTaskVar;
        this.approveIds = approveIds;
        this.approveUserType = approveUserType;
        this.multipleUserApproveType = multipleUserApproveType;
        this.rejectType = rejectType;
        this.rejectResubmitType = rejectResubmitType;
        this.approveUserNames = approveUserNames;
        this.copyForUserIds = copyForUserIds;
        this.copyForUserNames = copyForUserNames;
        this.approveRoleIds = approveRoleIds;
        this.approveUserSelectRolesIds = approveUserSelectRolesIds;
        this.approveUserCountType = approveUserCountType;
        this.approveUserSelectRange = approveUserSelectRange;
        this.modelType = modelType;
    }

    public TFCustomModelTypeEnum getModelType() {
        return modelType;
    }

    public void setModelType(TFCustomModelTypeEnum modelType) {
        this.modelType = modelType;
    }

    public CustomFlowApproveUserCountTypeEnum getApproveUserCountType() {
        return approveUserCountType;
    }

    public void setApproveUserCountType(CustomFlowApproveUserCountTypeEnum approveUserCountType) {
        this.approveUserCountType = approveUserCountType;
    }

    public CustomFlowApproveUserSelectRangeEnum getApproveUserSelectRange() {
        return approveUserSelectRange;
    }

    public void setApproveUserSelectRange(CustomFlowApproveUserSelectRangeEnum approveUserSelectRange) {
        this.approveUserSelectRange = approveUserSelectRange;
    }

    public List<String> getApproveUserSelectRolesIds() {
        return approveUserSelectRolesIds;
    }

    public void setApproveUserSelectRolesIds(List<String> approveUserSelectRolesIds) {
        this.approveUserSelectRolesIds = approveUserSelectRolesIds;
    }

    public List<String> getApproveRoleIds() {
        return approveRoleIds;
    }

    public void setApproveRoleIds(List<String> approveRoleIds) {
        this.approveRoleIds = approveRoleIds;
    }

    public List<String> getCopyForUserIds() {
        return copyForUserIds;
    }

    public void setCopyForUserIds(List<String> copyForUserIds) {
        this.copyForUserIds = copyForUserIds;
    }

    public String getCopyForUserNames() {
        return copyForUserNames;
    }

    public void setCopyForUserNames(String copyForUserNames) {
        this.copyForUserNames = copyForUserNames;
    }

    public String getApproveUserNames() {
        return approveUserNames;
    }

    public void setApproveUserNames(String approveUserNames) {
        this.approveUserNames = approveUserNames;
    }

    public CustomFlowApproveUserTypeEnum getApproveUserType() {
        return approveUserType;
    }

    public void setApproveUserType(CustomFlowApproveUserTypeEnum approveUserType) {
        this.approveUserType = approveUserType;
    }

    public CustomFlowMultipleUserApproveTypeEnum getMultipleUserApproveType() {
        return multipleUserApproveType;
    }

    public void setMultipleUserApproveType(CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType) {
        this.multipleUserApproveType = multipleUserApproveType;
    }

    public CustomFlowRejectTypeEnum getRejectType() {
        return rejectType;
    }

    public void setRejectType(CustomFlowRejectTypeEnum rejectType) {
        this.rejectType = rejectType;
    }

    public CustomFlowRejectResubmitTypeEnum getRejectResubmitType() {
        return rejectResubmitType;
    }

    public void setRejectResubmitType(CustomFlowRejectResubmitTypeEnum rejectResubmitType) {
        this.rejectResubmitType = rejectResubmitType;
    }

    public String getFlowTaskVar() {
        return flowTaskVar;
    }

    public void setFlowTaskVar(String flowTaskVar) {
        this.flowTaskVar = flowTaskVar;
    }

    public List<String> getApproveIds() {
        return approveIds;
    }

    public void setApproveIds(List<String> approveIds) {
        this.approveIds = approveIds;
    }
}
