package com.sw.mes.yb.production.service;

import javax.validation.Valid;

import com.sw.mes.core.base.BaseService;
import com.sw.mes.core.response.Result;
import com.sw.mes.yb.agv.dto.AgvCallBackParamDto;
import com.sw.mes.yb.production.dto.CallTakeCrystalAgvDto;
import com.sw.mes.yb.production.dto.InspectionRecord.InspectionBackDto;
import com.sw.mes.yb.production.dto.InspectionRecord.InspectionRecordDto;
import com.sw.mes.yb.production.entity.InspectionRecord;

/**
 * @Author @Description：
 * @Date:
 * @Modified By:
 */
public interface InspectionRecordService extends BaseService<InspectionRecord> {

    Result build(InspectionRecordDto inspectionRecordDto);

    void callAgv(@Valid InspectionRecordDto inspectionRecordDto);

    /**
     * 只送验不呼叫AGV
     * 
     * @param inspectionRecordDto
     */
    void sendCheck(@Valid InspectionRecordDto inspectionRecordDto);

    void callBack(AgvCallBackParamDto paramDto);

    InspectionRecord findByLongCrystalId(Long id);

    String callAgvTest(@Valid InspectionRecordDto inspectionRecordDto);

    void back(@Valid InspectionBackDto inspectionBackDto);

    Result sendMCS(InspectionRecordDto inspectionRecordDto);

    void busloadBuild(@Valid InspectionRecordDto inspectionRecordDto);

    void sendBindingInfo(@Valid InspectionRecordDto inspectionRecordDto);

    void sendBindingInfoToMcsRg(@Valid InspectionRecordDto inspectionRecordDto);

    InspectionRecord getLastCrystalNoLog(String crystalNo);

    Result callTakeCrystalAgv(CallTakeCrystalAgvDto callTakeCrystalAgvDto);

    void callTakeCrystalAgvBack(AgvCallBackParamDto paramDto);

}