package com.usky.fire.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.domain.DemFileLabel;
import com.usky.fire.domain.DemFireStatistics;
import com.usky.fire.service.po.FireStatisticsPO;
import com.usky.fire.service.vo.*;
import org.springframework.web.bind.annotation.RequestParam;

import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 火灾统计表 服务类
 * </p>
 *
 * @author JCB
 * @since 2022-09-13
 */
public interface DemFireStatisticsService extends CrudService<DemFireStatistics> {


    /**
     * 火灾数据管理-列表查询
     *
     * @param fireNumber 火灾序号
     * @param labelId    标签ID
     * @param classifyId     分类ID
     * @param pageNum    当前页
     * @param pageSize   每页条数
     * @return
     */
    CommonPage<Object> fireAccidentStatistic(String fireNumber, Integer labelId, Integer classifyId, Integer id, Integer pageNum, Integer pageSize);

    /**
     * 火灾数据管理-列表查询-导出
     *
     * @param fireNumber 火灾序号
     * @param labelId    标签ID
     * @param classifyId     分类ID
     */
    List<DemFireStatisticsExportVO> fireAccidentStatisticExport(String fireNumber, Integer labelId, Integer classifyId);

    /**
     * 火灾数据管理-添加标签
     *
     * @param demFileLabel
     */
    void addLabel(DemFileLabel demFileLabel);

    /**
     * 火灾数据管理-绑定弹窗列表查询
     *
     * @param fireNumber     火灾序号
     * @param fireCauseType1 起火原因
     * @param pageNum        当前页
     * @param pageSize       每页条数
     * @return
     */
    CommonPage<Object> fireStatisticList(String fireNumber, String fireCauseType1, Integer pageNum, Integer pageSize);

    /**
     * 火灾数据管理-绑定标签
     *
     * @param parameterVo
     */
    void bindingLabel(ParameterVo parameterVo);

    /**
     * 火灾数据管理-修改
     *
     * @param demFireStatisticsVo
     */
    void updateDemFireStatistics(DemFireStatisticsVo demFireStatisticsVo);

    /**
     * 火灾数据管理-删除
     *
     * @param id  主键ID
     * @param zid 关联表ID
     */
    void delDemFireStatistics(Integer id, Integer zid);

    /**
     * 火灾数据管理-标签操作异常抛出
     *
     * @param demFileLabel
     */
    void abnormalData(DemFileLabel demFileLabel);

    /**
     * 标签-删除
     *
     * @param id 主键ID
     */
    void delDemFileLabel(Integer id);

    CommonPage<Map<String, Object>> firePlaceList(String fireNumber, Integer id, Integer pageNum, Integer pageSize);

    List<FirePlaceExportVO> firePlaceListExport(String fireNumber);

    void updateFirePlace(DemFireStatistics demFireStatistics);

    List<Object> getFireCountByData(String startTime, String endTime, String address, String fireType);

    List<FireLevelRatioVO> getGroupByLevel(String startTime, String endTime, String address);

    CommonPage<FireStatisticsPO> page(Integer current, Integer size, String startTime, String endTime, String address);

    List<DemFireStatisticsScattorVO> fireStatisticScattor(String street, String lossType, String startTime, String endTime);

    List<DemFireStatisticsCountScattorVO> fireStatisticCollect(String street, String startTime, String endTime);

    List<FireBubbleVO> getAvgAndSum(String startTime, String endTime, String fireType, String unitId);
}
