package com.aps.macroplanner.output.dto;

/**
 * 供应链汇总 — 跨周期汇总的供应/需求/库存数据。
 */
public class SupplySummary {

    // ==================== 供应 ====================

    /** 总生产量 (所有工序的 PTQty 总和) */
    private double totalProduction;
    /** 总到货量 (考虑 lead time 偏移的实际到货) */
    private double totalArrived;
    /** 在途到货量 */
    private double totalInTransit;

    // ==================== 需求 ====================

    /** 外部销售需求量 */
    private double totalSalesDemand;
    /** 外部销售满足量 */
    private double totalSalesFulfilled;
    /** BOM 依赖需求量 (被其他工序消耗) */
    private double totalDependentDemand;
    /** 总需求满足量 (用于安全库存天数) */
    private double totalDemandFulfillment;
    /** 需求松弛总和 */
    private double totalDemandSlack;

    // ==================== 库存 ====================

    /** 初始库存 (第0周期期初) */
    private double initialInventory;
    /** 最终库存 (最后一周期期末) */
    private double finalInventory;
    /** 平均库存 */
    private double averageInventory;

    // ==================== 库存规格偏差 ====================

    /** 低于目标库存总和 */
    private double totalBelowTarget;
    /** 低于最小库存总和 */
    private double totalBelowMin;
    /** 高于最大库存总和 */
    private double totalAboveMax;

    // ==================== Getters / Setters ====================

    public double getTotalProduction() { return totalProduction; }
    public void setTotalProduction(double v) { this.totalProduction = v; }

    public double getTotalArrived() { return totalArrived; }
    public void setTotalArrived(double v) { this.totalArrived = v; }

    public double getTotalInTransit() { return totalInTransit; }
    public void setTotalInTransit(double v) { this.totalInTransit = v; }

    public double getTotalSalesDemand() { return totalSalesDemand; }
    public void setTotalSalesDemand(double v) { this.totalSalesDemand = v; }

    public double getTotalSalesFulfilled() { return totalSalesFulfilled; }
    public void setTotalSalesFulfilled(double v) { this.totalSalesFulfilled = v; }

    public double getTotalDependentDemand() { return totalDependentDemand; }
    public void setTotalDependentDemand(double v) { this.totalDependentDemand = v; }

    public double getTotalDemandFulfillment() { return totalDemandFulfillment; }
    public void setTotalDemandFulfillment(double v) { this.totalDemandFulfillment = v; }

    public double getTotalDemandSlack() { return totalDemandSlack; }
    public void setTotalDemandSlack(double v) { this.totalDemandSlack = v; }

    public double getInitialInventory() { return initialInventory; }
    public void setInitialInventory(double v) { this.initialInventory = v; }

    public double getFinalInventory() { return finalInventory; }
    public void setFinalInventory(double v) { this.finalInventory = v; }

    public double getAverageInventory() { return averageInventory; }
    public void setAverageInventory(double v) { this.averageInventory = v; }

    public double getTotalBelowTarget() { return totalBelowTarget; }
    public void setTotalBelowTarget(double v) { this.totalBelowTarget = v; }

    public double getTotalBelowMin() { return totalBelowMin; }
    public void setTotalBelowMin(double v) { this.totalBelowMin = v; }

    public double getTotalAboveMax() { return totalAboveMax; }
    public void setTotalAboveMax(double v) { this.totalAboveMax = v; }
}