package com.microservices.pms.project.domain.vo;

import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.microservices.common.core.annotation.Excel;
import com.microservices.pms.product.domain.PmsProduct;
import com.microservices.system.api.domain.SimpleSysUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
@ApiModel("项目详情对象")
public class PmsProjectDetailVo {

    @ApiModelProperty(value = "项目ID")
    private Long id;

    @ApiModelProperty(value = "项目标识")
    private String projectIdentifier;

    @ApiModelProperty(value = "项目名称")
    private String projectName;

    @ApiModelProperty(value = "项目负责人")
    private Long projectAssigneeId;

    @ApiModelProperty(value = "所属企业ID")
    private Long pmsEnterpriseId;

    @ApiModelProperty(value = "所属产品ID")
    private Long pmsProductId;

    @ApiModelProperty(value = "所属产品")
    private PmsProduct pmsProduct;

    @ApiModelProperty(value = "项目简介")
    private String projectDescription;

    @ApiModelProperty(value = "状态 0关闭 1开启 2暂停")
    private String status;

    @ApiModelProperty(value = "项目开启时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    @ApiModelProperty(value = "项目截止时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    @ApiModelProperty(value = "是否置顶 0不置顶 1置顶")
    @Excel(name = "是否置顶 0不置顶 1置顶")
    private Integer isTop;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd  HH:mm:ss")
    private Date createTime;

    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd  HH:mm:ss")
    private Date updateTime;

    @ApiModelProperty(value = "是否删除")
    private Integer isDeleted;

    @ApiModelProperty(value = "项目成员数")
    private Integer projectMemberCount;

    @ApiModelProperty(value = "项目仓库数")
    private Integer projectRepositoryCount;

    @ApiModelProperty(value = "项目工作项数")
    private Integer projectIssuesCount;

    @ApiModelProperty(value = "项目负责人用户信息")
    private SimpleSysUser projectAssignee;

    @ApiModelProperty(value = "项目成员用户信息")
    private List<SimpleSysUser> projectMembers;

    @ApiModelProperty(value = "项目仓库信息")
    private JSONObject projectRepos;

    @ApiModelProperty(value = "项目公告id")
    private Long noticeId;
}
