From dd56f871de247bcd8054f570546f84f820bb9bf1 Mon Sep 17 00:00:00 2001 From: ZZ Date: Tue, 11 Jan 2022 18:25:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B7=E5=8D=A1todo:=E7=90=86=E6=B8=85?= =?UTF-8?q?=E8=A1=A8=E5=85=B3=E7=B3=BB,=E8=B0=83=E7=94=A8=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...NotificationChargeOrderInfo4BonusTask.java | 6 +- .../main/java/com/xhpc/pp/utils/HexUtils.java | 3 +- .../pp/logic/PileStartChargingDataLogic.java | 56 ++++++++++++++----- .../logic/PileTimeConfigReplyDataLogic.java | 1 - 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java index 11a24054..f33c5e73 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java @@ -122,8 +122,12 @@ public class NotificationChargeOrderInfo4BonusTask extends CoreDispatcher { } public static String transferInternetOrderNo(String orderKeyOrNo, String operatorId) { - // "80836000010001012110191723410021"; + //80836000010001012110191723410021 + //MA6DFCTD5202201111742100140 String orderNo = orderKeyOrNo.replace("order:", ""); + if (operatorId.length() > 9) { + operatorId = operatorId.substring(0, 9); + } return operatorId.concat(DateUtil.getYYYY()).concat(orderNo.substring(18)); } diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/pp/utils/HexUtils.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/pp/utils/HexUtils.java index 7960ba98..3e6c87ed 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/pp/utils/HexUtils.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/pp/utils/HexUtils.java @@ -73,6 +73,7 @@ public class HexUtils { public static byte[] toBytes(String hex) { + if (hex == null) return null; hex = hex.trim(); if (hex.length() == 0 || hex.length() % 2 != 0) return null; @@ -172,7 +173,7 @@ public class HexUtils { final StringBuilder result = new StringBuilder(); for (byte b: bytes) { for (int i=0; i<8; i++) { - result. append((int)(b >> (8-(i+1)) & 0x0001)); + result.append(b >> (8 - (i + 1)) & 0x0001); } } return result. toString(); diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileStartChargingDataLogic.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileStartChargingDataLogic.java index 2b41f152..e289a234 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileStartChargingDataLogic.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileStartChargingDataLogic.java @@ -3,22 +3,26 @@ package com.xhpc.pp.logic; import com.fasterxml.jackson.databind.ObjectMapper; import com.xhpc.common.data.up.PileStartChargingData; import com.xhpc.common.enums.StationDeviceEnum; +import com.xhpc.pp.domain.IccardInfo; +import com.xhpc.pp.domain.IccardInfoExample; import com.xhpc.pp.domain.XhpcDeviceMessage; -import com.xhpc.pp.mapper.ServiceFieldMapper; +import com.xhpc.pp.mapper.IccardInfoMapper; import com.xhpc.pp.mapper.XhpcDeviceMessageMapper; import com.xhpc.pp.tx.ServiceParameter; import com.xhpc.pp.tx.ServiceResult; import com.xhpc.pp.tx.logic.ServiceLogic; +import com.xhpc.pp.utils.HexUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.xhpc.pp.tx.ServiceResult.HEX_00; + @Lazy @Component("PileStartChargingDataLogic") public class PileStartChargingDataLogic implements ServiceLogic { @@ -28,34 +32,60 @@ public class PileStartChargingDataLogic implements ServiceLogic { @Resource private XhpcDeviceMessageMapper deviceMessageMapper; @Resource - private ServiceFieldMapper fieldMapper; + private IccardInfoMapper iccardInfoMapper; @Override public ServiceResult service(ServiceParameter sp) throws Exception { + String resultStr = null; + String result = ServiceResult.FAIL; Map req = sp.getParameters(); ObjectMapper objectMapper = new ObjectMapper(); PileStartChargingData pileStartChargingData = objectMapper.convertValue(req, PileStartChargingData.class); - String terminalId = pileStartChargingData.getPileNo().concat(pileStartChargingData.getGunId()); + String connectorId = pileStartChargingData.getPileNo().concat(pileStartChargingData.getGunId()); String accountOrCardNo = pileStartChargingData.getAccountOrCardNo(); - String corpNo = terminalId.substring(0, 6); + String corpNo = connectorId.substring(0, 6); + String balance = "0000"; + String cardNo = "00000000"; if (pileStartChargingData.getStartType().equals("01")) { //刷卡启动 - String sql = "select i.* from t_iccard_info i where cardNo='" + accountOrCardNo + "' and corpNo = '" + corpNo + - "'"; - Map param = new HashMap<>(); - param.put("sql", sql); - List> resultMap = fieldMapper.querySQL(param); - + IccardInfoExample example = new IccardInfoExample(); + IccardInfoExample.Criteria criteria = example.createCriteria(); + criteria.andCardidEqualTo(accountOrCardNo).andCorpnoEqualTo(corpNo); + List iccardInfos = iccardInfoMapper.selectByExample(example); + if (iccardInfos.size() == 1) { + IccardInfo iccardInfo = iccardInfos.get(0); + cardNo = iccardInfo.getCardno(); + //todo 桩停用 + if (!iccardInfo.getCorpno().equals(corpNo)) { + resultStr = "06"; + } else if (HEX_00.equals(pileStartChargingData.getPasswordRequired()) + || (HEX_00.equals(pileStartChargingData.getPasswordRequired()) && pileStartChargingData.getPassword().equals(iccardInfo.getPassword()))) { + int balanceInt = iccardInfo.getBalance(); + balance = HexUtils.toHexInt(balanceInt); + if (balanceInt < 100) { + resultStr = "01"; + result = ServiceResult.OK; + } else { + resultStr = "03"; + } + } else if (iccardInfo.getStatus() != 1) { + result = "02"; + } + } else { + result = "01"; + } } String remark = "充电桩主动申请起动充电"; XhpcDeviceMessage deviceMessage = new XhpcDeviceMessage(); deviceMessage.setType(StationDeviceEnum.PILE.getCode()); - deviceMessage.setSerialNumber(terminalId); + deviceMessage.setSerialNumber(connectorId); deviceMessage.setRemark(remark); deviceMessage.setStatus(0); deviceMessage.setContent((String) req.get("hex")); deviceMessageMapper.insertByDomain(deviceMessage); - return new ServiceResult(false); + String hex = "orderNo".concat(connectorId).concat(cardNo).concat(balance).concat(resultStr).concat(result); //todo + // 调用订单接口 + return new ServiceResult(HexUtils.toBytes(hex), result); } } diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileTimeConfigReplyDataLogic.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileTimeConfigReplyDataLogic.java index 8f3c89a0..8869294c 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileTimeConfigReplyDataLogic.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/PileTimeConfigReplyDataLogic.java @@ -43,7 +43,6 @@ public class PileTimeConfigReplyDataLogic implements ServiceLogic { cachePile.put("configTime", configTime); REDIS.setCacheMap(pk, cachePile); log.debug("({}) set time success√: [{}]", pileNo, configTime); - String remark = "充电桩同步时钟"; XhpcDeviceMessage deviceMessage = new XhpcDeviceMessage(); deviceMessage.setType(StationDeviceEnum.PILE.getCode());