package com.zc.business.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.zc.business.domain.DcSdhsEvent;
import com.zc.business.domain.DcSdhsEventQuery;
import org.apache.poi.xddf.usermodel.XDDFAdjustHandleXY;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import com.zc.business.domain.*;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import com.zc.business.domain.DcSdhsEventQuery;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

/**
 * 高速云事件分析Service接口
 *
 * @author ruoyi
 * @date 2024-08-15
 */
public interface IDcSdhsEventService
{
//    AjaxResult importData(MultipartFile file) throws Exception;
    AjaxResult importData(String fileName,String fileUrl) throws Exception;

    AjaxResult getFileInfo();


    //事故多发路段分析
    public Map<String, Integer> accidentSectionAnalysis(DcSdhsEventQuery dcSdhsEventQuery);
    //事件类型分析
    public Map<String, Integer> accidentTypeAnalysis(DcSdhsEventQuery dcSdhsEventQuery);
    //事故拥堵地点
    public Map<String,Integer> accidentCongestedLocation(DcSdhsEventQuery dcSdhsEventQuery);
    //事故拥堵时间
    public Map<String,String> accidentCongestedTime(DcSdhsEventQuery dcSdhsEventQuery);
    //事故多发路段分析导出
    public void  sectionAnalysisExport(XWPFDocument doc,DcSdhsEventQuery dcSdhsEventQuery);
    //事故类型分析导出
    public void accidentTypeAnalysisExport(XWPFDocument doc,DcSdhsEventQuery dcSdhsEventQuery);
    //事故拥堵时长导出
    void accidentCongestedTimeExport(XWPFDocument doc,DcSdhsEventQuery dcSdhsEventQuery);
    //事故拥堵地点导出
    void accidentCongestedLocationExport(XWPFDocument doc,DcSdhsEventQuery dcSdhsEventQuery);

    AjaxResult selectRegionAnalysis(DcSdhsEventQuery dcSdhsEventQuery);

    void exportRegionAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery);

    /**
     * 事故车型
     * @param newDoc
     * @param dcSdhsEventQuery
     */
    void exportAccidentModelAnalysis(XWPFDocument newDoc,DcSdhsEventQuery dcSdhsEventQuery);

    /**
     * 事故车型分析
     * @param dcSdhsEventQuery
     * @return
     */
    Map<String, Map<String, Integer>> accidentModelAnalysis(DcSdhsEventQuery dcSdhsEventQuery);

    /**
     * 事故时间分析
     * @param dcSdhsEventQuery
     * @return
     */
    Map<String, Long>  accidentTimeAnalysis(DcSdhsEventQuery dcSdhsEventQuery);

    /**
     * 事故时间
     * @param newDoc
     * @param dcSdhsEventQuery
     */
    void exportAccidentTimeAnalysis(XWPFDocument newDoc,DcSdhsEventQuery dcSdhsEventQuery);
    AjaxResult selectStationAnalysis(DcSdhsEventQuery dcSdhsEventQuery);

    void exportStationAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery);

    AjaxResult selectAccidentType(DcSdhsEventQuery dcSdhsEventQuery);

    void exportAccidentType(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery);

    AjaxResult selectWeather();


    /**
     * 收费站出入口分析
     * @param dcSdhsEventQuery
     * @return
     */
    Map<String,  List<DcTollStationStatisticsDataMap> >  TollBoothStatisticsList(DcSdhsEventQuery dcSdhsEventQuery);
    /**
     * 收费站出入口
     * @param newDoc
     * @param dcSdhsEventQuery
     */
    void exporttollGateEntrance(XWPFDocument newDoc,DcSdhsEventQuery dcSdhsEventQuery);

    /**
     * 门架数据导出
     * @param newDoc
     * @param dcSdhsEventQuery
     */
    void exporFrameDataAnalysis(XWPFDocument newDoc,DcSdhsEventQuery dcSdhsEventQuery);

    Map<String,   List<TrafficFlowStatisticsMap> >   trafficFlowStatistics(DcSdhsEventQuery dcSdhsEventQuery);
}