package com.prolog.rdc.tms.service;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.*;
import com.prolog.rdc.tms.model.entity.BmsLogOperationModel;
import com.prolog.rdc.tms.model.entity.BmsShipBillAdjustModel;
import com.prolog.rdc.tms.model.entity.BmsShipBillDetailModel;
import com.prolog.rdc.tms.model.entity.BmsShipBillPackageModel;
import com.prolog.rdc.tms.model.vo.*;
import org.springframework.web.multipart.MultipartFile;

import java.text.ParseException;
import java.util.List;

public interface ShipBillService {

    void save(ShipBillVO vo);

    Page<ShipBillDTO> findList(ShipBillManagementQueryVO vo) throws ParseException;

    ShipBillDTO detail(Long id);

    void update(ShipBillVO vo);

    void copy(ShipBillVO vo);

    void submit(List<String> ids);

    void adjustAccounts(List<String> ids);

    void shipBillFeeSave(ShipBillFeeSaveDTO dto);

    ShipBillFeeDTO shipBillFeeDetail(Long id);

    List<BmsShipBillDetailModel> findListForItem(Long id);

    List<BmsShipBillPackageModel> findListForPack(Long id);

    List<BmsShipBillAdjustModel> findListForAdjust(Long id);

    List<BmsLogOperationModel> findListForLog(Long id);

    void importShipbillData(MultipartFile file);

    void feeSubmit(List<String> ids);

    void shipBillFeeUpdate(ShipBillFeeSaveDTO dto);

    List<ShipBillFeeDetail> queryFeeInfo(Long id);

    Page<FeeManagementPopDTO> feeManagement(ExpenseManagementQueryVO vo);

    Page<ShipBillFeeListDTO> feeList(ShipBillQueryVO vo);

    ShipBillFeeDTO shipBillFeeDetailForTran(Long id,String source);

    List<ShipBillDTO> shipbillPop(List<String> shipbillNos);

    ShipBillFeeDTO shipBillDetail(String shipbillNo);

    List<BmsLogOperationModel> findListForTraLog(Long id);
}
