package com.njcn.rdms.module.project.controller.admin.project.vo.project;

import com.njcn.rdms.module.project.controller.admin.common.vo.CurrentUserRoleVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 项目 Response VO")
@Data
public class ProjectRespVO {

    @Schema(description = "项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;
    @Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "CNPJ2026001")
    private String projectCode;
    @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "客户交付项目")
    private String projectName;
    @Schema(description = "项目类型字典值", requiredMode = Schema.RequiredMode.REQUIRED, example = "delivery")
    private String projectType;
    @Schema(description = "项目方向字典值", requiredMode = Schema.RequiredMode.REQUIRED, example = "direction_value")
    private String directionCode;
    @Schema(description = "所属项目集编号")
    private Long projectSetId;
    @Schema(description = "所属产品编号")
    private Long productId;
    @Schema(description = "所属产品名称", example = "统一交付平台")
    private String productName;
    @Schema(description = "所属产品版本编号")
    private Long productVersionId;
    @Schema(description = "项目负责人用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long managerUserId;
    @Schema(description = "项目负责人昵称", example = "张三")
    private String managerUserNickname;
    @Schema(description = "项目状态编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "pending")
    private String statusCode;
    @Schema(description = "计划开始日期")
    private LocalDate plannedStartDate;
    @Schema(description = "计划结束日期")
    private LocalDate plannedEndDate;
    @Schema(description = "实际开始日期")
    private LocalDate actualStartDate;
    @Schema(description = "实际结束日期")
    private LocalDate actualEndDate;
    @Schema(description = "项目进度缓存值")
    private BigDecimal progressRate;
    @Schema(description = "项目说明")
    private String projectDesc;
    @Schema(description = "最近一次状态动作原因")
    private String lastStatusReason;
    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime createTime;
    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime updateTime;
    @Schema(description = "当前登录用户在该项目担任的角色（无角色则为空数组）")
    private List<CurrentUserRoleVO> currentUserRoles;

}
