package digital.laboratory.platform.inspection.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import digital.laboratory.platform.inspection.dto.DataSolutionSampleDTO;
import digital.laboratory.platform.inspection.dto.TaskTestDataDTO;
import digital.laboratory.platform.inspection.entity.TestRecordSampleData;
import digital.laboratory.platform.inspection.vo.ESTBusinessInfoVO;
import digital.laboratory.platform.inspection.vo.TestRecordSampleDataVO;
import digital.laboratory.platform.inspection.vo.TestResultBusinessVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author xy
 * @version 1.0
 * @title TestRecordSampleDataMapper
 * @description
 * @create 2024/1/18 11:06
 */
@Mapper
public interface TestRecordSampleDataMapper extends BaseMapper<TestRecordSampleData> {

    /**
     * 查询检验数据vo类，会携带扩展数据的list属性
     * @param wrapper
     * @return
     */
    List<TestRecordSampleDataVO> queryTestRecordSampleDataVOList(@Param(Constants.WRAPPER) Wrapper<TestRecordSampleData> wrapper);

    /**
     * 查询检验数据vo类，会携带扩展数据的list属性
     * @param wrapper
     * @return
     */
    IPage<TestRecordSampleDataVO> queryTestRecordSampleDataVOPage(Page page, @Param(Constants.WRAPPER) Wrapper<TestRecordSampleData> wrapper);

    /**
     * 通过业务id查询委托表、筛查表、任务表
     * @param qw
     * @return
     */
    List<ESTBusinessInfoVO> queryESTBusinessInfoList(@Param(Constants.WRAPPER) QueryWrapper<ESTBusinessInfoVO> qw);

    /**
     * 实验结果查询中分页查询
     * @param page
     * @param qw
     * @return
     */
    IPage<TestResultBusinessVO> queryTestResultTaskPage(Page<TestResultBusinessVO> page, @Param(Constants.WRAPPER) QueryWrapper<TestResultBusinessVO> qw);

    /**
     * 实验结果查询中列表查询
     * @param qw
     * @return
     */
    List<TestResultBusinessVO> queryTestResultTaskList(@Param(Constants.WRAPPER) QueryWrapper<TestResultBusinessVO> qw);

    /**
     * 通过业务id查询委托表、筛查表、任务表（以检验数据表为主表）
     * @param qw
     * @return
     */
    List<DataSolutionSampleDTO> queryDataSolutionSampleDTOList(@Param(Constants.WRAPPER) QueryWrapper<DataSolutionSampleDTO> qw);

    /**
     * 根据业务id 查询检材内容，然后通过检材id关联查询溶液，最后通过溶液编号查询数据(以检材表为主表)
     * @param qw
     * @return
     */
    List<DataSolutionSampleDTO> getTestDataListByBusiness(@Param(Constants.WRAPPER) QueryWrapper<DataSolutionSampleDTO> qw);

    /**
     * 获取任务检验数据中
     * @param qw
     * @return
     */
    List<TaskTestDataDTO> queryWaitApproveTaskTestDataList(@Param(Constants.WRAPPER) QueryWrapper<TaskTestDataDTO> qw);
}
