package com.zcxk.rmcp.web.service.install;

import com.zcxk.core.common.pojo.ResultMessage;
import com.zcxk.core.mysql.pageing.Pagination;
import com.zcxk.rmcp.api.dto.BasePageDto;
import com.zcxk.rmcp.api.dto.install.InstallDeviceDto;
import com.zcxk.rmcp.api.dto.install.InstallInputDto;
import com.zcxk.rmcp.core.entity.InstallList;
import com.zcxk.rmcp.api.dto.install.InstallQueryDto;
import com.zcxk.rmcp.web.excel.model.ExcelData;
import com.zcxk.rmcp.web.excel.model.InstallMeterData;

import java.util.List;

/**
 * 
 * @author linqingwei
 * @date 2021-07-21 9:44
 */
public interface InstallListService{


    int insertSelective(InstallList record);

    int updateByPrimaryKeySelective(InstallList record);

    /*
     * @description 安装保存
     * @param dto
     * @return void
     * @author linqingwei
     **/
    void installSave(InstallInputDto dto);

    /*
     * @description 安装编辑
     * @param dto
     * @return void
     * @author linqingwei
     **/
    void installEdit(InstallInputDto dto);

    /*
     * @description 安装列表分页
     * @param dto
     * @param page
     * @return com.zcxk.core.mysql.pageing.Pagination<com.zcxk.rmcp.api.dto.install.InstallDeviceDto>
     * @author linqingwei
     **/
    Pagination<InstallDeviceDto> getInstallPage(InstallQueryDto dto, BasePageDto page);

    /*
     * @description 保存excel数据
     * @param data
     * @param excelData
     * @return com.zcxk.core.common.pojo.ResultMessage
     * @author linqingwei
     **/
    ResultMessage saveExcelData(InstallMeterData data, ExcelData excelData);

    /*
     * @description 批量验收
     * @param ids
     * @return void
     * @author linqingwei
     **/
    void batchAccept(List<Integer> ids);

    /*
     * @description 全部验收
     * @param dto
     * @return void
     * @author linqingwei
     **/
    void allAccept(InstallQueryDto dto);

    /*
     * @description 获取未安装列表
     * @param planId 安装计划id
     * @param id 安装id
     * @return java.util.List<com.zcxk.rmcp.api.dto.install.InstallDeviceDto>
     * @author linqingwei
     **/
    List<InstallDeviceDto> getUnInstallList(Integer planId,Integer id);

    /*
     * @description 批量删除
     * @param ids
     * @return void
     * @author linqingwei
     **/
    void batchDelete(List<Integer> ids);

    /*
     * @description 全部删除
     * @param dto
     * @return void
     * @author linqingwei
     **/
    void allDelete(InstallQueryDto dto);
}
