package com.jeeplus.pubmodules.reimApprovalType.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeeplus.core.domain.TreeMapper;
import com.jeeplus.pubmodules.reimApprovalType.domain.CwReimbursementTypeInfo;
import com.jeeplus.pubmodules.reimApprovalType.domain.OfficeDomain;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: 王强
 * @create: 2022-11-25 09:02
 **/
public interface CwReimbursementTypeMapper extends BaseMapper<CwReimbursementTypeInfo>, TreeMapper<CwReimbursementTypeInfo> {

    /**
     * 查询数据集合
     * @param queryWrapper
     * @return
     */
    List<CwReimbursementTypeInfo> findList(@Param(Constants.WRAPPER) Wrapper<CwReimbursementTypeInfo> queryWrapper);

    //@InterceptorIgnore(tenantLine = "true")
    List<CwReimbursementTypeInfo> bxList2(@Param(Constants.WRAPPER) Wrapper<CwReimbursementTypeInfo> queryWrapper,
                                          @Param("officeId") String officeId);

    /**
     * 查找当前登陆人的部门的信息
     * @param id
     * @return
     */
    OfficeDomain officeInfo(@Param("id") String id);

    /**
     * 当前登陆人为三级部门时查二级部门方法
     * @param id
     * @return
     */
    OfficeDomain officeInfo2(@Param("id") String id);

    /**
     * 递归方式获取父级部门信息
     * @param id
     * @return
     */
    List<OfficeDomain> officeInfo3(@Param("id") String id);

    /**
     * 根据id查询详情信息
     * @param id
     * @return
     */
    @InterceptorIgnore(tenantLine = "true")
    CwReimbursementTypeInfo getById(String id);
    /**
     * 根据name和parentId查询名称是否重复
     * @param name
     * @param parentId
     * @return
     */
    Integer checkNameIsExist(@Param("name") String name, @Param("parentId") String parentId);

    Integer getNo(@Param("parentId") String parentId);

    Integer getLevel(@Param("parentId") String parentId);

    List<String> getChildId(String id);

    /**
     * 获取所有业务类型的数据
     * @return
     */
    @InterceptorIgnore(tenantLine = "true")
    List<CwReimbursementTypeInfo> getAllList();

    /**
     * 删除报销类型关联表对应信息
     * @param id
     */
    void deleteReimbursementTypeOfficeInfo(String id);

    /**
     * 新增报销类型和部门关联信息
     * @param id
     * @param OfficeIdList
     */
    void saveReimbursementTypeOfficeInfo(@Param("id") String id , @Param("officeIdList") List<String> OfficeIdList);
}
