package cn.iocoder.yudao.module.base.service;

import cn.iocoder.yudao.module.base.vo.*;
import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsRespVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Map;

/**
 * 维修数据统计
 *
 * @author pqz
 */
public interface RepairStatisticsService {

    /**
     * 客户来源分析饼图
     *
     * @return java.util.List<cn.iocoder.yudao.module.base.vo.RepairStatisticsVO>
     * @author PQZ
     * @date 14:01 2024/10/21
     **/
    List<RepairStatisticsVO> customerSource();

    /**
     * 月工单数量、金额走势、支付渠道统计
     * @author PQZ
     * @date 14:32 2024/10/21
     * @param type 'amount:金额，count：数量'，payWay：支付渠道
     * @return java.util.Map<java.lang.String,java.lang.Object>
    **/
    Map<String, Object> ticketMain(String type);

    /**
     * 维修类型相关统计分析饼图
     *
     * @return java.util.Map<java.lang.String, java.lang.String>
     * @author PQZ
     * @date 13:25 2024/10/21
     **/
    List<RepairStatisticsVO> repairTypeStatistics();


    /**
     * 工单总数、今日工单、工单总金额、今日工单金额
     *
     * @return java.util.Map<java.lang.String, java.lang.String>
     * @author PQZ
     * @date 13:23 2024/10/21
     **/
    RepairTicketStatisticsVO ticketStatistics();

    /**
     * 工单状态数量统计
     *
     * @return java.util.Map<java.lang.String, java.lang.String>
     * @author PQZ
     * @date 13:28 2024/10/21
     **/
    List<RepairStatisticsVO> ticketStatusCount();


    /**
     * 今日工单
     *
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     * @author PQZ
     * @date 13:25 2024/10/21
     **/
    List<DlRepairTicketsRespVO> listTicketToday();



    /**
     * 维修工人排行
     *
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     * @author PQZ
     * @date 13:26 2024/10/21
     **/
    List<RepairStatisticsVO> listWorks();


    /**
     * @Author 许
     * @Description  统计最近业务（车辆或客户）
     * @Date 15:04 2025/8/25
     * @Param [reqVO, page]
     * @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.base.vo.QueryBusinessResp>
     **/
    IPage<QueryBusinessResp> listBusinessByCustomerOrCar(QueryBusinessReqVO reqVO, Page<QueryBusinessResp> page);

    /**
     * @Author 许
     * @Description  根据客户或者车辆插叙订单
     * @Date 17:08 2025/9/1
     * @Param [reqVO, page]
     * @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.base.vo.QueryTableResp>
     **/
    IPage<QueryTableResp> pageByCustomerOrCar(QueryBusinessReqVO reqVO, Page<QueryTableResp> page);
}
