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

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zfire.mall.manager.bean.engin.info.EnginInfoOrderBean;
import com.zfire.mall.manager.bean.engin.info.EnginInfoOrderListBean;
import com.zfire.mall.manager.bean.engin.info.EnginInfoSaleExecBean;
import com.zfire.mall.manager.bean.engin.v2.info.EnginInfoOrderVO;
import com.zfire.mall.manager.bean.engin.v2.info.EnginInfoSaleExecVO;
import com.zfire.mall.manager.zfire.bean.ZfireParamBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface EnginInfoOrderReserveMapper {
    IPage<EnginInfoOrderListBean> listPage(Page<Object> objectPage, String enginInfoNo, String productCategoryId,
                                           String customerKeyword, String projectName, String machineType,
                                           String useUnit, String installAddress, String projectNo, String enginFactoryNo,
                                           String enginSignType, String serviceId, String startContractExpireDate,
                                           String endContractExpireDate, String createName, String confirmName,
                                           List<String> examineStatus, String specification, String startOrderDate, String endOrderDate,
                                           Boolean isClose,
                                           List<String> adminCompanyIds,
                                           List<String> serviceIds, String customerId, String enginOrderType);

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


    /**
     * 商用信息单销售执行明细
     */
    @SqlParser(filter = true)
    IPage<EnginInfoSaleExecBean> queryEnginInfoSaleExec(
            IPage page,
            @Param("startOrderDate") String startOrderDate,
            @Param("endOrderDate") String endOrderDate,
            @Param("customerId") String customerId,
            @Param("refProjectName") String refProjectName,
            @Param("specification") String specification,
            @Param("refEnginRecordNo") String refEnginRecordNo,
            @Param("serviceId") String serviceId,
            @Param("isClose") Boolean isClose,
            @Param("confirmName") String confirmName,
            @Param("serviceIds") List<String> serviceIds
    );





    IPage<EnginInfoOrderVO> v2ListPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);

    IPage<EnginInfoSaleExecVO> v2ExecListPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);

    @SqlParser(filter = true)
    Integer v2ExecListTotal(@Param("ex") ZfireParamBean zfireParamBean);


}
