package cn.iocoder.yudao.module.srm.controller.admin.statistics.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * 采购成本分析 Response VO。 * *

数据来源:SRM 招标物料需求(数量、预估单价)+ 供应商报价(含税单价、税率)。 * 不依赖 ERP 采购订单,适用于未启用 ERP 的项目。 */ @Schema(description = "管理后台 - 采购成本分析 Response VO") @Data public class SrmCostAnalysisRespVO { @Schema(description = "物料编号") private Long productId; @Schema(description = "物料编码") private String productCode; @Schema(description = "物料名称") private String productName; @Schema(description = "规格") private String productSpec; @Schema(description = "单位") private String unit; @Schema(description = "采购需求量") private BigDecimal totalQuantity; @Schema(description = "报价次数") private Integer quoteCount; @Schema(description = "参与报价的供应商数") private Integer supplierCount; @Schema(description = "加权平均报价(按需求量加权)") private BigDecimal weightedAvgPrice; @Schema(description = "最低报价") private BigDecimal minPrice; @Schema(description = "最高报价") private BigDecimal maxPrice; @Schema(description = "预估单价") private BigDecimal estimatedPrice; @Schema(description = "相对预估价的偏差率(%)") private BigDecimal deviationRate; @Schema(description = "最近报价时间") private LocalDateTime lastQuoteTime; @Schema(description = "价格变动(最近两次报价差)") private BigDecimal priceChange; @Schema(description = "报价明细") private List quotes; @Schema(description = "报价明细项") @Data public static class QuoteItem { @Schema(description = "供应商编号") private Long supplierId; @Schema(description = "供应商名称") private String supplierName; @Schema(description = "报价单价") private BigDecimal quotePrice; @Schema(description = "税率(%)") private BigDecimal taxRate; @Schema(description = "交期(天)") private Integer deliveryCycle; @Schema(description = "报价时间") private LocalDateTime quoteTime; } @Schema(description = "价格趋势点") @Data public static class TrendPoint { @Schema(description = "月份 yyyy-MM") private String month; @Schema(description = "平均报价") private BigDecimal avgPrice; @Schema(description = "报价次数") private Integer count; } }