新增 联联平台设备充电中状态变化推送接口

This commit is contained in:
Lemon
2023-05-25 16:38:53 +08:00
parent d41a3d0531
commit 956d615010
4 changed files with 100 additions and 23 deletions

View File

@@ -153,10 +153,10 @@ public interface IOrderBasicInfoService {
/** /**
* 获取充电实时数据 * 获取充电实时数据
* @param orderCode 订单编 * @param transactionCode 交易流水
* @return * @return
*/ */
List<RealTimeMonitorData> getChargingRealTimeData(String orderCode); List<RealTimeMonitorData> getChargingRealTimeData(String transactionCode);
/** /**
* 首页订单数据展示 * 首页订单数据展示

View File

@@ -1,5 +1,6 @@
package com.jsowell.thirdparty.domain; package com.jsowell.thirdparty.domain;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@@ -19,13 +20,15 @@ public class ConnectorChargeStatusInfo {
* 充电订单号 Y * 充电订单号 Y
* 对接平台系统订单编号 * 对接平台系统订单编号
*/ */
private String StartChargeSeq; @JSONField(name = "StartChargeSeq")
private String startChargeSeq;
/** /**
* 充电设备接口编码 Y * 充电设备接口编码 Y
* 平台下唯一枪口号 * 平台下唯一枪口号
*/ */
private String ConnectorID; @JSONField(name = "ConnectorID")
private String connectorID;
/** /**
* 充电设备接口状态 Y * 充电设备接口状态 Y
@@ -35,88 +38,103 @@ public class ConnectorChargeStatusInfo {
* 4占用预约锁定 * 4占用预约锁定
* 255故障 * 255故障
*/ */
private Integer ConnectorStatus; @JSONField(name = "ConnectorStatus")
private Integer connectorStatus;
/** /**
* 车辆识别码 N * 车辆识别码 N
* 车辆识别号码或车架号码由17位英数组成 * 车辆识别号码或车架号码由17位英数组成
*/ */
private String Vin; @JSONField(name = "Vin")
private String vin;
/** /**
* A相电流 Y * A相电流 Y
* 单位A默认0 含直流(输出) * 单位A默认0 含直流(输出)
*/ */
private BigDecimal CurrentA; @JSONField(name = "CurrentA")
private BigDecimal currentA;
/** /**
* B相电流 N * B相电流 N
* 单位A默认0 * 单位A默认0
*/ */
private BigDecimal CurrentB; @JSONField(name = "CurrentB")
private BigDecimal currentB;
/** /**
* C相电流 N * C相电流 N
* 单位A默认0 * 单位A默认0
*/ */
private BigDecimal CurrentC; @JSONField(name = "CurrentC")
private BigDecimal currentC;
/** /**
* A相电压 Y * A相电压 Y
* 单位V默认0含直流(输出) * 单位V默认0含直流(输出)
*/ */
private BigDecimal VoltageA; @JSONField(name = "VoltageA")
private BigDecimal voltageA;
/** /**
* B相电压 N * B相电压 N
* 单位V默认0 * 单位V默认0
*/ */
private BigDecimal VoltageB; @JSONField(name = "VoltageB")
private BigDecimal voltageB;
/** /**
* C相电压 N * C相电压 N
* 单位V默认0 * 单位V默认0
*/ */
private BigDecimal VoltageC; @JSONField(name = "VoltageC")
private BigDecimal voltageC;
/** /**
* 电池剩余电量(默认0) Y * 电池剩余电量(默认0) Y
*/ */
private BigDecimal Soc; @JSONField(name = "Soc")
private BigDecimal soc;
/** /**
* 开始充电时间 Y * 开始充电时间 Y
* 格式“yyyy-MM-dd HH:mm:ss” * 格式“yyyy-MM-dd HH:mm:ss”
*/ */
private String StartTime; @JSONField(name = "StartTime")
private String startTime;
/** /**
* 本次采样时间 Y * 本次采样时间 Y
* 格式“yyyy-MM-dd HH:mm:ss” * 格式“yyyy-MM-dd HH:mm:ss”
*/ */
private String EndTime; @JSONField(name = "EndTime")
private String endTime;
/** /**
* 累计充电量 Y * 累计充电量 Y
* 单位小数点后2位 * 单位小数点后2位
*/ */
private BigDecimal TotalPower; @JSONField(name = "TotalPower")
private BigDecimal totalPower;
/** /**
* 累计电费 Y * 累计电费 Y
* 单位小数点后2位 * 单位小数点后2位
*/ */
private BigDecimal ElecMoney; @JSONField(name = "ElecMoney")
private BigDecimal elecMoney;
/** /**
* 累计服务费 Y * 累计服务费 Y
* 单位小数点后2位 * 单位小数点后2位
*/ */
private BigDecimal SeviceMoney; @JSONField(name = "SeviceMoney")
private BigDecimal seviceMoney;
/** /**
* 累计总金额 Y * 累计总金额 Y
* 单位小数点后2位 * 单位小数点后2位
*/ */
private BigDecimal TotalMoney; @JSONField(name = "TotalMoney")
private BigDecimal totalMoney;
} }

