package cn.iocoder.yudao.module.asset.service.inspection;

import cn.iocoder.yudao.module.asset.controller.admin.inspection.vo.InspectionRecordDetailVO;
import cn.iocoder.yudao.module.asset.controller.admin.inspection.vo.InspectionRecordItemUpdateReqVO;
import cn.iocoder.yudao.module.asset.dal.dataobject.inspection.InspectionRecordDO;

import jakarta.validation.Valid;

/**
 * 验车记录 Service 接口
 *
 * @author 芋道源码
 */
public interface InspectionRecordService {

    /**
     * 创建验车记录（根据模板生成检查项）
     */
    Long createRecord(Long templateId, Integer sourceType, Long sourceId, Long vehicleId);

    /**
     * 克隆验车记录（从已有记录克隆，保留结果数据）
     */
    Long cloneRecord(Long sourceRecordId, Integer newSourceType, Long newSourceId);

    /**
     * 更新验车记录检查项
     */
    void updateRecordItem(@Valid InspectionRecordItemUpdateReqVO updateReqVO);

    /**
     * 完成验车记录
     */
    void completeRecord(Long recordId, String inspectorName);

    /**
     * 获取验车记录详情
     */
    InspectionRecordDetailVO getRecordDetail(Long recordId);

    /**
     * 获取最新已完成的验车记录
     */
    InspectionRecordDO getLatestRecord(Long vehicleId, Integer sourceType);

}
