package com.xinelu.manage.mapper.patientinfoimportmain;

import com.xinelu.manage.domain.dialtime.DialTime;
import com.xinelu.manage.domain.patientinfoimportmain.PatientInfoImportMain;
import com.xinelu.manage.vo.patientinfo.PatientInfoVo;
import com.xinelu.manage.vo.patientinfoimportmain.PatientInfoImportMainVO;

import java.util.List;

/**
 * 患者导入记录Mapper接口
 *
 * @author xinelu
 * @date 2024-11-29
 */
public interface PatientInfoImportMainMapper {
    /**
     * 查询患者导入记录
     *
     * @param id 患者导入记录主键
     * @return 患者导入记录
     */
    PatientInfoImportMain selectPatientInfoImportMainById(Long id);

    // @Select("SELECT p.sn,count( 1 ) AS patientcount,DATE_FORMAT( p.create_time, '%Y-%m-%d' ) AS createTime,p.create_by FROM patient_info_import p GROUP BY p.sn,DATE_FORMAT( p.create_time, '%Y-%m-%d' ),p.create_by")
    // @Select("select * from patient_info")
    // @DataSource(value =  DataSourceType.HKHIS)
    List<PatientInfoImportMainVO> GetPatientInfoImport(PatientInfoImportMainVO patientInfoImport2VO);


    /**
     * 查询患者导入记录列表
     *
     * @param patientInfoImportMain 患者导入记录
     * @return 患者导入记录集合
     */
    List<PatientInfoImportMain> selectPatientInfoImportMainList(PatientInfoImportMain patientInfoImportMain);

    /**
     * 新增患者导入记录
     *
     * @param patientInfoImportMain 患者导入记录
     * @return 结果
     */
    int insertPatientInfoImportMain(PatientInfoImportMain patientInfoImportMain);

    /**
     * 修改患者导入记录
     *
     * @param patientInfoImportMain 患者导入记录
     * @return 结果
     */
    int updatePatientInfoImportMain(PatientInfoImportMain patientInfoImportMain);

    /**
     * 删除患者导入记录
     *
     * @param id 患者导入记录主键
     * @return 结果
     */
    int deletePatientInfoImportMainById(Long id);

    /**
     * 批量删除患者导入记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deletePatientInfoImportMainByIds(Long[] ids);

    /**
     * 根据修改患者导入记录
     *
     * @param patientInfoImportMain 患者导入记录
     * @return 结果
     */
    int updatePatientInfoImportMainImportStatus(PatientInfoImportMain patientInfoImportMain);

    /**
     * 根据sn查询患者信息
     *
     * @param sn 流水号
     * @return Long
     */
    List<Long> selectPatientInfoIds(String sn);

    /**
     * 根据患者id修改患者表删除状态
     *
     * @param ids 患者id集合
     * @return int
     */
    int updatePatientInfoByIds(List<Long> ids);

    /**
     * 根据患者id修改患者就诊记录表信息
     *
     * @param ids 患者id集合
     * @return int
     */
    int updatePatientVisitRecordByPatientIds(List<Long> ids);

    /**
     * 根据sn删除导入缓存表信息
     *
     * @param sn 流水号
     * @return int
     */
    int deletePatientInfoImportBySn(String sn);

    /**
     * 根据sn删除导入信息
     *
     * @param sn 流水号
     * @return int
     */
    int deletePatientInfoImportMainBySn(String sn);

    /**
     * 根据信息查询患者id
     *
     * @param patientInfoVo 患者信息
     * @return Long
     */
    Long selectPatientInfoByMainVO(PatientInfoVo patientInfoVo);

    /**
     * 根据患者id修改患者表删除状态
     *
     * @param id 患者id
     * @return int
     */
    int updatePatientInfoById(Long id);

    /**
     * 根据患者id修改患者就诊记录表信息
     *
     * @param patientId 患者id
     * @return int
     */
    int updatePatientVisitRecordByPatientId(Long patientId);

    /**
     * 根据患者信息删除导入缓存表
     *
     * @param patientInfoVo 患者信息
     * @return int
     */
    int deletePatientInfoImportByName(PatientInfoVo patientInfoVo);

    /**
     * 根据患者信息删除导入表
     *
     * @param patientInfoVo 患者信息
     * @return int
     */
    int deletePatientInfoImportMainByName(PatientInfoVo patientInfoVo);

    /**
     * 根据sn 查询导入缓存表是否还有数据
     *
     * @param sn 流水号
     * @return int
     */
    int selectPatientInfoImportCount(String sn);

    /**
     * 查询医院外呼时间起止
     *
     * @param hospitalAgencyId 医院外呼时间起止主键
     * @return 医院外呼时间起止
     */
    DialTime selectDialTimeById(Long hospitalAgencyId);

    /**
     * 新增医院外呼时间起止
     *
     * @param dialTime 医院外呼时间起止
     * @return 结果
     */
    int insertDialTime(DialTime dialTime);

    /**
     * 修改医院外呼时间起止
     *
     * @param dialTime 医院外呼时间起止
     * @return 结果
     */
    int updateDialTime(DialTime dialTime);

    /**
     * 根据sn查询医院
     *
     * @param sn 导入流水号
     * @return Long
     */
    Long selectHospitalAgencyId(String sn);
}
