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

/**
 * 工作台快照服务
 * 
 * 负责在创建单位工程时，从后台标准库复制数据到工作台快照表
 *
 * @author yihuiyong
 */
public interface WbSnapshotService {

    /**
     * 创建单位工程快照
     * 
     * 复制以下数据：
     * 1. 机类树（yhy_resource_category_tree → yhy_wb_category_tree）
     * 2. 机类映射（yhy_resource_category_tree_mapping → yhy_wb_category_tree_mapping）
     * 3. 费率模板（yhy_quota_rate_item → yhy_wb_rate_item）
     * 4. 取费模板（yhy_quota_fee_item → yhy_wb_fee_item）
     * 5. 统一取费设置（yhy_quota_unified_fee_setting → yhy_wb_unified_fee_setting）
     * 6. 统一取费子目工料机（yhy_quota_unified_fee_resource → yhy_wb_unified_fee_resource）
     *
     * @param compileTreeId 单位工程ID（yhy_wb_compile_tree.id）
     * @param quotaCatalogItemId 定额专业ID（用于获取机类树）
     * @param rateModeId 费率模式ID（用于获取费率/取费/统一取费模板）
     */
    void createSnapshot(Long compileTreeId, Long quotaCatalogItemId, Long rateModeId);

    /**
     * 删除单位工程快照
     * 
     * 删除所有关联的快照数据
     *
     * @param compileTreeId 单位工程ID
     */
    void deleteSnapshot(Long compileTreeId);

    /**
     * 切换费率模式时更新快照
     * 
     * 删除旧的费率相关快照，复制新费率模式的数据
     *
     * @param compileTreeId 单位工程ID
     * @param newRateModeId 新费率模式ID
     */
    void switchRateModeSnapshot(Long compileTreeId, Long newRateModeId);
}
