package com.pm.subsystem.mapper;

import java.util.List;
import java.util.Map;
import com.pm.common.config.PageData;

/**
 * 设备服务工单Mapper接口
 *
 * @author lxf
 * @date 2025-06-11
 */
public interface DeviceServiceOrderMapper
{
    /**
     * 查询设备服务工单
     *
     * @param id 设备服务工单主键
     * @return 设备服务工单
     */
    public PageData selectServiceOrderById(Long id);

    /**
     * 查询设备服务工单列表
     *
     * @param pd 设备服务工单
     * @return 设备服务工单集合
     */
    public List<PageData> selectServiceOrderList(PageData pd);

    /**
     * 新增设备服务工单
     *
     * @param pd 设备服务工单
     * @return 结果
     */
    public int insertServiceOrder(PageData pd);

    /**
     * 修改设备服务工单
     *
     * @param pd 设备服务工单
     * @return 结果
     */
    public int updateServiceOrder(PageData pd);

    /**
     * 删除设备服务工单
     *
     * @param id 设备服务工单主键
     * @return 结果
     */
    public int deleteServiceOrderById(Long id);

    /**
     * 批量删除设备服务工单
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteServiceOrderByIds(Long[] ids);

    /**
     * 根据工单号查询工单
     *
     * @param orderId 工单ID
     * @return 工单信息
     */
    public PageData selectServiceOrderByOrderNo(String orderId);

    /**
     * 分配工单
     *
     * @param pd 分配参数
     * @return 结果
     */
    public int assignServiceOrder(PageData pd);

    /**
     * 接单
     *
     * @param pd 接单参数
     * @return 结果
     */
    public int acceptServiceOrder(PageData pd);

    /**
     * 完成工单
     *
     * @param pd 完成参数
     * @return 结果
     */
    public int completeServiceOrder(PageData pd);

    /**
     * 评价工单
     *
     * @param pd 评价参数
     * @return 结果
     */
    public int evaluateServiceOrder(PageData pd);

    /**
     * 关闭工单
     *
     * @param pd 关闭参数
     * @return 结果
     */
    public int closeServiceOrder(PageData pd);

    /**
     * 获取工单统计信息
     *
     * @param pd 查询参数
     * @return 统计信息
     */
    public Map<String, Object> getOrderStatistics(PageData pd);

    /**
     * 获取工单趋势数据
     *
     * @param pd 查询参数
     * @return 趋势数据
     */
    public List<Map<String, Object>> getOrderTrend(PageData pd);

    /**
     * 查询我的工单列表
     *
     * @param pd 查询参数
     * @return 工单列表
     */
    public List<PageData> selectMyServiceOrderList(PageData pd);

    /**
     * 插入工单操作记录
     *
     * @param pd 操作记录
     * @return 结果
     */
    public int insertOrderOperateRecord(PageData pd);

    /**
     * 查询工单操作记录
     *
     * @param orderId 工单ID
     * @return 操作记录列表
     */
    public List<PageData> selectOrderOperateRecords(String orderId);

    /**
     * 更新工单状态
     *
     * @param pd 状态参数
     * @return 结果
     */
    public int updateOrderStatus(PageData pd);

    /**
     * 查询超时工单
     *
     * @param pd 查询参数
     * @return 超时工单列表
     */
    public List<PageData> selectTimeoutOrders(PageData pd);

    /**
     * 批量分配工单
     *
     * @param pd 分配参数
     * @return 结果
     */
    public int batchAssignServiceOrders(PageData pd);
}