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;
/**
*
* 服务类
*
*
* @author xiaochen
* @since 2024-08-07
*/
public interface TChargingOrderService extends IService {
ReservationRecommendationVO getReservationRecommendation(Integer siteId);
/**
* 获取小程序充电记录列表数据
* @param query
* @return
*/
Map getMyChargingOrderList(GetMyChargingOrderList query);
/**
* 获取小程序充电记录明细
* @param id
* @return
*/
MyChargingOrderInfo getMyChargingOrderInfo(String id);
/**
* 获取待开票订单列表
* @param query
* @return
*/
List 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 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 chargingOrderList(ChargingOrderQuery dto);
TCharingOrderVO chargingOrderSummary(ChargingOrderQuery dto);
List balanceIncomeDetail(ChargingOrderQuery dto);
R> payOrderQuery(PayOrderQueryDto payOrderQueryDto);
R> enterpriseChargingAnalysis(EnterpriseChargingAnalysisQuery query);
R> enterpriseChargingDetail(EnterpriseChargingAnalysisQuery query);
List enterpriseChargingDetailExport(EnterpriseChargingAnalysisQuery query);
R> getRefundList(ChargingRefundDto chargingRefundDto);
List chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto);
List charge(LocalDate sixBefore, List siteIds, Boolean partnerView);
List circle(List siteIds,LocalDate sixBefore, Boolean partnerView);
Map countAll(List siteIds, Boolean partnerView);
List payTypeCircle(LocalDate sixBefore, List siteIds, Boolean partnerView);
List