package org.dromara.biz.service;

import cn.hutool.core.lang.tree.Tree;
import org.dromara.biz.domain.vo.BizPoliceCapacityVo;
import org.dromara.biz.domain.bo.BizPoliceCapacityBo;
import org.dromara.biz.domain.vo.PoliceCapacityTree;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.system.domain.bo.SysDeptBo;

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

/**
 * 警种能力Service接口
 *
 * @author Luo.J
 * @date 2025-05-09
 */
public interface IBizPoliceCapacityService {

    /**
     * 查询警种能力
     *
     * @param id 主键
     * @return 警种能力
     */
    BizPoliceCapacityVo queryById(Long id);

    /**
     * 分页查询警种能力列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 警种能力分页列表
     */
    TableDataInfo<BizPoliceCapacityVo> queryPageList(BizPoliceCapacityBo bo, PageQuery pageQuery);

    /**
     * 查询符合条件的警种能力列表
     *
     * @param bo 查询条件
     * @return 警种能力列表
     */
    List<BizPoliceCapacityVo> queryList(BizPoliceCapacityBo bo);

    /**
     * 新增警种能力
     *
     * @param bo 警种能力
     * @return 是否新增成功
     */
    Boolean insertByBo(BizPoliceCapacityBo bo);

    /**
     * 修改警种能力
     *
     * @param bo 警种能力
     * @return 是否修改成功
     */
    Boolean updateByBo(BizPoliceCapacityBo bo);

    /**
     * 校验并批量删除警种能力信息
     *
     * @param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 查询警种能力树列表
     */
    List<PoliceCapacityTree> selectPoliceCapacityTreeList(String name);
}
