防止三方订单启动使用重复的StartChargeSeq

This commit is contained in:
ZZ 2022-01-05 12:07:00 +08:00
parent 75f805508e
commit 1935a99a55

View File

@ -49,67 +49,72 @@ public class QueryStartChargeController {
if (startChargeRequest == null) { if (startChargeRequest == null) {
resp.setMsg("Request or token params validation failed"); resp.setMsg("Request or token params validation failed");
} else { } else {
StartChargeResponse startChargeResponse = new StartChargeResponse();
startChargeResponse.setFailReason(0);
startChargeResponse.setSuccStat(1);
startChargeResponse.setStartChargeSeqStat(4);
String startChargeSeq = startChargeRequest.getStartChargeSeq(); String startChargeSeq = startChargeRequest.getStartChargeSeq();
String connectorId = startChargeRequest.getConnectorId(); EtOrderMapping orderMapping = etOrderMappingRepo.findByEvcsOrderNo(startChargeSeq).orElse(null);
Map<String, Object> cacheGun = REDIS.getCacheMap("gun:".concat(connectorId)); if (orderMapping != null) {
String terminalStatus = (String) cacheGun.get("vehicleGunStatus"); resp.setMsg("Duplicated StartChargeSeq");
String status = (String) cacheGun.get("status");
EtOrderMapping etOrderMapping = new EtOrderMapping();
Date now = DateUtils.getNowDate();
etOrderMapping.setCreateTime(now);
etOrderMapping.setEvcsOrderNo(startChargeSeq);
if (!"空闲".equals(status)) {
resp.setMsg("终端状态异常:[".concat(status == null ? "未注册" : status).concat("]"));
emptyHorder(startChargeSeq, connectorId, etOrderMapping);
} else if ("".equals(terminalStatus)) {
resp.setMsg("未插枪");
emptyHorder(startChargeSeq, connectorId, etOrderMapping);
} else { } else {
String plateNum = startChargeRequest.getPlateNum(); StartChargeResponse startChargeResponse = new StartChargeResponse();
plateNum = plateNum == null ? startChargeRequest.getPlateNum2() : plateNum; startChargeResponse.setFailReason(0);
R res = pileOrderService.pileStartUpBy3rd(startChargeSeq, startChargeRequest.getDriverId(), startChargeResponse.setSuccStat(1);
startChargeRequest.getChargingAmt(), plateNum, -1, connectorId); startChargeResponse.setStartChargeSeqStat(4);
startChargeResponse.setStartChargeSeq(startChargeSeq); String connectorId = startChargeRequest.getConnectorId();
startChargeResponse.setConnectorID(connectorId); Map<String, Object> cacheGun = REDIS.getCacheMap("gun:".concat(connectorId));
resp.setMsg(res.getMsg()); String terminalStatus = (String) cacheGun.get("vehicleGunStatus");
if (res.getCode() != 200) { String status = (String) cacheGun.get("status");
if (res.getCode() != 500) { EtOrderMapping etOrderMapping = new EtOrderMapping();
startChargeResponse.setFailReason(res.getCode()); Date now = DateUtils.getNowDate();
} else { etOrderMapping.setCreateTime(now);
startChargeResponse.setFailReason(3); etOrderMapping.setEvcsOrderNo(startChargeSeq);
} if (!"空闲".equals(status)) {
startChargeResponse.setSuccStat(1); resp.setMsg("终端状态异常:[".concat(status == null ? "未注册" : status).concat("]"));
startChargeResponse.setStartChargeSeqStat(4); emptyHorder(startChargeSeq, connectorId, etOrderMapping);
} else if ("".equals(terminalStatus)) {
resp.setMsg("未插枪");
emptyHorder(startChargeSeq, connectorId, etOrderMapping); emptyHorder(startChargeSeq, connectorId, etOrderMapping);
} else { } else {
Map<String, Object> etOrderData = (Map<String, Object>) res.getData(); String plateNum = startChargeRequest.getPlateNum();
if (etOrderData != null) { plateNum = plateNum == null ? startChargeRequest.getPlateNum2() : plateNum;
resp.setRet(EvcsConst.RET_SUCC); R res = pileOrderService.pileStartUpBy3rd(startChargeSeq, startChargeRequest.getDriverId(),
startChargeResponse.setStartChargeSeqStat(1); startChargeRequest.getChargingAmt(), plateNum, -1, connectorId);
startChargeResponse.setSuccStat(0); startChargeResponse.setStartChargeSeq(startChargeSeq);
startChargeResponse.setFailReason(0); startChargeResponse.setConnectorID(connectorId);
Map<String, Object> pushOrder = new HashMap<>(); resp.setMsg(res.getMsg());
pushOrder.put("startChargeSeqStat", 1); if (res.getCode() != 200) {
pushOrder.put("internetSerialNumber", startChargeRequest.getStartChargeSeq()); if (res.getCode() != 500) {
pushOrder.put("connectorID", connectorId); startChargeResponse.setFailReason(res.getCode());
pushOrder.put("startChargeNotificationStat", 0); } else {
pushOrder.put("chargeOrderInfoNotificationStat", 0); startChargeResponse.setFailReason(3);
pushOrder.put("operatorId3rdpty", startChargeSeq.substring(0, 9)); }
pushOrder.put("startTime", etOrderData.get("startTime")); startChargeResponse.setSuccStat(1);
String orderNo = (String) etOrderData.get("orderNo"); startChargeResponse.setStartChargeSeqStat(4);
etOrderMapping.setXhOrderNo(orderNo);
REDIS.setCacheMap("pushOrder:".concat(orderNo), pushOrder);
} else {
emptyHorder(startChargeSeq, connectorId, etOrderMapping); emptyHorder(startChargeSeq, connectorId, etOrderMapping);
} else {
Map<String, Object> etOrderData = (Map<String, Object>) res.getData();
if (etOrderData != null) {
resp.setRet(EvcsConst.RET_SUCC);
startChargeResponse.setStartChargeSeqStat(1);
startChargeResponse.setSuccStat(0);
startChargeResponse.setFailReason(0);
Map<String, Object> pushOrder = new HashMap<>();
pushOrder.put("startChargeSeqStat", 1);
pushOrder.put("internetSerialNumber", startChargeRequest.getStartChargeSeq());
pushOrder.put("connectorID", connectorId);
pushOrder.put("startChargeNotificationStat", 0);
pushOrder.put("chargeOrderInfoNotificationStat", 0);
pushOrder.put("operatorId3rdpty", startChargeSeq.substring(0, 9));
pushOrder.put("startTime", etOrderData.get("startTime"));
String orderNo = (String) etOrderData.get("orderNo");
etOrderMapping.setXhOrderNo(orderNo);
REDIS.setCacheMap("pushOrder:".concat(orderNo), pushOrder);
} else {
emptyHorder(startChargeSeq, connectorId, etOrderMapping);
}
} }
} }
etOrderMappingRepo.save(etOrderMapping);
resp.setData(JSONUtil.toJSONString(startChargeResponse));
} }
etOrderMappingRepo.save(etOrderMapping);
resp.setData(JSONUtil.toJSONString(startChargeResponse));
} }
return resp; return resp;
} }