package com.sptg.estate.biz.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.sptg.common.core.beans.ResultBean;
import com.sptg.estate.api.dto.DeviceTestDto;
import com.sptg.estate.api.entity.DeviceTest;

import java.util.List;

/**
 * title: ProjectServiceImpl
 * package: com.sptg.estate.biz.security
 * description: 设备检测-服务层接口
 *
 *               
 *                     
 */
public interface DeviceTestServiceInterface extends IService<DeviceTest> {

    /**
     * 功能描述:分页查询设备检测
     * @param dto
     * @return  Page<DeviceTest>
     *                
     *                      
     */
    Page<DeviceTest> showList(DeviceTestDto dto);

    /**
     * 功能描述:根据id设备检测信息
     * @param id
     * @return DeviceTest
     *                
     *                      
     */
    DeviceTest findById(Long id);

    /**
     * 功能描述:审核状态
     * @param dto
     * {
     *     id:设备检测id
     *     checkState:工单审核状态：0-待审核 1-审核通过 2-审核不通过
     *     checkOpinion:审核不通过原因，当checkState = 2有值
     *     checkDate:审核时间
     *     checkAccountId:审核人id
     *     CheckName:审核人
     * }
     * @return boolean
     *                
     *                      
     */
    boolean checkState(DeviceTestDto dto);

    /**
     * 功能描述:根据位置统计设备检测记录数量
     * @param orgPosition
     * @return ResultBean<Integer>
     *               
     *                      
     */
    ResultBean<Integer> countByOrgPosition(String orgPosition);

    /**
     * 功能描述:根据位置查询所属设备检测
     * @param dto{
     *         orgPosition : 位置 必填
     * }
     * @return ResultBean<DeviceTest>
     *             
     *                      
     */
    ResultBean<DeviceTest> findListByPosition(DeviceTestDto dto);
    /**
     * 功能描述:根据序列号查下离当前时间最近的一条记录
     * @param serialNumber
     * @return ResultBean<DeviceTest>
     *               
     *                     
     */
    ResultBean<DeviceTest> findBySerialNumber(String serialNumber);
    /**
     * 功能描述:根据设备安装记录id获取设备检测审核通过记录
     * @param deviceInstallationIds
     * @return ResultBean<DeviceTest>
     *               
     *                      
     */
    ResultBean<DeviceTest> findByDeviceInstallationIds(List<Long> deviceInstallationIds);
}
