package com.gunshi.project.hsz.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.gunshi.core.dateformat.DateFormatString; import com.gunshi.project.hsz.validate.markers.Insert; import com.gunshi.project.hsz.validate.markers.Update; import com.ruoyi.common.annotation.Excel; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; import java.util.List; /** * Description: * Created by XuSan on 2024/9/23. * * @author XuSan * @version 1.0 */ @EqualsAndHashCode(callSuper = true) @Schema(description="培训计划表") @Accessors(chain = true) // chain = true 实现链式调用 @Data @TableName("public.personnel_plan") public class PersonnelPlan extends CommUpdate implements Serializable { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value="id", type= IdType.AUTO) @Schema(description="主键") @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 培训班名称 */ @Excel(name = "培训班名称",sort = 1) @TableField(value="name") @Schema(description="培训班名称") @Size(max = 30,message = "培训班名称最大长度要小于 30") @NotBlank(message = "培训班名称不能为空",groups = {Insert.class, Update.class}) private String name; /** * 培训主题分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他 */ @TableField(value="type") @Excel(name = "培训主题",sort = 2,readConverterExp = "1=水利,2=岗前培训,3=在岗培训,4=政治学习教育,5=其他") @Schema(description="培训主题分类,1:水利,2:岗前培训,3:在岗培训,4:政治学习教育,5:其他") @NotNull(message = "培训主题不能为空",groups = {Insert.class, Update.class}) @Pattern(regexp = "^[0-4]$", message = "培训主题分类应为:1:水利,2:岗前培训,3:在岗培训,4:政治学习教育,5:其他") private Integer type; /** * 主办单位 */ @Excel(name = "主办单位",sort = 5) @TableField(value="unit") @Schema(description="主办单位") @Size(max = 100,message = "主办单位最大长度要小于 100") @NotBlank(message = "主办单位不能为空",groups = {Insert.class, Update.class}) private String unit; /** * 开始培训时间 */ @Excel(name = "开始培训时间",sort = 3,dateFormat = DateFormatString.YYYY_MM_DD) @Schema(description="开始培训时间 格式:yyyy-MM-dd") @NotNull(message = "开始培训时间不能为空") @TableField(value="stm") @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") private Date stm; /** * 结束培训时间 */ @Excel(name = "结束培训时间",sort = 4,dateFormat = DateFormatString.YYYY_MM_DD) @Schema(description="结束培训时间 格式:yyyy-MM-dd") @NotNull(message = "结束培训时间不能为空") @TableField(value="etm") @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") private Date etm; /** * 培训天数(天) */ @Excel(name = "培训天数(天)",sort = 9) @Schema(description="培训天数(天)") @TableField(value="day") private Integer day; /** * 培训期数(期) */ @Excel(name = "培训期数(期)",sort = 8) @Schema(description="培训期数(期)") @TableField(value="num") private Integer num; /** * 培训地点 */ @Excel(name = "培训地点",sort = 7) @Schema(description="培训地点") @TableField(value="addr") @Size(max = 200,message = "主办单位最大长度要小于 200") @NotBlank(message = "培训地点不能为空",groups = {Insert.class, Update.class}) private String addr; /** * 培训内容 */ @Excel(name = "培训内容",sort = 6) @Schema(description="培训内容") @TableField(value="content") @Size(max = 500,message = "培训内容最大长度要小于 500") @NotBlank(message = "培训内容不能为空",groups = {Insert.class, Update.class}) private String content; /** * 培训范围 */ @Excel(name = "培训范围",sort = 10) @Schema(description="培训范围") @TableField(value="scope") @Size(max = 500,message = "培训范围最大长度要小于 500") @NotBlank(message = "培训范围不能为空",groups = {Insert.class, Update.class}) private String scope; /** * 参训人员 */ @Excel(name = "参训人员",sort = 11) @Schema(description="参训人员") @TableField(value="trainees") @Size(max = 200,message = "参训人员最大长度要小于 200") private String trainees; /** * 参训人数(人) */ @Excel(name = "参训人数(人)",sort = 12) @Schema(description="参训人数(人)") @TableField(value="num_people") @Size(max = 200,message = "参训人员最大长度要小于 200") @NotNull(message = "参训人数不能为空",groups = {Insert.class, Update.class}) private Integer numPeople; /** * 联系人 */ @Excel(name = "联系人",sort = 13) @Schema(description="联系人") @TableField(value="contacts") @Size(max = 50,message = "联系人最大长度要小于 50") private String contacts; /** * 联系电话 */ @Excel(name = "联系电话",sort = 14) @Schema(description="联系电话") @TableField(value="contact_number") @Size(max = 30,message = "联系电话最大长度要小于 30") private String contactNumber; /** * 填报人 */ @Schema(description="填报人") @TableField(value="applicant") @Size(max = 50,message = "填报人最大长度要小于 50") @Excel(name = "填报人",sort = 7) private String applicant; /** * 状态 */ @Schema(description="状态 0:无效 1:有效") @TableField(value="status") @Size(max = 2,message = "状态最大长度要小于 2") @NotNull(message = "状态不能为空",groups = {Insert.class, Update.class}) @Pattern(regexp = "^[0-1]$", message = "状态应为:0:无效 1:有效") private Integer status; /** * 登记日期 */ @Schema(description="登记日期") @TableField(value="reg_date") @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") private Date regDate; @TableField(exist = false) @Schema(description = "文件集合") private List files; }