package com.dayou.service;
import com.dayou.bo.BrokerageDetailBO;
import com.dayou.dto.ItemDTO;
import com.dayou.entity.ItemBrokerageGeneral;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dayou.entity.PaymentCollection;
import com.dayou.vo.BrokerageGeneralVO;
import com.dayou.vo.ItemStageVO;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 项目提成总表 服务类
 * </p>
 *
 * @author wucl
 * @since 2023-03-03
 */
public interface IItemBrokerageGeneralService extends IService<ItemBrokerageGeneral> {

    Page<BrokerageGeneralVO> selectPage(Page page, BrokerageGeneralVO itemBrokerageGeneral);

    ItemBrokerageGeneral detail(Long id);

    Boolean add(ItemBrokerageGeneral itemBrokerageGeneral);

    Boolean update(ItemBrokerageGeneral itemBrokerageGeneral);

    Boolean delete(Long id);

    void doCreateBrokerageGeneralAndDetail(BrokerageDetailBO bo);

    void addMarketerBrokerage(Long id);

    void editMarketerBrokerage(ItemDTO itemDTO);

    void changeManagerBrokerage(ItemDTO itemDTO);

    void removeMarketerBrokerage(Long itemId);

    void addParticipatorBrokerage(ItemStageVO itemStageVO,Long brokerageStageId);

    void editParticipatorBrokerage(ItemStageVO itemStageVO);

    void removeParticipatorBrokerage(Long itemStageId);

    void toSettleParticipatorBrokerage(Long itemId);

    void toSettleMarketerBrokerage(PaymentCollection payment);

    List<ItemBrokerageGeneral> computedAbleList();

    Boolean updateMarketerStatus(Long id, Boolean marketerStatus);

    void beforeToSettleParticipatorBrokerage(Long itemId);

    void beforeToSettleMarketerBrokerage(PaymentCollection payment);

    void beforeEditMarketerBrokerage(ItemDTO itemDTO);

    void beforeAddParticipatorBrokerage(ItemStageVO itemStageVO);

    void beforeRemoveParticipatorBrokerage(Long itemStageId);

    void beforeToSettleMarketerBrokerage(Long paymentId);

    void toSettleMarketerBrokerage(Long paymentId);

    void updateAheadStatus(Long userId);

    ItemDTO getItemByBrokerageGeneralId(Long generalId);

    List<BrokerageGeneralVO> xList(BrokerageGeneralVO brokerageGeneralVO);
}
