package com.yhy.module.core.service.unit;

import com.yhy.module.core.controller.admin.unit.vo.UnitRateSettingRespVO;
import com.yhy.module.core.controller.admin.unit.vo.UnitRateSettingSaveReqVO;
import java.util.List;

/**
 * 工程费率设定 Service 接口
 */
public interface UnitRateSettingService {

    /**
     * 保存或更新费率设定
     * 
     * @param saveReqVO 保存请求
     * @return 保存后的费率设定（包含计算后的字段值）
     */
    UnitRateSettingRespVO saveOrUpdate(UnitRateSettingSaveReqVO saveReqVO);

    /**
     * 获取单位工程的费率设定列表
     * 
     * @param unitId 单位工程ID
     * @return 费率设定列表
     */
    List<UnitRateSettingRespVO> getListByUnitId(Long unitId);

    /**
     * 获取单个费率设定
     * 
     * @param unitId 单位工程ID
     * @param rateItemId 费率项ID
     * @return 费率设定
     */
    UnitRateSettingRespVO getByUnitIdAndRateItemId(Long unitId, Long rateItemId);

    /**
     * 删除费率设定
     * 
     * @param id 费率设定ID
     */
    void delete(Long id);

    /**
     * 初始化单位工程的费率设定（创建快照）
     * 
     * @param unitId 单位工程ID
     * @param catalogItemId 费率模式节点ID
     */
    void initializeSettings(Long unitId, Long catalogItemId);
}
