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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.microservices.common.core.utils.bean.BeanUtils;
import com.microservices.pms.product.domain.PmsProductRequirement;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

/**
 * 产品需求对象 pms_product_requirement
 * 
 * @author otto
 * @date 2023-10-10
 */
@Data
@ApiModel("产品需求更新对象")
public class PmsProductRequirementUpdateVo
{
    /** 需求Id */
    @ApiModelProperty(value = "需求Id")
    @NotNull
    private Long id;
    /** 标题 */
    @ApiModelProperty(value = "标题")
    @Size(max = 50, message = "长度需要小于50")
    private String title;

    /** 关联优先级ID */
    @ApiModelProperty(value = "关联优先级ID")
    private Long priorityId;

    /** 关联产品模块ID */
    @ApiModelProperty(value = "关联产品模块ID")
    private Long pmsProductModuleId;

    /** 关联产品计划ID */
    @ApiModelProperty(value = "关联产品计划ID")
    private Long pmsProductPlanId;

    /** 正文 */
    @ApiModelProperty(value = "正文")
    private String content;

    /**
     * 标记Id列表，使用逗号分割的字符串
     */
    @ApiModelProperty(value = "标记Id列表，使用逗号分割的字符串")
    private String tags;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "开始时间")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "结束时间")
    private Date endTime;

    /**
     * 附件标识列表
     */
    @ApiModelProperty(value = "附件标识列表")
    private String fileIdentifiers;

    /**
     * 需求负责人Gitlink ID列表（逗号分隔）
     */
    @ApiModelProperty(value = "需求负责人Gitlink ID列表（逗号分隔）")
    private String requirementAssigneeGitlinkIds;

    /** 关联项目ID */
    @ApiModelProperty(value = "关联项目ID")
    private Long pmsProjectId;

    public PmsProductRequirement toPmsProductRequirement(){
        PmsProductRequirement target = new PmsProductRequirement();
        BeanUtils.copyProperties(this, target);
        return target;
    }
}
