package com.bonus.material.basic.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.bonus.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import com.bonus.common.core.web.domain.BaseEntity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

/**
 * 标段工程管理对象 bm_project
 * 
 * @author xsheng
 * @date 2024-09-26
 */


@Data
@ToString
public class BmProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**
     * 是否app 端(app采有非下拉树)
     */
    private Boolean isApp;

    /** 主键ID */
    private Long proId;

    /** 工程项目名称 */
    @Excel(name = "工程项目名称")
    @ApiModelProperty(value = "工程项目名称")
    @NotBlank(message = "工程名称不能为空")
    @Size(max=255, message = "工程名称长度不能超过255")
    private String proName;

    /** 关联外部(第三方)的工程ID */
    @ApiModelProperty(value = "关联外部(第三方)的工程ID")
    private String externalId;

    /** 外部(第三方)的工程详情json */
    @ApiModelProperty(value = "外部(第三方)的工程详情json")
    private String externalInfo;

    /** 工程类型(0线路,1变电,2业务，3其他) */
    @ApiModelProperty(value = "工程类型(0线路,1变电,2业务，3其他)")
    @NotBlank(message = "工程类型不能为空")
    private String proTypeId;

    @ApiModelProperty(value = "实施单位")
    @NotBlank(message = "实施单位不能为空")
    private String impUnit;

    @ApiModelProperty(value = "实施单位")
    @Excel(name = "实施单位")
    private String impUnitName;

    @ApiModelProperty(value = "工程类型")
    @Excel(name = "工程类型")
    private String proType;

    @ApiModelProperty(value = "工程编号")
    @Excel(name = "工程编号")
    @Size(max=60, message = "工程编号长度不能超过60")
    private String proCode;

    /**
     * 是否匹配i8工程
     */
    @ApiModelProperty(value = "是否匹配i8工程")
    @Excel(name = "是否匹配i8工程")
    private String isMatchI8;

    @ApiModelProperty(value = "合同主体")
    @Excel(name = "合同主体")
    @Size(max=60, message = "合同主体长度不能超过60")
    private String contractPart;

    /** 经度 */
    @ApiModelProperty(value = "经度")
    private String lon;

    /** 维度 */
    @ApiModelProperty(value = "维度")
    private String lat;

    /** 项目经理 */
    @Excel(name = "项目经理")
    @ApiModelProperty(value = "项目经理")
    @Size(max=64, message = "项目经理长度不能超过64")
    private String proManager;

    /** 联系电话 */
    @Excel(name = "联系电话")
    @ApiModelProperty(value = "联系电话")
    @Size(max=64, message = "联系电话长度不能超过64")
    private String telphone;

    @ApiModelProperty(value = "工程状态")
    @NotBlank(message = "工程状态不能为空")
    private String proStatus;

    @ApiModelProperty(value = "工程状态名称")
    @Excel(name = "工程状态")
    private String proStatusName;

    /** 计划开工日期 */
    @ApiModelProperty(value = "计划开工日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date planStartDate;

    /** 计划结束日期 */
    @ApiModelProperty(value = "计划结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date planEndDate;

    /** 实际开工日期 */
    @ApiModelProperty(value = "实际开工日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date actualStartDate;

    /** 实际完工日期 */
    @ApiModelProperty(value = "实际完工日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date actualEndDate;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    @ApiModelProperty(value = "工程性质")
    @NotBlank(message = "工程性质不能为空")
    private String proNature;

    @ApiModelProperty(value = "工程性质名称")
    private String proNatureName;

    @ApiModelProperty(value = "所属项目中心")
    @Size(max=60, message = "所属项目中心长度不能超过60")
    private String proCenter;

    @ApiModelProperty(value = "往来单位id")
    private Long unitId;
}
