package com.zd.laboratory.service;

import java.util.List;

import com.zd.laboratory.domain.LabRiskPlan;
import com.zd.system.api.laboratory.domain.LabMessageContent;
import com.zd.laboratory.domain.dto.LabMessageContentDTO;
import com.zd.laboratory.domain.dto.LabMessageContentListQuery;
import com.zd.laboratory.domain.vo.LabMessageContentVO;

/**
 * 消息发布Service接口
 *
 * @author zd
 * @date 2021-09-02
 */
public interface ILabMessageContentService {
    /**
     * 查询消息发布
     *
     * @param id 消息发布主键
     * @return 消息发布
     */
    public LabMessageContent selectLabMessageContentById(Long id);

    /**
     * 查询消息发布列表
     *
     * @param labMessageContent 消息发布
     * @return 消息发布集合
     */
    public List<LabMessageContent> selectLabMessageContentList(LabMessageContent labMessageContent);

    /**
     * 查询消息发布列表vo
     *
     * @param labMessageContent 消息发布
     * @return 消息发布集合
     */
    public List<LabMessageContentVO> selectLabMessageContentVOList(LabMessageContentListQuery labMessageContent);

    /**
     * 发送预警消息
     * @param subId 实验室ID
     * @param newRiskPlan 预案
     */
    public void  sendWranMessage(Long subId, LabRiskPlan newRiskPlan,Long groupId);
    /**
     * 发送用户消息
     *
     * @return 结果
     */
    public Boolean sendMessage(LabMessageContent labMessageContent);

    /**
     * 新增消息发布
     *
     * @param labMessageContent 消息发布
     * @return 结果
     */
    public int insertLabMessageContent(LabMessageContent labMessageContent);

    /**
     * 修改消息发布
     *
     * @param labMessageContent 消息发布
     * @return 结果
     */
    public int updateLabMessageContent(LabMessageContent labMessageContent);

    /**
     * 批量删除消息发布
     *
     * @param ids 需要删除的消息发布主键集合
     * @return 结果
     */
    public int deleteLabMessageContentByIds(Long[] ids);

    /**
     * 删除消息发布信息
     *
     * @param id 消息发布主键
     * @return 结果
     */
    public int deleteLabMessageContentById(Long id);


    /**
     * 查询预案向一体机推送的消息，如果超过两小时，需要清理
     * @return 结果
     */
    public int outTimeClearMessage();
}
