package digital.laboratory.platform.inspection.service;

import com.baomidou.mybatisplus.extension.service.IService;
import digital.laboratory.platform.inspection.dto.HairSewageDataDto;
import digital.laboratory.platform.inspection.dto.NPSCaseTestDataDto;
import digital.laboratory.platform.inspection.dto.TestSampleDataExpandDTO;
import digital.laboratory.platform.inspection.entity.TestRecordSampleDataExpand;
import digital.laboratory.platform.sys.entity.Drug;

import java.util.Collection;
import java.util.List;

/**
* @author ChenJiangBao
* @description 针对表【b_test_record_sampledata_expand(样本检验数据的扩展信息)】的数据库操作Service
* @createDate 2025-03-19 14:58:17
*/
public interface TestRecordSampledataExpandService extends IService<TestRecordSampleDataExpand> {

    /**
     * 封装处理毛发案件、任务等检验扩展数据信息
     * @param hairSewageDataDto
     * @param testDataId
     * @return
     */
    Collection<? extends TestRecordSampleDataExpand> saveHairSewageInspectExpData(HairSewageDataDto hairSewageDataDto, String testDataId);

    /**
     * 封装处理nps案件检验扩展数据信息
     *
     * @param npsCaseTestDataDto
     * @param testDataId
     * @return
     */
    Collection<? extends TestRecordSampleDataExpand> saveNPSInspectExpData(NPSCaseTestDataDto npsCaseTestDataDto, String testDataId);

    /**
     * 根据业务类型保存检验数据扩展信息
     * @param testDataId 检验数据id
     * @param drug 对应的标准品毒品清单
     * @param businessType 业务类型
     * @return
     */
    List<TestRecordSampleDataExpand> saveExpDataByBusinessType(String testDataId, Drug drug, String businessType);

    /**
     * 根据DTO去批量更新
     *
     * @param dtoList
     * @param testId 这里实验id之所以需要是因为如果当前更新的也有标准品的，则应该先计算标准品的，避免计算样本检测的空指针异常
     * @return
     */
    Boolean updateBatchByDTO(List<TestSampleDataExpandDTO> dtoList, String testId);
}
