package com.ruoyi.order.mapper;
|
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.common.core.dto.ChargingOrderGroup;
|
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
|
import com.ruoyi.common.core.web.page.PageInfo;
|
import com.ruoyi.order.api.model.ChargingListQuery;
|
import com.ruoyi.order.api.model.TChargingOrder;
|
import com.ruoyi.order.api.model.TChargingOrderRefund;
|
import com.ruoyi.order.api.model.TOrderInvoiceDetail;
|
import com.ruoyi.order.api.query.ChargingOrderQuery;
|
import com.ruoyi.order.api.vo.ChargingOrderListVO;
|
import com.ruoyi.order.api.vo.ChargingOrderVO;
|
import com.ruoyi.order.api.vo.ChargingOrderBalanceIncomeDetailVO;
|
import com.ruoyi.order.api.vo.TChargingOrderVo;
|
import com.ruoyi.order.dto.*;
|
import com.ruoyi.order.vo.LargeChargingPowerVo;
|
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Param;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* <p>
|
* Mapper 接口
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-07
|
*/
|
@Mapper
|
public interface TChargingOrderMapper extends BaseMapper<TChargingOrder> {
|
|
|
/**
|
* 获取小程序充电记录列表数据
|
*
|
* @param appUserId
|
* @param type
|
* @param pageCurr
|
* @param pageSize
|
* @return
|
*/
|
List<TChargingOrder> getMyChargingOrderList(@Param("appUserId") Long appUserId, @Param("type") Integer type,
|
@Param("pageCurr") Integer pageCurr, @Param("pageSize") Integer pageSize);
|
|
|
/**
|
* 获取待开票订单列表
|
*
|
* @param month 筛选时间2024-01-01
|
* @param pageCurr
|
* @param pageSize
|
* @return
|
*/
|
List<TChargingOrder> getNoInvoicedOrder(@Param("appUserId") Long appUserId, @Param("month") String month,
|
@Param("pageCurr") Integer pageCurr, @Param("pageSize") Integer pageSize);
|
|
List<ChargingOrderVO> chargingOrder(@Param("pageInfo") PageInfo<ChargingOrderVO> pageInfo, @Param("req") ChargingOrderQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime11);
|
|
Map<String, Object> chargingOrderBaseSummary(@Param("req") ChargingOrderQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime11);
|
|
Map<String, Object> chargingOrderNolimit(@Param("req") ChargingOrderQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime11);
|
|
Map<String, Object> chargingOrderFundSummary(@Param("req") ChargingOrderQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime11);
|
|
List<Long> chargingOrderSummaryOrderIds(@Param("req") ChargingOrderQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime11);
|
|
Map<String, Object> exchangeCodeBalanceSummary(@Param("orderIds") List<Long> orderIds);
|
|
List<Map<String, Object>> exchangeCodeBalanceIncomeByOrderIds(@Param("orderIds") List<Long> orderIds);
|
|
List<ChargingOrderBalanceIncomeDetailVO> exchangeCodeBalanceIncomeDetail(@Param("orderIds") List<Long> orderIds);
|
|
List<Map<String, Object>> chargingOrderShareIncomeByOrderIds(@Param("orderIds") List<Long> orderIds);
|
|
Map<String, Object> chargingOrderShareIncomeSummaryByOrderIds(@Param("orderIds") List<Long> orderIds);
|
|
List<PayOrderDto> payOrderQuery(@Param("pageInfo") PageInfo<PayOrderDto> pageInfo, @Param("data") PayOrderQueryDto payOrderQueryDto);
|
|
List<EnterpriseChargingAnalysisVO> enterpriseChargingAnalysis(@Param("pageInfo") PageInfo<EnterpriseChargingAnalysisVO> pageInfo,
|
@Param("data") EnterpriseChargingAnalysisQuery query);
|
|
List<Map<String, Object>> enterpriseTopSites(@Param("data") EnterpriseChargingAnalysisQuery query);
|
|
List<Map<String, Object>> enterpriseTopSitesByCompanies(@Param("data") EnterpriseChargingAnalysisQuery query,
|
@Param("companyNames") List<String> companyNames);
|
|
List<LocalDateTime> enterpriseChargingTimes(@Param("data") EnterpriseChargingAnalysisQuery query);
|
|
List<Map<String, Object>> enterpriseChargingTimesByCompanies(@Param("data") EnterpriseChargingAnalysisQuery query,
|
@Param("companyNames") List<String> companyNames);
|
|
List<Long> enterpriseInvoiceIds(@Param("data") EnterpriseChargingAnalysisQuery query);
|
|
List<TOrderInvoiceDetail> enterpriseInvoiceChargingDetails(@Param("invoiceIds") List<Long> invoiceIds);
|
|
Long enterpriseChargingDetailCount(@Param("orderIds") List<Long> orderIds,
|
@Param("data") EnterpriseChargingAnalysisQuery query);
|
|
List<EnterpriseChargingDetailVO> enterpriseChargingDetail(@Param("orderIds") List<Long> orderIds,
|
@Param("data") EnterpriseChargingAnalysisQuery query,
|
@Param("offset") long offset,
|
@Param("pageSize") long pageSize);
|
|
List<Map<String, Object>> enterpriseChargingPeriodCounts(@Param("orderIds") List<Long> orderIds);
|
|
/**
|
* 退款列表(分片下推版)。不带 IPage 参数,避免分页拦截器对 UNION 全量 COUNT。
|
* 每个 UNION 分支内联 ORDER BY refund_time DESC LIMIT branchLimit(=offset+pageSize),MyCat 可下推到各分片表,
|
* 代理层只归并 3×branchLimit 行再按外层 LIMIT offset,pageSize 取页。
|
*
|
* @param offset 跳过行数(pageCurr-1)×pageSize
|
* @param limit 每页行数 pageSize
|
* @param branchLimit 每个 UNION 分支的最大取数 offset+pageSize
|
*/
|
List<TChargingOrderRefund> getRefundListPage(@Param("data") ChargingRefundDto chargingRefundDto,
|
@Param("offset") long offset, @Param("limit") int limit,
|
@Param("branchLimit") int branchLimit);
|
|
/**
|
* 退款总数(分片下推版)。三分支分别 COUNT 再 SUM,每个 COUNT 可下推到各分片表。
|
*/
|
long countRefundList(@Param("data") ChargingRefundDto chargingRefundDto);
|
|
/**
|
* 退款列表(筛选逆反查版)。serialNumber/siteIds 筛选时先按条件查订单 id(可路由/走索引),
|
* 再按各类型订单 id IN 过滤退款表(分片键路由),替代跨分片 LEFT JOIN。
|
* type1/type2/type3 订单 id 列表:null = 该类型不过滤;空列表 = 该类型无匹配(返回空)。
|
*
|
* @param branchLimit 每个 UNION 分支的最大取数 offset+pageSize
|
*/
|
List<TChargingOrderRefund> getRefundListByOrderIds(@Param("data") ChargingRefundDto chargingRefundDto,
|
@Param("type1OrderIds") List<Long> type1OrderIds,
|
@Param("type2OrderIds") List<Long> type2OrderIds,
|
@Param("type3OrderIds") List<Long> type3OrderIds,
|
@Param("offset") long offset, @Param("limit") int limit,
|
@Param("branchLimit") int branchLimit);
|
|
/**
|
* 退款总数(筛选逆反查版),与 getRefundListByOrderIds 同构。
|
*/
|
long countRefundListByOrderIds(@Param("data") ChargingRefundDto chargingRefundDto,
|
@Param("type1OrderIds") List<Long> type1OrderIds,
|
@Param("type2OrderIds") List<Long> type2OrderIds,
|
@Param("type3OrderIds") List<Long> type3OrderIds);
|
|
/**
|
* 按支付流水号模糊匹配充电订单 id(t_charging_order 按 app_user_id 分片,recharge_serial_number 走新增索引)。
|
*/
|
List<Long> listChargingOrderIdsBySerialNumber(@Param("serialNumber") String serialNumber,
|
@Param("limit") int limit);
|
|
/**
|
* 按支付流水号模糊匹配商城订单 id。
|
*/
|
List<Long> listShoppingOrderIdsBySerialNumber(@Param("serialNumber") String serialNumber,
|
@Param("limit") int limit);
|
|
/**
|
* 按支付流水号模糊匹配会员订单 id。
|
*/
|
List<Long> listVipOrderIdsBySerialNumber(@Param("serialNumber") String serialNumber,
|
@Param("limit") int limit);
|
|
/**
|
* 按站点 id 匹配充电订单 id(t_charging_order 的 site_id 走新增索引)。
|
*/
|
List<Long> listChargingOrderIdsBySiteIds(@Param("siteIds") List<Integer> siteIds,
|
@Param("limit") int limit);
|
|
List<ChargingOrderGroup> chargingOrderGroup(@Param("chargingPercentProvinceDto") ChargingPercentProvinceDto chargingPercentProvinceDto);
|
|
List<SixChargingDto> chargePartner(@Param("sixBefore") String sixBefore, @Param("siteIds") List<Integer> siteIds);
|
|
List<SixChargingDto> chargeSettlement(@Param("sixBefore") String sixBefore, @Param("siteIds") List<Integer> siteIds);
|
|
List<SixChargingDto> chargeOrderHistory(@Param("sixBefore") String sixBefore, @Param("siteIds") List<Integer> siteIds);
|
|
List<SixChargingDto> chargeCurrentMonth(@Param("siteIdsCsv") String siteIdsCsv);
|
|
List<SixCircleDto> circle(@Param("siteIds") List<Integer> siteIds, @Param("sixBefore") LocalDate sixBefore, @Param("partnerView") Boolean partnerView);
|
|
BigDecimal sumSuccessfulShareAmount(@Param("siteIds") List<Integer> siteIds);
|
|
Map<String, Object> countAll(@Param("siteIds") List<Integer> siteIds, @Param("partnerView") Boolean partnerView);
|
|
List<Map<String, Object>> chargingOrderShareIncomeByPayChannel(@Param("sixBefore") LocalDate sixBefore, @Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> getSumByType(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> getDateData(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> getWeekData(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> getMonthData(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> getYearData(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("siteIds") List<Integer> siteIds);
|
|
List<ChargingOrderListVO> chargingList(@Param("req") ChargingListQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime2);
|
|
List<Map<String, Object>> chargingList1(@Param("pageInfo") PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime2);
|
|
List<Map<String, Object>> chargingListAccountingSummary(@Param("orderIds") List<Long> orderIds);
|
|
|
Map<String, Object> chargingListSum(@Param("req") ChargingListQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime2);
|
|
List<Long> chargingListSummaryOrderIds(@Param("req") ChargingListQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime2);
|
|
|
List<ChargingOrderListVO> chargingListNoPage(@Param("req") ChargingListQuery dto, @Param("startTime1") String startTime1, @Param("startTime2") String startTime2, @Param("endTime1") String endTime1, @Param("endTime2") String endTime2);
|
|
List<Map<String, Object>> getByDate(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> queryPower(@Param("siteIds") List<Integer> siteIds);
|
|
Map<String, Object> queryPowerLevel(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
|
List<Map<String, Object>> usersDay(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> usersDay1();
|
|
List<Map<String, Object>> usersByQuery(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> usersByQuery1(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> getUserTagCount();
|
|
List<Map<String, Object>> getVipCount();
|
|
List<Map<String, Object>> unitConsumption(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> carUserMethod();
|
|
List<Map<String, Object>> carUserBrand();
|
|
Map<String, Object> countLocalCar();
|
|
Double getAver(@Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> getLevelEvaluate(@Param("siteIds") List<Integer> siteIds);
|
|
List<Map<String, Object>> countBySource(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentUserType1(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentUserType2(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapbroke1(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapbroke2(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapOut1(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapOut2(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> needElec(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
Map<String, Object> getChargingOrderCount(@Param("siteIds") List<Integer> siteIds, @Param("time") String time);
|
|
Map<String, Object> getLargeScreenSummary(@Param("siteIds") List<Integer> siteIds);
|
|
// ==================== 大屏预聚合表 t_large_screen_site_stat ====================
|
// 任务用: 按月切片聚合(与 getLargeScreenSummary 相同口径, 按站点分组)
|
List<Map<String, Object>> monthSliceAgg(@Param("startTime") String startTime, @Param("endTime") String endTime);
|
|
// 任务用: 按月切片统计充电用户数(工作台口径: 所有订单的去重用户, 不区分状态/删除标记)
|
List<Map<String, Object>> monthSliceUserAgg(@Param("startTime") String startTime, @Param("endTime") String endTime);
|
|
// 任务用: 按时间切片取 (site_id, app_user_id) 对(所有订单)
|
List<Map<String, Object>> userSitePairsAgg(@Param("startTime") String startTime, @Param("endTime") String endTime);
|
|
// 任务用: 批量写入用户-站点对(幂等)
|
int insertUserSitePairs(@Param("rows") List<Map<String, Object>> rows);
|
|
// 接口用: 充电用户数精确去重(对表)
|
Long userCountFromStat(@Param("siteIds") List<Integer> siteIds);
|
|
// 任务用: 对表行数(启动回填判断)
|
Long userSiteTableCount();
|
|
// 任务用: 按日切片聚合(与 getLargeScreenChargingPower 相同口径, 按站点分组)
|
List<Map<String, Object>> daySliceAgg(@Param("startTime") String startTime, @Param("endTime") String endTime);
|
|
// 任务用: 注册用户总数
|
Long globalRegisteredUsers();
|
|
// 任务用: 批量写入聚合行(REPLACE INTO)
|
int replaceSiteStatBatch(@Param("rows") List<Map<String, Object>> rows);
|
|
// 任务用: 表行数(判断是否需要启动回填)
|
Long statTableCount();
|
|
// 接口用: 累计指标(M 行汇总)
|
Map<String, Object> summaryFromStat(@Param("siteIds") List<Integer> siteIds);
|
|
// 接口用: 近 N 月收入趋势(M 行按 period 分组)
|
List<SixChargingDto> incomeTrendFromStat(@Param("siteIds") List<Integer> siteIds, @Param("sixBefore") String sixBefore);
|
|
// 接口用: 日功率曲线(D 行按 period 分组)
|
List<Map<String, Object>> powerFromStat(@Param("siteIds") List<Integer> siteIds,
|
@Param("dayStart") String dayStart, @Param("dayEnd") String dayEnd);
|
|
// 接口用: 注册用户数(G 行)
|
Long registeredFromStat();
|
|
// 接口用: 大屏累计充电量(M 行汇总, 与 summaryFromStat 同源)
|
BigDecimal capacityFromStat(@Param("siteIds") List<Integer> siteIds);
|
|
SixChargingDto getLargeScreenSettlementIncome(@Param("siteIdsCsv") String siteIdsCsv,
|
@Param("startTime") String startTime,
|
@Param("endTime") String endTime);
|
|
SixChargingDto getLargeScreenCurrentMonthIncome(@Param("siteIdsCsv") String siteIdsCsv,
|
@Param("startTime") String startTime,
|
@Param("endTime") String endTime);
|
|
Map<String, Object> getLargeScreenChargingPower(@Param("siteIdsCsv") String siteIdsCsv,
|
@Param("startTime") String startTime,
|
@Param("endTime") String endTime);
|
|
|
List<Map<String, Object>> getHourType(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> getDateType(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> getMonthType(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> getchargingCapacity(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> countAllUserData();
|
|
List<Map<String, Object>> needElec1(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
|
|
Long countNoTag();
|
|
Long countCar(@Param("brands") List<String> brands);
|
|
Long countOrdersInRangeByGunIds(@Param("startTime") LocalDateTime startTime,
|
@Param("endTime") LocalDateTime endTime,
|
@Param("gunIds") List<Integer> gunIds);
|
|
Double getSumDegreeBySiteIds(@Param("siteIds") List<Integer> siteIds);
|
|
List<Long> getAppUserIdsBySiteIds(@Param("siteIds") List<Integer> siteIds);
|
|
|
/**
|
* 获取启动失败且时间超过1小时的订单
|
*
|
* @return
|
*/
|
List<TChargingOrder> findFailedStartupOrder();
|
|
|
/**
|
* 获取停止中的数据
|
*
|
* @return
|
*/
|
List<TChargingOrder> findStoppedOrder();
|
|
|
/**
|
* 获取充电中的订单
|
*
|
* @return
|
*/
|
List<TChargingOrder> findChargingOrder();
|
|
|
/**
|
* 获取已结束的数据
|
*
|
* @return
|
*/
|
List<TChargingOrder> findEndChargingOrder();
|
|
|
/**
|
* 获取需要手动修改订单状态的数据
|
*
|
* @return
|
*/
|
List<TChargingOrder> findUpStatusChargingOrder();
|
|
|
/**
|
* 查询充电算账单数据
|
*
|
* @param startTime
|
* @param endTime
|
*/
|
List<Map<String, Object>> getChargingSettlementBill(@Param("startTime") String startTime, @Param("endTime") String endTime,
|
@Param("dateType") Integer dateType);
|
|
List<Map<String, Object>> queryChargingBillIncome(@Param("billingCycles") List<String> billingCycles,
|
@Param("dateType") Integer dateType,
|
@Param("siteIds") List<Integer> siteIds);
|
|
|
/**
|
* 查询账户结算账单数据
|
*
|
* @param startTime
|
* @param endTime
|
*/
|
List<Map<String, Object>> getAccountSettlementStatement(@Param("startTime") String startTime,
|
@Param("endTime") String endTime);
|
|
// ==================== 加盟商看板聚合查询(SQL 聚合下推,替代全量拉订单到 JVM) ====================
|
// 均为单表 GROUP BY,MyCat 可把聚合下推到各分片表后由代理合并少量行;不带 IPage 参数。
|
// 口径与 TChargingOrderController franchisee* 原 Java 求和逻辑一致。
|
|
/**
|
* 按 end_time 日聚合:订单数/金额/服务费/电费/电量/功率/需求满足率/利用率。
|
*/
|
List<FranchiseeDayStat> franchiseeDayStats(@Param("siteIds") List<Integer> siteIds,
|
@Param("start") LocalDateTime start,
|
@Param("end") LocalDateTime end);
|
|
/**
|
* 功率分布直方图(0-30/30-60/60-120/120-300/300kW以上,按 IFNULL(charging_power, power) 分桶)。
|
*/
|
List<FranchiseePowerBucket> franchiseePowerBuckets(@Param("siteIds") List<Integer> siteIds,
|
@Param("start") LocalDateTime start,
|
@Param("end") LocalDateTime end);
|
|
/**
|
* 尖峰平谷阶段电量(按 charging_order_id IN 路由到对应分片,分组返回 type/电量)。
|
*/
|
List<FranchiseePhaseStat> franchiseePhaseStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
|
|
/**
|
* 站点+时间范围内订单 id 列表(仅 id 投影,供尖峰平谷分块反查使用)。
|
*/
|
List<Long> franchiseeOrderIds(@Param("siteIds") List<Integer> siteIds,
|
@Param("start") LocalDateTime start,
|
@Param("end") LocalDateTime end);
|
|
/**
|
* 用户维度聚合(仅 status=5 已结束订单,按 app_user_id/app_user_car_id/结束日 分组)。
|
*/
|
List<FranchiseeUserAgg> franchiseeUserAggs(@Param("siteIds") List<Integer> siteIds,
|
@Param("start") LocalDateTime start,
|
@Param("end") LocalDateTime end);
|
|
/**
|
* 流量来源统计(按 tripartite_platform_name 分组,仅 status=5 已结束订单)。
|
*/
|
List<FranchiseeSourceStat> franchiseeTrafficStats(@Param("siteIds") List<Integer> siteIds,
|
@Param("start") LocalDateTime start,
|
@Param("end") LocalDateTime end);
|
|
/**
|
* 按充电枪的需求满足率聚合(含空枪 id 行,服务端过滤)。
|
*/
|
List<FranchiseeGunSat> franchiseeGunSatisfaction(@Param("siteIds") List<Integer> siteIds,
|
@Param("start") LocalDateTime start,
|
@Param("end") LocalDateTime end);
|
}
|