协议:电桩在充电中则不得上送空闲状态,若实时数据中有两帧为空闲,平台会把此单列为异常订单。
This commit is contained in:
parent
06dc081fc1
commit
73c7593f68
@ -102,70 +102,85 @@ public class RealtimeDataLogic implements ServiceLogic {
|
|||||||
cacheTerminalStatusMap.put(terminalId, statusOrSOC);
|
cacheTerminalStatusMap.put(terminalId, statusOrSOC);
|
||||||
REDIS.setCacheMap(stationTermStatusKey, cacheTerminalStatusMap);
|
REDIS.setCacheMap(stationTermStatusKey, cacheTerminalStatusMap);
|
||||||
Map<String, Object> cacheOrder = REDIS.getCacheMap(orderkey);
|
Map<String, Object> cacheOrder = REDIS.getCacheMap(orderkey);
|
||||||
if (!orderNo.equals("00000000000000000000000000000000") && statusInt == 3) {
|
if (!orderNo.equals("00000000000000000000000000000000")) {
|
||||||
List<CacheRealtimeData> realtimeDataList = (List<CacheRealtimeData>) cacheOrder.get("realtimeDataList");
|
if (statusInt == 3) {
|
||||||
cacheGun.put("idleCnt", 0);
|
List<CacheRealtimeData> realtimeDataList = (List<CacheRealtimeData>) cacheOrder.get(
|
||||||
if (realtimeDataList == null) {
|
"realtimeDataList");
|
||||||
realtimeDataList = new ArrayList<>();
|
cacheGun.put("idleCnt", 0);
|
||||||
}
|
if (realtimeDataList == null) {
|
||||||
StartChargingData startChargingData = new StartChargingData();
|
realtimeDataList = new ArrayList<>();
|
||||||
Integer balance = (Integer) cacheOrder.get("initBalance");
|
}
|
||||||
CacheRealtimeData cacheRealtimeData = translate(realtimeData);
|
StartChargingData startChargingData = new StartChargingData();
|
||||||
balance -= cacheRealtimeData.getAmountCharged();
|
Integer balance = (Integer) cacheOrder.get("initBalance");
|
||||||
|
CacheRealtimeData cacheRealtimeData = translate(realtimeData);
|
||||||
|
balance -= cacheRealtimeData.getAmountCharged();
|
||||||
// startChargingData.setBalance(balance); //todo make pile work then uncomment
|
// startChargingData.setBalance(balance); //todo make pile work then uncomment
|
||||||
// startChargingData.setLogicCardNo(cacheOrder.get("logicCardNo").toString());
|
// startChargingData.setLogicCardNo(cacheOrder.get("logicCardNo").toString());
|
||||||
// startChargingData.setPhysicCardNo(cacheOrder.get("physicCardNo").toString());
|
// startChargingData.setPhysicCardNo(cacheOrder.get("physicCardNo").toString());
|
||||||
// startChargingData.setPileNo(cacheOrder.get("pileNo").toString());
|
// startChargingData.setPileNo(cacheOrder.get("pileNo").toString());
|
||||||
// startChargingData.setGunId(cacheOrder.get("gunId").toString());
|
// startChargingData.setGunId(cacheOrder.get("gunId").toString());
|
||||||
// Thread.sleep(300);
|
// Thread.sleep(300);
|
||||||
// chargingController.nativ-eRefreshBalance(startChargingData);
|
// 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);
|
||||||
realtimeDataList.add(cacheRealtimeData);
|
realtimeDataList.add(cacheRealtimeData);
|
||||||
Integer cacheStartSoc = (Integer) cacheOrder.get("startSoc");
|
Integer cacheStartSoc = (Integer) cacheOrder.get("startSoc");
|
||||||
if (cacheStartSoc == null && socInt != 0) cacheOrder.put("startSoc", socInt);
|
if (cacheStartSoc == null && socInt != 0) cacheOrder.put("startSoc", socInt);
|
||||||
if (socInt != 0) cacheOrder.put("endSoc", socInt);
|
if (socInt != 0) cacheOrder.put("endSoc", socInt);
|
||||||
// cacheOrder.put("em", realtimeData.()); //todo 实时时段明细数据是否由桩直接上传?
|
// cacheOrder.put("em", realtimeData.()); //todo 实时时段明细数据是否由桩直接上传?
|
||||||
cacheOrder.put("rbalance", balance);
|
cacheOrder.put("rbalance", balance);
|
||||||
cacheOrder.put("remainingTime", tr);
|
cacheOrder.put("remainingTime", tr);
|
||||||
cacheOrder.put("rdtime", DateUtil.calendar().getTime().getTime());
|
cacheOrder.put("rdtime", DateUtil.calendar().getTime().getTime());
|
||||||
cacheOrder.put("status", statusplain);
|
cacheOrder.put("status", statusplain);
|
||||||
cacheOrder.put("totalPower", cacheRealtimeData.getChargingDegree() / 10000.0);
|
cacheOrder.put("totalPower", cacheRealtimeData.getChargingDegree() / 10000.0);
|
||||||
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 stopSoc = (Integer) cacheOrder.get("stopSoc");
|
||||||
if (stopSoc != null && socInt >= stopSoc) {
|
if (stopSoc != null && socInt >= stopSoc) {
|
||||||
String alerted = (String) cacheOrder.get("socalerted");
|
String alerted = (String) cacheOrder.get("socalerted");
|
||||||
String tel = (String) cacheOrder.get("tel");
|
String tel = (String) cacheOrder.get("tel");
|
||||||
if (alerted == null && tel != null) {
|
if (alerted == null && tel != null) {
|
||||||
R r = chargingController.nativeStopCharging(pileNo, gunId, default_version);
|
R r = chargingController.nativeStopCharging(pileNo, gunId, default_version);
|
||||||
if (r.getCode() == 200) {
|
if (r.getCode() == 200) {
|
||||||
HashMap<String, String> paramMap = new HashMap<>();
|
HashMap<String, String> paramMap = new HashMap<>();
|
||||||
paramMap.put("battery", stopSoc.toString());
|
paramMap.put("battery", stopSoc.toString());
|
||||||
paramMap.put("phone", tel);
|
paramMap.put("phone", tel);
|
||||||
paramMap.put("content", "【小华充电】尊敬的用户,你的车辆已充电达至设定的SOC("+stopSoc.toString()+"%)已自动停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。");
|
paramMap.put("content", "【小华充电】尊敬的用户,你的车辆已充电达至设定的SOC(" + stopSoc.toString() + "%)" +
|
||||||
smsService.sendNotice(paramMap);
|
"已自动停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。");
|
||||||
cacheOrder.put("socalerted", "true");
|
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"))) {
|
||||||
if ("true".equals(cacheOrder.get("lordiss"))) {
|
cacheOrder.put("lordiss", "false");
|
||||||
cacheOrder.put("lordiss", "false");
|
pileOrderService.pileStop(orderNo, 4, "订单实时数据恢复");
|
||||||
pileOrderService.pileStop(orderNo, 4, "订单实时数据恢复");
|
}
|
||||||
|
} else {
|
||||||
|
Integer errorfreecnt = (Integer) cacheOrder.get("errorfreecnt");
|
||||||
|
errorfreecnt = errorfreecnt == null ? 1 : ++errorfreecnt;
|
||||||
|
if (errorfreecnt == 2) {
|
||||||
|
final R r = pileOrderService.abnormalOrder(orderNo);
|
||||||
|
if (r.getCode() != 200) {
|
||||||
|
errorfreecnt = 1;
|
||||||
|
}
|
||||||
|
log.error("abnormal.1 order[{}]", orderNo);
|
||||||
|
}
|
||||||
|
cacheOrder.put("errorfreecnt", errorfreecnt);
|
||||||
}
|
}
|
||||||
REDIS.setCacheMap(orderkey, cacheOrder);
|
REDIS.setCacheMap(orderkey, cacheOrder);
|
||||||
} else {
|
} else {
|
||||||
@ -181,7 +196,7 @@ public class RealtimeDataLogic implements ServiceLogic {
|
|||||||
String status = (String) problematicOrder.get("status");
|
String status = (String) problematicOrder.get("status");
|
||||||
if (!isInteger(status) && !status.equals("充电中") && orderData == null) {
|
if (!isInteger(status) && !status.equals("充电中") && orderData == null) {
|
||||||
pileOrderService.abnormalOrder(orderNo);
|
pileOrderService.abnormalOrder(orderNo);
|
||||||
log.error("abnormal order[{}]", orderNo);
|
log.error("abnormal.2 order[{}]", orderNo);
|
||||||
cacheGun.put("orderkey", null);
|
cacheGun.put("orderkey", null);
|
||||||
idleCnt = 0;
|
idleCnt = 0;
|
||||||
}
|
}
|
||||||
@ -199,7 +214,8 @@ public class RealtimeDataLogic implements ServiceLogic {
|
|||||||
return new ServiceResult(false);
|
return new ServiceResult(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CacheRealtimeData translate(RealtimeData realtimeData) throws InvocationTargetException, IllegalAccessException, InstantiationException {
|
private CacheRealtimeData translate(RealtimeData realtimeData) throws InvocationTargetException, IllegalAccessException,
|
||||||
|
InstantiationException {
|
||||||
|
|
||||||
Class<CacheRealtimeData> crdclz = CacheRealtimeData.class;
|
Class<CacheRealtimeData> crdclz = CacheRealtimeData.class;
|
||||||
Class<RealtimeData> rdclz = RealtimeData.class;
|
Class<RealtimeData> rdclz = RealtimeData.class;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user