package com.shkj.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shkj.common.core.domain.Result;
import com.shkj.wms.common.SwitchShowEntity;
import com.shkj.wms.domain.TableHeader;
import com.shkj.wms.bo.SyncTableHeaderBo;
import com.shkj.wms.bo.TableHeaderAddBo;
import com.shkj.wms.bo.TableHeaderEditBo;
import com.shkj.wms.bo.TableHeaderQueryBo;
import com.shkj.wms.vo.TableHeaderVo;
import com.shkj.wms.vo.TableListVo;

import java.util.List;

/**
 * 表格表头Service接口
 *
 * @author lch
 * @date 2022-03-19
 */
public interface ITableHeaderService extends IService<TableHeader> {
    /**
     * 查询单个
     *
     * @param id
     * @return
     */
    Result<TableHeaderVo> queryById(Long id);

    /**
     * 查询列表
     *
     * @param bo
     * @return
     */
    List<TableHeaderVo> queryList(TableHeaderQueryBo bo);

    /**
     * 根据新增业务对象插入表格表头
     *
     * @param bo 表格表头新增业务对象
     * @return
     */
    Result<Boolean> insertByAddBo(TableHeaderAddBo bo);

    /**
     * 根据编辑业务对象修改表格表头
     *
     * @param bo 表格表头编辑业务对象
     * @return
     */
    Result<Boolean> updateByEditBo(TableHeaderEditBo bo);

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

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


    /**
     * 根据表名同步表头
     *
     * @param bo
     * @return
     */
    Result<Boolean> syncTableHeader(SyncTableHeaderBo bo);

    /**
     * 根据参数查询表集合
     *
     * @param bo
     * @return
     */
    Result<List<TableListVo>> getTableOption(SyncTableHeaderBo bo);

    /**
     * 只查询表名
     * @param bo
     * @return
     */
    List<TableHeaderVo> queryTableList(TableHeaderQueryBo bo);
}
