充电桩协议数据:0x13实时、0x15握手

This commit is contained in:
ZZ 2021-07-22 16:14:06 +08:00
parent 98d7917553
commit 12d68d3fb1
7 changed files with 518 additions and 11 deletions

View File

@ -0,0 +1,60 @@
package com.xhpc.common.pilemsg;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.io.Serializable;
import java.util.Date;
@JsonIgnoreProperties
public class BaseData implements Serializable {
private static final long serialVersionUID = 1L;
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
private String hex;
private int seq;
public int getSeq() {
return seq;
}
public void setSeq(int seq) {
this.seq = seq;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getHex() {
return hex;
}
public void setHex(String hex) {
this.hex = hex;
}
}

View File

@ -0,0 +1,193 @@
package com.xhpc.common.pilemsg;
public class ChargingHandshakeData extends BaseData {
private String orderNo; //交易流水号
private String pileNo; //桩号
private String gunId; //枪号
private String bmsProtocolVersion; //BMS协议版本
private String bmsBatteryType; //BMS电池类型
private String bmsBatteryNominalTotalCapacity; //BMS整车额定容量Ah
private String bmsBatteryNominalTotalVoltage; //BMS整车额定电压V
private String bmsBatteryFactory; //BMS电池厂商
private String bmsBatteryPackSn; //BMS电池组序号
private String bmsBatteryPackProdYear; //BMS电池组生产年偏移量(+1985年)
private String bmsBatteryPackProdMonth; //BMS电池组生产月
private String bmsBatteryPackProdDate; //BMS电池组生产日
private String bmsBatteryRecycleTime; //BMS电池组充电次数
private String bmsBatteryOwnership; //BMS电池组产权标识
private String reserved; //预留位
private String vin; //vin码
private String bmsSoftwareVersion; //BMS软件版本号
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getPileNo() {
return pileNo;
}
public void setPileNo(String pileNo) {
this.pileNo = pileNo;
}
public String getGunId() {
return gunId;
}
public void setGunId(String gunId) {
this.gunId = gunId;
}
public String getBmsProtocolVersion() {
return bmsProtocolVersion;
}
public void setBmsProtocolVersion(String bmsProtocolVersion) {
this.bmsProtocolVersion = bmsProtocolVersion;
}
public String getBmsBatteryType() {
return bmsBatteryType;
}
public void setBmsBatteryType(String bmsBatteryType) {
this.bmsBatteryType = bmsBatteryType;
}
public String getBmsBatteryNominalTotalCapacity() {
return bmsBatteryNominalTotalCapacity;
}
public void setBmsBatteryNominalTotalCapacity(String bmsBatteryNominalTotalCapacity) {
this.bmsBatteryNominalTotalCapacity = bmsBatteryNominalTotalCapacity;
}
public String getBmsBatteryNominalTotalVoltage() {
return bmsBatteryNominalTotalVoltage;
}
public void setBmsBatteryNominalTotalVoltage(String bmsBatteryNominalTotalVoltage) {
this.bmsBatteryNominalTotalVoltage = bmsBatteryNominalTotalVoltage;
}
public String getBmsBatteryFactory() {
return bmsBatteryFactory;
}
public void setBmsBatteryFactory(String bmsBatteryFactory) {
this.bmsBatteryFactory = bmsBatteryFactory;
}
public String getBmsBatteryPackSn() {
return bmsBatteryPackSn;
}
public void setBmsBatteryPackSn(String bmsBatteryPackSn) {
this.bmsBatteryPackSn = bmsBatteryPackSn;
}
public String getBmsBatteryPackProdYear() {
return bmsBatteryPackProdYear;
}
public void setBmsBatteryPackProdYear(String bmsBatteryPackProdYear) {
this.bmsBatteryPackProdYear = bmsBatteryPackProdYear;
}
public String getBmsBatteryPackProdMonth() {
return bmsBatteryPackProdMonth;
}
public void setBmsBatteryPackProdMonth(String bmsBatteryPackProdMonth) {
this.bmsBatteryPackProdMonth = bmsBatteryPackProdMonth;
}
public String getBmsBatteryPackProdDate() {
return bmsBatteryPackProdDate;
}
public void setBmsBatteryPackProdDate(String bmsBatteryPackProdDate) {
this.bmsBatteryPackProdDate = bmsBatteryPackProdDate;
}
public String getBmsBatteryRecycleTime() {
return bmsBatteryRecycleTime;
}
public void setBmsBatteryRecycleTime(String bmsBatteryRecycleTime) {
this.bmsBatteryRecycleTime = bmsBatteryRecycleTime;
}
public String getBmsBatteryOwnership() {
return bmsBatteryOwnership;
}
public void setBmsBatteryOwnership(String bmsBatteryOwnership) {
this.bmsBatteryOwnership = bmsBatteryOwnership;
}
public String getReserved() {
return reserved;
}
public void setReserved(String reserved) {
this.reserved = reserved;
}
public String getVin() {
return vin;
}
public void setVin(String vin) {
this.vin = vin;
}
public String getBmsSoftwareVersion() {
return bmsSoftwareVersion;
}
public void setBmsSoftwareVersion(String bmsSoftwareVersion) {
this.bmsSoftwareVersion = bmsSoftwareVersion;
}
}

View File

@ -0,0 +1,204 @@
package com.xhpc.common.pilemsg;
public class RealtimeData extends BaseData {
private String orderNo; //交易流水号
private String pileNo; //桩号
private String gunId; //枪号
private String status; //状态
private String pileGunStatus; //枪是否归位
private String vehicleGunStatus; //是否插枪
private String workingVoltage; //输出电压
private String workingCurrent; //输出电流
private String gunLineTemperature; //枪线温度
private String gunLineNumber; //枪线编码
private String soc; //
private String maxTemperature; //电池组最高温度
private String chargingTime; //累计充电时间
private String remainingTime; //剩余时间
private String chargingDegree; //充电度数
private String lossChargingDegree; //记损充电度数
private String amountCharged; //已充金额
private String hardwareFault; //硬件故障
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getPileNo() {
return pileNo;
}
public void setPileNo(String pileNo) {
this.pileNo = pileNo;
}
public String getGunId() {
return gunId;
}
public void setGunId(String gunId) {
this.gunId = gunId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPileGunStatus() {
return pileGunStatus;
}
public void setPileGunStatus(String pileGunStatus) {
this.pileGunStatus = pileGunStatus;
}
public String getVehicleGunStatus() {
return vehicleGunStatus;
}
public void setVehicleGunStatus(String vehicleGunStatus) {
this.vehicleGunStatus = vehicleGunStatus;
}
public String getWorkingVoltage() {
return workingVoltage;
}
public void setWorkingVoltage(String workingVoltage) {
this.workingVoltage = workingVoltage;
}
public String getWorkingCurrent() {
return workingCurrent;
}
public void setWorkingCurrent(String workingCurrent) {
this.workingCurrent = workingCurrent;
}
public String getGunLineTemperature() {
return gunLineTemperature;
}
public void setGunLineTemperature(String gunLineTemperature) {
this.gunLineTemperature = gunLineTemperature;
}
public String getGunLineNumber() {
return gunLineNumber;
}
public void setGunLineNumber(String gunLineNumber) {
this.gunLineNumber = gunLineNumber;
}
public String getSoc() {
return soc;
}
public void setSoc(String soc) {
this.soc = soc;
}
public String getMaxTemperature() {
return maxTemperature;
}
public void setMaxTemperature(String maxTemperature) {
this.maxTemperature = maxTemperature;
}
public String getChargingTime() {
return chargingTime;
}
public void setChargingTime(String chargingTime) {
this.chargingTime = chargingTime;
}
public String getRemainingTime() {
return remainingTime;
}
public void setRemainingTime(String remainingTime) {
this.remainingTime = remainingTime;
}
public String getChargingDegree() {
return chargingDegree;
}
public void setChargingDegree(String chargingDegree) {
this.chargingDegree = chargingDegree;
}
public String getLossChargingDegree() {
return lossChargingDegree;
}
public void setLossChargingDegree(String lossChargingDegree) {
this.lossChargingDegree = lossChargingDegree;
}
public String getAmountCharged() {
return amountCharged;
}
public void setAmountCharged(String amountCharged) {
this.amountCharged = amountCharged;
}
public String getHardwareFault() {
return hardwareFault;
}
public void setHardwareFault(String hardwareFault) {
this.hardwareFault = hardwareFault;
}
}

View File

@ -78,6 +78,8 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler {
String serviceName = HexUtils.toHex(data, 5, 6);
String version = ChargingPileServer.getVersion(handler.getName());
Map<String, Object> req = analysis(data, serviceName, version);
int seq = HexUtils.toInteger(data, 2, 4);
req.put("seq", seq);
String pileNo = (String) req.get("pileNo");
ServiceParameter sp = new ServiceParameter(serviceName, pileNo, req);
ServiceResult result = servicemainLogic.process(sp);

View File

@ -0,0 +1,36 @@
package com.xhpc.pp.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xhpc.common.pilemsg.ChargingHandshakeData;
import com.xhpc.pp.tx.ServiceParameter;
import com.xhpc.pp.tx.ServiceResult;
import com.xhpc.pp.tx.logic.ServiceLogic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import java.util.Map;
import static com.xhpc.pp.server.ChargingPileServer.REDIS;
@Lazy
@Component("ChargingHandshakeDataLogic")
public class ChargingHandshakeDataLogic implements ServiceLogic {
private static Logger log = LoggerFactory.getLogger(ChargingHandshakeDataLogic.class);
@Override
public ServiceResult service(ServiceParameter sp) throws Exception {
Map<String, Object> req = sp.getParameters();
ObjectMapper objectMapper = new ObjectMapper();
ChargingHandshakeData chargingHandshakeData = objectMapper.convertValue(req, ChargingHandshakeData.class);
String orderNo = chargingHandshakeData.getOrderNo();
Map<String, Object> cacheOrder = REDIS.getCacheMap(orderNo);
cacheOrder.put("handshake", chargingHandshakeData);
REDIS.setCacheMap(orderNo, cacheOrder);
return new ServiceResult(false);
}
}

View File

@ -1,7 +1,7 @@
package com.xhpc.pp.service;
//import com.xhpc.common.domain.XhpcChargeOrderStatus;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xhpc.common.pilemsg.RealtimeData;
import com.xhpc.pp.tx.ServiceParameter;
import com.xhpc.pp.tx.ServiceResult;
import com.xhpc.pp.tx.logic.ServiceLogic;
@ -10,6 +10,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import static com.xhpc.pp.server.ChargingPileServer.REDIS;
@ -24,19 +27,27 @@ public class RealtimeDataLogic implements ServiceLogic {
public ServiceResult service(ServiceParameter sp) throws Exception {
Map<String, Object> req = sp.getParameters();
String pileNo = (String) req.get("pileNo");
String gunId = (String) req.get("gunId");
String status = (String) req.get("status");
ObjectMapper objectMapper = new ObjectMapper();
RealtimeData realtimeData = objectMapper.convertValue(req, RealtimeData.class);
String pileNo = realtimeData.getPileNo();
String gunId = realtimeData.getGunId();
String status = realtimeData.getStatus();
realtimeData.setCreateBy("SYSTEM");
realtimeData.setCreateTime(Calendar.getInstance().getTime());
String pileGun = pileNo.concat(gunId);
Map<String, Object> cacheGun = REDIS.getCacheMap(pileGun);
cacheGun.put("status", status);
// List<XhpcChargeOrderStatus> realTimeDataList = (List<XhpcChargeOrderStatus>) cacheGun.get("realTimeData");
// XhpcChargeOrderStatus newData = new XhpcChargeOrderStatus();
// newData.setStatus(Integer.parseInt(status));
// if(realTimeDataList==null) realTimeDataList = new ArrayList<>();
// realTimeDataList.add(newData);
// cacheGun.put("realTimeData", realTimeDataList);
REDIS.setCacheMap(pileGun, cacheGun);
String orderNo = realtimeData.getOrderNo();
Map<String, Object> order = REDIS.getCacheMap(orderNo);
List<RealtimeData> realtimeDataList = (List<RealtimeData>) order.get("realtimeDataList");
if (realtimeDataList == null) {
realtimeDataList = new ArrayList<>();
}
realtimeDataList.add(realtimeData);
order.put("status", status);
order.put("realtimeDataList", realtimeDataList);
REDIS.setCacheMap(orderNo, order);
return new ServiceResult(false);
}

View File

@ -13,5 +13,6 @@
<entry key="05" value-ref="RateModelValidateLogic"/>
<entry key="09" value-ref="RateModelRequestLogic"/>
<entry key="13" value-ref="RealtimeDataLogic"/>
<entry key="15" value-ref="ChargingHandshakeDataLogic"/>
</util:map>
</beans>