package com.ruoyi.ibs.task.service;

import com.ruoyi.common.core.page.TableDataPageInfo;
import com.ruoyi.ibs.dashboard.domain.vo.WarnInfoVO;
import com.ruoyi.ibs.task.domain.dto.WorkRecordDTO;
import com.ruoyi.ibs.task.domain.entity.Alter;
import com.ruoyi.ibs.task.domain.entity.WorkRecord;
import com.ruoyi.ibs.task.domain.vo.AlterVO;
import com.ruoyi.ibs.task.domain.vo.WorkCompleteVO;
import com.ruoyi.ibs.task.domain.vo.WorkRecordVO;

import java.util.List;

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

    /**
     * 查询工作清单记录列表
     *
     * @param workRecordDTO 工作清单记录
     * @return 工作清单记录集合
     */
    List<WorkRecordVO> getWorkRecordList(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);

    int updateAlter(Alter alter);

    /**
     * 定时任务生成工作清单
     *
     */
    int generateWorkRecordScheduled(String frequencyType);

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

    /**
     * 获取预警类型及各类型预警数量
     * @return 预警类型及数量列表
     */
    List<WarnInfoVO> getAlterTypes();

    int updateReadTime(Long id);
}
