package com.zfire.mall.manager.commonmapper.engin.deposit;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zfire.mall.manager.bean.PoySaleCountBean;
import com.zfire.mall.manager.bean.displace.order.DisplaceOrderInfo;
import com.zfire.mall.manager.bean.engin.deposit.DepositManageBean;
import com.zfire.mall.manager.bean.engin.deposit.EnginOrderInfo;
import com.zfire.mall.manager.bean.engin.v2.deposit.DepositManageVO;
import com.zfire.mall.manager.bean.engin.v2.order.HomeEnginOrderVO;
import com.zfire.mall.manager.plus.entity.EnginOrderItem;
import com.zfire.mall.manager.zfire.bean.ZfireParamBean;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

public interface DepositMangeReserveMapper {

    IPage<DepositManageBean> listPage(Page<Object> objectPage,Integer settlementStatus,Integer mailFactoryStatus,
                                      String customerKeyword, String enginOrderNo, String enginOrderType,
                                      String refEnginRecordNo, String refProjectName, String refTradeCategory, String refUseUnit,
                                      String startSubmitTime, String endSubmitTime, String startConfirmTime, String endConfirmTime,
                                      String createName, String confirmName, Boolean isRefundDeposit, List<String> examineStatus,
                                      String serviceId, List<String> adminCompanyIds, List<String> serviceIds, String customerId,
                                      String materialNumber, String materialOldNumber, String materialName, String specification,
                                      String factoryNo, String specialNo, String geLiInerNote, String refFactoryNo, String refRegionWork,
                                      String startInstallTime, String endInstallTime, String startAcceptTime, String endAcceptTime,
                                      String refBuyUnitName, String refPromiseProvide, String specialItemNo,
                                      String preFactoryNo, Long startFactoryNo,Long endFactoryNo,
                                      String preSpecialNo, Long startSpecialNo, Long endSpecialNo,
                                      String preBillNo, Long startBillNo, Long endBillNo,
                                      String startMailFactoryDate, String endMailFactoryDate, String mailFactoryYear,
                                      String startConfirmDate, String endConfirmDate, String startSettlementNo,
                                      String endSettlementNo, String startSettlementDate, String endSettlementDate,
                                      String startInFactoryDate, String endInFactoryDate, String inFactoryType,
                                      String startOrderDate, String endOrderDate, List<String> dataStates
                                      );

    DepositManageBean detail(String id, List<String> adminCompanyIds, List<String> serviceIds, String customerId);

    List<EnginOrderInfo> queryEnginOrderInfo(String refEnginRecordNo);

    List<DisplaceOrderInfo> queryDisplaceOrderInfo(String refEnginRecordNo);

    List<EnginOrderItem> queryOrderHasSendQty(@Param("recordNos") Collection<String> recordNos);

    PoySaleCountBean countList(String customerKeyword, String enginOrderNo, String enginOrderType, String refEnginRecordNo,
                               String refProjectName, String refTradeCategory, String refUseUnit, String startSubmitTime,
                               String endSubmitTime, String startConfirmTime, String endConfirmTime, String createName,
                               String confirmName, Boolean isRefundDeposit, List<String> examineStatus, String serviceId,
                               List<String> adminCompanyIds, List<String> serviceIds, String customerId, String materialNumber,
                               String materialOldNumber, String materialName, String specification, String factoryNo,
                               String specialNo, String geLiInerNote, String refFactoryNo, String refRegionWork,
                               String startInstallTime, String endInstallTime, String startAcceptTime, String endAcceptTime,
                               String refBuyUnitName, String refPromiseProvide, String specialItemNo, String preFactoryNo,
                               Long startFactoryNo, Long endFactoryNo, String preSpecialNo, Long startSpecialNo,
                               Long endSpecialNo, String preBillNo, Long startBillNo, Long endBillNo,
                               String startMailFactoryDate, String endMailFactoryDate, String mailFactoryYear,
                               String startConfirmDate, String endConfirmDate, String startSettlementNo,
                               String endSettlementNo, String startSettlementDate, String endSettlementDate,
                               String startInFactoryDate, String endInFactoryDate, String inFactoryType,
                               Integer settlementStatus, Integer mailFactoryStatus, String startOrderDate,
                               String endOrderDate, List<String> dataStates);

    IPage<DepositManageVO> v2HomeListPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);

    PoySaleCountBean v2CountList(@Param("ex") ZfireParamBean zfireParamBean);

    List<HomeEnginOrderVO> queryOrderItem(String refEnginRecordNo);

    void batchSpanUpdateInfo();
}
