package com.zd.laboratory.service;

import java.util.List;
import java.util.Map;

import com.zd.laboratory.domain.LabCheckRecord;
import com.zd.laboratory.domain.LabCheckRecordDetails;
import com.zd.laboratory.domain.vo.LabCheckRecordVO;
import com.zd.laboratory.domain.vo.LabSubjectVO;

/**
 * 安全检查Service接口
 *
 * @author zd
 * @date 2021-12-30
 */
public interface ILabCheckRecordService
{
    /**
     * 查询安全检查
     *
     * @param id 安全检查主键
     * @return 安全检查
     */
    public LabCheckRecord selectLabCheckRecordById(Long id);

    /**
     * 查询安全检查列表
     *
     * @param labCheckRecordVo 安全检查
     * @return 安全检查集合
     */
    public List<LabCheckRecord> selectLabCheckRecordList(LabCheckRecordVO labCheckRecordVo);

    /**
     * 新增安全检查
     *
     * @param labCheckRecordVo 安全检查
     * @return 结果
     */
    public int insertLabCheckRecord(LabCheckRecordVO labCheckRecordVo);

    /**
     * 新增安全检查 草稿保存
     *
     * @param labCheckRecordVo 安全检查
     * @return 结果
     */
    public int insertLabCheckRecordCg(LabCheckRecordVO labCheckRecordVo);

    /**
     * 新增安全检查  非草稿保存
     *
     * @param labCheckRecordVo 安全检查
     * @return 结果
     */
    public int insertLabCheckRecordTj(LabCheckRecordVO labCheckRecordVo);

    /**
     * 修改安全检查
     *
     * @param labCheckRecordVo 安全检查
     * @return 结果
     */
    public int updateLabCheckRecord(LabCheckRecordVO labCheckRecordVo);

    /**
     * 批量删除安全检查
     *
     * @param ids 需要删除的安全检查主键集合
     * @return 结果
     */
    public int deleteLabCheckRecordByIds(Long[] ids);

    /**
     * 删除安全检查信息
     *
     * @param id 安全检查主键
     * @return 结果
     */
    public int deleteLabCheckRecordById(Long id);

    /***
     * 根据房间号查询实验室信息
     * @param map
     * @return
     */
    List<LabSubjectVO> selectInfoByRoom(Map<String, Object> map);

    /**
     * 根据整改状态获取集合
     * @return
     */
    public List<Map<String, Object>> selectStatusList();

    /**
     * 查询安全检查列表
     *
     * @param labCheckRecordVo 安全检查
     * @return 安全检查集合
     */
    public List<LabCheckRecordVO> selectLabCheckRecordZgshList(LabCheckRecordVO labCheckRecordVo);

    /***
     * 根据部门id查询用户所属部门
     * @return
     */
    public List<Map<String, Object>> selectUserDept();

    /**
     * 更具登录用户部门id查询该部门下单位信息
     * @param
     * @return
     */
    public List<Map<String, Object>> selectDeptListUserDeptId();

    /**
     * 根据yyyy-mm-dd对检查项时间分组
     * @return
     */
    public List<LabCheckRecordVO> selectLabCheckRecordListOrderBydate(LabCheckRecordVO labCheckRecordVo);

    /***
     * 修改第一次查看时间
     * @param id
     * @return
     */
    public int updateFirstTimeById(Long id);

    /***
     * 批量修改发布状态
     * @param ids
     * @return
     */
    public int updateLabCheckRecordByIds(Long[] ids);

    /***
     * 首页安全检查 发布详情跳转查询
     * @param labCheckRecordVo
     * @return
     */
    public List<LabCheckRecordVO> selectLabCheckRecordIndexDetals(LabCheckRecordVO labCheckRecordVo);

    /**
     * 撤销发布
     * @param ids
     * @return
     */
    public int   updateLabCheckRecordBack(Long[] ids);

    /***
     * 某个检查项在某个实验室下出现的次数
     * @param
     * @return
     */
    public List<LabCheckRecordVO> selectHiddenDangerCount(Map<String, Object> map);

    /**
     * 未整改逾期数据 小程序通知发送
     * @param
     * @return
     */
    public void checkSendMsgBeOverdue();

}
