package com.artfess.rescue.event.manager;

import com.alibaba.fastjson.JSONObject;
import com.artfess.base.model.CommonResult;
import com.artfess.base.query.PageList;
import com.artfess.base.query.QueryFilter;
import com.artfess.rescue.event.dto.FullEventDto;
import com.artfess.rescue.event.model.BizEventInfo;
import com.artfess.base.manager.BaseManager;
import com.artfess.rescue.event.vo.*;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 事件信息 服务类
 *
 * @author 系统管理员
 * @company 阿特菲斯信息技术有限公司
 * @since 2024-08-05
 */
public interface BizEventInfoManager extends BaseManager<BizEventInfo> {
    /**
     * 保存任务
     */
    boolean saveInfo(BizEventInfo entity);

    /**
     * 修改任务
     */
    boolean updateInfo(BizEventInfo entity);

    /**
     * 委派任务
     *
     * @param entity
     * @return
     */
    boolean appoint(FullEventDto entity);

    /**
     * 撤销事件
     *
     * @param id
     * @return
     */
    boolean cancel(String id);

    /**
     * 完结事件
     *
     * @param t
     * @return
     */
    boolean end(BizEventInfo t);


    /**
     * 根据id查询详情
     *
     * @param id
     * @return
     */
    EventInfoVO getInfoById(String id);

    /**
     * 根据id查询详情
     *
     * @param id
     * @return
     */
    EventInfoVO getFullInfoById(String id);

    /**
     * 根据权限分页查询
     *
     * @param queryFilter
     * @return
     */
    PageList<BizEventInfo> queryByPower(QueryFilter<BizEventInfo> queryFilter);


    /**
     * 分页查询
     *
     * @param queryFilter
     * @return
     */
    PageList<BizEventInfo> queryByIPage(QueryFilter<BizEventInfo> queryFilter);

//    /**
//     * excel导出
//     * @param response
//     * @param request
//     * @param queryFilter
//     */
//    void export(HttpServletResponse response, HttpServletRequest request, QueryFilter<BizEventInfo> queryFilter);


    /**
     * 根据权限分页查询
     *
     * @param queryFilter
     * @return
     */
    PageList<BizEventInfo> eventList(QueryFilter<BizEventInfo> queryFilter);

    /**
     * 根据权限分页查询
     *
     * @param queryFilter
     * @return
     */
    PageList<BizEventInfo> pushTaskList(QueryFilter<BizEventInfo> queryFilter);

    /**
     * 部门事件统计分类表
     *
     * @param queryFilter 事件分页条件
     * @return List<CountEventByTypeVO>
     */
    CommonResult<JSONObject> countEventByType(QueryFilter<BizEventInfo> queryFilter);

    /**
     * 事件处置时间统计
     *
     * @param queryFilter 事件分页条件
     * @return List<CountEventByTimeVO>
     */
    CommonResult<List<CountEventByTimeVO>> countEventByTime(QueryFilter<BizEventInfo> queryFilter);

    /**
     * 事件档案
     * @param queryFilter
     * @return
     */
    ResponseEntity<Resource> exportLedger(QueryFilter<BizEventInfo> queryFilter);

    /**
     * 根据id查询档案明细
     * @param queryFilter
     * @return
     */
    EventLedgerVO getEventTaskLedger(QueryFilter<BizEventInfo> queryFilter);

    /**
     * 根据id查询档案明细
     * @param queryFilter
     * @return
     */
    void EventLedgerExport(HttpServletResponse response, QueryFilter<BizEventInfo> queryFilter);

    /**
     * 运行监测日报
     * @return
     */
    PageList<TrafficControlIlboVO> runInfoDayReport(QueryFilter<BizEventInfo> queryFilter);

    /**
     * 运行监测日报
     * @return
     */
    JSONObject runInfoMonthReport(QueryFilter<BizEventInfo> queryFilter);

    String getPrentDict(String dictCode,String value);
}
