package com.elephant.framework.galaxy.aroad.module.roadcondition.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.elephant.framework.galaxy.aroad.module.roadcondition.dto.*;
import com.elephant.framework.galaxy.aroad.module.roadcondition.entity.RoadConditionEvent;

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

/**
 * 路况事件统计
 *
 * @author Xingyuyang
 * @date 2019-04-23 16:41:06
 */
public interface RoadConditionEventService extends IService<RoadConditionEvent> {

  /**
   * 根据事件ID查询该路况事件是否已经存在（大于0表示已存在）
   *
   * @param eventID
   * @return * @return
   */
  Integer getRoadMaintainEventByEventID(String eventID);

  /**
   * 查询数据库是否存在该实体
   *
   * @param event
   * @return
   */
  RoadConditionEvent selectRoadMaintainEvent(RoadConditionEvent event);

  /**
   * 根据事件id更新标识
   *
   * @param
   * @return
   */
  Integer updateBatchByEventId(List<Object> eventIdList);

  /** 删除事件（假删除），更新flag标识为1 */
  Integer deleteBatchByEvent(RoadConditionEvent event);

  /**
   * 普通国省道养护施工事件信息是否已存在
   *
   * @return
   */
  public Integer getRoadMaintainEventByRoadPlatform(
      // String infid,
      String inftypename,
      String inftitle,
      String infcontent,
      String infwrinter,
      Date writerdate,
      String infchecker,
      Date checkdate,
       Date removedate,
      //      String remark,
      String glno,
      String writerno,
      String loctx,
      String locty,
      String zhuanghao,
      String daolu,
      // String removereson,
      //      String departname,
      //      String removedepart,
      //      Date expdate,
      //      String impact,
      //      String zhfrom,
      //      String zhto,
      String yccd);

  IPage<RoadConditionEvent> getRoadConditionEventPage(
      Page<RoadConditionEvent> page, RoadConditionEvent roadConditionEvent);

  List<SaveUnitDto> getUnitTree();

  List<RoadConditionEvent> getRoadConditionEventMobilePage();
  /**
   * @description : 根据事件类型查询
   * @author : Xingyuyang
   * @date : 2019/4/23 0023 17:52
   * @param :
   * @return :
   *     java.util.List<com.elephant.framework.galaxy.aroad.module.roadcondition.entity.RoadConditionEvent>
   */
  List<staticByEventTypeDto> staticByEventType();

  /**
   * @description : 根据事件类型查询
   * @author : Xingyuyang
   * @date : 2019/4/23 0023 17:52
   * @param :
   * @return :
   *     java.util.List<com.elephant.framework.galaxy.aroad.module.roadcondition.entity.RoadConditionEvent>
   */
  List<staticByInfluenceDto> staticByInfluence();

  /**
   * @description : 根据月份查询
   * @author : Xingyuyang
   * @date : 2019-4-24 10:28:31
   * @param :
   * @return :
   *     java.util.List<com.elephant.framework.galaxy.aroad.module.roadcondition.entity.RoadConditionEvent>
   */
  List<staticByMonthDto> staticByMonth();

  /**
   * @description : 根据路段编码查询
   * @author : Xingyuyang
   * @date : 2019-4-24 10:28:31
   * @param :
   * @return :
   *     java.util.List<com.elephant.framework.galaxy.aroad.module.roadcondition.entity.RoadConditionEvent>
   */
  List<staticByRoadCodeDto> staticByRoadCode();

  /**
   * @description : 根据城市查询
   * @author : Xingyuyang
   * @date : 2019/4/24 14:28
   * @return :
   *     java.util.List<com.elephant.framework.galaxy.aroad.module.roadcondition.dto.staticByCityDto>
   */
  List<staticByCityDto> staticByCity();

  /**
   * @description : 根据城市查询
   * @author : Xingyuyang
   * @date : 2019/4/24 14:28
   * @return :
   *     java.util.List<com.elephant.framework.galaxy.aroad.module.roadcondition.dto.staticByCityDto>
   */
  List<staticByYHCityDto> staticByYHCity();

  /**
   * @Description: 查询树形结构 @Param: []
   *
   * @return:
   *     java.util.List<com.elephant.framework.galaxy.travel.module.basic_resources.entity.BaseServiceArea> @Author:
   *     XingYuyang @Date: 2019/4/10
   */
  BaseTreeDto getTree();

  boolean deleteEmergencyEvent(String eventId);

  boolean deleteEmergencyUnit(String eventId);

  boolean saveEmergencyUnit(String params);

  boolean saveUnitWithDept(String params);

  RoadConditionEvent getById(String eventId);

  List<CoordinateDto> getYHCoordinates();

  List<CoordinateDto> getSFZCoordinates();

  List<CoordinateDto> getTFCoordinates();

  List<CoordinateDto> getTQCoordinates();

  List<CoordinateDto> getCoordinates(String deptId);

  List<DeptUnitDto> getUnitByDept(String deptId);

  boolean saveUnit();

  boolean deleteUnit();

  boolean deleteEvent();

  /**
   * 根据路线编号，中心桩好查询路况事件
   * @param lxbh
   * @param valueOf
   * @Auth zyw
   * @return
   */
  List<RoadConditionEvent> getLksjForQS(String lxbh, Double valueOf);
}
