package cn.iocoder.yudao.module.payment.mapper;

import cn.iocoder.yudao.module.inspection.entity.InspectionInfo;
import cn.iocoder.yudao.module.label.vo.LabelPageReqVO;
import cn.iocoder.yudao.module.label.vo.LabelRespVO;
import cn.iocoder.yudao.module.payment.entity.OrderInfo;
import cn.iocoder.yudao.module.payment.entity.commentVo;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (OrderInfo)表数据库访问层
 *
 * @author makejava
 * @since 2023-07-24 18:30:25
 */
@Mapper
public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
    IPage<OrderInfo> orderListApp(Page<OrderInfo> page, @Param("userId") Long userId, @Param("status") String status, @Param("title") String title, @Param("type") String type);

    Double avgPartnerScore(@Param("partnerId") Long partnerId);

    List<JSONObject> statisticsZXTDay(@Param("partnerId") Long partnerId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    List<JSONObject> statisticsMid();

    IPage<InspectionInfo> inspectionList(Page<InspectionInfo> page, @Param("status") String status, @Param("userId") Long userId);

    IPage<OrderInfo> orderListSystem(Page<OrderInfo> page,@Param("vo") OrderInfo orderInfo);

    /**
     * 分页查询订单
     *
     * @param entity OrderInfo实体
     * @param page   分页参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.payment.entity.OrderInfo>
     * @author PQZ
     * @date 0:04 2024/9/20
     **/
    IPage<OrderInfo> pageOrderListSystem(@Param("entity") OrderInfo entity, Page<OrderInfo> page);

    List<JSONObject> statisticsZXTMonth(@Param("partnerId") Long partnerId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    List<JSONObject> statisticsOrder();

    List<JSONObject> getPartnerList(@Param("partnerName") String partnerName);

    IPage<InspectionInfo> governmentInspectionList(Page<InspectionInfo> page, @Param("carNum") String carNum, @Param("status") String status, @Param("partnerId") String partnerId);

    IPage<OrderInfo> orderList(Page<OrderInfo> page,@Param("userId") Long userId, @Param("status") String status, @Param("title") String title);

    IPage<OrderInfo> validationListWx(Page<OrderInfo> page, @Param("validationUserId") Long validationUserId);

    IPage<OrderInfo> validationListPc(Page<OrderInfo> page, Long partnerId);

    Integer getNoCommentOrder(@Param("userId") Long userId);

    IPage<commentVo> getCommentOrderList(Page<commentVo> page, @Param("partnerId") Long partnerId);

    IPage<OrderInfo> orderListPc(Page<OrderInfo> page,@Param("vo") OrderInfo orderInfo);
}

