package org.springblade.modules.app.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.modules.app.common.dto.WaybillDTO;
import org.springblade.modules.app.common.query.AdminWaybillQuery;
import org.springblade.modules.app.common.query.WaybillQuery;
import org.springblade.modules.app.common.vo.WaybillListVO;
import org.springblade.modules.app.entity.WaybillDO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 调运单信息 服务类
 * </p>
 *
 * @author fuxinsheng
 * @since 2021-11-05
 */
public interface IWaybillService extends IService<WaybillDO> {

    /**
     * 根据条件获取调运单集合
     *
     * @param query
     * @return java.util.List<org.springblade.modules.app.common.vo.WaybillListVO>
     * @author FUXINSHENG
     */
    List<WaybillListVO> listWaybill(WaybillQuery query);

    /**
     * 根据条件获取调运单
     *
     * @param query
     * @return org.springblade.modules.app.common.dto.WaybillDTO
     * @author FUXINSHENG
     */
    WaybillDTO getWaybill(WaybillQuery query);

    /**
     * 根据id获取调运单
     *
     * @param id
     * @return org.springblade.modules.app.common.dto.WaybillDTO
     * @author FUXINSHENG
     */
    WaybillDTO getWaybillById(Long id);

    /**
     * 新增调运单
     *
     * @param waybillDTO
     * @return java.lang.Long
     * @author FUXINSHENG
     */
    Long addWaybill(WaybillDTO waybillDTO);

    /**
     * 更新调运单
     *
     * @param waybillDTO
     * @return java.lang.Boolean
     * @author FUXINSHENG
     */
    Boolean updateWaybill(WaybillDTO waybillDTO);

    /**
     * 分页查询调运单
     *
     * @param waybillQuery
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<org.springblade.modules.app.common.dto.WaybillDTO>
     * @author FUXINSHENG
     * @date   2021/11/24 9:43
     */
    Page<WaybillDTO> pageWaybill(AdminWaybillQuery waybillQuery);

    Boolean realDeleteById(Long id);
}
