package com.ruoyi.order.service;
|
|
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.web.page.PageInfo;
|
import com.ruoyi.order.api.dto.DeviceStartChargingDTO;
|
import com.ruoyi.order.api.model.TVinChargingOrder;
|
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
|
import com.ruoyi.order.api.query.VinChargingOrderQuery;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
import com.ruoyi.order.api.vo.ChargingOrderVO;
|
import com.ruoyi.order.api.vo.DeviceStartChargingVO;
|
import com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO;
|
import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO;
|
import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
|
import com.ruoyi.order.api.vo.VinChargingStatusVO;
|
import com.ruoyi.order.dto.MyVinChargingOrderList;
|
|
import java.util.List;
|
import java.util.Map;
|
|
public interface TVinChargingOrderService extends IService<TVinChargingOrder> {
|
|
PageInfo<ChargingOrderVO> pageList(VinChargingOrderQuery query);
|
|
PageInfo<MyVinChargingOrderList> pageAppletOrders(Integer pageCurr, Integer pageSize);
|
|
Map<String, Object> appletDetail(Long chargingOrderId);
|
|
List<VinChargingStatusVO> getChargingVinStatus(List<Long> vinIds);
|
|
List<ChargingOrderVO> exportList(VinChargingOrderQuery query);
|
|
Map<String, Object> summary(VinChargingOrderQuery query);
|
|
Map<String, Object> detail(Long chargingOrderId);
|
|
AjaxResult stopCharging(String chargingOrderId, Integer chargingGunId);
|
|
List<Map<String, Object>> accountingStrategyList(Long chargingOrderId);
|
|
// ===== 设备侧VIN码充电链路(V0.2 VIN码充电) =====
|
|
/**
|
* 设备主动发起VIN码充电:VIN反序解析 -> 绑定关系校验 -> 建单(状态2) -> 策略快照
|
*/
|
DeviceStartChargingVO startVinCharging(DeviceStartChargingDTO dto);
|
|
/**
|
* 根据订单编号查询VIN码充电订单(VD前缀)
|
*/
|
TVinChargingOrder getVinOrderByCode(String code);
|
|
/**
|
* VIN订单收到桩启动应答:成功置为充电中;失败置为启动失败并复位枪
|
*/
|
void vinStartChargeSuccessfully(PlatformStartChargingReplyMessageVO vo);
|
|
/**
|
* VIN订单充电握手处理:回写实际VIN;仅订单状态为启动中(2)时推进为充电中(3)、
|
* 补开始时间、置枪充电中并推监管(其余状态幂等跳过,不复活已关单)
|
*/
|
boolean handleHandshakeVin(String orderCode, String vin);
|
|
/**
|
* VIN订单实时监控数据更新(首次数据将订单置为充电中)
|
*/
|
void vinChargeMonitoring(UploadRealTimeMonitoringDataQuery query);
|
|
/**
|
* VIN订单充电结束(设备自动结束/异常终止时更新结束方式)
|
*/
|
void vinEndCharge(String orderCode, Integer endMode);
|
|
/**
|
* VIN订单最终结算(统一结算入口,VD):订单号结算锁 -> 幂等(状态5跳过) -> 分时电量按快照计价
|
* -> 写计费明细 -> 更新订单(状态5);不做任何账户扣款操作(后付记账模式)
|
*/
|
R vinEndChargeBillingCharge(TransactionRecordMessageVO vo);
|
|
/**
|
* 查询充电枪最新停止中(状态4)的VIN订单(平台停止应答兜底处理)
|
*/
|
TVinChargingOrder getLatestStoppingByGunId(Integer gunId);
|
|
/**
|
* 平台停止充电应答兜底:确认结束方式为主动终止(与stopCharging前置更新幂等合并)
|
*/
|
void vinTerminateStopByReply(PlatformStopChargingReplyVO vo);
|
|
// ===== 定时补偿(文档13.3:异常断电/补账场景,走统一结算入口) =====
|
|
/**
|
* 查询启动超时(状态2超过阈值未收到启动成功应答)的VIN订单
|
*/
|
List<TVinChargingOrder> listTimeoutStartingOrders();
|
|
/**
|
* 查询充电中/停止中的VIN订单,由定时任务结合 Mongo 交易记录和实时数据判断是否补偿
|
*/
|
List<TVinChargingOrder> listTimeoutChargingOrders();
|
|
/**
|
* 启动超时关单:仅当前状态仍为启动中时置为启动失败(-1)并复位充电枪
|
*/
|
void closeTimeoutStartingOrder(TVinChargingOrder order);
|
|
/**
|
* 无完整设备交易记录且实时数据静默超时时,以订单累计电量构造平段账单,复用统一结算入口
|
*/
|
void compensationSettle(TVinChargingOrder order);
|
}
|