防止三方订单启动使用重复的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) {
resp.setMsg("Request or token params validation failed");
} else {
StartChargeResponse startChargeResponse = new StartChargeResponse();
startChargeResponse.setFailReason(0);
startChargeResponse.setSuccStat(1);
startChargeResponse.setStartChargeSeqStat(4);
String startChargeSeq = startChargeRequest.getStartChargeSeq();
String connectorId = startChargeRequest.getConnectorId();
Map<String, Object> cacheGun = REDIS.getCacheMap("gun:".concat(connectorId));
String terminalStatus = (String) cacheGun.get("vehicleGunStatus");
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);
EtOrderMapping orderMapping = etOrderMappingRepo.findByEvcsOrderNo(startChargeSeq).orElse(null);
if (orderMapping != null) {
resp.setMsg("Duplicated StartChargeSeq");
} else {
String plateNum = startChargeRequest.getPlateNum();
plateNum = plateNum == null ? startChargeRequest.getPlateNum2() : plateNum;
R res = pileOrderService.pileStartUpBy3rd(startChargeSeq, startChargeRequest.getDriverId(),
startChargeRequest.getChargingAmt(), plateNum, -1, connectorId);
startChargeResponse.setStartChargeSeq(startChargeSeq);
startChargeResponse.setConnectorID(connectorId);
resp.setMsg(res.getMsg());
if (res.getCode() != 200) {
if (res.getCode() != 500) {
startChargeResponse.setFailReason(res.getCode());
} else {
startChargeResponse.setFailReason(3);
}
startChargeResponse.setSuccStat(1);
startChargeResponse.setStartChargeSeqStat(4);
StartChargeResponse startChargeResponse = new StartChargeResponse();
startChargeResponse.setFailReason(0);
startChargeResponse.setSuccStat(1);
startChargeResponse.setStartChargeSeqStat(4);
String connectorId = startChargeRequest.getConnectorId();
Map<String, Object> cacheGun = REDIS.getCacheMap("gun:".concat(connectorId));
String terminalStatus = (String) cacheGun.get("vehicleGunStatus");
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 {
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 {
String plateNum = startChargeRequest.getPlateNum();
plateNum = plateNum == null ? startChargeRequest.getPlateNum2() : plateNum;
R res = pileOrderService.pileStartUpBy3rd(startChargeSeq, startChargeRequest.getDriverId(),
startChargeRequest.getChargingAmt(), plateNum, -1, connectorId);
startChargeResponse.setStartChargeSeq(startChargeSeq);
startChargeResponse.setConnectorID(connectorId);
resp.setMsg(res.getMsg());
if (res.getCode() != 200) {
if (res.getCode() != 500) {
startChargeResponse.setFailReason(res.getCode());
} else {
startChargeResponse.setFailReason(3);
}
startChargeResponse.setSuccStat(1);
startChargeResponse.setStartChargeSeqStat(4);
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;
}