package net.lab1024.sa.admin.module.business.wms.base.item.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.servlet.http.HttpServletResponse;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemSelect;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemVO;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemsExcelVO;
import net.lab1024.sa.base.common.domain.PageResult;

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


public interface ItemQueryService {

    /**
     * 分页查询
     *
     * @param queryForm 入参
     * @return PageResult<ItemVO>
     */
    PageResult<ItemVO> queryPage(ItemQueryForm queryForm);

    /**
     * 物料下拉查询
     *
     * @param itemSelect 入参
     * @return List<ItemEntity>
     */
    List<ItemEntity> queryItem(ItemSelect itemSelect);

    /**
     * 根据物料id集合查询物料信息
     *
     * @param itemIdList 客户id集合
     * @return Map<Long, AreaEntity>
     */
    Map<Long, ItemEntity> queryByItemIdsToMap(List<Long> itemIdList);

    /**
     * 根据物料编码查询
     *
     * @param itemCode 物料编码
     * @return ItemEntity
     */
    ItemEntity queryByItemCode(String itemCode);

    /**
     * 根据物料编码集合查询物料信息
     *
     * @param itemCodes 物料编码集合
     * @return List<ItemEntity>
     */
    List<ItemEntity> queryByItemCodes(List<String> itemCodes);

    /**
     * 根据物料编码集合查询物料信息
     *
     * @param itemCodes 物料集合
     * @return Map<String, ItemEntity>
     */
    Map<String, ItemEntity> queryByItemCodesToMap(List<String> itemCodes);

    /**
     * 物料导出
     *
     * @return List<ItemsExcelVO>
     */
    List<ItemsExcelVO> queryItemsExcelVO();

    /**
     * 物料总厨
     * @param queryForm 查询参数
     * @return long
     */
    long itemCount(ItemQueryForm queryForm);

    /**
     * 物料导出
     * @param taskId 任务ID
     * @param queryForm 查询参数
     * @param response 请求
     */
    void exportItem(String taskId, ItemQueryForm queryForm, HttpServletResponse response);
}
