| | |
| | | import com.ruoyi.order.api.vo.ChargingOrderBalanceIncomeDetailVO; |
| | | import com.ruoyi.order.api.vo.TChargingOrderVo; |
| | | import com.ruoyi.order.dto.*; |
| | | import com.ruoyi.order.vo.OrderCountByDate; |
| | | import com.ruoyi.order.vo.LargeChargingPowerVo; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | |
| | | List<Map<String, Object>> enterpriseChargingPeriodCounts(@Param("orderIds") List<Long> orderIds); |
| | | |
| | | List<TChargingOrderRefund> getRefundList(@Param("pageInfo") PageInfo<TChargingOrderRefund> pageInfo, @Param("data") ChargingRefundDto chargingRefundDto); |
| | | /** |
| | | * 退款列表(分片下推版)。不带 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); |
| | | |
| | | List<TChargingOrderRefund> getRefundListWithoutOrderJoin(@Param("pageInfo") PageInfo<TChargingOrderRefund> pageInfo, |
| | | @Param("data") ChargingRefundDto chargingRefundDto); |
| | | /** |
| | | * 退款总数(分片下推版)。三分支分别 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); |
| | | |
| | |
| | | // 任务用: 按月切片聚合(与 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); |
| | | |
| | |
| | | |
| | | // 接口用: 注册用户数(G 行) |
| | | Long registeredFromStat(); |
| | | |
| | | // 接口用: 大屏累计充电量(M 行汇总, 与 summaryFromStat 同源) |
| | | BigDecimal capacityFromStat(@Param("siteIds") List<Integer> siteIds); |
| | | |
| | | SixChargingDto getLargeScreenSettlementIncome(@Param("siteIdsCsv") String siteIdsCsv, |
| | | @Param("startTime") String startTime, |
| | |
| | | |
| | | Long countCar(@Param("brands") List<String> brands); |
| | | |
| | | List<OrderCountByDate> countOrdersByDate(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("gunIds") List<Integer> gunIds); |
| | | Long countOrdersInRangeByGunIds(@Param("startTime") LocalDateTime startTime, |
| | | @Param("endTime") LocalDateTime endTime, |
| | | @Param("gunIds") List<Integer> gunIds); |
| | | |
| | | Double getSumDegreeBySiteIds(@Param("siteIds") List<Integer> siteIds); |
| | | |