package com.aps.macroplanner.data;

/**
 * 操作输出 (OperationOutput) — 对应 Quintiq 中的 OperationOutput → PISP
 *
 * <p>定义某个操作 (Operation) 生产的产品及其产出到的库存点。
 * 与 {@link OperationInput} 对称: 输入用 Product + StockingPoint, 输出也用 Product + StockingPoint。</p>
 *
 * <h3>多工序路由场景</h3>
 * <pre>
 *   下料    → OperationOutput(P, SP_WIP1)
 *   粗加工  → OperationOutput(P, SP_WIP2)
 *   精加工  → OperationOutput(P, SP_FG)
 * </pre>
 * 同一产品经不同工序产出到不同库存点, 通过 {@link OperationOutput} 的 stockingPoint 区分。
 */
public class OperationOutput {
    private final Product product;           // 产出产品
    private final StockingPoint stockingPoint; // 产出到哪个库存点

    public OperationOutput(Product product, StockingPoint stockingPoint) {
        this.product = product;
        this.stockingPoint = stockingPoint;
    }

    public Product getProduct() { return product; }
    public StockingPoint getStockingPoint() { return stockingPoint; }

    /** 便捷方法: 产品 ID */
    public String getProductId() { return product.getId(); }
    /** 便捷方法: 库存点 ID */
    public String getSpId() { return stockingPoint.getId(); }

    @Override
    public String toString() {
        return product.getId() + "@" + stockingPoint.getId();
    }
}