package com.sckw.transport.api.dubbo;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author lfdc
 * @version 1.0
 * @className TransportStatisticsService
 * @description 物流订单dubbo
 * @company sckw
 * @date 2023-09-08 10:06:27
 */
public interface TransportRemoteStatisticsService {
    /**
     * 统计承运订单
     *
     * @param topEntId
     * @return
     */
    Integer statisticsLogistics(Long topEntId, List<Long> enterpriseIds);

    /**
     * 统计托运订单
     *
     * @param topEntId
     * @return
     */
    Integer statisticsLogisticsByConsign(Long topEntId,List<Long> enterpriseIds);

    /**
     * 统计调度派车
     *
     * @param topEntId
     * @return
     */
    Integer statisticsWaybillSendCar(Long topEntId);

    /**
     * 统计待核运单
     *
     * @param topEntId
     * @return
     */
    Integer statisticsPendingVerificationWaybill(Long topEntId);

    /**
     * 统计贸易订单已派车次，排除已取消运单。
     *
     * @param tOrderId 贸易订单ID
     * @return 已派车次数
     */
    Long countDispatchedWaybillsByTradeOrderId(Long tOrderId);

    /**
     * 按时间范围汇总贸易订单已完成运单的完成量。
     *
     * @param tradeOrderId 贸易订单ID
     * @param chargeType 计费方式：1-装货量，2-卸货量
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 完成量
     */
    BigDecimal sumCompletedWaybillVolumeByTimeRange(Long tradeOrderId, Integer chargeType,
                                                    LocalDateTime startTime, LocalDateTime endTime);


    /**
     * 按时间范围汇总贸易订单已完成运单的完成量。
     *
     * @param tradeOrderId 贸易订单ID
     * @param chargeTyp 计费方式：1-装货量，2-卸货量
     * @return 完成量
     */
    BigDecimal sumCompletedWaybillVolumeByTimeRange(Long tradeOrderId, Integer chargeTyp);

}
