package cn.iocoder.yudao.module.system.service.housearea;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.housearea.vo.HouseAreaPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.housearea.vo.HouseAreaSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.housearea.vo.HouseAreaVO;
import cn.iocoder.yudao.module.system.dal.dataobject.housearea.HouseAreaDO;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.validation.Valid;
import java.util.List;

/**
 * 库区 Service 接口
 *
 * @author 陈宾顺
 */
public interface HouseAreaService extends IService<HouseAreaDO> {

    /**
     * 创建库区
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createHouseArea(@Valid HouseAreaSaveReqVO createReqVO);

    /**
     * 更新库区
     *
     * @param updateReqVO 更新信息
     */
    void updateHouseArea(@Valid HouseAreaSaveReqVO updateReqVO);

    /**
     * 删除库区
     *
     * @param id 编号
     */
    void deleteHouseArea(Long id);

    /**
     * 获得库区
     *
     * @param id 编号
     * @return 库区
     */
    HouseAreaDO getHouseArea(Long id);

    /**
     * 获得库区分页
     *
     * @param pageReqVO 分页查询
     * @return 库区分页
     */
    PageResult<HouseAreaDO> getHouseAreaPage(HouseAreaPageReqVO pageReqVO);

    /**
     * 创建修改删除库区
     *
     * @param createReqVO
     */
    HouseAreaVO createOrEditOrDel(@Valid HouseAreaSaveReqVO createReqVO);

    /**
     * 获得全部库区
     *
     * @return
     */
    List<HouseAreaDO> getHouseAreaList(Long positionMapId);

    /**
     * 删除库区
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 根据地图id删除
     * @param mapId
     */
    void deleteHouseAreaByMapId(Long mapId);
}
