package com.goomood.phm.service;

import java.util.List;
import java.util.Map;

import com.goomood.phm.domain.FaultRecord;

/**
 * 故障记录Service接口
 * 
 * @author goomood
 * @date 2024-11-17
 */
public interface IFaultRecordService 
{
    /**
     * 查询故障记录
     * 
     * @param id 故障记录主键
     * @return 故障记录
     */
    public FaultRecord selectFaultRecordById(Long id);

    /**
     * 查询故障记录列表
     * 
     * @param faultRecord 故障记录
     * @return 故障记录集合
     */
    public List<FaultRecord> selectFaultRecordList(FaultRecord faultRecord);

    /**
     * 新增故障记录
     * 
     * @param faultRecord 故障记录
     * @return 结果
     */
    public int insertFaultRecord(FaultRecord faultRecord);

    /**
     * 修改故障记录
     * 
     * @param faultRecord 故障记录
     * @return 结果
     */
    public int updateFaultRecord(FaultRecord faultRecord);

    /**
     * 批量删除故障记录
     * 
     * @param ids 需要删除的故障记录主键集合
     * @return 结果
     */
    public int deleteFaultRecordByIds(Long[] ids);

    /**
     * 删除故障记录信息
     * 
     * @param id 故障记录主键
     * @return 结果
     */
    public int deleteFaultRecordById(Long id);


    /**
     * 获取所有机型
     * @return
     */
    List<String> getAircraftTypes();

    /**
     * 获取所有飞机号
     * @return
     */
    List<String> getAircraftNos();


    /**
     * 获取所有专业
     * @return
     */
    List<String> getSpecialties();


    /**
     * 系统故障统计
     * @param aircraftType
     * @param aircraftNo
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getSystemFaultStatsByStandAlone(String aircraftType, String aircraftNo, String startDate, String endDate);


    /**
     * 专业故障统计
     * @param aircraftType
     * @param aircraftNo
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getSpecialtyFaultStatsByStandAlone(String aircraftType, String aircraftNo, String startDate, String endDate);

    /**
     * 机件故障统计
     * @param aircraftType
     * @param aircraftNo
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getPartFaultStatsByStandAlone(String aircraftType, String aircraftNo, String startDate, String endDate);

    /**
     * 故障地点统计
     * @param aircraftType
     * @param aircraftNo
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getLocationFaultStatsByStandAlone(String aircraftType, String aircraftNo, String startDate, String endDate);


    /**
     * 单架故障统计
     * @param aircraftType
     * @param specialty
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getAircraftFaultStatsBySpecialty(String aircraftType, String specialty, String startDate, String endDate);


    /**
     * 机件故障统计
     * @param aircraftType
     * @param specialty
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getPartFaultStatsBySpecialty(String aircraftType, String specialty, String startDate, String endDate);


    /**
     * 专业故障统计
     * @param aircraftType
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getSpecialtyFaultStatsBySpecialty(String aircraftType,String specialty,String startDate, String endDate);


    /**
     * 系统故障统计
     * @param aircraftType
     * @param specialty
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, List<Object>> getSystemFaultStatsBySpecialty(String aircraftType, String specialty, String startDate, String endDate);
}
