package com.ruoyi.doubledefense.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.doubledefense.domain.CheckTaskInventory;
import com.ruoyi.doubledefense.dto.res.CheckTasRiskUnitkListDTOForApp;
import com.ruoyi.doubledefense.dto.res.CheckTaskListDTOForApp;

/**
 * 隐患排查任务清单Service接口
 *
 * @author ruoyi
 * @date 2023-08-03
 */
public interface ICheckTaskInventoryService extends IService<CheckTaskInventory>
{
    /**
     * 查询用户巡检任务列表（区域纬度）
     * @return
     */
    public List<CheckTaskListDTOForApp> getUserCheckTaskListForApp();

    /**
     * 查询区域下巡检清单列表（分析单元纬度）
     *
     * @param areaId 区域ID
     * @return
     */
    List<CheckTasRiskUnitkListDTOForApp> getUserCheckTaskRiskUnitListForApp(Long areaId);

    /**
     * 查询分析单元下排查任务清单列表(未完成清单表)
     *
     * @param  riskUnitId 所属风险单元UUID
     * @return 隐患排查任务清单集合
     */
    List<CheckTaskInventory> selectCheckTaskInventoryListByRistUnitId(String riskUnitId);

    /**
     * 查询隐患排查任务清单
     *
     * @param id 隐患排查任务清单主键
     * @return 隐患排查任务清单
     */
    public CheckTaskInventory selectCheckTaskInventoryById(String id);

    /**
     * 查询隐患排查任务清单列表
     *
     * @param checkTaskInventory 隐患排查任务清单
     * @return 隐患排查任务清单集合
     */
    public List<CheckTaskInventory> selectCheckTaskInventoryList(CheckTaskInventory checkTaskInventory);

    /**
     * 新增隐患排查任务清单
     *
     * @param checkTaskInventory 隐患排查任务清单
     * @return 结果
     */
    public int insertCheckTaskInventory(CheckTaskInventory checkTaskInventory);

    /**
     * 修改隐患排查任务清单
     *
     * @param checkTaskInventory 隐患排查任务清单
     * @return 结果
     */
    public int updateCheckTaskInventory(CheckTaskInventory checkTaskInventory);

    /**
     * 批量删除隐患排查任务清单
     *
     * @param ids 需要删除的隐患排查任务清单主键集合
     * @return 结果
     */
    public int deleteCheckTaskInventoryByIds(String[] ids);

    /**
     * 删除隐患排查任务清单信息
     *
     * @param id 隐患排查任务清单主键
     * @return 结果
     */
    public int deleteCheckTaskInventoryById(String id);

    int batchInsertCheckTaskInventory(List<CheckTaskInventory> checkTaskInventoryList);

    /**
     * 生成巡检任务清单：按指定周期生成
     * @param checkTaskId 排查要求ID
     * @param checkCycleUnit 巡查周期单位：小时，天，月，年
     * @param count 频次
     * @return
     */
    List<CheckTaskInventory> createCheckTaskInventoryTime(String checkTaskId,String checkCycleUnit, int count);

    /**
     * 巡检打开
     * @param areaId 区域ID
     * @return
     */
    boolean register(String areaId);
}
