package com.ruoyi.order.service;
|
|
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.dto.ChargingOrderGroup;
|
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
import com.ruoyi.common.core.web.page.PageInfo;
|
import com.ruoyi.order.api.dto.SettlementConfirmAdd;
|
import com.ruoyi.order.api.model.*;
|
import com.ruoyi.order.api.query.ChargingOrderQuery;
|
import com.ruoyi.order.api.query.SettlementListQuery;
|
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
|
import com.ruoyi.order.api.vo.*;
|
import com.ruoyi.order.dto.*;
|
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
|
import com.ruoyi.order.vo.ChargingSimulationVO;
|
import com.ruoyi.order.vo.IcbcAdminSubOrderVO;
|
import com.ruoyi.order.vo.EndOfChargePageInfo;
|
import com.ruoyi.order.vo.StatisticsOfBatteryVO;
|
import com.ruoyi.order.vo.LargeChargingPowerVo;
|
import com.ruoyi.order.vo.ReservationRecommendationVO;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
import java.util.Map;
|
import com.ruoyi.payment.api.vo.IcbcPaymentResp;
|
import com.ruoyi.payment.api.vo.IcbcRefundResp;
|
import com.ruoyi.payment.api.vo.IcbcSubOrderRefundResp;
|
|
/**
|
* <p>
|
* 服务类
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-07
|
*/
|
public interface TChargingOrderService extends IService<TChargingOrder> {
|
|
ReservationRecommendationVO getReservationRecommendation(Integer siteId);
|
|
|
/**
|
* 获取小程序充电记录列表数据
|
* @param query
|
* @return
|
*/
|
Map<String, Object> getMyChargingOrderList(GetMyChargingOrderList query);
|
|
|
/**
|
* 获取小程序充电记录明细
|
* @param id
|
* @return
|
*/
|
MyChargingOrderInfo getMyChargingOrderInfo(String id);
|
|
|
/**
|
* 获取待开票订单列表
|
* @param query
|
* @return
|
*/
|
List<MyChargingOrderList> getNoInvoicedOrder(GetNoInvoicedOrder query);
|
|
|
/**
|
* 充电支付
|
* @param addChargingOrder
|
* @return
|
*/
|
AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder);
|
|
AjaxResult confirmIcbcPayment(String orderCode);
|
|
ChargingSimulationVO getCurrentSimulationOrder(Integer gunId);
|
|
ChargingSimulationVO completeSimulation(ChargingSimulationReq request);
|
|
IcbcPaymentResp queryIcbcAdminPayment(String orderCode);
|
|
IcbcRefundResp refundIcbcAdminPayment(IcbcAdminFundOperationReq request);
|
|
List<IcbcAdminSubOrderVO> queryIcbcAdminSubOrders(String orderCode);
|
|
IcbcSubOrderRefundResp refundIcbcAdminSubOrder(IcbcAdminFundOperationReq request);
|
|
|
/**
|
* 支付成功后的回调处理逻辑
|
* @param paymentType 支付方式:1=微信,2=支付宝
|
* @param out_trade_no 业务流水号
|
* @param transaction_id 三方支付流水号
|
* @param attach 附加数据
|
* @return
|
*/
|
AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach);
|
|
|
/**
|
* 安全检测数据
|
* @param securityDetection
|
*/
|
void securityDetection(SecurityDetectionVO securityDetection);
|
|
|
/**
|
* 启动充电应发
|
* @param message
|
*/
|
void startChargeSuccessfully(PlatformStartChargingReplyMessageVO message);
|
|
|
/**
|
* 充电启动失败后的退款回调处理
|
* @param out_refund_no
|
* @param refund_id
|
* @param tradeState
|
* @param success_time
|
* @return
|
*/
|
AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time);
|
|
|
/**
|
* 启动失败退款操作
|
* @param code
|
*/
|
void refund(String code);
|
|
|
|
void refund1(String code, BigDecimal money);
|
|
/**
|
* 获取充电中的详情
|
* @param id
|
* @return
|
*/
|
ChargingDetails getChargingDetails(Integer id);
|
|
|
/**
|
* 停止充电
|
* @param id
|
* @return
|
*/
|
AjaxResult stopCharging(String id);
|
|
|
void editUserTag(TChargingOrder chargingOrder);
|
|
void referralReward(TChargingOrder chargingOrder);
|
|
/**
|
* 停止充电应答结果处理
|
* @param platformStopChargingReply
|
*/
|
void terminateSuccessfulResponse(PlatformStopChargingReplyVO platformStopChargingReply);
|
|
|
|
TCharingOrderVO chargingOrder(ChargingOrderQuery dto);
|
|
PageInfo<ChargingOrderVO> chargingOrderList(ChargingOrderQuery dto);
|
|
TCharingOrderVO chargingOrderSummary(ChargingOrderQuery dto);
|
|
List<ChargingOrderBalanceIncomeDetailVO> balanceIncomeDetail(ChargingOrderQuery dto);
|
|
R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto);
|
R<PageInfo<EnterpriseChargingAnalysisVO>> enterpriseChargingAnalysis(EnterpriseChargingAnalysisQuery query);
|
|
R<PageInfo<EnterpriseChargingDetailVO>> enterpriseChargingDetail(EnterpriseChargingAnalysisQuery query);
|
|
List<EnterpriseChargingDetailVO> enterpriseChargingDetailExport(EnterpriseChargingAnalysisQuery query);
|
|
R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto);
|
|
List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto);
|
|
List<SixChargingDto> charge(LocalDate sixBefore, List<Integer> siteIds, Boolean partnerView);
|
|
List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore, Boolean partnerView);
|
|
Map<String, Object> countAll(List<Integer> siteIds, Boolean partnerView, LocalDate sixBefore);
|
|
List<SixIncomeCircleDto> payTypeCircle(LocalDate sixBefore, List<Integer> siteIds, Boolean partnerView);
|
|
List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds);
|
|
List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds);
|
|
List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end,List<Integer> siteIds);
|
|
List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end,List<Integer> siteIds);
|
|
List<Map<String, Object>> getYearData(LocalDate start,LocalDate end,List<Integer> siteIds);
|
|
ChargingOrderTimeVO chargingList(ChargingListQuery dto);
|
|
PageInfo<ChargingOrderListVO> chargingListPage(ChargingListQuery dto);
|
|
ChargingOrderTimeVO chargingListSummary(ChargingListQuery dto);
|
|
|
List<ChargingOrderListVO> export(ChargingListQuery dto);
|
|
|
R payRefund(PayOrderRefundDto payOrderQueryDto);
|
|
R<PayOrderInfoDto> getSpecialRefundOrder(PayOrderRefundDto payOrderQueryDto);
|
|
R specialRefund(PayOrderRefundDto payOrderQueryDto);
|
|
BigDecimal getManualRefundableAmount(Long chargingOrderId);
|
|
ChargingOrderListInfoVO chargingInfo(String uid);
|
|
|
/**
|
* 处理充电订单实时监控数据相关的业务逻辑
|
* @param query
|
*/
|
void chargeMonitoring(UploadRealTimeMonitoringDataQuery query);
|
|
|
/**
|
* 自动结束充电后的处理逻辑
|
* @param code
|
*/
|
void endCharge(String code, Integer endMode);
|
|
/**
|
* 停止充电返回账单后计算费用
|
* @param vo
|
*/
|
R endChargeBillingCharge(TransactionRecordMessageVO vo);
|
|
|
|
/**
|
* 异常结束充电处理逻辑
|
* @param orderCode
|
*/
|
void excelEndCharge(String orderCode);
|
|
List<Map<String, Object>> getByDate(LocalDate start,LocalDate end, List<Integer> siteIds);
|
|
List<Map<String, Object>> queryPower(List<Integer> siteIds);
|
|
Map<String, Object> qureryPowerLevel(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
|
List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto);
|
List<Map<String, Object>> usersDay1();
|
|
List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto);
|
List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto);
|
|
|
List<Map<String, Object>> getUserTagCount();
|
|
List<Map<String, Object>> getVipCount();
|
|
List<Map<String, Object>> unitConsumption(ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> carUserMethod();
|
|
List<Map<String, Object>> carUserBrand();
|
|
Map<String, Object> countLocalCar();
|
|
Double getAver(List<Integer> siteIds);
|
|
List<Map<String, Object>> getLevelEvaluate(List<Integer> siteIds);
|
|
|
/**
|
* 根据车牌号和开始时间查询充电数据
|
* @param query
|
* @return
|
*/
|
TChargingOrder getChargingOrderByLicensePlate(GetChargingOrderByLicensePlate query);
|
|
|
TSettlementConfirm settlementAdd(SettlementConfirmAdd dto);
|
|
PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto);
|
|
SettlementTotalVO settlementTotal(String time);
|
SettlementTotalVO settlementTotalR(String time,Long userId);
|
|
List<Map<String, Object>> countBySource(List<Integer> siteIds,ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentUserType1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentUserType2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapbroke1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapbroke2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapOut1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> equipmentMapOut2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> needElec(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
Map<String, Object> getChargingOrderCount(List<Integer> siteIds, String time);
|
|
Map<String, Object> getLargeScreenSummary(List<Integer> siteIds);
|
|
List<SixChargingDto> getLargeScreenIncomeTrend(List<Integer> siteIds, LocalDate sixBefore);
|
|
List<LargeChargingPowerVo> getLargeScreenChargingPower(List<Integer> siteIds, LocalDateTime startTime, LocalDateTime endTime);
|
|
/**
|
* 大屏累计充电量(与 /large-screen/summary 同口径: 已结束+已支付订单, 读预聚合表 M 行)
|
*/
|
BigDecimal getLargeScreenTotalCapacity(List<Integer> siteIds);
|
|
/**
|
* 重建大屏预聚合表(每日全量: 全部月份切片 + 近90天日切片 + 全局注册用户数)
|
*/
|
void rebuildLargeScreenStat();
|
|
/**
|
* 刷新大屏预聚合表(每10分钟: 当月切片 + 今日日切片 + 全局注册用户数)
|
*/
|
void refreshLargeScreenStat();
|
|
|
List<Map<String, Object>> getHourType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> getDateType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> getMonthType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> getchargingCapacity(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto);
|
|
List<Map<String, Object>> countAllUserData();
|
|
List<Map<String, Object>> needElec1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
|
|
|
/**
|
* 获取充电结束页面详情
|
* @param id
|
* @return
|
*/
|
EndOfChargePageInfo getEndOfChargePageInfo(String id);
|
|
Long countNoTag();
|
|
|
/**
|
* 获取订单数据
|
* @param order
|
* @return
|
*/
|
List<TChargingOrder> getChargingOrder(TChargingOrderVo order);
|
|
Long countCar(List<String> brands);
|
|
|
/**
|
* 添加三方平台充电订单数据
|
* @param query
|
*/
|
R addTripartitePlatformOrder(AddTripartitePlatformOrder query);
|
|
|
/**
|
* 三方平台停止充电操作
|
* @param startChargeSeq
|
* @return
|
*/
|
R tripartitePlatformStopCharge(@RequestParam("startChargeSeq") String startChargeSeq);
|
|
|
/**
|
* 获取充电后没有扣除费用的数据
|
* @return
|
*/
|
R getNotPaymentChargingOrder();
|
|
|
/**
|
*
|
* 手动推送订单给第三方平台
|
* @param code
|
* @return
|
*/
|
R pushOrderInfo(String code);
|
|
|
R addChargingOrderSummaryData();
|
|
/**
|
* 大屏-新能源汽车电池安全检测次数统计
|
*/
|
R<StatisticsOfBatteryVO> getStatisticsOfBattery(List<Integer> siteIds);
|
|
Double getSumDegreeBySiteIds(List<Integer> siteIds);
|
|
/**
|
* 查询指定站点中实际发生过充电的用户ID
|
*/
|
List<Long> getAppUserIdsBySiteIds(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
|
* @param dateType
|
*/
|
List<Map<String, Object>> getChargingSettlementBill(String startTime, String endTime, Integer dateType);
|
|
|
/**
|
* 查询账户结算账单数据
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
List<Map<String, Object>> getAccountSettlementStatement(String startTime, String endTime);
|
|
/**
|
* 手动处理退款数据
|
* @param refund_out_trade_no 退款商户单号
|
*/
|
void orderQueryRefund(Long orderId, String refund_out_trade_no);
|
|
|
/**
|
* 手动添加完善订单费用明细
|
* @param orderId
|
*/
|
void addOrderExpenseBreakdown(Long orderId);
|
|
/**
|
* 判断订单是否为白名单企业账户订单(企业优惠与额度结算的统一判定口径):
|
* 白名单订单且已写入账户模式(共享/分配)时为企业账户流程订单,历史权益订单与第三方支付白名单订单返回false。
|
*
|
* @param chargingOrder 充电订单
|
* @return true=白名单企业账户订单
|
*/
|
boolean isWhitelistEnterpriseOrder(TChargingOrder chargingOrder);
|
|
/**
|
* 结算白名单企业账户订单的锁定额度(按实际消费扣减、差额退回原账户并写消费流水):
|
* 共享模式结算公司余额,分配模式结算白名单账户余额;结算失败返回false,由调用方回滚订单状态等待补偿重试。
|
*
|
* @param chargingOrder 充电订单(含companyId/accountMode/lockedAmount/whitelistId)
|
* @param actualAmount 实际消费金额
|
* @return true=结算成功或非企业账户订单
|
*/
|
boolean settleWhitelistEnterpriseAccount(TChargingOrder chargingOrder, BigDecimal actualAmount);
|
|
/**
|
* 释放白名单企业账户订单的锁定额度(订单未结算/关单时调用,失败仅记录日志不影响主流程)
|
*
|
* @param chargingOrder 充电订单
|
* @param scene 调用场景(日志用)
|
*/
|
void unlockWhitelistEnterpriseAmountQuietly(TChargingOrder chargingOrder, String scene);
|
}
|