package com.zc.business.mapper;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

import cn.hutool.core.lang.hash.Hash;
import com.zc.business.domain.DcDispatch;
import com.zc.business.domain.DcDispatchResource;
import com.zc.business.domain.DcRoadSection;
import com.zc.business.domain.DcWaringStrategy;
import com.zc.business.domain.DcWarning;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

/**
 * 预警信息Mapper接口
 *
 * @author ruoyi
 * @date 2024-01-26
 */
public interface DcWarningMapper
{
    /**
     * 感知事件统计
     */
    int dcWarningCountNumber(Integer warningSource);

    /**
     * 查询预警信息
     *
     * @param id 预警信息主键
     * @return 预警信息
     */
    public HashMap<String,Object> selectDcWarningById(String id);

    /**
     * 查询预警信息列表
     *
     * @param dcWarning 预警信息
     * @return 预警信息集合
     */
    List<HashMap<String,Object>> selectDcWarningList(DcWarning dcWarning);
    //导出
    List<DcWarning> export(DcWarning dcWarning);
    /**
     * 新增预警信息
     *
     * @param dcWarning 预警信息
     * @return 结果
     */
    int insertDcWarning(DcWarning dcWarning);

    /**
     * 修改预警信息
     *
     * @param dcWarning 预警信息
     * @return 结果
     */
    int updateDcWarning(DcWarning dcWarning);

    /**
     * 删除预警信息
     *
     * @param id 预警信息主键
     * @return 结果
     */
    int deleteDcWarningById(Integer id);

    /**
     * 批量删除预警信息
     *
     * @param id 需要删除的数据主键集合
     * @return 结果
     */
    int deleteDcWarningByIds(String id);
    int selectCount();
    //修改感知事件状态为已完成
    int updateState(DcWarning dcWarning);
    //感知事件删除
    int deleteDcWarningByStringId(DcWarning dcWarning);

    //AI视频
    List<HashMap<String,Object>> selectDcWarningoTherConfig(DcWarning dcWarning);

    boolean batchUpdateState(@Param("userId") Long userId,@Param("dcWarningList") List<DcWarning> dcWarningList);

    boolean batchDelete(@Param("dcWarningList") List<DcWarning> dcWarningList);

    //查询预警配置信息
    public List<DcWaringStrategy> selectDcWaringStrategyList(DcWaringStrategy dcWaringStrategy);
    public List<DcWaringStrategy> selectDcWaringStrategyList();
    public List<DcWaringStrategy> selectDcWaringStrategyList(@Param("warningSource")String warningSource,@Param
            ("warningType")String warningType,@Param("warningSubclass")String warningSubclass,@Param("strategy")Integer strategy);
    //修改配置
    public Integer updateOtherConfig(@Param("id")String id,@Param("otherConfig")String otherConfig,@Param("endTime") Date endTime );

    //定时结束部分事件
    public Integer updateEndSection(@Param("dcWarningList") List<DcWarning> dcWarningList);
    //查询当天全部可以结束的事件
    public List<DcWarning> selectEndSection();

    //依据桩号返回驻点id
    public Long selectSectionId(@Param("stakeMark")String stakeMark,@Param("direction")String direction);
    //依据桩号获取最近距离的驻点
    public List<HashMap<String,Object>> selectRecentlySection();
    //查询某个机构的全部应急人员信息
    public List<HashMap<String,Object>> selectOrganizationEmployees(@Param("organizationId")Long organizationId);
    //查询某个机构当天的值班信息
    public List<HashMap<String,Object>> selectShifts(@Param("station") Long station);
    //查询某个机构的车辆信息
    public List<HashMap<String,Object>> selectVehicles(@Param("organizationId")Long organizationId);
    //新增调度资源信息
    public Integer insertDispatchResource(DcDispatchResource dcDispatchResource);
    //新增调度记录信息
    public Integer insertDcDispatch(DcDispatch dcDispatch);
    //修改调度记录信息
    public Integer updateDcDispatch(DcDispatch dcDispatch);
    //查询调度资源信息
    public HashMap<String,Object> selectDcDispatch(@Param("eventId") String eventId);
    //查询记录信息
    public List<HashMap<String,Object>> selectDispatchResource(@Param("dispatchId")Long dispatchId);
    //查询查询值班的全部人员
    public List<HashMap<String,Object>> selectShiftsEmployeesToday();
    public List<HashMap<String,Object>> selectShiftsEmployees();
    //查询机构人员和调度关系
    public List<HashMap<String,Object>> selectEmployeesDispatch(@Param("organizationId")Long organizationId,@Param("eventId") String eventId);
    //查询机构车辆和调度关系
    public List<HashMap<String,Object>> selectVehiclesDispatch(@Param("organizationId")Long organizationId,@Param("eventId") String eventId);
    //取出运管中心
    public HashMap<String,Object> selectOrganization();
    //选中的人员信息
    public List<HashMap<String,Object>> selectEmployeesChoice(@Param("dispatchId")Long dispatchId);
    //查询最近的交警人员和电话
    public List<HashMap<String,Object>> selectTrafficPolice(@Param("organizationId")Long organizationId);
    //选中的车辆信息
    public List<HashMap<String,Object>> selectVehiclesChoice(@Param("dispatchId")Long dispatchId);
    public Integer deleteDispatchResource(@Param("dispatchId")Long dispatchId);

    DcDispatch selectDcDispatchById(@Param("id") Long id);
    //误报解除
    public Integer falseAlarmResolution(DcWarning dcWarning);
    //依据人员id查询人员名称
    public String employeesName(Long id);
    //依据车辆id查询车辆信息,前提车辆可用
    public String vehiclesName(Long id);
    //依据车辆id查询车辆信息,前提车辆可用
    public String vehiclesType(Long id);
    //依据机构id查询机构名称
    public String  organizationName(Long id);
    //事件id查询调度记录id
    public HashMap selectDispatchId(@Param("eventId")String eventId);
}