package com.ygtx.gxt.service;

import java.util.List;
import com.ygtx.gxt.domain.GxtFaultCodes;

/**
 * 故障代码管理Service接口
 * 
 * @author ouyj
 * @date 2025-10-29
 */
public interface IGxtFaultCodesService 
{
    /**
     * 查询故障代码管理
     * 
     * @param id 故障代码管理主键
     * @return 故障代码管理
     */
    public GxtFaultCodes selectGxtFaultCodesById(Long id);

    /**
     * 查询故障代码管理列表
     * 
     * @param gxtFaultCodes 故障代码管理
     * @return 故障代码管理集合
     */
    public List<GxtFaultCodes> selectGxtFaultCodesList(GxtFaultCodes gxtFaultCodes);

    /**
     * 验证故障代码是否唯一
     *
     * @param gxtFaultCodes 故障代码信息
     * @return 结果
     */
    public boolean checkFaultCodeUnique(GxtFaultCodes gxtFaultCodes);

    /**
     * 新增故障代码管理
     * 
     * @param gxtFaultCodes 故障代码管理
     * @return 结果
     */
    public int insertGxtFaultCodes(GxtFaultCodes gxtFaultCodes);

    /**
     * 修改故障代码管理
     * 
     * @param gxtFaultCodes 故障代码管理
     * @return 结果
     */
    public int updateGxtFaultCodes(GxtFaultCodes gxtFaultCodes);

    /**
     * 批量删除故障代码管理
     * 
     * @param ids 需要删除的故障代码管理主键集合
     * @return 结果
     */
    public int deleteGxtFaultCodesByIds(Long[] ids);

    /**
     * 删除故障代码管理信息
     *
     * @param id 故障代码管理主键
     * @return 结果
     */
    public int deleteGxtFaultCodesById(Long id);

    /**
     * 根据场站ID查询机型列表（从设备管理中获取）
     *
     * @param stationId 场站ID
     * @return 机型列表
     */
    public List<String> selectModelListByStationId(Long stationId);

    /**
     * 批量导入故障代码管理数据
     * 
     * @param faultCodesList 故障代码管理数据列表
     * @param updateSupport 是否支持更新
     * @param operName 操作用户
     * @return 导入结果信息
     */
    public String importGxtFaultCodes(List<GxtFaultCodes> faultCodesList, Boolean updateSupport, String operName);

    /**
     * 验证场站、机型、故障条文组合是否唯一
     *
     * @param gxtFaultCodes 故障代码信息
     * @return 结果
     */
    public boolean checkGxtFaultCodesByStationModelBarcode(GxtFaultCodes gxtFaultCodes);

    /**
     * 验证场站、机型、故障代码组合是否唯一
     *
     * @param gxtFaultCodes 故障代码信息
     * @return 结果
     */
    public boolean checkGxtFaultCodesByStationModelFaultCode(GxtFaultCodes gxtFaultCodes);
}