package com.zbf.system.service;

import com.zbf.common.core.domain.AjaxResult;
import com.zbf.system.domain.TCkOrderdetail;
import com.zbf.system.domain.TCkOrders;
import com.zbf.system.domain.TRkWareNotice;
import com.zbf.system.domain.vo.TCkOrdersVo;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 出库Service接口
 *
 * @author tony
 * @date 2024-06-24
 */
public interface ITCkOrdersService
{
    /**
     * 查询出库
     *
     * @param id 出库主键
     * @return 出库
     */
    public TCkOrders selectTCkOrdersById(String id);

    /**
     * 查询出库
     *
     * @param id 出库主键
     * @return 出库
     */
    public TCkOrders selectTCkOrdersByOrderId(String id);

    /**
     * 查询出库列表
     *
     * @param tCkOrders 出库
     * @return 出库集合
     */
    public List<TCkOrders> selectTCkOrdersList(TCkOrders tCkOrders);

    /**
     * 新增出库
     *
     * @param tCkOrders 出库
     * @return 结果
     */
    public int insertTCkOrders(TCkOrders tCkOrders);

    /**
     * 修改出库
     *
     * @param tCkOrders 出库
     * @return 结果
     */
    public int updateTCkOrders(TCkOrders tCkOrders);

    /**
     * 批量删除出库
     *
     * @param ids 需要删除的出库主键集合
     * @return 结果
     */
    public int deleteTCkOrdersByIds(String[] ids);

    /**
     * 删除出库信息
     *
     * @param id 出库主键
     * @return 结果
     */
    public int deleteTCkOrdersById(String id);

    /**
     * 批量禁用出库
     *
     * @param ids 需要禁用的出库主键集合
     * @return 结果
     */
    public int disabledTCkOrdersByIds(String[] ids);

    /**
     * 批量启用出库
     *
     * @param ids 需要启用的出库主键集合
     * @return 结果
     */
    public int enableTCkOrdersByIds(String[] ids);

    /**
     * 改变状态
     *
     * @param tCkOrders
     * @return 结果
     */
    public int updateStatus(TCkOrders tCkOrders);
    /**
     * 审核
     *
     * @param ids 需要审核的出库主键集合
     * @return 结果
     */
    int auditCkOrdersTCkOrdersByIds(String[] ids);

    int insertTCkOrdersDetails(List<TCkOrderdetail> tCkOrderdetails);

    int deleteTCkOrderDetailsByIds(String[] ids);

    int confirmOut(TCkOrders tCkOrders);

    // Map<String,Integer> homeCount(TCkOrders tCkOrders,TRkWareNotice tRkWareNotice);

    int homeOutCount(TCkOrders tCkOrders);

    int homeInCount(TRkWareNotice tRkWareNotice);

    String importData(List<TCkOrderdetail> trList, boolean updateSupport, String operName);

    public List<TCkOrders> exportTCkOrdersList(TCkOrders tCkOrders);

    public Map<String, String> sendOrderNotice(TCkOrders update);

    public TCkOrders selectTCkOrdersByDeliveryId(String id);

    Map<String, String> handAddGoodsTab(TCkOrders update);

    Map<String, String> sendIwms(TCkOrders update);

    AjaxResult send(TCkOrders tCkOrders);

    int install(TCkOrdersVo tCkOrders);

    Long statisticCallShelvesNum(TCkOrderdetail tCkOrderdetail);
}