View File

@@ -142,4 +142,11 @@ public interface LianLianService {
* @return * @return
*/ */
String pushOrderReconciliationInfo(String orderCode); String pushOrderReconciliationInfo(String orderCode);
/**
* 设备充电中状态变化推送
* @param pileConnectorCode
* @return
*/
String pushPileChargeStatusChange(String pileConnectorCode);
} }

View File

@@ -92,7 +92,7 @@ public class LianLianServiceImpl implements LianLianService {
} }
/** /**
* 根据站点id推送站点信息 * 根据站点id推送站点信息 notification_stationInfo
* @param dto * @param dto
*/ */
@Override @Override
@@ -276,7 +276,7 @@ public class LianLianServiceImpl implements LianLianService {
// 充电中 // 充电中
ConnectorChargeStatusInfo info = new ConnectorChargeStatusInfo(); ConnectorChargeStatusInfo info = new ConnectorChargeStatusInfo();
OrderBasicInfo orderBasicInfo = orderBasicInfoService.queryChargingByPileConnectorCode(connectorInfoVO.getPileConnectorCode()); OrderBasicInfo orderBasicInfo = orderBasicInfoService.queryChargingByPileConnectorCode(connectorInfoVO.getPileConnectorCode());
List<RealTimeMonitorData> chargingRealTimeData = orderBasicInfoService.getChargingRealTimeData(orderBasicInfo.getOrderCode()); List<RealTimeMonitorData> chargingRealTimeData = orderBasicInfoService.getChargingRealTimeData(orderBasicInfo.getTransactionCode());
RealTimeMonitorData realTimeMonitorData = chargingRealTimeData.get(0); RealTimeMonitorData realTimeMonitorData = chargingRealTimeData.get(0);
info.setStartChargeSeq(orderBasicInfo.getOrderCode()); info.setStartChargeSeq(orderBasicInfo.getOrderCode());
@@ -640,7 +640,7 @@ public class LianLianServiceImpl implements LianLianService {
} }
/** /**
* 联联平台推送 设备状态变化推送 * 联联平台推送 设备状态变化推送 notification_stationStatus
* @param pileConnectorCode * @param pileConnectorCode
* @param status * @param status
* @return * @return
@@ -683,7 +683,7 @@ public class LianLianServiceImpl implements LianLianService {
} }
/** /**
* 推送订单信息 * 推送订单信息 notification_orderInfo
* @param orderCode * @param orderCode
* @return * @return
*/ */
@@ -1120,6 +1120,58 @@ public class LianLianServiceImpl implements LianLianService {
return result; return result;
} }
/**
* 设备充电中状态变化推送 notification_connector_charge_status
* @param pileConnectorCode
* @return
*/
@Override
public String pushPileChargeStatusChange(String pileConnectorCode) {
String url = TEST_URL + "notification_connector_charge_status";
// 根据枪口号查询充电实时状态
OrderBasicInfo orderBasicInfo = orderBasicInfoService.queryChargingByPileConnectorCode(pileConnectorCode);
List<RealTimeMonitorData> list = orderBasicInfoService.getChargingRealTimeData(orderBasicInfo.getTransactionCode());
RealTimeMonitorData realTimeMonitorData = list.get(0);
// 拼装联联参数
ConnectorChargeStatusInfo info = ConnectorChargeStatusInfo.builder()
.startChargeSeq(orderBasicInfo.getOrderCode())
.connectorID(pileConnectorCode)
.connectorStatus(Integer.valueOf(realTimeMonitorData.getConnectorStatus()))
.currentA(new BigDecimal(realTimeMonitorData.getOutputCurrent()))
.voltageA(new BigDecimal(realTimeMonitorData.getOutputVoltage()))
.soc(new BigDecimal(realTimeMonitorData.getSOC()))
.startTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, orderBasicInfo.getChargeStartTime()))
.endTime(DateUtils.getTime())
.totalPower(new BigDecimal(realTimeMonitorData.getChargingDegree()))
.elecMoney(new BigDecimal("0")) // TODO
.seviceMoney(new BigDecimal("0")) // TODO
.totalMoney(new BigDecimal(realTimeMonitorData.getChargingAmount()).setScale(2, BigDecimal.ROUND_HALF_UP))
.build();
// 通过站点id查询相关配置信息
ThirdPartySettingInfo settingInfo = thirdPartySettingInfoService.getInfoByStationId(Long.parseLong(orderBasicInfo.getStationId()));
if (settingInfo == null) {
return null;
}
String operatorId = settingInfo.getOperatorId();
String operatorSecret = settingInfo.getOperatorSecret();
String signSecret = settingInfo.getSignSecret();
String dataSecret = settingInfo.getDataSecret();
String dataSecretIv = settingInfo.getDataSecretIv();
// 获取令牌
String token = getToken(operatorId, operatorSecret);
if (StringUtils.isBlank(token)){
return null;
}
String jsonString = JSONObject.toJSONString(info);
// 发送请求
String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret);
return result;
}
/** /**
* TODO 请求打印充电小票 * TODO 请求打印充电小票
*/ */