package com.huatek.busi.service.arrester;

import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.huatek.busi.dto.BusiOfflineArresterRepairDto;
import com.huatek.busi.entity.BusiEqmMalfunction;
import com.huatek.busi.vo.BusiOfflineArresterRepairVo;

/**
 * 出场线（避雷器）——检修单 Service
 *
 * @author anker_cheng
 * @date Jul 8, 2019 4:38:26 PM
 */
public interface BusiOfflineArresterRepairService {

    /**
     * 分页查找查找 出场线（避雷器）——检修单
     *
     * @param busiOfflineArresterRepairDto 出场线（避雷器）——检修单Dto
     * @return PageInfo<BusiOfflineArresterRepairVo> 出场线（避雷器）——检修单List
     */
    PageInfo<BusiOfflineArresterRepairVo> findBusiOfflineArresterRepairPage(BusiOfflineArresterRepairDto busiOfflineArresterRepairDto);

    /**
     *  通过id查找 出场线（避雷器）——检修单
     *
     * @param id 主键
     * @return BusiOfflineArresterRepairVo 出场线（避雷器）——检修单
     */
    BusiOfflineArresterRepairVo findBusiOfflineArresterRepairVo(String id);

    /**
     * 修改 出场线（避雷器）——检修单
     *
     * @param token token
     * @param busiOfflineArresterRepairDto 出场线（避雷器）——检修单Dto
     * @return int 影响的行数
     */
    int saveOrUpdateArresterRepair(String token, BusiOfflineArresterRepairDto busiOfflineArresterRepairDto);

    /**
     * 删除 出场线（避雷器）——检修单
     *
     * @param token token
     * @param ids 出场线（避雷器）——检修单ID数组
     * @return int 影响的行数
    */
    int deleteBusiOfflineArresterRepair(String token, String[] ids);

    /**
     * 处理检修单
     * 
     * @param token
     *            token
     * @param ids
     *            检修单数组
     * @param dealResult
     *            处理结果
     * @return
     */
    int dealBusiOfflineArresterRepair(String token, String[] ids, String dealResult);

    /**
     * 告警转检修
     * 
     * @param token
     *            token
     * @param busiEqmWarning
     *            告警
     */
    void toRepair(String token, BusiEqmMalfunction busiEqmMalfunction);

    /**
     * 变压器维修次数统计</br>
     * params.subEquipmentId 设备ID</br>
     * params.sensorCode 传感器编码</br>
     * params.startTime 开始时间</br>
     * params.endTime 结束时间</br>
     * 如果参数都不传，则统计所有的数据
     * 
     * @param params
     *            参数map
     * @return 维修次数
     */
    Integer getRepairCountForArrester(Map<String, Object> params);
    
    /**
     * 根据故障ID查询未处理检修单
     * @param malfunctionId
     * @return
     */
    BusiOfflineArresterRepairVo isFinishedOverhaul(String malfunctionId);
}
