package com.dcsoft.system.visitor.mapper;

import java.util.Date;
import java.util.List;

import com.dcsoft.common.core.web.page.TableDataInfoPage;
import com.dcsoft.system.domain.SysBranch;
import com.dcsoft.system.domain.SysManageRecord;
import com.dcsoft.system.domain.SysPeople;
import com.dcsoft.system.domain.vo.SysFileVo;
import com.dcsoft.system.visitor.domain.*;
import org.apache.ibatis.annotations.Param;

/**
 * 访客信息Mapper接口
 *
 * @author 倪春
 * @date 2023-03-09
 */
public interface VisitorMapper
{
    /**
     * 查询访客信息
     *
     * @param id 访客信息主键
     * @return 访客信息
     */
    public Visitor selectVisitorById(Long id);

    /**
     * 查询访客信息列表
     *
     * @param visitor 访客信息
     * @return 访客信息集合
     */
    public List<Visitor> selectVisitorList(Visitor visitor);

    /**
     * 新增访客信息
     *
     * @param visitor 访客信息
     * @return 结果
     */
    public int insertVisitor(Visitor visitor);

    /**
     * 修改访客信息
     *
     * @param visitor 访客信息
     * @return 结果
     */
    public int updateVisitor(Visitor visitor);

    /**
     * 删除访客信息
     *
     * @param id 访客信息主键
     * @return 结果
     */
    public int deleteVisitorById(Long id);

    /**
     * 批量删除访客信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteVisitorByIds(Long[] ids);

    public List<Visitor> selectVisitorItemList(Visitor visitor);

    public int deleteVisitorItemByParentId(Long parentId);

    public Visitor selectByGuid(String guid);

    public Visitor selectVisitorByPhone(String phone);

    /**
     * 查询访客预约信息
     */
    List<Visitor> queryVisitorAppointment(VisitorParamVo paramVo);

    /**
     * 修改推送状态
     */
    void updateVisitorPushType(List<Visitor> list);

    int queryVisitorByCardCount(@Param("idcards") List<String> idcards);

    /**
     *
     */
    int updateVisitorInfo(Visitor paramVo);

    /**
     * 查询访客信息
     */
    PersonnelInfoVo queryVisitorInfoById(String id);

    /**
     * 查询未签离列表
     */
    List<Visitor> queryVisitorUnsigned(VisitorParamVo paramVo);

    void saveVisCheckCode(CheckCodeVo codeVo);

    CheckCodeVo queryVisCheckCodeById(String qrData);

    String queryVisCheckCode(String visitorId);

    Visitor selectVisitorInfo(SysPeople people);

    /**
     * querySysManageRecord
     * @return
     */
    List<SysManageRecord> querySysManageRecord(Long userId);

    void updateVisitorInfoGuid(List<Visitor> listVisitorId);

    Visitor queryVisitorGuid(String guid);

    /**
     * 查询是否进入
     * @param id
     * @return
     */
    int queryVisitorRecord(Long id);

    /**
     * 更新离开时间
     * @param record
     */
    void updateVisitorRecord(VisitorRecordVo record);

    /**
     * 新增访客识别记录
     * @param record
     */
    void saveVisitorRecord(VisitorRecordVo record);

    /**
     * 查询访客记录列表
     * @param visitor
     * @return
     */
    List<VisitorRecordVo> queryVisitorRecordList(VisitorRecordVo visitor);

    /**
     * 删除访客记录
     * @param ids
     */
    void deleteVisitorRecordList(String[] ids);

    List<SysBranch> querySysBranch(String deptType);

    /**
     * 今日访客数
     * @param recordVo
     * @return
     */
    int queryVisitorDayCount(VisitorRecordVo recordVo);

    /**
     * 本周访客数
     * @param recordVo
     * @return
     */
    int queryVisitorWeekCount(VisitorRecordVo recordVo);

    /**
     * 本月访客数
     * @param recordVo
     * @return
     */
    int queryVisitorMonthCount(VisitorRecordVo recordVo);

    /**
     * 首页头像展示
     * @param recordVo
     * @return
     */
    List<VisitorRecordVo> queryVisitorAvatar(VisitorRecordVo recordVo);

    /**
     * 通过手机号查询访客id
     * @param phone
     * @return
     */
    VisitorRecordVo queryVisitorById(String phone);

    int queryVisitorByIdCount(@Param("phones") List<String> phones);

    /**
     * 查询近七天的访客数据
     * @param paramVo
     * @return
     */
    List<Visitor> queryExportVisitorInfo(VisitorParamVo paramVo);

    List<String> queryBranch();

    String queryBranch1(String s);

    void updateDisconnect(Visitor visitor1);

    /**
     * 保存审核记录
     * @param visitor
     */
    void saveVisitorAuditRecords(Visitor visitor);

    /**
     * 查询物业子部门访客审核人员
     * @param deptId
     * @return
     */
    List<SysPeople> queryPropertyExaminePeople(String deptId);

    void deleteFile(SysFileVo sysFile);

    void saveFile(List<SysFileVo> sysFiles);

    List<SysFileVo> querySysFile(SysFileVo fileVo);

    void saveVisitorReviewProcess(Visitor visitor);

    SysPeople queryVisitorReviewProcess(Long id);

    void updateVisitorReviewProcess(Visitor visitor);

    VisitorReviewProcessVo queryReviewProcess(VisitorReviewProcessVo visitor);

    int queryVisitorReviewProcessCount(Long id);

    List<VisitorReviewProcessVo> queryVisitorReviewProcessList(Long id);

    List<Long> selectAppVisitorFollow(Visitor visitor);

    List<Visitor> selectAppVisitorList(Visitor visitor);

    List<CheckCodeVo> queryCode(List<Long> collect);

    void updateVisitorByParentId(Visitor updateVisitor);

    String selectRecordsByPhone(Long id, String telephone);

    void saveVisitorReviewProcessList(@Param("list") List<Visitor> list);

    int queryVisitor(Visitor visitor);

    int queryVisitorByIdCountOld(String phone);

    String queryReviewProcessOld(Visitor visitor);

    void deleteVisitorReviewProcess(@Param("id") Long id);

    List<String> addVisitorCheck(@Param("phones") List<String> phones,@Param("startTime") Date startTime);

    List<Visitor> queryReviewList(Long peopleId);
}
