todo: 完善监管与第三方推送逻辑
This commit is contained in:
parent
fc5a5ca894
commit
755559739a
@ -44,7 +44,7 @@ public class CoreDispatcher {
|
|||||||
public static final okhttp3.MediaType JSON = okhttp3.MediaType.parse("application/json; charset=utf-8");
|
public static final okhttp3.MediaType JSON = okhttp3.MediaType.parse("application/json; charset=utf-8");
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public String ok(Object object, String url, String operatorId3irdpty, String operatorID) {
|
public String ok(Object object, String url, AuthSecretToken authSecretTokenOut, String operatorID) {
|
||||||
|
|
||||||
okhttp3.RequestBody body = null;
|
okhttp3.RequestBody body = null;
|
||||||
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
||||||
@ -58,9 +58,8 @@ public class CoreDispatcher {
|
|||||||
.writeTimeout(10, TimeUnit.SECONDS);
|
.writeTimeout(10, TimeUnit.SECONDS);
|
||||||
Calendar cal = Calendar.getInstance();
|
Calendar cal = Calendar.getInstance();
|
||||||
String bearerToken = null;
|
String bearerToken = null;
|
||||||
AuthSecretToken authSecretTokenOut = getAuthSecretTokenOut(operatorId3irdpty, operatorID);
|
|
||||||
if (authSecretTokenOut == null) {
|
if (authSecretTokenOut == null) {
|
||||||
String error = String.format("secret/token not found for [%s/%s](opId3pt/opId)", operatorId3irdpty, operatorID);
|
String error = String.format("secret/token not found for [%s/%s](opId3pt/opId)", authSecretTokenOut.getOperatorId3irdpty(), operatorID);
|
||||||
throw new RuntimeException(error);
|
throw new RuntimeException(error);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -169,7 +169,7 @@ public class NotificationEquipChargeStatusTask extends CoreDispatcher {
|
|||||||
CommonRequest<CDChargeOrderInfo4BonusReq> commonRequest = new CommonRequest<>();
|
CommonRequest<CDChargeOrderInfo4BonusReq> commonRequest = new CommonRequest<>();
|
||||||
commonRequest.setOperatorId(operatorIdEvcs);
|
commonRequest.setOperatorId(operatorIdEvcs);
|
||||||
commonRequest.setData(data);
|
commonRequest.setData(data);
|
||||||
String responseBody = ok(commonRequest, "/notification_equip_charge_status", "765367656", operatorIdEvcs);
|
String responseBody = ok(commonRequest, "/notification_equip_charge_status", authSecretTokenOut, operatorIdEvcs);
|
||||||
EquipChargeStatusRes equipChargeStatusRes = DTOJsonHelper.parseResponseData(responseBody,
|
EquipChargeStatusRes equipChargeStatusRes = DTOJsonHelper.parseResponseData(responseBody,
|
||||||
EquipChargeStatusRes.class, authSecretTokenOut);
|
EquipChargeStatusRes.class, authSecretTokenOut);
|
||||||
if (equipChargeStatusRes != null && equipChargeStatusRes.getSuccStat() != 0) {
|
if (equipChargeStatusRes != null && equipChargeStatusRes.getSuccStat() != 0) {
|
||||||
|
|||||||
@ -88,7 +88,7 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
|||||||
CommonRequest<ConnectorStatusInfoReq> commonRequest = new CommonRequest<>();
|
CommonRequest<ConnectorStatusInfoReq> commonRequest = new CommonRequest<>();
|
||||||
commonRequest.setOperatorId(connectorStatusInfo.getOperatorID());
|
commonRequest.setOperatorId(connectorStatusInfo.getOperatorID());
|
||||||
commonRequest.setData(data);
|
commonRequest.setData(data);
|
||||||
String responseBody = ok(commonRequest, "/notification_stationStatus", "765367656",
|
String responseBody = ok(commonRequest, "/notification_stationStatus", authSecretTokenOut,
|
||||||
connectorStatusInfo.getOperatorID());
|
connectorStatusInfo.getOperatorID());
|
||||||
EvcsStatus status = DTOJsonHelper.parseResponseData(responseBody, EvcsStatus.class, authSecretTokenOut);
|
EvcsStatus status = DTOJsonHelper.parseResponseData(responseBody, EvcsStatus.class, authSecretTokenOut);
|
||||||
if (status == null || status.getStatus() != 0) {
|
if (status == null || status.getStatus() != 0) {
|
||||||
|
|||||||
@ -2,9 +2,12 @@ package com.xhpc.evcs.notification;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.xhpc.common.data.redis.CacheOrderData;
|
import com.xhpc.common.data.redis.CacheOrderData;
|
||||||
|
import com.xhpc.evcs.domain.AuthSecretToken;
|
||||||
import com.xhpc.evcs.dto.ChargeResultRequest;
|
import com.xhpc.evcs.dto.ChargeResultRequest;
|
||||||
import com.xhpc.evcs.dto.CommonRequest;
|
import com.xhpc.evcs.dto.CommonRequest;
|
||||||
|
import com.xhpc.evcs.jpa.AuthSecretTokenRepository;
|
||||||
import com.xhpc.evcs.utils.JSONUtil;
|
import com.xhpc.evcs.utils.JSONUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -12,9 +15,13 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||||
|
import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT;
|
||||||
|
|
||||||
public class NotificationStopChargeResultTask extends CoreDispatcher {
|
public class NotificationStopChargeResultTask extends CoreDispatcher {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AuthSecretTokenRepository authSecretTokenRepository;
|
||||||
|
|
||||||
@Scheduled(fixedRate = 1000 * 20)
|
@Scheduled(fixedRate = 1000 * 20)
|
||||||
public void run() throws IOException {
|
public void run() throws IOException {
|
||||||
|
|
||||||
@ -36,74 +43,76 @@ public class NotificationStopChargeResultTask extends CoreDispatcher {
|
|||||||
*/
|
*/
|
||||||
public void notifyService() {
|
public void notifyService() {
|
||||||
|
|
||||||
//20秒检测一次Redis中的数据状态,并推送
|
List<AuthSecretToken> authSecretTokenOutList = authSecretTokenRepository.findBySecretTokenType(SECRET_TOKEN_TYPE_OUT);
|
||||||
|
for (AuthSecretToken authSecretTokenOut : authSecretTokenOutList) {
|
||||||
|
//20秒检测一次Redis中的数据状态,并推送
|
||||||
|
|
||||||
//获取Redis中的所有订单状态数据
|
//获取Redis中的所有订单状态数据
|
||||||
List<Object> orderStatusList = REDIS.getCacheList("orderStatus:*");
|
List<Object> orderStatusList = REDIS.getCacheList("orderStatus:*");
|
||||||
|
|
||||||
//使用for循环遍历所有订单状态数据找到已结束的充电订单
|
//使用for循环遍历所有订单状态数据找到已结束的充电订单
|
||||||
for (int i = 0; i < orderStatusList.size() - 1; i++) {
|
for (int i = 0; i < orderStatusList.size() - 1; i++) {
|
||||||
|
|
||||||
//获取订单数据
|
//获取订单数据
|
||||||
Map<String, Object> orderStatus = (Map<String, Object>) orderStatusList.get(i);
|
Map<String, Object> orderStatus = (Map<String, Object>) orderStatusList.get(i);
|
||||||
//判断该订单数据是否已经被推送过了,如果已经推送过了,则不在推送
|
//判断该订单数据是否已经被推送过了,如果已经推送过了,则不在推送
|
||||||
Boolean isPush = (Boolean) orderStatus.get("isPush");
|
Boolean isPush = (Boolean) orderStatus.get("isPush");
|
||||||
if (!isPush) {
|
if (!isPush) {
|
||||||
//获取内部的充电订单号
|
//获取内部的充电订单号
|
||||||
String orderNo = (String) orderStatus.get("orderNo");
|
String orderNo = (String) orderStatus.get("orderNo");
|
||||||
//通过充电订单号,获取指定的订单
|
//通过充电订单号,获取指定的订单
|
||||||
Map<String, Object> order = REDIS.getCacheMap("order:" + orderNo);
|
Map<String, Object> order = REDIS.getCacheMap("order:" + orderNo);
|
||||||
//判断订单充电状态
|
//判断订单充电状态
|
||||||
String status = (String) order.get("status");
|
String status = (String) order.get("status");
|
||||||
if (status.equals("已结束")) {
|
if (status.equals("已结束")) {
|
||||||
//获取指定的订单的数据
|
//获取指定的订单的数据
|
||||||
CacheOrderData orderData = (CacheOrderData) order.get("orderData");
|
CacheOrderData orderData = (CacheOrderData) order.get("orderData");
|
||||||
//获取充电设备接口编码
|
//获取充电设备接口编码
|
||||||
String pileNo = orderData.getPileNo();
|
String pileNo = orderData.getPileNo();
|
||||||
String gunId = orderData.getGunId();
|
String gunId = orderData.getGunId();
|
||||||
String gunSerial = pileNo + gunId;
|
String gunSerial = pileNo + gunId;
|
||||||
//设置成功标识
|
//设置成功标识
|
||||||
int succStat = 0;
|
int succStat = 0;
|
||||||
//设置停止失败原因
|
//设置停止失败原因
|
||||||
int failReason = 0;
|
int failReason = 0;
|
||||||
|
|
||||||
//使用指定包装类封装数据
|
//使用指定包装类封装数据
|
||||||
ChargeResultRequest chargeResultRequest = new ChargeResultRequest();
|
ChargeResultRequest chargeResultRequest = new ChargeResultRequest();
|
||||||
chargeResultRequest.setStartChargeSeq(null);
|
chargeResultRequest.setStartChargeSeq(null);
|
||||||
chargeResultRequest.setStartChargeSeqStat(status);
|
chargeResultRequest.setStartChargeSeqStat(status);
|
||||||
chargeResultRequest.setConnectorID(gunSerial);
|
chargeResultRequest.setConnectorID(gunSerial);
|
||||||
chargeResultRequest.setSuccStat(succStat);
|
chargeResultRequest.setSuccStat(succStat);
|
||||||
chargeResultRequest.setFailReason(failReason);
|
chargeResultRequest.setFailReason(failReason);
|
||||||
//将其转换为json
|
//将其转换为json
|
||||||
String jsonData = null;
|
String jsonData = null;
|
||||||
try {
|
try {
|
||||||
jsonData = JSONUtil.toJSONString(chargeResultRequest);
|
jsonData = JSONUtil.toJSONString(chargeResultRequest);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
System.out.println("转换成Json失败");
|
System.out.println("转换成Json失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
//将包装类塞入要发送的请求的包装类中
|
||||||
|
//泛型为放入json数据的实体类类型
|
||||||
|
CommonRequest<ChargeResultRequest> chargeResultRequestCommonRequest = new CommonRequest<>();
|
||||||
|
chargeResultRequestCommonRequest.setData(jsonData);
|
||||||
|
|
||||||
|
//推送数据
|
||||||
|
//operatorId第三方的 我们场站运营商的
|
||||||
|
ok(chargeResultRequestCommonRequest, "/notification_stop_charge_result", authSecretTokenOut, null);
|
||||||
|
|
||||||
|
// TODO: 2021/10/21 设置该订单数据已经被推送的标识符
|
||||||
|
orderStatus.put("isPush", true);
|
||||||
|
// 获取对应的orderStatus的Key
|
||||||
|
//REDIS.setCacheMap("",orderStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
//将包装类塞入要发送的请求的包装类中
|
// TODO:如果充电状态为停止中:
|
||||||
//泛型为放入json数据的实体类类型
|
|
||||||
CommonRequest<ChargeResultRequest> chargeResultRequestCommonRequest = new CommonRequest<>();
|
|
||||||
chargeResultRequestCommonRequest.setData(jsonData);
|
|
||||||
|
|
||||||
//推送数据
|
|
||||||
//operatorId第三方的 我们场站运营商的
|
|
||||||
ok(chargeResultRequestCommonRequest, "/notification_stop_charge_result", "765367656", null);
|
|
||||||
|
|
||||||
// TODO: 2021/10/21 设置该订单数据已经被推送的标识符
|
|
||||||
orderStatus.put("isPush", true);
|
|
||||||
// 获取对应的orderStatus的Key
|
|
||||||
//REDIS.setCacheMap("",orderStatus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:如果充电状态为停止中:
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user