package com.ruoyi.doubledefense.mapper;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.doubledefense.domain.CheckTaskInventory;
import com.ruoyi.doubledefense.domain.CheckTaskInventoryRecord;
import com.ruoyi.doubledefense.dto.CheckTaskInventoryStatisticsDTO;
import com.ruoyi.doubledefense.dto.CheckTaskInventoryStatisticsPCDTO;
import com.ruoyi.doubledefense.dto.res.CheckTasRiskUnitkListDTOForApp;
import com.ruoyi.doubledefense.dto.res.CheckTaskListDTOForApp;
import com.ruoyi.doubledefense.dto.res.CheckUserCountStatisticsDTO;
import com.ruoyi.doubledefense.dtoGov.CheckTaskInventoryRecordDTOGov;
import org.apache.ibatis.annotations.Param;

/**
 * 巡查记录Mapper接口
 *
 * @author ruoyi
 * @date 2023-08-03
 */
public interface CheckTaskInventoryRecordMapper extends BaseMapper<CheckTaskInventoryRecord> {
    /**
     * 查询巡查记录
     *
     * @param id 巡查记录主键
     * @return 巡查记录
     */
    public CheckTaskInventoryRecord selectCheckTaskInventoryRecordById(String id);

    /**
     * 查询巡查记录列表
     *
     * @param checkTaskInventoryRecord 巡查记录
     * @return 巡查记录集合
     */
    public List<CheckTaskInventoryRecord> selectCheckTaskInventoryRecordList(CheckTaskInventoryRecord checkTaskInventoryRecord);

    /**
     * 新增巡查记录
     *
     * @param checkTaskInventoryRecord 巡查记录
     * @return 结果
     */
    public int insertCheckTaskInventoryRecord(CheckTaskInventoryRecord checkTaskInventoryRecord);

    /**
     * 批量添加任务清单记录表
     *
     * @param recordList
     * @return
     */
    int batchInsertCheckTaskInventoryRecord(List<CheckTaskInventoryRecord> recordList);

    /**
     * 修改巡查记录
     *
     * @param checkTaskInventoryRecord 巡查记录
     * @return 结果
     */
    public int updateCheckTaskInventoryRecord(CheckTaskInventoryRecord checkTaskInventoryRecord);

    /**
     * 删除巡查记录
     *
     * @param id 巡查记录主键
     * @return 结果
     */
    public int deleteCheckTaskInventoryRecordById(String id);

    /**
     * 批量删除巡查记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCheckTaskInventoryRecordByIds(String[] ids);

    /**
     * 查询分析单元下排查任务清单列表(已完成清单记录表)
     *
     * @param riskUnitId
     * @return
     */
    List<CheckTaskInventoryRecord> selectCheckTaskInventoryRecordListByRistUnitId(@Param("riskUnitId") String riskUnitId, @Param("status") Integer status);

    /**
     * 查询岗位对应的排查任务清单数量（区域纬度）
     *
     * @param postIdList
     * @return
     */
    public List<CheckTaskListDTOForApp> selectCheckTaskInventoryGroupByPostId(List<Long> postIdList);

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

    /**
     * 巡检完成率
     * APP首页
     *
     * @return
     */
    CheckTaskInventoryStatisticsDTO checkTaskInventoryStatistics(CheckTaskInventoryRecord checkTaskInventoryRecord);

    /**
     * 巡检清单统计：已巡检、应巡检(总数)
     * PC首页
     *
     * @param checkTaskInventoryRecord
     * @return
     */
    CheckTaskInventoryStatisticsPCDTO checkTaskInventoryStatisticsPC(CheckTaskInventoryRecord checkTaskInventoryRecord);

    /**
     * 统计巡检人数
     *
     * @param checkTimeStatr 巡检时间范围：开始时间
     * @param checkTimeEnd   巡检时间范围：结束时间
     * @return
     */
    List<CheckUserCountStatisticsDTO> checkUserCountStatistics(@Param("checkTimeStatr") Date checkTimeStatr, @Param("checkTimeEnd") Date checkTimeEnd);
    /**
     * 重预防汇聚计算节点
     * 查询巡检打卡记录
     *
     * @param checkTaskInventoryRecordDTOGov
     * @return
     */
    List<CheckTaskInventoryRecordDTOGov> govSelectCheckTaskInventoryRecordList(CheckTaskInventoryRecordDTOGov checkTaskInventoryRecordDTOGov);
}
