package com.ruoyi.fbs.service;

import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.fbs.bo.FbsProjectTaskApplyQueryBo;
import com.ruoyi.fbs.domain.FbsProjectTaskApply;
import com.ruoyi.fbs.domain.dto.TaskApplyDTO;

import java.util.Collection;
import java.util.List;

/**
 * 分包商项目任务申请Service接口
 *
 * @author ruoyi
 * @date 2025-02-17
 */
public interface IFbsProjectTaskApplyService extends IServicePlus<FbsProjectTaskApply> {
    /**
     * 查询单个
     * @return
     */
    FbsProjectTaskApply queryById(Long id);

    /**
     * 查询列表
     */
    TableDataInfo<FbsProjectTaskApply> queryPageList(FbsProjectTaskApplyQueryBo bo);

    /**
     * 查询列表
     */
    List<FbsProjectTaskApply> queryList(FbsProjectTaskApplyQueryBo bo);

    /**
     * 根据新增业务对象插入分包商项目任务申请
     * @param bo 分包商项目任务申请新增业务对象
     * @return
     */
    Boolean insert(FbsProjectTaskApply bo);

    /**
     * 根据编辑业务对象修改分包商项目任务申请
     * @param bo 分包商项目任务申请编辑业务对象
     * @return
     */
    Boolean update(FbsProjectTaskApply bo);

    /**
     * 校验并删除数据
     * @param ids 主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

	/**
	 * 申请承接
	 */
	Boolean appTaskApply(TaskApplyDTO dto);

	/**
	 * 获取包工头申请的所有任务ID
	 */
	List<Long> getTaskIdsByUserId(Long userId);

	/**
	 * 取消申请
	 */
	Boolean cancelApply(TaskApplyDTO dto);
}
