package com.prolog.rdc.tms.service;


import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.basicConfigure.CarrierMthStrategyPageDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.CarrierMthStrategyViewDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.ShipbillMatchCarrierDTO;
import com.prolog.rdc.tms.model.vo.basicConfigure.*;

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

/**
 *
 *
 * 承运方匹配策略业务服务层
 *
 * @className :CarrierMthStrategyService
 * @author :lhb
 * @creationTime :2022/04/29
 * @description :
 *
 * @modifier :
 * @modifyTime :
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface CarrierMthStrategyService {


    /**
     * 承运方匹配策略分页查询
     *
     * @param pageVO
     * @return
     */
    Page<CarrierMthStrategyPageDTO> pageQuery(CarrierMthStrategyPageVO pageVO);

    /**
     * 承运方匹配策略保存
     *
     * @param carrierMthStrategySaveVO
     * @return
     */
    void save(CarrierMthStrategySaveVO carrierMthStrategySaveVO);

    /**
     * 承运方匹配策略修改
     *
     * @param carrierMthStrategyUpdateVO
     * @return
     */
    void update(CarrierMthStrategyUpdateVO carrierMthStrategyUpdateVO);

    /**
     * 承运方匹配策略停用
     *
     * @param ids
     * @return
     */
    void stop(List<Long> ids);

    /**
     * 承运方匹配策略启用
     *
     * @param ids
     * @return
     */
    void enable(List<Long> ids);

    /**
     * 承运方匹配策略查看
     *
     * @param viewVO
     * @return
     */
    CarrierMthStrategyViewDTO view(CarrierMthStrategyViewVO viewVO);

    /**
     * 根据运单适配匹配承运方策略
     *
     * @param matchCarrierVOs
     * @return
     */
    Map<String,ShipbillMatchCarrierDTO> shipbillMatchCarrier(List<ShipbillMatchCarrierVO> matchCarrierVOs);
}
