package com.ktg.iscs.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ktg.iscs.domain.IsJobTicketPoints;
import com.ktg.iscs.domain.vo.ticketPoints.IsJobTicketPointsVO;

import java.util.List;

/**
 * 作业票隔离点Service接口
 *
 * @author cgj
 * @date 2024-10-18
 */
public interface IIsJobTicketPointsService extends IService<IsJobTicketPoints>
{
    /**
     * 查询作业票隔离点
     *
     * @param recordId 作业票隔离点主键
     * @return 作业票隔离点
     */
    IsJobTicketPoints selectIsJobTicketPointsByRecordId(Long recordId);

    /**
     * 查询作业票隔离点列表
     *
     * @param isJobTicketPoints 作业票隔离点
     * @return 作业票隔离点集合
     */
    List<IsJobTicketPoints> selectIsJobTicketPointsList(IsJobTicketPoints isJobTicketPoints);

    /**
     * 新增作业票隔离点
     *
     * @param isJobTicketPoints 作业票隔离点
     * @return 结果
     */
    int insertIsJobTicketPoints(IsJobTicketPoints isJobTicketPoints);

    /**
     * 修改作业票隔离点
     *
     * @param isJobTicketPoints 作业票隔离点
     * @return 结果
     */
    int updateIsJobTicketPoints(IsJobTicketPoints isJobTicketPoints);

    /**
     * 批量删除作业票隔离点
     *
     * @param recordIds 需要删除的作业票隔离点主键集合
     * @return 结果
     */
    int deleteIsJobTicketPointsByRecordIds(String recordIds);

    /**
     * 删除作业票隔离点信息
     *
     * @param recordId 作业票隔离点主键
     * @return 结果
     */
    int deleteIsJobTicketPointsByRecordId(Long recordId);

    List<IsJobTicketPointsVO> getListByTicketId(Long ticketId);

    /**
     * 查询已经完成的作业，但是存在有的点位没有解锁
     * @param pointId
     * @param lockId  点位的上锁属性
     * @return
     */
    List<IsJobTicketPoints> getFinishConflictJob(Long pointId, Long lockId);

    /**
     * 查询未完成的作业，但是去了钥匙去解锁
     * @param pointId
     * @param lockId  点位的上锁属性
     * @return
     */
    List<IsJobTicketPoints> getNotFinishConflictJob(Long pointId, Long lockId);

    /**
     * 根据点位查询上锁信息，已经上锁的数据
     * @param pointId 点位信息
     * @return
     */
    IsJobTicketPoints getLockingData(Long pointId);

    /**
     * 虚拟所冲突点位
     * @param pointId 点位信息
     * @return
     */
    List<IsJobTicketPoints> getVirtualLockConflictPoint(Long pointId, Long lockId, Long ticketId);


}
