package com.ygtx.gxt.service;

import com.ygtx.gxt.domain.GxtRepairOrder;
import com.ygtx.gxt.domain.GxtWorkOrder;
import com.ygtx.gxt.domain.OrderScoreInfo;

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

/**
 * 工单评分Service接口
 *
 * @author lingming
 * @date 2025-11-12
 */
public interface IGxtOrderScoreService {

    /**
     * 查询合并的工单列表（维修工单和维保工单）
     *
     * @param repairOrder 维修工单查询条件
     * @param workOrder 维保工单查询条件
     * @return 合并的工单列表
     */
    public List<OrderScoreInfo> selectUnionOrderList(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword);

    /**
     * 获取工单评分统计信息
     *
     * @param repairOrder 维修工单查询条件
     * @param workOrder 维保工单查询条件
     * @param month 月份筛选条件
     * @return 统计信息
     */
    public Map<String, Object> getOrderScoreStatistics(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String month);

    /**
     * 保存自评信息
     *
     * @param orderScoreInfo 工单评分信息
     * @return 结果
     */
    public int selfEvaluation(OrderScoreInfo orderScoreInfo);

    /**
     * 保存复评信息
     *
     * @param orderScoreInfo 工单评分信息
     * @return 结果
     */
    public int review(OrderScoreInfo orderScoreInfo);

    /**
     * 保存终评信息
     *
     * @param orderScoreInfo 工单评分信息
     * @return 结果
     */
    public int finalEvaluation(OrderScoreInfo orderScoreInfo);

    /**
     * 保存确认信息
     *
     * @param orderScoreInfo 工单评分信息
     * @return 结果
     */
    public int confirm(OrderScoreInfo orderScoreInfo);

    /**
     * 发起申诉
     *
     * @param orderScoreInfo 工单评分信息
     * @return 结果
     */
    public int appeal(OrderScoreInfo orderScoreInfo);

    /**
     * 查询合并的工单列表（维修工单和维保工单）
     *
     * @param repairOrder 维修工单查询条件
     * @param workOrder 维保工单查询条件
     * @return 合并的工单列表
     */
    public List<OrderScoreInfo> selectMobileUnionOrderList(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword);

    public List<OrderScoreInfo> selectMobileUnionOrderList(Long userId, GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword);

    public List<OrderScoreInfo> selectUnionExportOrderList(GxtRepairOrder repairOrder, GxtWorkOrder workOrder);
}