package com.shcd.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shcd.entity.SpStatementShipUsageMonth;
import com.shcd.vo.*;
import org.apache.ibatis.annotations.Param;

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

/**
 * @author csdl
 * @description 针对表【SP_STATEMENT_SHIP_USAGE_MONTH(上海市长江经济带船舶使用岸电情况报表)】的数据库操作Mapper
 * @createDate 2024-01-22 14:11:42
 * @Entity com.shcd.entity.SpStatementShipUsageMonth
 */
public interface SpStatementShipUsageMonthMapper extends BaseMapper<SpStatementShipUsageMonth> {

  List<SpStatementShipUsageDetail> selectOriginDataMonth(
      @Param("thisDate") Date thisDate, @Param("lastDate") Date lastDate,
      @Param("lastCycleStart") Date lastCycleStart, @Param("lastCycleEnd") Date lastCycleEnd);

  SpStatementShipUsageMonthVo selectOriginDataYear(@Param("toDate") String thisDate);

  SpStatementShipUsageMonthVo selectGhDataYear(@Param("toDate") String thisDate);

  SpStatementShipUsageMonthVo selectGhDataMonth(@Param("thisDate") Date thisDate);

  void deleteByDate(String toDate);

  SpStatementShipUsageMonthVo getUnderLineMonthData(@Param("toDate") Date toDate);

  SpStatementShipUsageMonthVo getUnderLineYearData(@Param("yearCountBegin") Date yearCountBegin,
      @Param("yearCountEnd") Date yearCountEnd);

  SpStatementShipUsageMonthVo selectOriginSelfDataMonth(@Param("thisDate") Date thisDate,
      @Param("lastDate") Date lastDate);

  SpStatementShipUsageMonthVo selectOriginSelfDataYear(@Param("yearCountBegin") Date yearCountBegin,
      @Param("yearCountEnd") Date yearCountEnd);

  List<SpQuarterReportOriginVo> selectQuarterOrigin(@Param("startDate") Date startDate,
      @Param("endDate") Date endDate, @Param("newStartDate") Date newStartDate,
      @Param("newStartEnd") Date newStartEnd);

  List<SpQuarterReportBlVo> selectQuarterBlBerth(@Param("startDate") Date startDate,
      @Param("endDate") Date endDate);

  List<SpStatementShipUsageDetail> selectWgqMonth(@Param("thisDate") Date thisDate,
      @Param("lastDate") Date lastDate, @Param("lastCycleStart") Date lastCycleStart,
      @Param("lastCycleEnd") Date lastCycleEnd);

  SpStatementShipUsageMonthVo selectWgqYear(@Param("toDate") String dateStrLast);

  SpStatementShipUsageMonthVo getInRiverDataBeforeThisMonth(@Param("toDate") String dateStrLast);

  List<SpStatementShipUsageDetail> getInRiverDataThisMonth(
      @Param("thisDate") Date thisDate,
      @Param("lastDate") Date lastDate, @Param("lastCycleStart") Date lastCycleStart,
      @Param("lastCycleEnd") Date lastCycleEnd);

  SpStatementShipUsageMonthVo getInRiverDataSelfThisMonth(Date thisDate, Date lastDate);

  SpStatementShipUsageMonthVo getUnderLineMonthDataSg(@Param("toDate") Date toDate);

  SpShipUsageMonthQuarterVo selectThreeMonthsDataTotal(@Param("start") Date start,
      @Param("end") Date end);

  List<SpStatementShipUsageDetail> selectNhAndWgMonth(@Param("thisDate") Date thisDate,
      @Param("lastDate") Date lastDate,
      @Param("lastCycleStart") Date lastCycleStart,
      @Param("lastCycleEnd") Date lastCycleEnd);

  SpStatementShipUsageMonthVo selectNhAndWgLastMonthSum(@Param("thisMonth") Date thisDate);

  List<ShorePowerDataVo> selectPortIdEq1146(@Param("currentCycleStart") String currentCycleStart,
      @Param("currentCycleEnd") String currentCycleEnd,
      @Param("lastCycleStart") String lastCycleStart,
      @Param("lastCycleEnd") String lastCycleEnd);

  List<SpStatementShipUsageDetailV2> selectNhAndWgMonthV2(@Param("thisDate") Date thisDate,@Param("lastDate") Date lastDate);

  List<SpStatementShipUsageDetailV2> getInRiverDataThisMonthV2(@Param("thisDate") Date thisDate,@Param("lastDate") Date lastDate);

  SpStatementShipUsageMonthVo getUnderLineMonthDataSgNew(@Param("lastDate") Date lastDate,@Param("thisDate") Date thisDate);
}




