package com.tofly.watermeter.custom.service.meterBusiness;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.watermeter.custom.entity.meterBusiness.dto.ChangeTableCondition;
import com.tofly.watermeter.custom.entity.meterBusiness.dto.ChangeTableDto;
import com.tofly.watermeter.entity.Bwhbdatail;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 换表
 */
public interface ChangeTableService {

    /**
     * 水表换表
     *
     * @param dto dto
     * @return boolean
     * @throws Exception
     */
    boolean changeTable(ChangeTableDto dto,List<MultipartFile> signature, List<MultipartFile> images) throws Exception;
    boolean changeTableStaging(ChangeTableDto dto,List<MultipartFile> signature, List<MultipartFile> images);

    /**
     * 批量换表
     *
     * @return Boolean
     */
    boolean changeTableBatch(String dto,List<MultipartFile> signature, List<MultipartFile> images);

    /**
     * 查询安装水表用户
     *
     * @param dto 查询条件
     * @return list
     */
    Page<Map> queryInfo(Page page, String dto, String sbkj, String sblx, String sbcj);

    List<Map> countChangeTable(HttpServletResponse response, ChangeTableCondition dto);

    Page<Map> queryChangeTable(Page page, HttpServletResponse response, ChangeTableCondition dto);

    /**
     * 批量添加暂存接口
     * @param dto 数据
     * @param signature  签名
     * @param images 图片
     * @return boolean
     */
    boolean batchInsertStaging(String dto,List<MultipartFile> signature, List<MultipartFile> images);

    /**
     * 新水表接口
     * @param ids 换表id
     * @param state 1 同步
     * @param auditOpinion 审核意见
     *
     * @return boolean
     */
    boolean newChangeTable(String ids,Long state,String auditOpinion);

    /**
     * 水表换表信息修改
     * @param signature 签名
     * @param images 图片
     * @param datail 换表信息
     * @return boolean
     */
    boolean updateChangeTable(List<MultipartFile> signature, List<MultipartFile> images, Bwhbdatail datail);

    /**
     * 换表原因
     * @return list
     */
    List<Map<String, String>>  changeTableCause() throws Exception;

    /**
     * 根据类型统计换表信息
     * @param dto sto
     * @return list
     */
    List<Map> changeTableCountByType(ChangeTableCondition dto);

    /**
     * 根据厂家获取型号
     * @param factory 厂家id
     * @return list
     */
    List<Map> getModelInfo(String factory);
}
