package com.sandu.ximon.admin.manager.iot.frame.inner.request;
|
|
import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingEnum;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils;
|
import com.sandu.ximon.dao.domain.C3mChargingCharge;
|
|
import java.text.DecimalFormat;
|
import java.util.List;
|
|
/**
|
* @author ZZQ
|
* @date 2022/8/15 11:23
|
*/
|
public class C3SetRateReqInnerFrame implements IRequestInnerFrame {
|
private final String payload;
|
|
|
public C3SetRateReqInnerFrame(String c3Mac, List<C3mChargingCharge> list) {
|
StringBuffer buffer = new StringBuffer();
|
|
for (C3mChargingCharge bean : list) {
|
//时间
|
String hour = SupplementUtils.suppleZero(hex10To16(bean.getHour()), 2);
|
String min = SupplementUtils.suppleZero(hex10To16(bean.getMin()), 2);
|
|
//费率
|
double chargeValue = bean.getCharge() * 10;
|
String chargeHex = hex10To16(
|
Integer.parseInt(new DecimalFormat("0").format(chargeValue)));
|
String charge;
|
if (chargeHex.length() > 2) {
|
charge = "FF";
|
} else {
|
charge = SupplementUtils.suppleZero(chargeHex, 2);
|
}
|
|
buffer = buffer.append(hour);
|
buffer = buffer.append(min);
|
buffer = buffer.append(charge);
|
}
|
|
//添加默认的无效费率
|
for (int i = 0; i < (5 - list.size()); i++) {
|
//时间
|
buffer = buffer.append("FFFF");
|
//费率
|
buffer = buffer.append("FF");
|
}
|
|
this.payload = c3Mac + buffer;
|
}
|
|
@Override
|
public String getEncodeFrame() {
|
String functionCode = C3ChargingEnum.SetRate.getCode();
|
String payloadLength = "0013";
|
String frame = functionCode + payloadLength + payload;
|
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
|
}
|
|
/**
|
* 十进制转16进制
|
*
|
* @param value
|
* @return
|
*/
|
private String hex10To16(int value) {
|
return String.format("%02X", value);
|
}
|
|
}
|