package com.shkj.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shkj.common.core.domain.Result;
import com.shkj.common.core.domain.TreeBranchSelect;
import com.shkj.common.core.domain.entity.BaseConsignor;
import com.shkj.wms.bo.BaseConsignorQueryBo;
import com.shkj.wms.bo.BaseConsignorSaveOrUpdateBo;
import com.shkj.wms.common.SwitchStatusEntity;
import com.shkj.wms.vo.BaseConsignorVo;
import com.shkj.wms.vo.BranchTree;
import java.util.List;

/**
 * 货主资料Service接口
 *
 * @author lch
 * @date 2022-03-22
 */
public interface IBaseConsignorService extends IService<BaseConsignor> {

    /**
     * 通过code查询货主资料
     *
     * @param consignorCode
     * @return
     */
    BaseConsignor getConsignorByCode(String consignorCode);

    /**
     * 查询货主资料列表
     *
     * @param bo
     * @return
     */
    List<BaseConsignorVo> queryList(BaseConsignorQueryBo bo);
    List<BaseConsignorVo> queryListOption(BaseConsignorQueryBo bo);

    /**
     * 查询当前用户下的角色仓库数据权限
     *
     * @return
     */
    List<BranchTree> selectBranchConsignor();

    /**
     * 根据角色ID查询货主树信息
     *
     * @param roleId
     * @return
     */
    List<Long> selectConsignorListByRoleId(Long roleId);

    List<TreeBranchSelect> buildTreeSelect(List<BranchTree> treeList);

    /**
     * 根据id和当前branchId获取货主数据
     * @param ids
     * @param branchId
     * @return
     */
    List<BaseConsignor> queryBaseConsignorListByIdsAndBranchId(List<Long> ids, Long branchId);

    /**
     * 保存或者修改复业主资料（根据是否有id来判断新增或者修改）
     * @param list
     * @return
     */
    Result<Boolean> saveOrUpdateBaseConsignors(List<BaseConsignorSaveOrUpdateBo> list);

    /**
     * 切换状态
     *
     * @param switchStatusEntity
     * @return
     */
    Result<Boolean> switchStatus(SwitchStatusEntity switchStatusEntity);

    /**
     * 校验并删除数据
     * @param ids 主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Result<Boolean> deleteWithValidById(List<Long> ids, Boolean isValid);

}
