package com.prolog.rdc.tms.service.basicConfigure;

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

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.basicConfigure.LineMthStrategyPageDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.LineMthStrategyViewDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.ShipbillMatchLineDTO;
import com.prolog.rdc.tms.model.vo.basicConfigure.LineMthStrategyPageVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.LineMthStrategySaveVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.LineMthStrategyUpdateVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.LineMthStrategyViewVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ShipbillMatchLineVO;

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

	/**
	 * 线路匹配策略分页查询
	 *
	 * @param pageVO
	 * @return
	 */
	Page<LineMthStrategyPageDTO> pageQuery(LineMthStrategyPageVO pageVO);

	/**
	 * 线路匹配策略保存
	 *
	 * @param lineMthStrategySaveVO
	 * @return
	 */
	void save(LineMthStrategySaveVO lineMthStrategySaveVO);

	/**
	 * 线路匹配策略修改
	 *
	 * @param lineMthStrategyUpdateVO
	 * @return
	 */
	void update(LineMthStrategyUpdateVO lineMthStrategyUpdateVO);

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

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

	/**
	 * 线路匹配策略查看
	 *
	 * @param viewVO
	 * @return
	 */
	LineMthStrategyViewDTO view(LineMthStrategyViewVO viewVO);

	/**
	 * 根据运单匹配线路策略
	 *
	 * @param matchLineVO
	 * @return
	 */
	ShipbillMatchLineDTO shipbillMatchLine(ShipbillMatchLineVO matchLineVO);

	/**
	 * 运单批量匹配线路策略
	 *
	 * @param matchLineVOs
	 * @return
	 */
	Map<String, ShipbillMatchLineDTO> shipbillMatchLineBatch(List<ShipbillMatchLineVO> matchLineVOs);
}
