package org.xyzh.api.bidding.vo;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xyzh.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import java.math.BigDecimal;
import java.util.Map;

/**
 * 项目统计VO
 * 用于前端展示项目统计数据
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "项目统计VO")
public class ProjectStatisticsVO extends BaseVO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "总项目数")
    private Long totalProjects;
    
    @Schema(description = "进行中的项目数")
    private Long ongoingProjects;
    
    @Schema(description = "已提交的项目数")
    private Long submittedProjects;
    
    @Schema(description = "已中标的项目数")
    private Long wonProjects;
    
    @Schema(description = "未中标的项目数")
    private Long lostProjects;
    
    @Schema(description = "中标率（百分比）")
    private BigDecimal winRate;
    
    @Schema(description = "即将截止的项目数（<3天）")
    private Long urgentProjects;
    
    @Schema(description = "总预算金额")
    private BigDecimal totalBudget;
    
    @Schema(description = "总中标金额")
    private BigDecimal totalWinningAmount;
    
    @Schema(description = "按状态分组统计")
    private Map<String, Long> projectsByStatus;
    
    @Schema(description = "按类型分组统计")
    private Map<String, Long> projectsByType;
    
    @Schema(description = "按行业分组统计")
    private Map<String, Long> projectsByIndustry;
    
    @Schema(description = "按月份分组统计（最近12个月）")
    private Map<String, Long> projectsByMonth;
    
    @Schema(description = "按负责人分组统计")
    private Map<String, Long> projectsByUser;
    
    @Schema(description = "平均项目周期（天）")
    private Integer avgProjectCycle;
    
    @Schema(description = "最近7天新增项目数")
    private Long recentNewProjects;
}
