package com.ruoyi.ibs.task.service;

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

import com.ruoyi.common.core.page.TableDataPageInfo;
import com.ruoyi.ibs.task.domain.dto.WorkRecordDTO;
import com.ruoyi.ibs.task.domain.dto.AlterForwardRequest;
import com.ruoyi.ibs.task.domain.entity.AlterConfig;
import com.ruoyi.ibs.task.domain.entity.WorkRecord;
import com.ruoyi.ibs.task.domain.vo.*;

/**
 * 工作清单记录Service接口
 * 
 * @author ruoyi
 * @date 2025-10-11
 */
public interface WorkRecordService{

    /**
     * 查询工作清单记录列表
     * 
     * @param workRecordDTO 工作清单记录
     * @return 工作清单记录集合
     */
    List<WorkRecordVO> getWorkRecordList(WorkRecordDTO workRecordDTO);

    /**
     * 获取所有工作清单记录列表
     *
     * @param workRecordDTO 工作清单记录
     * @return 工作清单记录集合
     */
    TableDataPageInfo<WorkRecordVO> getAllWorkRecordList(WorkRecordDTO workRecordDTO);

    /**
     * 修改工作清单记录
     * 
     * @param workRecordList 工作清单记录
     * @return 结果
     */
    int batchSubmitWorkRecord(List<WorkRecord> workRecordList);

    /**
     * 查询权限内用户工作清单完成情况
     *
     * @param workRecordDTO 工作清单记录主键
     * @return 工作清单记录
     */
    TableDataPageInfo<WorkCompleteVO> getCompleteStatus(WorkRecordDTO workRecordDTO);

    /**
     * 查询预警列表
     * @param alterType
     * @return
     */
    List<AlterVO> getAlterList(String status, String alterType);

    /**
     * 获取所有预警列表
     * @param alterType
     * @return
     */
    List<AlterVO> getAllAlterList(String status, String alterType, String forwardFlag);

    /**
     * 获取预警转发元数据
     *
     * @param id 预警ID
     * @return 转发元数据
     */
    AlterForwardMetaVO getAlterForwardMeta(List<Long> ids);

    /**
     * 批量转发预警
     *
     * @param request 转发请求
     * @return 结果
     */
    AlterForwardResultVO forwardAlter(AlterForwardRequest request);
    /**
     * 定时任务生成工作清单
     *
     */
    int generateWorkRecordScheduled(String frequencyType);

    /**
     * 定时设置过期工作清单
     *
     */
    int setOverdue();


    /**
     * 获取预警配置信息
     */
    List<AlterConfigVO> getAlterConfigList(String alterType);

    int updateAlterConfig(AlterConfig alterConfig);

    int updateReadTime(Long id);

    AlterCountVO getAlterCount(Date reportTime);

    /**
     * 查询所有预警类型
     *
     * @return 预警类型列表
     */
    List<String> getAlterTypes();
}
