package com.zd.laboratory.service;

import java.util.List;
import com.zd.laboratory.domain.LabExitLine;
import com.zd.laboratory.domain.vo.EvacuationLine;
import com.zd.laboratory.domain.vo.LabExitLineJoinVO;
import com.zd.laboratory.domain.vo.LabExitLineVO;

/**
 * 逃生线路主Service接口
 *
 * @author zd
 * @date 2022-01-25
 */
public interface ILabExitLineService
{
    /**
     * 查询逃生线路主
     *
     * @param id 逃生线路主主键
     * @return 逃生线路主
     */
    public LabExitLineVO selectLabExitLineById(Long id);


    /**
     * 查询逃生线路主
     *
     * @param subId 实验室主键id
     * @return 逃生线路主
     */
    public List<LabExitLineJoinVO> selectLabExitLineIntelligentGuidance(Long subId,Integer dire);

    /**
     * 查询逃生线路主列表
     *
     * @param labExitLine 逃生线路主
     * @return 逃生线路主集合
     */
    public List<LabExitLineVO> selectLabExitLineList(LabExitLine labExitLine);

    /**
     * 新增逃生线路主
     *
     * @param labExitLine 逃生线路主
     * @return 结果
     */
    public int insertLabExitLine(LabExitLine labExitLine);

    /**
     * 新增逃生线路主
     *
     * @param labExitLineVO 逃生线路主
     * @return 结果
     */
    public int addExitJoin(LabExitLineVO labExitLineVO);

    /**
     * 修改逃生线路主
     *
     * @param labExitLine 逃生线路主
     * @return 结果
     */
    public int updateLabExitLine(LabExitLine labExitLine);

    /**
     * 批量删除逃生线路主
     *
     * @param ids 需要删除的逃生线路主主键集合
     * @return 结果
     */
    public int deleteLabExitLineByIds(Long[] ids);

    /**
     * 删除逃生线路主信息
     *
     * @param id 逃生线路主主键
     * @return 结果
     */
    public int deleteLabExitLineById(Long id);

    List<LabExitLineJoinVO> doEvacuate(Long subId);

    void doClosure(Long subId);

    List<LabExitLineJoinVO> doChange(Long subId, Integer type);


    EvacuationLine getRedis();

    List<LabExitLineJoinVO> getRoute(Long subId, Integer type);
}
