package com.shanghaichengdi.ghjgitem.mapper;

import com.alibaba.fastjson.JSONArray;
import com.shanghaichengdi.ghjgitem.vo.*;
import com.shanghaichengdi.ghjgitem.vo.request.BoatAisRealTimeReq;
import com.shanghaichengdi.ghjgitem.vo.request.ReportInfoRequest;
import com.shanghaichengdi.ghjgitem.vo.request.ReportSubInfoReq;
import com.shanghaichengdi.ghjgitem.vo.request.ShipDataRequest;
import com.shanghaichengdi.ghjgitem.vo.*;

import java.util.ArrayList;
import java.util.List;

import com.shanghaichengdi.ghjgitem.vo.request.*;
import org.apache.ibatis.annotations.Param;

public interface CommonMapper {

  List<BoatAISVo> selectAisRealTimeXYList(BoatAisRealTimeReq param);

  String getLastInformNo(@Param("rules") String rules);

  String getLastRecordNo(@Param("rules") String rules);

  List<CCbCargoDeclareRecVo> selectCargoDeclareInfo(ReportSubInfoReq param);

  List<CCbOnShipCrewRecVo> selectShipCrewInfo(ReportSubInfoReq param);

  List<VwCertInfoSelfAllVo> selectInfoList();

  List<ShipDataVo> selectBoatInfoList(ShipDataRequest param);

  List<ShipDataVo> selectBoatContactInfoByMmsi(ShipDataRequest param);

  List<BoatReportInfoVo> selectBoatReportInfoList(@Param("reportId") String reportId,
      @Param("region") String area, @Param("district") String district,
      @Param("shipId") String shipId, @Param("startTime") String startTime,
      @Param("endTime") String endTime, @Param("partition") List<String> partition,
      @Param("reportNo") String reportNo);

    ShipInfoForShipLockVo selectBoatInfoByShipId(@Param("shipId") String shipId);
  List<BoatPathVo> selectBoatPathFromMvwHistory(@Param("mmsi") String mmsi, @Param("startTime") String startTime, @Param("endTime") String endTime);

  List<ShipDataVo> obscureSelectBoatInfoList(ShipDataRequest param);

  CountVo selectCountByRange(ShipRangeReq param);

  List<ShipDataVo> selectBoatInfoByRange(ShipRangeReq param);

  List<ShipDataVo> selectBoatInfoByMmsi(ShipMmsiReq param);

  List<CargoInfoForShipLockVo> selectCargoDeclareInfoByShipId(@Param("shipId") String shipId, ArrayList<String> list);

  int getPdShipCountByMmsiAndShipName(@Param("mmsi") String mmsi, @Param("shipName") String shipName);

  int getPdShipCountByShipId(@Param("shipId") String shipId);

  List<String> selectPdPortDrawPicture(PortDrawReq portDrawReq);

  List<BoatAISVo> selectAisRealTimePointList(List mmsiList);
}
