package com.securitycontrol.entity.system.base.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.util.List;


/**
 * @author：cwchen
 * @date：2024-03-11-10:52
 * @version：1.0
 * @description：工程-vo
 */
@Data
public class ProVo {

    @ApiModelProperty(value = "工程ID")
    private String proId;

    @ApiModelProperty(value = "建管单位")
    private String org;

    @ApiModelProperty(value = "登录用户id")
    private Integer userId;

    @ApiModelProperty(value = "标段工程编码")
    @NotBlank(message = "标段工程编码不能为空", groups = {Query.class})
    @Length(max = 50, message = "标段工程编码字符长度不能超过50", groups = {Query.class})
    private String bidCode;

    @ApiModelProperty(value = "单项工程编码")
    @NotBlank(message = "单项工程编码不能为空", groups = {Query.class})
    @Length(max = 50, message = "单项工程编码字符长度不能超过50", groups = {Query.class})
    private String signCode;

    @ApiModelProperty(value = "工程编码")
    @NotBlank(message = "工程编码不能为空", groups = {Query.class})
    @Length(max = 50, message = "工程编码字符长度不能超过50", groups = {Query.class})
    private String proCode;

    @ApiModelProperty(value = "工程名称")
    @NotBlank(message = "工程名称不能为空", groups = {Query.class})
    @Length(max = 50, message = "工程名称字符长度不能超过50", groups = {Query.class})
    private String proName;

    @ApiModelProperty(value = "工程成本")
    @NotBlank(message = "工程成本不能为空", groups = {Query.class})
    @Length(max = 50, message = "工程成本字符长度不能超过50", groups = {Query.class})
    private String proCost;

    @ApiModelProperty(value = "施工单位")
    @NotBlank(message = "施工单位不能为空", groups = {Query.class})
    @Length(max = 30, message = "施工单位字符长度不能超过30", groups = {Query.class})
    private String sgUnit;

    @ApiModelProperty(value = "监理单位")
    @NotBlank(message = "监理单位不能为空", groups = {Query.class})
    @Length(max = 30, message = "监理单位字符长度不能超过30", groups = {Query.class})
    private String jlUnit;

    @ApiModelProperty(value = "工程类型")
    @NotBlank(message = "工程类型不能为空", groups = {Query.class})
    @Length(max = 10, message = "工程类型字符长度不能超过10", groups = {Query.class})
    private String proType;

    @ApiModelProperty(value = "工程规模")
    @NotBlank(message = "工程规模不能为空", groups = {Query.class})
    @Length(max = 300, message = "工程规模字符长度不能超过300", groups = {Query.class})
    private String proScale;

    @ApiModelProperty(value = "项目经理")
    @NotBlank(message = "项目经理不能为空", groups = {Query.class})
    @Length(max = 10, message = "项目经理字符长度不能超过10", groups = {Query.class})
    private String manager;

    @ApiModelProperty(value = "工程简介")
    @NotBlank(message = "工程简介不能为空", groups = {Query.class})
    private String proBrief;

    @ApiModelProperty(value = "当前工序")
    private String nowGx;

    @ApiModelProperty(value = "工程状态")
    @NotBlank(message = "工程状态不能为空", groups = {Query.class})
    @Length(max = 10, message = "工程状态字符长度不能超过10", groups = {Query.class})
    private String status;

    @ApiModelProperty(value = "计划开始时间")
    @NotBlank(message = "计划开始时间不能为空", groups = {Query.class})
    private String planStartTime;

    @ApiModelProperty(value = "计划结束时间")
    @NotBlank(message = "计划结束时间不能为空", groups = {Query.class})
    private String planEndTime;

    @ApiModelProperty(value = "实际开始时间")
    private String startTime;

    @ApiModelProperty(value = "实际竣工时间")
    private String endTime;

    @ApiModelProperty(value = "工程图片数量")
    private int proImgFileNum;

    @ApiModelProperty(value = "平面图数量")
    private int proFileNum;

    @ApiModelProperty(value = "0：设计，1：监理，2：施工，3：监理加施工")
    private String bidType;

    @ApiModelProperty(value = "施工项目经理")
    private String sgManage;

    @ApiModelProperty(value = "监理工程师")
    private String jlManage;

    @ApiModelProperty(value = "变电站类型包括:1 土建,2 电气,3 变电")
    private String subType;

    @ApiModelProperty(value = "投产时间")
    private String tcDate;

    @ApiModelProperty(value = "类型 1.新增 2.修改")
    private int type;

    @ApiModelProperty(value = "类型")
    private boolean flag;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private String delFiles;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<FileData> fileData;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<Integer> fileType;

    @Data
    public static class FileData{
        private String fileId;
        private String base64Url;
        private String fileSourceType;
    }

    /**
     * 查询条件限制
     */
    public interface Query {
    }
}
