package cn.iocoder.yudao.module.bpm.controller.admin.business.vo;

import cn.iocoder.yudao.module.bpm.enums.BpmBusinessTypeEnum;
import cn.iocoder.yudao.module.system.api.bpm.vo.RelativesDO;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: jinyd
 * @CreateTime: 2024/8/12  11:32
 * @Description: 管理后台 - 老人申请退住 Request VO
 * @Version: 4.0
 */
@Schema(description = "管理后台 - 老人申请退住 Request VO")
@Data
public class BpmApplyRetreatCreateReqVO {

    @Schema(description = "退住记录id", example = "12122")
    private Long id;

    @Schema(description = "业务ID，老人退住申请记录id", example = "6489")
    private Long businessId;

    @Schema(description = "业务ID2", example = "6489")
    private Long businessId2;

    @Schema(description = "申请人的用户编号", example = "499")
    private Long userId;

    @Schema(description = "审批结果", example = "2")
    private Integer status;

    /**
     * * 关联 {@link BpmBusinessTypeEnum}
     */
    @Schema(description = "申请类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2-退住申请")
    @NotNull(message = "申请类型不能为空")
    private Integer type;

    @Schema(description = "流程实例的编号", example = "11303")
    private String processInstanceId;

    @Schema(description = "发起人自选审批人 Map", example = "{taskKey1: [1, 2]}")
    private Map<String, List<Long>> startUserSelectAssignees;


    @Schema(description = "老人id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "老人id不能为空")
    private Long elderlyId;

    @Schema(description = "退住日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-08-13")
    @NotNull(message = "退住日期不能为空")
    private LocalDate retreatDate;

    @Schema(description = "费用截止日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-08-13")
    @NotNull(message = "费用截止日期不能为空")
    private LocalDate costDeadlineDate;

    @Schema(description = "床位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private String bedName;

    @Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private String reason;

    @Schema(description = "描述",  example = "1")
    private String description;

    private Long tenantId;

    private Integer orgType;

}