package com.ruoyi.ems.service;

import com.ruoyi.ems.domain.InspectionPlan;
import com.ruoyi.ems.domain.InspectionReport;
import com.ruoyi.ems.domain.ManualReportSubmit;

import java.util.List;

/**
 * 巡检计划Service接口
 */
public interface IInspectionPlanService {

    InspectionPlan selectById(Long id);

    InspectionPlan selectByPlanCode(String planCode);

    List<InspectionPlan> selectList(InspectionPlan plan);

    int insert(InspectionPlan plan);

    int update(InspectionPlan plan);

    int deleteByIds(Long[] ids);

    /**
     * 执行自动巡检任务
     * 根据配置的规则自动检查设备状态
     *
     * @param planCode 计划代码
     * @param executor 执行人
     * @return 巡检报告
     */
    InspectionReport executeAutoInspection(String planCode, String executor);

    /**
     * 提交手动巡检报告
     * 工作人员现场巡检后，手动填写并提交报告
     *
     * @param submit 手动提交的报告数据
     * @return 巡检报告
     */
    InspectionReport submitManualReport(ManualReportSubmit submit);

    /**
     * 执行巡检任务（兼容旧接口，内部会根据计划类型区分处理）
     * @deprecated 请使用 executeAutoInspection 或 submitManualReport
     */
    @Deprecated
    default InspectionReport executeInspection(String planCode, String executor) {
        return executeAutoInspection(planCode, executor);
    }
}