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

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

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

View File

@@ -142,4 +142,11 @@ public interface LianLianService {
* @return
*/
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
*/
@Override
@@ -276,7 +276,7 @@ public class LianLianServiceImpl implements LianLianService {
// 充电中
ConnectorChargeStatusInfo info = new ConnectorChargeStatusInfo();
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);
info.setStartChargeSeq(orderBasicInfo.getOrderCode());
@@ -640,7 +640,7 @@ public class LianLianServiceImpl implements LianLianService {
}
/**
* 联联平台推送 设备状态变化推送
* 联联平台推送 设备状态变化推送 notification_stationStatus
* @param pileConnectorCode
* @param status
* @return
@@ -683,7 +683,7 @@ public class LianLianServiceImpl implements LianLianService {
}
/**
* 推送订单信息
* 推送订单信息 notification_orderInfo
* @param orderCode
* @return
*/
@@ -1120,6 +1120,58 @@ public class LianLianServiceImpl implements LianLianService {
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 请求打印充电小票
*/