package com.fs.his.mapper;

import java.util.List;
import com.fs.his.domain.FsTestReport;
import com.fs.his.param.FsTestReportParam;
import com.fs.his.vo.FsTestReportListVO;
import com.fs.his.vo.FsTestReportVO;
import org.apache.ibatis.annotations.Select;

/**
 * 测试报告Mapper接口
 *
 * @author fs
 * @date 2023-09-04
 */
public interface FsTestReportMapper
{
    /**
     * 查询测试报告
     *
     * @param reportId 测试报告主键
     * @return 测试报告
     */
    public FsTestReport selectFsTestReportByReportId(Long reportId);

    /**
     * 查询测试报告列表
     *
     * @param fsTestReport 测试报告
     * @return 测试报告集合
     */
    public List<FsTestReport> selectFsTestReportList(FsTestReport fsTestReport);

    /**
     * 新增测试报告
     *
     * @param fsTestReport 测试报告
     * @return 结果
     */
    public int insertFsTestReport(FsTestReport fsTestReport);

    /**
     * 修改测试报告
     *
     * @param fsTestReport 测试报告
     * @return 结果
     */
    public int updateFsTestReport(FsTestReport fsTestReport);

    /**
     * 删除测试报告
     *
     * @param reportId 测试报告主键
     * @return 结果
     */
    public int deleteFsTestReportByReportId(Long reportId);

    /**
     * 批量删除测试报告
     *
     * @param reportIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFsTestReportByReportIds(Long[] reportIds);

    @Select({"<script> " +
            "select tr.*,t.`name`,u.nick_name,u.phone FROM fs_test_report tr LEFT JOIN fs_test_temp t ON t.temp_id=tr.temp_id LEFT JOIN fs_user u ON u.user_id=tr.user_id "+
            "<where>  \n" +
            "            <if test=\"reportSn != null  and reportSn != ''\"> and tr.report_sn = #{reportSn}</if>\n" +
            "            <if test=\"name != null \">  and t.name like concat('%', #{name}, '%')</if>\n" +
            "            <if test=\"sTime != null \">  and DATE(tr.create_time) &gt;= DATE(#{sTime})</if>\n" +
            "            <if test=\"eTime != null \">  and DATE(tr.create_time) &lt;= DATE(#{eTime})</if>\n" +
            "        </where> order by report_id desc"+
            "</script>"})
    List<FsTestReportListVO> selectFsTestReportListVO(FsTestReportParam fsTestReport);

    @Select("select tr.*,t.`name`,u.nick_name,u.phone FROM fs_test_report tr LEFT JOIN fs_test_temp t ON t.temp_id=tr.temp_id LEFT JOIN fs_user u ON u.user_id=tr.user_id where tr.report_id =#{reportId}")
    FsTestReportVO selectFsTestReportByReportIdVO(Long reportId);


}
