package com.tofly.xrtygis.custom.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.xrtygis.custom.entity.dto.TablelinkUserDto;
import com.tofly.xrtygis.custom.entity.dto.TablelinkpipeDto;

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

/**
 * 综合展示线上核对
 *
 * @author 泡泡
 */
public interface TheOnlineCheckService {

    /**
     * 确认水表是否为总表
     *
     * @param code 水表编号
     * @return Boolean
     */
    Long isSumTable(Long code);

    /**
     * 总表与管线绑定
     *
     * @param t 总表与管线关联表
     * @return Boolean
     */
    boolean bindLine(TablelinkpipeDto t);

    /**
     * 查询总表信息
     *
     * @return list
     */
    List<Map<String, Object>> selectSunTable();

    /**
     * 显示管线与表信息关联
     *
     * @param page page
     * @return page
     */
    Page viewTablePipe(Page page, String type);

    /**
     * 总表管线确认
     *
     * @param codes 水表编号
     * @return boolean
     */
    boolean confirmTablePipe(String codes,String type);

    /**
     * 查询未关联客户信息
     *
     * @param page page
     * @param str  用户编号/用户地址/用户姓名
     * @return page
     */
    Page unaffiliatedCustomer(Page page, String str);

    /**
     * 用户关联总表
     *
     * @param dto dto
     * @return boolean
     */
    boolean userToTable(TablelinkUserDto dto);

    /**
     * 确认水表与总表
     *
     * @param codes 客户编号
     * @return boolean
     */
    boolean confirmTableUser(String tableId,String codes,String type);

    /**
     * 查询关联总表客户信息
     *
     * @param page page
     * @return page
     */
    Page associatedCustomer(Page page, Integer tableId);

    /**
     * 查询关联总表客户信息
     *
     * @param tableId 表id
     * @return list
     */
    List<Map<String,Object>> associatedCustomer(Integer tableId);

    /**
     * 移除总表-客户关联
     *
     * @param ids ids
     * @return boolean
     */
    boolean removeUser(String tableId, String ids);

    /**
     * 客户-总表移动
     *
     * @param tableId 总表id
     * @param codes   客户编号
     * @return boolean
     */
    boolean moveUserTable(String tableId, String codes);

    /**
     * 总表换表
     *
     * @param oldId 旧表id
     * @param newId 新表id
     * @return boolean
     */
    boolean inTheTable(String oldId, String newId);

    /**
     * 设置小区名称
     *
     * @param name  小区名称
     * @param codes 水表编号
     * @return boolean
     */
    boolean setPlotName(String name, String codes);

    /**
     * 自动匹配
     * @return boolean
     */
    boolean autoMatch(Long current,Long size);

    /**
     * 获取添加进度
     * @return double
     */
    Double getInsertSchedule();

    /**
     * 根据管线查看关联客户信息
     * @param pipe 管线
     * @return list
     */
    List<Map<String, Object>> queryCustomerByPipe(String pipe);
}
