package com.aegis.resource.procurement.assembler;

import com.aegis.resource.procurement.domain.ProcurementItem;
import com.aegis.resource.procurement.dto.ProcurementItemDTO;

/**
 * 采购明细对象转换器（Assembler）
 * 负责 DTO 和领域对象之间的转换（基础设施层职责）
 *
 * @author aegis
 */
public class ProcurementItemAssembler {

    /**
     * 将 DTO 转换为领域对象
     */
    public static ProcurementItem toDomain(ProcurementItemDTO dto) {
        ProcurementItem item = new ProcurementItem();
        item.setId(dto.getId());
        item.setProcurementId(dto.getProcurementId());
        item.setCategory(dto.getCategory());
        item.setSpec(dto.getSpec());
        item.setQty(dto.getQty());
        item.setUnit(dto.getUnit());
        item.setIsReusable(dto.getIsReusable());
        item.setTargetMaterialId(dto.getTargetMaterialId());
        item.setRemark(dto.getRemark());
        return item;
    }

    /**
     * 将领域对象转换为 DTO
     */
    public static ProcurementItemDTO toDTO(ProcurementItem item) {
        ProcurementItemDTO dto = new ProcurementItemDTO();
        dto.setId(item.getId());
        dto.setProcurementId(item.getProcurementId());
        dto.setCategory(item.getCategory());
        dto.setSpec(item.getSpec());
        dto.setQty(item.getQty());
        dto.setUnit(item.getUnit());
        dto.setIsReusable(item.getIsReusable());
        dto.setTargetMaterialId(item.getTargetMaterialId());
        dto.setTargetMaterialName(item.getTargetMaterialName());
        dto.setRemark(item.getRemark());
        return dto;
    }
}