package org.hzhub.workflow.domain.bo;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 提交企业微信审批申请参数
 *
 * @author hzhub
 */
@Data
public class WecomApprovalSubmitBo {

    /** 申请人企业微信userid */
    @NotBlank(message = "申请人不能为空")
    private String creatorUserid;

    /** 审批模板ID */
    @NotBlank(message = "模板ID不能为空")
    private String templateId;

    /** 是否使用模板默认审批人: 0=自定义审批人 1=使用模板默认 */
    private Integer useTemplateApprover;

    /** 审批人节点列表 */
    private List<ApproverNode> approver;

    /** 抄送人列表 */
    private List<String> notifyer;

    /** 抄送时机: 1=提交时 2=审批通过后 */
    private Integer notifyType;

    /** 表单数据 */
    @NotNull(message = "表单数据不能为空")
    private List<ApprovalContent> contents;

    /** 审批摘要 */
    private String summary;

    /** 请假类型 */
    private Integer vacationType;

    /** 请假时长(小时) */
    private Integer duration;

    @Data
    public static class ApproverNode {
        /** 审批方式: 1=或签 2=会签 */
        private Integer attr;
        /** 审批人userid列表 */
        private List<String> userid;
    }

    @Data
    public static class ApprovalContent {
        /** 控件类型: Text/Textarea/Number/Money/Date/Selector等 */
        private String control;
        /** 控件ID */
        private String id;
        /** 控件标题 */
        private List<MultiLangText> title;
        /** 控件值 */
        private Map<String, Object> value;
    }

    @Data
    public static class MultiLangText {
        private String text;
        private String lang;
    }
}
