From 73c7593f68d2eb7d7236b73d4cbfe236314f8e2b Mon Sep 17 00:00:00 2001 From: ZZ Date: Fri, 12 Nov 2021 10:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E8=AE=AE:=E7=94=B5=E6=A1=A9=E5=9C=A8?= =?UTF-8?q?=E5=85=85=E7=94=B5=E4=B8=AD=E5=88=99=E4=B8=8D=E5=BE=97=E4=B8=8A?= =?UTF-8?q?=E9=80=81=E7=A9=BA=E9=97=B2=E7=8A=B6=E6=80=81=EF=BC=8C=E8=8B=A5?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE=E4=B8=AD=E6=9C=89=E4=B8=A4?= =?UTF-8?q?=E5=B8=A7=E4=B8=BA=E7=A9=BA=E9=97=B2=EF=BC=8C=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E4=BC=9A=E6=8A=8A=E6=AD=A4=E5=8D=95=E5=88=97=E4=B8=BA=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E8=AE=A2=E5=8D=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xhpc/pp/logic/RealtimeDataLogic.java | 128 ++++++++++-------- 1 file changed, 72 insertions(+), 56 deletions(-) diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java index aeab4d2e..ebdcc386 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java @@ -102,70 +102,85 @@ public class RealtimeDataLogic implements ServiceLogic { cacheTerminalStatusMap.put(terminalId, statusOrSOC); REDIS.setCacheMap(stationTermStatusKey, cacheTerminalStatusMap); Map cacheOrder = REDIS.getCacheMap(orderkey); - if (!orderNo.equals("00000000000000000000000000000000") && statusInt == 3) { - List realtimeDataList = (List) cacheOrder.get("realtimeDataList"); - cacheGun.put("idleCnt", 0); - if (realtimeDataList == null) { - realtimeDataList = new ArrayList<>(); - } - StartChargingData startChargingData = new StartChargingData(); - Integer balance = (Integer) cacheOrder.get("initBalance"); - CacheRealtimeData cacheRealtimeData = translate(realtimeData); - balance -= cacheRealtimeData.getAmountCharged(); + if (!orderNo.equals("00000000000000000000000000000000")) { + if (statusInt == 3) { + List realtimeDataList = (List) cacheOrder.get( + "realtimeDataList"); + cacheGun.put("idleCnt", 0); + if (realtimeDataList == null) { + realtimeDataList = new ArrayList<>(); + } + StartChargingData startChargingData = new StartChargingData(); + Integer balance = (Integer) cacheOrder.get("initBalance"); + CacheRealtimeData cacheRealtimeData = translate(realtimeData); + 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.nativ-eRefreshBalance(startChargingData); - cacheRealtimeData.setCreateTime(DateUtil.now()); - String lord = orderkey.concat(".lord"); - REDIS.setCacheObject(lord, cacheRealtimeData); - realtimeDataList.add(cacheRealtimeData); - Integer cacheStartSoc = (Integer) cacheOrder.get("startSoc"); - if (cacheStartSoc == null && socInt != 0) cacheOrder.put("startSoc", socInt); - if (socInt != 0) cacheOrder.put("endSoc", socInt); +// chargingController.nativeRefreshBalance(startChargingData); + cacheRealtimeData.setCreateTime(DateUtil.now()); + String lord = orderkey.concat(".lord"); + REDIS.setCacheObject(lord, cacheRealtimeData); + realtimeDataList.add(cacheRealtimeData); + Integer cacheStartSoc = (Integer) cacheOrder.get("startSoc"); + if (cacheStartSoc == null && socInt != 0) cacheOrder.put("startSoc", socInt); + if (socInt != 0) cacheOrder.put("endSoc", socInt); // cacheOrder.put("em", realtimeData.()); //todo 实时时段明细数据是否由桩直接上传? - cacheOrder.put("rbalance", balance); - cacheOrder.put("remainingTime", tr); - cacheOrder.put("rdtime", DateUtil.calendar().getTime().getTime()); - cacheOrder.put("status", statusplain); - cacheOrder.put("totalPower", cacheRealtimeData.getChargingDegree() / 10000.0); - cacheOrder.put("totalMoney", cacheRealtimeData.getAmountCharged() / 10000.0); - cacheOrder.put("realtimeDataList", realtimeDataList); - pileOrderService.pileRimeOrder(orderNo); - Integer stopSoc = (Integer) cacheOrder.get("stopSoc"); - if (stopSoc != null && socInt >= stopSoc) { - String alerted = (String) cacheOrder.get("socalerted"); - String tel = (String) cacheOrder.get("tel"); - if (alerted == null && tel != null) { - R r = chargingController.nativeStopCharging(pileNo, gunId, default_version); - if (r.getCode() == 200) { - HashMap paramMap = new HashMap<>(); - paramMap.put("battery", stopSoc.toString()); - paramMap.put("phone", tel); - paramMap.put("content", "【小华充电】尊敬的用户,你的车辆已充电达至设定的SOC("+stopSoc.toString()+"%)已自动停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。"); - smsService.sendNotice(paramMap); - cacheOrder.put("socalerted", "true"); + cacheOrder.put("rbalance", balance); + cacheOrder.put("remainingTime", tr); + cacheOrder.put("rdtime", DateUtil.calendar().getTime().getTime()); + cacheOrder.put("status", statusplain); + cacheOrder.put("totalPower", cacheRealtimeData.getChargingDegree() / 10000.0); + cacheOrder.put("totalMoney", cacheRealtimeData.getAmountCharged() / 10000.0); + cacheOrder.put("realtimeDataList", realtimeDataList); + pileOrderService.pileRimeOrder(orderNo); + Integer stopSoc = (Integer) cacheOrder.get("stopSoc"); + if (stopSoc != null && socInt >= stopSoc) { + String alerted = (String) cacheOrder.get("socalerted"); + String tel = (String) cacheOrder.get("tel"); + if (alerted == null && tel != null) { + R r = chargingController.nativeStopCharging(pileNo, gunId, default_version); + if (r.getCode() == 200) { + HashMap paramMap = new HashMap<>(); + paramMap.put("battery", stopSoc.toString()); + paramMap.put("phone", tel); + paramMap.put("content", "【小华充电】尊敬的用户,你的车辆已充电达至设定的SOC(" + stopSoc.toString() + "%)" + + "已自动停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。"); + smsService.sendNotice(paramMap); + cacheOrder.put("socalerted", "true"); + } } } - } - if (balance < 50000) { - String alerted = (String) cacheOrder.get("lt5alerted"); - String tel = (String) cacheOrder.get("tel"); - if (alerted == null && tel != null) { - HashMap paramMap = new HashMap<>(); - paramMap.put("money", "5"); - paramMap.put("phone", tel); - paramMap.put("content", "【小华充电】尊敬的用户,你的账户余额小于5元,为不影响您的正常充电,请您尽快充值交费,谢谢。"); - smsService.sendNotice(paramMap); - cacheOrder.put("lt5alerted", "true"); + if (balance < 50000) { + String alerted = (String) cacheOrder.get("lt5alerted"); + String tel = (String) cacheOrder.get("tel"); + if (alerted == null && tel != null) { + HashMap paramMap = new HashMap<>(); + paramMap.put("money", "5"); + paramMap.put("phone", tel); + paramMap.put("content", "【小华充电】尊敬的用户,你的账户余额小于5元,为不影响您的正常充电,请您尽快充值交费,谢谢。"); + smsService.sendNotice(paramMap); + 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 { + 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); } else { @@ -181,7 +196,7 @@ public class RealtimeDataLogic implements ServiceLogic { String status = (String) problematicOrder.get("status"); if (!isInteger(status) && !status.equals("充电中") && orderData == null) { pileOrderService.abnormalOrder(orderNo); - log.error("abnormal order[{}]", orderNo); + log.error("abnormal.2 order[{}]", orderNo); cacheGun.put("orderkey", null); idleCnt = 0; } @@ -199,7 +214,8 @@ public class RealtimeDataLogic implements ServiceLogic { return new ServiceResult(false); } - private CacheRealtimeData translate(RealtimeData realtimeData) throws InvocationTargetException, IllegalAccessException, InstantiationException { + private CacheRealtimeData translate(RealtimeData realtimeData) throws InvocationTargetException, IllegalAccessException, + InstantiationException { Class crdclz = CacheRealtimeData.class; Class rdclz = RealtimeData.class;