package com.ruoyi.ccdi.project.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ccdi.project.domain.CcdiModelParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 模型参数Mapper接口
 */
public interface CcdiModelParamMapper extends BaseMapper<CcdiModelParam> {

    /**
     * 根据项目ID查询所有模型参数(包含所有模型的参数)
     *
     * @param projectId 项目ID
     * @return 参数列表
     */
    List<CcdiModelParam> selectByProjectId(@Param("projectId") Long projectId);

    /**
     * 查询指定项目和模型的参数列表
     *
     * @param projectId 项目ID
     * @param modelCode 模型编码
     * @return 参数列表
     */
    List<CcdiModelParam> selectByProjectAndModel(
        @Param("projectId") Long projectId,
        @Param("modelCode") String modelCode
    );

    /**
     * 查询所有模型列表(去重)
     *
     * @param projectId 项目ID
     * @return 模型列表
     */
    List<CcdiModelParam> selectDistinctModels(@Param("projectId") Long projectId);

    /**
     * 批量插入参数
     *
     * @param list 参数列表
     * @return 影响行数
     */
    int insertBatch(@Param("list") List<CcdiModelParam> list);

    /**
     * 批量更新参数值
     *
     * @param list 参数列表
     * @return 影响行数
     */
    int batchUpdateParamValues(@Param("list") List<CcdiModelParam> list);

    /**
     * 更新参数值
     *
     * @param projectId 项目ID
     * @param modelCode 模型编码
     * @param paramCode 参数编码
     * @param paramValue 参数值
     * @param updateBy 更新者
     * @return 影响行数
     */
    int updateParamValue(
        @Param("projectId") Long projectId,
        @Param("modelCode") String modelCode,
        @Param("paramCode") String paramCode,
        @Param("paramValue") String paramValue,
        @Param("updateBy") String updateBy
    );
}
