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 ouyj
 * @date 2025-11-12
 */
public interface IGxtOrderHourService 
{
    /**
     * 查询合并的工单列表（维修工单和维保工单）
     * 
     * @param repairOrder 维修工单查询条件
     * @param workOrder 维保工单查询条件
     * @param orderType 工单类型筛选条件
     * @param timeRange 时间范围参数 (week:本周, month:本月, custom:自定义)
     * @param beginDate 自定义开始时间
     * @param endDate 自定义结束时间
     * @param keyword 搜索关键字
     * @return 合并的工单列表
     */
    public List<OrderScoreInfo> selectUnionOrderList(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String orderType, String timeRange, String beginDate, String endDate, String keyword);

    /**
     * 获取工单工时统计信息
     *
     * @param repairOrder 维修工单查询条件
     * @param workOrder 维保工单查询条件
     * @param orderType 工单类型筛选条件
     * @param timeRange 时间范围参数 (week:本周, month:本月, custom:自定义)
     * @param beginDate 自定义开始时间
     * @param endDate 自定义结束时间
     * @param keyword 搜索关键字
     * @return 统计信息
     */
    public Map<String, Object> getOrderHourStatistics(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String orderType, String timeRange, String beginDate, String endDate, String keyword);
    
    /**
     * 计算工单详情中的各个时长（用于前端展示）
     * 
     * @param order 工单信息
     */
    public void calculateOrderTimeDetails(OrderScoreInfo order);
}