package com.bonus.material.tool.mapper;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.tool.domain.ToolEntity;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ToolMapper {
    /**
     * 工具类型树
     *
     * @param entity 实体
     * @return 树结构
     */
    List<ToolEntity> getTreeSelect(ToolEntity entity);

    /**
     * 工具类型表格
     *
     * @param entity 实体
     * @return 表格
     */
    List<ToolEntity> list(ToolEntity entity);

    /**
     * 工具类型新增
     *
     * @param entity 实体
     * @return 表格
     */
    Integer add(ToolEntity entity);

    /**
     * 工具类型修改
     *
     * @param entity 实体
     * @return 表格
     */
    Integer update(ToolEntity entity);

    /**
     * 工具类型删除
     *
     * @param entity 实体
     * @return 表格
     */
    Integer delete(ToolEntity entity);

    /**
     * 工具类型详情
     *
     * @param typeId typeId
     * @return 表格
     */
    ToolEntity getToolByTypeId(Long typeId);

    /**
     * 获取同一父类下是否已经存在数据
     *
     * @param entity
     * @return
     */

    Integer getToolByTypeIdAndTypeName(ToolEntity entity);

    /**
     * 修改 校验同层级下是否存在同名节点（排除自身）
     *
     * @param query 条件
     * @return
     */
    Integer countSameNameInSameLevel(ToolEntity query);

    /**
     * 查询删除 下是否存在节点
     *
     * @param query
     * @return
     */
    Integer countChildren(ToolEntity query);

    /**
     * 新增台账记录
     *
     * @param typeId 类型id
     */
    void addLedger(Long typeId);

    /**
     * 获取下拉选
     *
     * @return 集合
     */
    @MapKey("id")
    List<Map<String, Object>> getSelect(ToolEntity query);

    /**
     * 工具租赁价（批量）修改
     * @param typeIds
     * @param leasePrice
     * @return
     */
    Integer updateLeasePrice(@Param("typeIds") List<Integer> typeIds, @Param("leasePrice") BigDecimal leasePrice);
}
