package com.prolog.rdc.tms.app.service.business;

import com.prolog.framework.core.pojo.Page;
import com.prolog.product.core.framework.entity.UserEntity;
import com.prolog.rdc.tms.app.model.dto.business.MatchCarrierStrategyDTO;
import com.prolog.rdc.tms.app.model.dto.business.PendingDispatchQueryDTO;
import com.prolog.rdc.tms.app.model.vo.business.MatchCarrierStrategyVO;
import com.prolog.rdc.tms.app.model.vo.business.PendingDispatchQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.PendingDispatchVO;

import java.util.Date;
import java.util.List;

/**
 * 调度管理-待调度服务层
 *
 * @author lhb
 * @since 2022-04-13 14:45:00
 */
public interface PendingDispatchService {

	/**
	 * 待调度查询
	 *
	 * @param pendingDispatchVO
	 * @return
	 */
	Page<PendingDispatchQueryDTO> dispatchShipbillQuery(PendingDispatchQueryVO pendingDispatchVO);

	/**
	 * 调度
	 *
	 * @param vo
	 * @return
	 */
	void dispatch(PendingDispatchVO vo);

	/**
	 * 自动调度
	 *
	 * @param vo
	 * @return
	 */
	void autoDispatch(PendingDispatchVO vo, UserEntity user, Date date);

	void updatePlanBill(List<String> shipbillIds, UserEntity user);

	/**
	 * 调度承运商策略匹配
	 * @param vo
	 * @return
	 */
	MatchCarrierStrategyDTO matchCarrierStrategy(MatchCarrierStrategyVO vo);

}
