package com.ruoyi.reportManagement.service;


import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.reportManagement.domain.SingleAnalysisExcel;
import com.ruoyi.reportManagement.domain.SingleAnalysisFeesExcel;
import com.ruoyi.reportManagement.domain.TWhgenleg;
import com.ruoyi.reportManagement.dto.TWarehousebill;
import com.ruoyi.reportManagement.excel.Whgenleg;

import java.util.List;
import java.util.Map;

/**
 * 库存总账Service接口
 *
 * @author ruoyi
 * @date 2020-12-11
 */
public interface ITWhgenlegService {
    /**
     * 查询库存总账
     *
     * @param fId 库存总账ID
     * @return 库存总账
     */
    public Map<String, Object> selectTWhgenlegById(Long fId);

    /**
     * 查询库存总账列表
     *
     * @param tWhgenleg 库存总账
     * @return 库存总账集合
     */
    public List<TWhgenleg> selectTWhgenlegList(TWhgenleg tWhgenleg);

    /**
     * 出库、调拨、货转查询库存总账列表
     *
     * @param tWhgenleg 库存总账
     * @return 库存总账集合
     */
    List<Map<String, Object>> selectInventoryList(TWhgenleg tWhgenleg);

    /**
     * 查询库存总账列表
     *
     * @param tWhgenleg 库存总账
     * @return 库存总账集合
     */
    List<Map<String, Object>> selectInventoryMapList(TWhgenleg tWhgenleg);

    /**
     * 新增库存总账
     *
     * @param tWhgenleg 库存总账
     * @return 结果
     */
    public int insertTWhgenleg(TWhgenleg tWhgenleg);

    /**
     * 修改库存总账
     *
     * @param tWhgenleg 库存总账
     * @return 结果
     */
    public int updateTWhgenleg(TWhgenleg tWhgenleg);

    /**
     * 批量删除库存总账
     *
     * @param fAccyears 需要删除的库存总账ID
     * @return 结果
     */
    public int deleteTWhgenlegByIds(Long[] fAccyears);

    /**
     * 删除库存总账信息
     *
     * @param fAccyear 库存总账ID
     * @return 结果
     */
    public int deleteTWhgenlegById(Long fAccyear);

    /**
     * 商品 库存总量
     *
     * @return
     */
    Map<String, Object> selectGoodsList(Long fId);

    /**
     * 仓库 库存总量
     *
     * @return
     */
    List<Map<String, Object>> selectWareHouseList();

    List<Map<String, Object>> selectWareHouseLists();

    /**
     * 客户 库存总量
     *
     * @return
     */
    Map<String, Object> selectCorpsList(Long fId);

    /**
     * 一周库存总量
     *
     * @return
     */
    List<Map<String, Object>> selectDateFQtyblcListList();

    List<Map<String, Object>> selectWhgenlegList(TWhgenleg tWhgenleg);

    public List<Whgenleg> whgenlegExport(TWhgenleg tWhgenleg) throws Exception;

    List<Map<String, Object>> selectdetailedList(TWarehousebill tWarehousebill);

    /**
     * 查询单票分析信息
     *
     * @param singleAnalysisExcel
     * @return
     */
    public List<SingleAnalysisExcel> selectSingleAnalysis(SingleAnalysisExcel singleAnalysisExcel);

    /**
     * 查询单票分析费用信息
     *
     * @param singleAnalysisExcel
     * @return
     */
    public List<SingleAnalysisFeesExcel> selectSingleAnalysisFees(SingleAnalysisExcel singleAnalysisExcel);

    /**
     * 根据客户id或者提单号查询库存不为0的仓库
     *
     * @param tWhgenleg
     * @return
     */
    public List<Map<String, Object>> getWarehouse(TWhgenleg tWhgenleg);

    /**
     * app查询库存总账
     *
     * @param tWhgenleg
     * @return
     */
    public List<Map<String, Object>> appWhGenLegList(TWhgenleg tWhgenleg, Integer pageNum, Integer pageSize);

    /**
     * 查询库存总帐详细信息
     *
     * @param tWhgenleg
     * @return
     */
    AjaxResult selectWhgenlegDetailsList(TWhgenleg tWhgenleg);
}
