package com.zcloud.safetyDutyList.domain.gateway.tasklist;

import com.zcloud.safetyDutyList.domain.model.tasklist.TaskDetailE;

import java.util.List;

/**
 * 任务详情网关接口
 * <p>
 * 定义任务详情领域模型的持久化操作，包括增删改查等基础操作，
 * 以及用于定时任务的进行中任务查询方法。
 */
public interface TaskDetailGateway {

    /**
     * 新增任务详情
     *
     * @param taskDetailE 任务详情领域模型
     * @return 操作结果，true-成功
     */
    Boolean add(TaskDetailE taskDetailE);

    /**
     * 批量新增任务详情
     *
     * @param taskDetailEList 任务详情领域模型列表
     * @return 操作结果，true-成功
     */
    Boolean batchAdd(List<TaskDetailE> taskDetailEList);

    /**
     * 更新任务详情
     *
     * @param taskDetailE 任务详情领域模型（需包含id）
     * @return 操作结果，true-成功
     */
    Boolean update(TaskDetailE taskDetailE);

    /**
     * 根据主键ID删除任务详情
     *
     * @param id 主键ID
     * @return 操作结果，true-成功
     */
    Boolean deleteById(Long id);

    /**
     * 根据清单业务ID删除该清单下所有任务详情
     *
     * @param taskListId 清单业务ID
     * @return 操作结果，true-成功
     */
    Boolean deleteByTaskListId(String taskListId);

    /**
     * 根据清单业务ID查询该清单下所有任务详情
     *
     * @param taskListId 清单业务ID
     * @return 任务详情列表
     */
    List<TaskDetailE> listByTaskListId(String taskListId);

    /**
     * 根据任务详情业务ID查询任务详情
     *
     * @param taskDetailId 任务详情业务ID
     * @return 任务详情领域模型，不存在返回null
     */
    TaskDetailE getByTaskDetailId(String taskDetailId);

    /**
     * 查询所有进行中的任务
     * <p>
     * 查询条件：task_status=1（进行中）
     * 用于定时任务2：反馈异常检测
     *
     * @return 进行中的任务详情列表
     */
    List<TaskDetailE> listInProgress();
}
