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.FloorDto;
import com.sptg.estate.api.entity.Floor;

import java.util.List;

/**
 * title: FloorServiceInterface
 * package: com.sptg.estate.biz.security
 * description: 楼层 服务层接口
 *
 *
 *
 */
public interface FloorServiceInterface extends IService<Floor> {

    /**
     * 功能描述:楼层列表查询
     * @param floorDto 楼层业务对象（含分页及查询条件）
     * @return ResultBean<Page<Floor>>
     *
     *
     */
    ResultBean<Page<Floor>> showFloorList(FloorDto floorDto);

    /**
     * 功能描述:新增楼层
     * @param floorDto 楼层业务对象
     * @return ResultBean<Boolean>
     *
     *
     */
    ResultBean<FloorDto> addFloor(FloorDto floorDto);

    /**
     * 功能描述:根据Id查找楼层
     * @param id 必填
     * @return Floor
     *
     *
     */
    Floor findFloorById(Long id);

    /**
     * 功能描述:编辑楼层
     * @param floorDto 楼层业务对象
     * @return ResultBean<Boolean>
     *
     *
     */
    ResultBean<Boolean> updateFloor(FloorDto floorDto);

    /**
     * 功能描述:删除楼层
     * @param floorDto 楼层业务对象
     * @return ResultBean<Boolean>
     *
     *
     */
    ResultBean<Boolean> deleteFloor(FloorDto floorDto);

    /**
     * 功能描述:楼层放入垃圾箱
     * @param floorDto 楼层业务对象
     * @return ResultBean<Boolean>
     *
     *
     */
    ResultBean<Boolean> trashOrRecover(FloorDto floorDto);

    /**
     * 功能描述:根据Id集合批量删除楼层
     * @param floorDto 楼层业务对象
     * @throws Exception
     * @return ResultBean<Boolean>
     *
     *
     */
    ResultBean<Boolean> deleteFloorList(FloorDto floorDto) throws  Exception;

    /**
     * 功能描述:根据位置查找楼层
     * @param floorDto 楼层业务对象
     * @return ResultBean<Floor>
     *
     *
     */
    ResultBean<Floor> findListByPosition(FloorDto floorDto);

    /**
     * 功能描述:根据父节点查找楼层
     * @param floorDto 楼层业务对象
     * @return ResultBean<Floor>
     *
     *
     */
    ResultBean<Floor>findListByPid(FloorDto floorDto);

    /**
     * 功能描述:导入楼层
     * @param floorDto 楼层业务对象
     * @return ResultBean<Boolean>
     *
     *
     */
    ResultBean<Boolean> importFloorList(FloorDto floorDto);

    /**
     * 功能描述:根据名称或者编号查找楼层
     * @param floorDto 楼层业务对象
     * @return Floor
     *
     *
     */
    Floor findFloorByNameAndNumber(FloorDto floorDto);

    /**
     * 功能描述:根据位置查询楼层数量
     * @param floorDto
     * {
     *    orgPosition : 位置信息
     *    isAllType : 查询类型
     * }
     * @return int
     *
     *
     */
    int getFloorAccount(FloorDto floorDto);

    /**
     * 功能描述:根据条件查询楼层数量
     * @param floorDto 楼层业务对象
     * @return int 数量
     *
     *
     */
    int findFloorByCondition(FloorDto floorDto);

    /**
     * 功能描述:导入生成楼层
     * @param floor 楼层业务对象
     * @return Floor
     *
     *
     */
    Floor addFloorByImport(Floor floor);

    List<Floor> getListByLikeName(FloorDto dto);

    Floor findByFloorNumber(String floorNumber);

    Floor findByOldId(String oldId);

    int addFloorSync(Floor floor);

    int updateFloorSync(Floor floor);

    List<Floor> getFloorByUnitId(Long unitId);

    List<Floor> getListByCondition(FloorDto floorDto);
}
