package com.artfess.rescue.patrol.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.model.BizEventInfo;
import com.artfess.rescue.event.model.BizRescueInfo;
import com.artfess.rescue.patrol.model.BizInspectionTask;
import com.artfess.base.manager.BaseManager;
import com.artfess.rescue.patrol.vo.*;
import com.artfess.rescue.report.dto.FilterDto;
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-02
 */
public interface BizInspectionTaskManager extends BaseManager<BizInspectionTask> {

    /**
     * 根据权限进行分页查询
     *
     * @param queryFilter
     * @return
     */
    PageList<BizInspectionTask> powerList(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 根据id查询详情
     *
     * @param id
     * @return
     */
    BizInspectionTask findById(String id);

    /**
     * 新增
     *
     * @param bizInspectionTask 巡检任务
     * @return boolean
     */
    boolean saveInfo(BizInspectionTask bizInspectionTask);

    /**
     * 分页查询，重写获取巡查时间
     *
     * @param queryFilter 巡检任务表
     * @return PageList<BizInspectionTask>
     */
    PageList<BizInspectionTask> queryPage(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 根据id修改状态
     *
     * @param id
     * @param taskStatus
     * @return
     */
    boolean updateByStatus(String id, String taskStatus);

    /**
     * 分页查询
     *
     * @param queryFilter 巡检任务表
     * @return PageList<BizInspectionTask>
     */
    PageList<BizInspectionTask> pushInspectList(QueryFilter<BizInspectionTask> queryFilter);


    /**
     * 巡检统计-巡查部门汇总统计
     *
     * @param queryFilter 分页查询条件
     * @return List<CountByRoadVO>
     */
    CommonResult<JSONObject> countByRoad(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 巡检统计-巡查人员汇总统计
     *
     * @param queryFilter 分页查询条件
     * @return List<CountByRoadVO>
     */
    CommonResult<JSONObject> countByUser(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 巡检统计-巡查内容汇总统计
     *
     * @param queryFilter 分页查询条件
     * @return List<CountByContentVO>
     */
    CommonResult<JSONObject> countContent(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 巡检统计-巡查人员内容统计
     *
     * @param queryFilter 分页查询条件
     * @return List<CountByContentToUserVO>
     */
    CommonResult<List<CountByContentToUserVO>> countUserContent(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 巡查任务台账导出
     * @param queryFilter
     * @return ResponseEntity
     */
    ResponseEntity<Resource> exportLedger(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 根据id查询档案明细
     * @param queryFilter
     * @return InspectBaseLedgerVO
     */
    InspectBaseLedgerVO getTaskLedger(QueryFilter<BizInspectionTask> queryFilter);

    /**
     * 根据路段对巡查任务的汇总统计
     * @param
     * @return
     */
    JSONObject countTaskSummary(FilterDto dto);

    /**
     * 根据id查询档案明细
     * @param queryFilter
     * @return
     */
    void ledgerExport(HttpServletResponse response, QueryFilter<BizInspectionTask> queryFilter);
}
