package com.bonus.common.entity.bracelet.vo;

import com.bonus.common.security.utils.SecurityUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @className:TeamVo
 * @author:cwchen
 * @date:2024-07-16-10:45
 * @version:1.0
 * @description:班组-vo
 */
@Data
public class TeamVo {

    private Long teamId;

    /**
     * 班组名称
     */
    @NotBlank(message = "班组名称不能为空")
    @Length(max = 64, message = "班组名称字符长度不能超过64")
    private String teamName;

    @NotNull(message = "班组长ID不能为空")
    private Long teamLeaderId;

    /**
     * 班组长名称
     */
    @NotBlank(message = "班组长不能为空")
    @Length(max = 32, message = "班组长字符长度不能超过32")
    private String teamLeader;
    /**
     * 班组长手机号
     */
    @NotBlank(message = "班组长手机号不能为空")
    @Length(max = 20, message = "班组长手机号字符长度不能超过20")
    @Pattern(regexp = "(0|86|17951)?(13[0-9]|19[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}", message = "班组长手机号格式不正确")
    private String leaderPhone;
    /**
     * 所属项目
     */
    private String proName;
    /**
     * 班组成员(在施数量)
     */
    private int workNum;
    /**
     * 班组成员(未施数量)
     */
    private int notWorkNum;
    /**
     * 班组状态
     */
    private Integer teamStatus = 0;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime = new Date();
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private Date updateTime = new Date();
    /**
     * 解散时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date jsTime;

    /**
     * 创建人
     */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private Long createUser = SecurityUtils.getUserId();
    /**
     * 修改人
     */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private Long updateUser = SecurityUtils.getUserId();
    /**
     * 所属工程ID
     */
    @NotNull(message = "所属工程不能为空")
    private Long proId;

    /**
     * 已选中人员
     */
    List<Map<String,Object>> checkList;
    /**
     * 未选中人员
     */
    List<Map<String,Object>> unCheckList;

    /**
     * 选中人员数组
     */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private Long[] userIdArr;

}
