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.PmsProduct;
import com.microservices.pms.product.domain.PmsProductModule;
import com.microservices.pms.product.domain.PmsProductPlan;
import com.microservices.pms.project.domain.vo.BaseEntityVo;
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;

/**
 * 产品需求对象 pms_product_requirement
 * 
 * @author otto
 * @date 2023-10-10
 */
@Data
@ApiModel("产品需求数据对象")
public class PmsProductRequirementDataVo extends BaseEntityVo
{
    /** 需求标识 */
    @ApiModelProperty(value = "需求标识")
    private Long id;

    /** 索引 */
    @ApiModelProperty(value = "索引")
    private Long index;

    /** 标题 */
    @ApiModelProperty(value = "标题")
    private String title;

    /** 关联优先级 */
    @ApiModelProperty(value = "关联优先级")
    private PmsTypeDataVo priority;

    /** 关联状态 */
    @ApiModelProperty(value = "关联状态")
    private PmsTypeDataVo status;

    /** 关联产品模块 */
    @ApiModelProperty(value = "关联产品模块")
    private PmsProductModule pmsProductModule;

    /** 关联产品 */
    @ApiModelProperty(value = "关联产品")
    private PmsProduct pmsProduct;

    /**
     * 关联产品计划
     */
    @ApiModelProperty(value = "关联产品计划")
    private PmsProductPlan pmsProductPlan;

    /** 标记名称，使用逗号分割的字符 */
    @ApiModelProperty(value = "标记名称，使用逗号分割的字符")
    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 List<SimpleSysUser> requirementAssigneeList;

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


    /**
     * 创建者
     */
    @ApiModelProperty(value = "创建者")
    private SimpleSysUser createByUser;
    /**
     * 更新者
     */
    @ApiModelProperty(value = "更新者")
    private SimpleSysUser updateByUser;

    public PmsProductRequirementDetailVo toPmsProductRequirementDetailVo(){
        PmsProductRequirementDetailVo target = new PmsProductRequirementDetailVo();
        BeanUtils.copyProperties(this, target);
        return target;
    }
}
