package com.mosty.sjzx.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.sjzx.TbJqYjbjDto;
import com.mosty.base.model.entity.lzother.VLz110Txj;
import com.mosty.base.model.entity.sjzx.TbJq;
import com.mosty.base.model.entity.sjzx.TbJqCjdb;
import com.mosty.base.model.entity.xinzhi.GxCjdb;
import com.mosty.base.model.entity.xinzhi.Jjdb;
import com.mosty.base.model.query.sjzx.TbJqCjdbQuery;
import com.mosty.base.model.query.sjzx.TbJqListQuery;
import com.mosty.base.model.query.sjzx.TbJqPageListQuery;
import com.mosty.base.model.query.sjzx.XftjQuery;
import com.mosty.base.model.vo.sjzx.TbJqVo;
import com.mosty.base.model.vo.xinzhi.GxAlarmAllVo;
import io.swagger.annotations.ApiOperation;

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

/**
 * 警情表(TbJq)表服务接口
 *
 * @author zhangHaiJun
 * @since 2022-07-13 20:44:48
 */
public interface TbJqService {

    @ApiOperation("通过ID查询单条数据")
    TbJqVo queryById(String id);

    @ApiOperation("新增数据")
    int insert(TbJq tbJq);

    @ApiOperation("修改数据")
    void update(TbJq tbJq);

    @ApiOperation("通过主键删除数据")
    boolean deleteById(String id);

    @ApiOperation("分页查询警情信息")
    IPage<TbJqVo> selectPageList(TbJqPageListQuery dto);

    @ApiOperation("查询处警单表")
    List<TbJqCjdb> getListCjd(String jjdbh);


    @ApiOperation("分页查询警情信息")
    IPage<TbJqVo> getPageListLz(TbJqPageListQuery dto);

    @ApiOperation("查询警情列表不分页")
    List<TbJqVo> getList(TbJqListQuery dto);


    @ApiOperation("获取警情坐标（热力图撒点使用）")
    List<Map<String, Object>> getJqHotMap(TbJqListQuery dto);


    @ApiOperation("根据时间获取警情数量")
    int getJqCount(TbJqListQuery dto);

    @ApiOperation("今日警情数量走势")
    Object getJqBy24h(String ssbmdm);

    @ApiOperation("查询租房管控信息")
    IPage<TbJqVo> getZfgkList(TbJqPageListQuery dto);

    @ApiOperation("今日警情处置分析")
    Object getjrjqczfx(String ssbmdm);

    @ApiOperation("添加新稚警情信息到数据库中")
    Integer addXzjq(GxAlarmAllVo entity);

    @ApiOperation("APP警情统计")
    Map<String, Object> getStatistics(TbJqListQuery dto);

    @ApiOperation("APP首页-所有统计")
    Map<String, Object> getAllStatistics();

    @ApiOperation("APP首页-街面警情统计")
    Map<String, Object> getJmjqStatistics();

    @ApiOperation("APP首页-违法犯罪警情统计")
    Map<String, Object> getWffzStatistics();

    @ApiOperation("APP首页-盗抢三车警情统计")
    Map<String, Object> getDqscStatistics();

    @ApiOperation("APP警情分析-对比分析-分局警情走势图")
    Object jqtjDbFjjqzs(String type, String ssfjdm, String jqType);

    @ApiOperation("APP警情分析-对比分析-城区分局警情环比")
    Object jqtjDbCqfjhb(String type, String jqType);

    @ApiOperation("APP警情分析-对比分析-城区分局警情环比-列表")
    Object jqtjDbCqfjhbTable(String type, String ssfjdm, String jqType);

    @ApiOperation("APP警情分析-对比分析-派出所总警情环比")
    Object jqtjDbPcsHb(String type, String ssfjdm, String jqType);

    @ApiOperation("APP警情分析-对比分析-派出所总警情环比-表格")
    Object jqtjDbPcsHbTable(String type, String ssfjdm, String jqType);

    @ApiOperation("APP警情分析-四高分析-第一个统计图")
    Object jqtjSgFirst(String type, String ssfjdm, String jqType, String sdlx);

    @ApiOperation("APP首页-获取关联警情")
    List<TbJqVo> getGljq(String jjdbh);

    @ApiOperation("添加新稚警情-处警单表到数据库中")
    Integer addXzJqCjdb(GxCjdb cjdb);

    @ApiOperation("APP获取警情的处警数据")
    IPage<TbJqCjdb> getCjList(TbJqCjdbQuery dto);

    @ApiOperation("添加仁寿警情信息")
    int addRsJq(TbJq entity);

    @ApiOperation("获取最新的一条警情信息")
    TbJqVo getLastJq();

    @ApiOperation("获取最新一条的处警的数据")
    TbJqCjdb getLastJqCjdb();

    @ApiOperation("添加仁寿处警单数据")
    void addRsCjdb(TbJqCjdb cjdb);

    @ApiOperation("转新稚警情接口（实发案）警情概况")
    JSONObject situation(String startTime, String endTime);

    @ApiOperation("转新稚警情接口--警请态势")
    JSONObject alarmSituation(String startTime, String endTime);

    @ApiOperation("添加泸州警情到数据库中")
    void addLzJq(VLz110Txj lz110);

    @ApiOperation("添加宜宾警情到数据库中")
    void addYbJq(Jjdb jjdb);

    @ApiOperation("泸州态势统计-警情与巡防工作对比分析")
    Map<String, Object> getJqAndXfTj(XftjQuery dto);

    @ApiOperation("泸州态势统计-警情与盘查工作对比分析")
    Map<String, Object> getJqAndPcTj(XftjQuery dto);

    @ApiOperation("APP添加一键报警")
    void addYjbj(TbJqYjbjDto dto);

    @ApiOperation("修改警情处置状态")
    void updateJqCzzt(String id, String czzt);

    @ApiOperation("查询没得经纬度的接警单编号")
    List<String> selectJjdbh();

    @ApiOperation("修改警情经纬度")
    void updateJqJwd(Jjdb jjdb);

    @ApiOperation("同步接警单号到reids")
    void tbJjdhToRedis();
}

