package cn.iocoder.yudao.module.system.dal.dataobject.biz;


import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.*;
import java.util.*;
import java.time.LocalDateTime;
import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.*;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;

/**
 * 月度活动 DO
 *
 * @author 系统管理员
 */
@TableName(value = "elderly_monthly_activity",autoResultMap = true)
@KeySequence("elderly_monthly_activity_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MonthlyActivityDO {

    /**
     * 活动ID
     */
    @TableId
    private Long activityId;
    /**
     * 活动类型
     */
    @Schema(description = "活动类型")
    private String activityType;
    /**
     * 活动日期
     */
    @Schema(description = "活动日期")
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
    private LocalDate activityDate;
    /**
     * 活动开始时间
     */
    @Schema(description = "活动开始时间")
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
    private Date activityStartTime;
    /**
     * 活动结束时间
     */
    @Schema(description = "活动结束时间")
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
    private Date activityEndTime;
    /**
     * 活动人数
     */
    @Schema(description = "number")
    private Integer number;
    /**
     * 报名开始时间
     */
    @Schema(description = "报名开始时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
    private Date registrationStartTime;
    /**
     * 报名结束时间
     */
    @Schema(description = "报名结束时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
    private Date registrationEndTime;
    /**
     * 活动主题
     */
    @Schema(description = "活动主题")
    private String activityTitle;
    /**
     * 活动场景
     */
    @Schema(description = "活动场景")
    private String activityScene;
    /**
     * 活动地址
     */
    @Schema(description = "活动地址")
    private String activityAddress;
    /**
     * 活动金额
     */
    @Schema(description = "活动金额")
    private BigDecimal amount;
    /**
     * 活动主管ID
     */
    @Schema(description = "活动主管ID")
    private String supervisorId;
    /**
     * 活动主管姓名
     */
    @Schema(description = "活动主管姓名")
    private String supervisorName;
    /**
     * 协助人ID
     */
    @Schema(description = "协助人ID")
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<String> assistantId;
    /**
     * 协助人姓名
     */
    @Schema(description = "协助人姓名")
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<String> assistantName;
    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remarks;
    /**
     * 创建人
     */
    private String createdBy;
    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime createdTime;
    /**
     * 活动状态
     */
    @Schema(description = "活动状态，0.未开始 1.进行中  2. 已结束 3.已取消")
    private Integer status;


    @TableField(exist = false)
    @Schema(description = "报名人数")
    private Integer registrationsNum;


    private Long tenantId;

    private Integer orgType;

    @TableField(exist = false)
    private String tenantName;

}