package com.sw.mes.fb.checkout.service;

import com.sw.mes.core.base.BaseService;
import com.sw.mes.core.dto.BackcutInspectionDto;
import com.sw.mes.core.dto.GetFbInfoDto;
import com.sw.mes.core.dto.OxygenCarbonDto;
import com.sw.mes.core.entity.FbCheckOutData;
import com.sw.mes.core.response.Result;
import com.sw.mes.fb.checkout.dto.FbCheckOutRecordDto;
import com.sw.mes.fb.checkout.dto.Flag4MDto;
import com.sw.mes.fb.checkout.entity.FbCheckOutRecord;

import java.util.List;

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

    // 通过方棒编号查询出匹配数据
    Result<GetFbInfoDto> getFbInfoBySectionNofb(String sectionNofb);


    FbCheckOutRecord findFbCheckOutRecord(String sectionNofb);

    List<FbCheckOutRecord> findAllFbCheckOutRecord(String sectionNofb);

    void saveAll(List<FbCheckOutRecord> fbCheckOutRecords);


   // Result saveInBatch(List<FbCheckOutRecordDto> fbCheckOutRecordDtos);


    Result deleteFbInspect(Long[] ids);


    // 修改时获取方棒检验数据库信息的检验类型以及领料来源
    Result updateGetCheckType(String sectionNoFb);

    /**
     * 新增修改方棒检验数据
     * @param fbCheckOutRecord 方棒检验数据
     * @param updateFlag 是否修改 true修改
     * @param flag 标记导入（需要默认值） true 是导入
     */
    void saveOrUpdateFbCheckOutRecord(FbCheckOutRecord fbCheckOutRecord, Boolean updateFlag, Boolean flag);

    Result<FbCheckOutRecordDto> findFbCheckOutRecordInfoById(Long id);

    /**
     * 根据方棒编号查询方棒是否抽检
     * @param sectionNoFb
     * @return
     */
    Flag4MDto whetherOrNotSampling(String sectionNoFb);

    void saveDataAndGrade(FbCheckOutData fbCheckOutData, String point);

    /**
     * 修改检验数据库是否反切字段
     *
     * @param isCutBack 是否反切
     * @param sectionNo 晶段
     */
    void updateIsCutBack(int isCutBack, String sectionNo);

    void updateWeight(FbCheckOutRecord updateDto);

    void updateOxygenCarbonByYbSectionNoList(OxygenCarbonDto oxygenCarbonDto);


    void saveBackcutInspection(List<BackcutInspectionDto> backcutInspectionDtos);

    List<FbCheckOutRecord> findBySectionNoList(List<String> sectionNoList);
}
