package com.prolog.rdc.tms.service;

import com.prolog.framework.common.message.RestMessage;
import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.*;
import com.prolog.rdc.tms.model.vo.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 运输管理——所有运单服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author xyf
 * @since 2022/6/1 12:43
 */
public interface AllShipbillService {

	/**
	 * 运单分页查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillPageDTO> queryAllShipbillPage(AllShipbillQueryVO vo);

	/**
	 * 运单高级查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillPageDTO> pageAdvanced(AllShipbillAdsQueryVO vo);

	/**
	 * 商品详情查询
	 *
	 * @param allShipbillItemQueryVO
	 * @return
	 */
	Page<AllShipbillItemDTO> listItemDetailData(AllShipbillItemQueryVO allShipbillItemQueryVO);

	/**
	 * 包裹详情查询
	 *
	 * @param allShipbillPackageQueryVO
	 * @return
	 */
	Page<AllShipbillPackageDTO> listPackageData(AllShipbillPackageQueryVO allShipbillPackageQueryVO);


	/**
	 * 异常登记
	 *
	 * @param vo
	 * @return
	 */
	void abnormalRegister(AbnormalRegisterVO vo);

	/**
	 * 客户反馈
	 *
	 * @param vo
	 * @return
	 */
	void feedBack(FeedBackVO vo);

	/**
	 * 所有运单修改
	 *
	 * @param
	 * @return
	 */
	void update(AllShipbillUpdateVO vo) throws Exception;

	/**
	 * 所有运单打印
	 *
	 * @param
	 * @return
	 */
	// Map<String, Object> print(AllShipbillPrintVO allShipbillPrintVO);

	/**
	 * 所有运单导出
	 *
	 * @param
	 * @return
	 */
	List<AllShipbillExportDTO> export(AllShipbillQueryVO vo) throws Exception;

	/**
	 * 所有运单分页导出
	 *
	 * @param
	 * @return
	 */
	List<AllShipbillExportDTO> exportPage(AllShipbillQueryVO vo) throws Exception;

	/**
	 * 所有运单选择行导出
	 *
	 * @param
	 * @return
	 */
	List<AllShipbillExportDTO> exportSelected(List<String> ids)  throws Exception;

	// STD-DEVELOP20220823 lhb 运单件重体调整 20220913 start
	/**
	 * 修改运单
	 *
	 * @param
	 * @return
	 */
	void shipbillUpdate(ShipbillAdjustVO adjustVO);
	// STD-DEVELOP20220823 lhb 运单件重体调整 20220913 end

	// STD-DEVELOP20220823 lhb 销售单模式 20220919 start
	/**
	 * 销售单模式查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillPageDTO> querySellAllShipbillPage(AllShipbillQueryVO vo);

	/**
	 * 发货单信息查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillPageDTO> queryShipShipbill(AllShipbillSellQueryVO vo);

	/**
	 * 备货等待信息查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillPageDTO> queryStockingWaitingShipbill(AllShipbillSellQueryVO vo);

	/**
	 * 关闭信息查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillPageDTO> queryClosingShipbill(AllShipbillSellQueryVO vo);

	/**
	 * 关联运单
	 *
	 * @param relatedShipbillVO
	 */
	List<RelatedShipbillDTO> queryRelatedShipbill(RelatedShipbillQueryVO relatedShipbillVO);

	/**
	 * 关闭运单
	 *
	 * @param
	 * @return
	 */
	void closeShipbill(ShipbillCloseVO vo);
	// STD-DEVELOP20220823 lhb 销售单模式 20220919 end

	/**
	 * 评价信息查询
	 *
	 * @param
	 * @return
	 */
	Page<ShipbillEvaluationDTO> queryShipbillEvaluation(AllShipbillSellQueryVO vo);

	/**
	 * 运单温度轨迹信息查询
	 *
	 * @param
	 * @return
	 */
	ShipBillTemperatureTrackDTO queryShipbillTemperature(ShipbillViewVO vo);
}
