过流过压保护与费率主动下发

This commit is contained in:
ZZ 2021-12-07 11:44:06 +08:00
parent 53dd34c3e7
commit a420cdc845
2 changed files with 45 additions and 41 deletions

View File

@ -6,7 +6,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.xhpc.common.api.PileOrderService; import com.xhpc.common.api.PileOrderService;
import com.xhpc.common.api.SmsService; import com.xhpc.common.api.SmsService;
import com.xhpc.common.core.domain.R; import com.xhpc.common.core.domain.R;
import com.xhpc.common.data.down.StartChargingData;
import com.xhpc.common.data.redis.CacheOrderData; import com.xhpc.common.data.redis.CacheOrderData;
import com.xhpc.common.data.redis.CacheRealtimeData; import com.xhpc.common.data.redis.CacheRealtimeData;
import com.xhpc.common.data.up.RealtimeData; import com.xhpc.common.data.up.RealtimeData;
@ -71,8 +70,10 @@ public class RealtimeDataLogic implements ServiceLogic {
String statusplain = stable[statusInt]; String statusplain = stable[statusInt];
cacheGun.put("pileGunStatus", pvgstable[Integer.parseInt(realtimeData.getPileGunStatus())]); cacheGun.put("pileGunStatus", pvgstable[Integer.parseInt(realtimeData.getPileGunStatus())]);
cacheGun.put("vehicleGunStatus", pvgstable[Integer.parseInt(realtimeData.getVehicleGunStatus())]); cacheGun.put("vehicleGunStatus", pvgstable[Integer.parseInt(realtimeData.getVehicleGunStatus())]);
cacheGun.put("voltage", realtimeData.getWorkingVoltage()); double wv = reverseHexInt(realtimeData.getWorkingVoltage()) / 10.0;
cacheGun.put("current", realtimeData.getWorkingCurrent()); cacheGun.put("voltage", wv);
double wc = reverseHexInt(realtimeData.getWorkingCurrent()) / 10.0;
cacheGun.put("current", wc);
String hardwareFault = realtimeData.getHardwareFault(); String hardwareFault = realtimeData.getHardwareFault();
String hfs = toBits(hardwareFault); String hfs = toBits(hardwareFault);
char[] hfcs = hfs.toCharArray(); char[] hfcs = hfs.toCharArray();
@ -116,17 +117,9 @@ public class RealtimeDataLogic implements ServiceLogic {
if (realtimeDataList == null) { if (realtimeDataList == null) {
realtimeDataList = new ArrayList<>(); realtimeDataList = new ArrayList<>();
} }
StartChargingData startChargingData = new StartChargingData();
Integer balance = (Integer) cacheOrder.get("initBalance"); Integer balance = (Integer) cacheOrder.get("initBalance");
CacheRealtimeData cacheRealtimeData = translate(realtimeData); CacheRealtimeData cacheRealtimeData = translate(realtimeData);
balance -= cacheRealtimeData.getAmountCharged(); balance -= cacheRealtimeData.getAmountCharged();
// startChargingData.setBalance(balance); //todo make pile work then uncomment
// startChargingData.setLogicCardNo(cacheOrder.get("logicCardNo").toString());
// startChargingData.setPhysicCardNo(cacheOrder.get("physicCardNo").toString());
// startChargingData.setPileNo(cacheOrder.get("pileNo").toString());
// startChargingData.setGunId(cacheOrder.get("gunId").toString());
// Thread.sleep(300);
// chargingController.nativeRefreshBalance(startChargingData);
cacheRealtimeData.setCreateTime(DateUtil.now()); cacheRealtimeData.setCreateTime(DateUtil.now());
String lord = orderkey.concat(".lord"); String lord = orderkey.concat(".lord");
REDIS.setCacheObject(lord, cacheRealtimeData); REDIS.setCacheObject(lord, cacheRealtimeData);
@ -149,38 +142,49 @@ public class RealtimeDataLogic implements ServiceLogic {
cacheOrder.put("totalMoney", cacheRealtimeData.getAmountCharged() / 10000.0); cacheOrder.put("totalMoney", cacheRealtimeData.getAmountCharged() / 10000.0);
cacheOrder.put("realtimeDataList", realtimeDataList); cacheOrder.put("realtimeDataList", realtimeDataList);
pileOrderService.pileRimeOrder(orderNo); pileOrderService.pileRimeOrder(orderNo);
Integer stopSoc = (Integer) cacheOrder.get("stopSoc"); Integer vul = (Integer) cachePile.get("voltageUpperLimits");
if (stopSoc != null && socInt >= stopSoc) { Integer cul = (Integer) cachePile.get("current");
String alerted = (String) cacheOrder.get("socalerted"); if (wc > cul || wv > vul) {
String tel = (String) cacheOrder.get("tel"); R r = chargingController.nativeStopCharging(pileNo, gunId, default_version);
if (alerted == null && tel != null) { if (r.getCode() == 200) {
R r = chargingController.nativeStopCharging(pileNo, gunId, default_version); Integer vcpcnt = (Integer) cacheOrder.get("vcpcnt");
if (r.getCode() == 200) { cacheOrder.put("vcpcnt", vcpcnt == null ? 1 : vcpcnt++);
HashMap<String, String> paramMap = new HashMap<>(); log.error("{} alert: v[{}], c[{}]", orderNo, wv, wc);
paramMap.put("battery", stopSoc.toString()); }
paramMap.put("phone", tel); } else {
paramMap.put("content", "【小华充电】尊敬的用户你的车辆已充电达至设定的SOC(" + stopSoc + "%)" + Integer stopSoc = (Integer) cacheOrder.get("stopSoc");
"已自动停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。"); if (stopSoc != null && socInt >= stopSoc) {
smsService.sendNotice(paramMap); String alerted = (String) cacheOrder.get("socalerted");
cacheOrder.put("socalerted", "true"); String tel = (String) cacheOrder.get("tel");
if (alerted == null && tel != null) {
R r = chargingController.nativeStopCharging(pileNo, gunId, default_version);
if (r.getCode() == 200) {
HashMap<String, String> paramMap = new HashMap<>();
paramMap.put("battery", stopSoc.toString());
paramMap.put("phone", tel);
paramMap.put("content", "【小华充电】尊敬的用户你的车辆已充电达至设定的SOC(" + stopSoc + "%)" +
"已自动停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。");
smsService.sendNotice(paramMap);
cacheOrder.put("socalerted", "true");
}
} }
} }
} if (balance < 50000) {
if (balance < 50000) { String alerted = (String) cacheOrder.get("lt5alerted");
String alerted = (String) cacheOrder.get("lt5alerted"); String tel = (String) cacheOrder.get("tel");
String tel = (String) cacheOrder.get("tel"); if (alerted == null && tel != null) {
if (alerted == null && tel != null) { HashMap<String, String> paramMap = new HashMap<>();
HashMap<String, String> paramMap = new HashMap<>(); paramMap.put("money", "5");
paramMap.put("money", "5"); paramMap.put("phone", tel);
paramMap.put("phone", tel); paramMap.put("content", "【小华充电】尊敬的用户你的账户余额小于5元,为不影响您的正常充电,请您尽快充值交费,谢谢。");
paramMap.put("content", "【小华充电】尊敬的用户你的账户余额小于5元,为不影响您的正常充电,请您尽快充值交费,谢谢。"); smsService.sendNotice(paramMap);
smsService.sendNotice(paramMap); cacheOrder.put("lt5alerted", "true");
cacheOrder.put("lt5alerted", "true"); }
}
if ("true".equals(cacheOrder.get("lordiss"))) {
cacheOrder.put("lordiss", "false");
pileOrderService.pileStop(orderNo, 4, "订单实时数据恢复");
} }
}
if ("true".equals(cacheOrder.get("lordiss"))) {
cacheOrder.put("lordiss", "false");
pileOrderService.pileStop(orderNo, 4, "订单实时数据恢复");
} }
} else { } else {
Integer errorfreecnt = (Integer) cacheOrder.get("errorfreecnt"); Integer errorfreecnt = (Integer) cacheOrder.get("errorfreecnt");

View File

@ -36,7 +36,7 @@ public class RateModelTask {
Collection<String> gks = REDIS.keys(gkPattern); Collection<String> gks = REDIS.keys(gkPattern);
boolean charging = false; boolean charging = false;
for (String gk : gks) { for (String gk : gks) {
if (isInteger(REDIS.getCacheMapValue(gk, "status"))) { if (gk.length() == 20 && isInteger(REDIS.getCacheMapValue(gk, "status"))) {
charging = true; charging = true;
break; break;
} }