package com.mosty.bkzx.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.bkzx.TbBkDbBkDto;
import com.mosty.base.model.dto.bkzx.TbBkDbInsertDto;
import com.mosty.base.model.dto.bkzx.TbBkDbSearchDto;
import com.mosty.base.model.dto.bkzx.TbBkDbUpDto;
import com.mosty.base.model.entity.bkzx.TbBkDb;
import com.mosty.common.base.exception.BusinessException;

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

/**
 * 布控数据库服务
 */
public interface TbBkDbService {

    /**
     * 创建布控数据库
     * @param dto
     * @throws BusinessException
     */
    void builderDb(TbBkDbInsertDto dto) throws BusinessException;

    /**
     * 布控数据库记录删除
     * @param records
     * @throws BusinessException
     */
    void delDb(List<Long> records) throws  BusinessException;

    /**
     * 根据条件查询布控数据库列表
     * @return
     * @throws BusinessException
     */
    List<TbBkDb>  selectList(Wrapper<TbBkDb> wrapper) throws  BusinessException;

    /**
     * 按条件查询单条记录
     * @param wrapper
     * @return
     * @throws BusinessException
     */
    TbBkDb selectByOne(Wrapper<TbBkDb> wrapper) throws  BusinessException;

    /**
     * 更新数据
     * @param entity
     * @return
     */
    int updateEntity(TbBkDb entity);

    /**
     * 布控数据库信息分页查询
     * @param repar
     * @return
     */
    IPage<TbBkDb> getPageList(TbBkDbSearchDto repar);

    /**
     * 对数据库进行布控
     * @param reqPar
     * @return
     */
    Object bKDb(TbBkDbBkDto reqPar);

    /**
     * 撤销数据库的布控操作
     * @param idKeys
     * @return
     */
    Object unBkDb(List<Long> idKeys);

    /**
     * 编辑数据库基础信息
     * @param upDto
     * @return
     */
    Object modify(TbBkDbUpDto upDto);

    /**
     * 获取指定数据详情信息
     * @param id
     * @return
     */
    TbBkDb getDetail(String id);

    /**
     * 获取建库区域列表
     * @return
     */
    List<Map> getAreList();

    boolean updateBatchById(Collection<TbBkDb> entityList, int batchSize);
}
