package org.springblade.modules.app.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.modules.app.common.dto.TransportDTO;
import org.springblade.modules.app.common.query.AdminWaybillQuery;
import org.springblade.modules.app.common.query.TransportQuery;
import org.springblade.modules.app.entity.TransportDO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

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

    /**
     * 新增运输单
     *
     * @param transportDTO
     * @return java.lang.Long
     * @author FUXINSHENG
     */
    Long addTransport(TransportDTO transportDTO);

    /**
     * 通过运输单id获取运输单
     *
     * @param transportId
     * @return org.springblade.modules.app.common.dto.TransportDTO
     * @author FUXINSHENG
     */
    TransportDTO getTransportById(Long transportId);

    /**
     * 根据条件查询运输单集合
     *
     * @param query
     * @return java.util.List<org.springblade.modules.app.common.dto.TransportDTO>
     * @author FUXINSHENG
     */
    List<TransportDTO> listTransport(TransportQuery query);

    /**
     * 根据条件查询运输单
     *
     * @param query
     * @return java.util.List<org.springblade.modules.app.common.dto.TransportDTO>
     * @author FUXINSHENG
     */
    TransportDTO getTransport(TransportQuery query);

    /**
     * 更新运输单
     *
     * @param transport
     * @return java.lang.Boolean
     * @author FUXINSHENG
     */
    Boolean updateTransport(TransportDTO transport);

    /**
     * 分页查询运输单
     *
     * @param transportQuery
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<org.springblade.modules.app.common.dto.TransportDTO>
     * @author FUXINSHENG
     */
    Page<TransportDTO> pageTransport(AdminWaybillQuery transportQuery);

    /**
     * 批量修改运输单
     *
     * @param transportDTOList
     * @return void
     * @author FUXINSHENG
     * @date   2021/12/28 9:39
     */
    Boolean updateBatch(List<TransportDTO> transportDTOList);

    List<TransportDTO> queryAutoCloseData();
}
