package com.sdtool.common.api;

import com.sdtool.common.entity.base.ZTreeData;
import com.sdtool.common.entity.site.ERPTokenUser;
import com.sdtool.common.entity.system.Dept;
import com.sweetfish.service.RetResult;
import org.rex.RMap;

import java.util.List;

public interface DeptService extends ScriptService {

    /**
     * 获取部门名称
     *
     * @param deptId       部门id
     * @param supplierCode 分表
     * @return 部门名称
     */
    String getRedisDeptName(long deptId, long supplierCode);

    String getRedisDeptCode(long deptId, long supplierCode);

    /**
     * 获取部门列表
     * 从redis中获取
     *
     * @param searchData 查询条件
     * @return 部门列表
     */
    @SuppressWarnings("rawtypes")
    RetResult<List<Dept>> getDeptList(RMap searchData, long supplierCode);

    RetResult<List<ZTreeData>> getDeptTreeData(int showAll, long supplierCode);

    RetResult<Dept> getDeptInfo(long deptId, long supplierCode);

    /**
     * 增加部门
     *
     * @param dept        部门信息
     * @param currentUser 操作人
     * @return 操作信息
     */
    RetResult<Dept> addDept(Dept dept, ERPTokenUser currentUser, String dataSourceId, long supplierCode);

    /**
     * 修改部门
     *
     * @param dept        部门信息
     * @param currentUser 操作人
     * @return 操作信息
     */
    RetResult<Dept> updateDept(Dept dept, ERPTokenUser currentUser, String dataSourceId, long supplierCode);

    /**
     * 切换部门状态
     *
     * @param dept        部门信息
     * @param currentUser 操作人
     * @return 操作信息
     */
    RetResult<Dept> voidDept(Dept dept, ERPTokenUser currentUser, String dataSourceId, long supplierCode);
}
