This commit is contained in:
2024-03-14 11:40:29 +08:00
3 changed files with 74 additions and 16 deletions

View File

@@ -0,0 +1,41 @@
package com.jsowell.pile.domain.huawei;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* TODO
*
* @author Lemon
* @Date 2024/3/14 9:43:21
*/
@Data
public class HWStationStatusInfo {
/**
* 充电站ID Y
* 对接平台自定义的唯一编码不足长度在前方补0
*/
@JSONField(name = "StationID")
private String stationId;
/**
* 充电设备接口状态列表 Y
* 所有充电设备接口的状态
*/
@JSONField(name = "ConnectorStatusInfos")
private List<ConnectorStatusInfo> connectorStatusInfos;
@Data
public static class ConnectorStatusInfo{
@JSONField(name = "ConnectorID")
private String connectorId;
@JSONField(name = "Status")
private String status;
}
}

View File

@@ -3,6 +3,7 @@ package com.jsowell.thirdparty.huawei;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.google.common.collect.Maps;
import com.jsowell.common.constant.Constants;
@@ -21,6 +22,7 @@ import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.id.IdUtils;
import com.jsowell.pile.domain.*;
import com.jsowell.pile.domain.huawei.HWStationInfo;
import com.jsowell.pile.domain.huawei.HWStationStatusInfo;
import com.jsowell.pile.dto.GenerateOrderDTO;
import com.jsowell.pile.dto.PushStationInfoDTO;
import com.jsowell.pile.dto.QueryStartChargeDTO;
@@ -45,6 +47,7 @@ import com.jsowell.thirdparty.lianlian.util.GBSignUtils;
import com.jsowell.thirdparty.lianlian.util.HttpRequestUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -242,17 +245,30 @@ public class HuaweiServiceV2 {
// 发送请求
String result = sendMsg2HuaWei(jsonString, token, requestName);
// 转换成 StationStatus 对象
// List<StationStatusInfo> list = JSON.parseArray(result, StationStatusInfo.class);
return result;
JSONObject jsonStationStatus = JSONObject.parseObject(result);
if (jsonStationStatus == null) {
return null;
}
// 先转成 jsonArray
JSONArray stationStatusInfos = jsonStationStatus.getJSONArray("StationStatusInfos");
// 转成对应的 List
List<HWStationStatusInfo> hwStationStatusInfos = stationStatusInfos.toList(HWStationStatusInfo.class);
for (HWStationStatusInfo hwStationStatusInfo : hwStationStatusInfos) {
String stationId = hwStationStatusInfo.getStationId();
List<HWStationStatusInfo
.ConnectorStatusInfo> connectorStatusInfos = hwStationStatusInfo.getConnectorStatusInfos();
// 获取对应的枪口状态
for (HWStationStatusInfo.ConnectorStatusInfo connectorStatusInfo : connectorStatusInfos) {
String connectorId = connectorStatusInfo.getConnectorId();
String status = connectorStatusInfo.getStatus();
// 修改对应枪口状态
pileConnectorInfoService.updateConnectorStatus(connectorId, status);
}
}
return jsonStationStatus.toJSONString();
}
public static void main(String[] args) {
String result = "{\"StationStatusInfos\":[{\"ConnectorStatusInfos\":[{\"ConnectorID\":\"8823000000112302\",\"Status\":2},{\"ConnectorID\":\"8823000000112301\",\"Status\":2}],\"StationID\":\"19\"}]}";
JSONObject jsonObject = JSONObject.parseObject(result);
System.out.println(jsonObject);
}
/**
* 接收设备接口状态变化推送
* 需在Controller传入operatorId
@@ -346,8 +362,8 @@ public class HuaweiServiceV2 {
} catch (Exception e) {
e.printStackTrace();
}
DeliverEquipBusinessPolicyVO vo = deliverEquipBusinessPolicy(equipBizSeq, pileConnectorCode);
log.info("华为 异步调用 下发计费策略 接口 result:{}", JSONObject.toJSONString(vo));
String result = deliverEquipBusinessPolicy(equipBizSeq, pileConnectorCode);
log.info("华为 异步调用 下发计费策略 接口 result:{}", result);
});
resultJson.put("SuccStat", 0);
@@ -375,7 +391,7 @@ public class HuaweiServiceV2 {
* @param pileConnectorCode 枪口号
* @return
*/
public DeliverEquipBusinessPolicyVO deliverEquipBusinessPolicy(String equipBizSeq, String pileConnectorCode) {
public String deliverEquipBusinessPolicy(String equipBizSeq, String pileConnectorCode) {
String requestName = "deliver_equip_business_policy";
DeliverEquipBusinessDTO params = new DeliverEquipBusinessDTO();
@@ -471,8 +487,8 @@ public class HuaweiServiceV2 {
return null;
}
// 转换成 DeliverEquipBusinessPolicyVO 对象
DeliverEquipBusinessPolicyVO vo = JSON.parseObject(result, DeliverEquipBusinessPolicyVO.class);
return vo;
// DeliverEquipBusinessPolicyVO vo = JSON.parseObject(result, DeliverEquipBusinessPolicyVO.class);
return result;
}
/**

View File

@@ -384,10 +384,11 @@ public class LianLianServiceImpl implements LianLianService {
public static void main(String[] args) throws UnsupportedEncodingException {
String dataSecret = "zd4NrLWJ38XCTaqP"; // SPBNJ1Z5EQNmpK08 VTAEKDPVN9CUS7WO huawei: zd4NrLWJ38XCTaqP E6gnWuz0QzBW75CR
String dataSecretIV = "RJJecvNTJ48SGMG7"; // peRoTcb2C7zqKeII 83UZFFRRZDYNF5CR huawei: RJJecvNTJ48SGMG7 SXejaSUx5yud8UHm
String dataSecret = "E6gnWuz0QzBW75CR"; // SPBNJ1Z5EQNmpK08 VTAEKDPVN9CUS7WO huawei: zd4NrLWJ38XCTaqP E6gnWuz0QzBW75CR
String dataSecretIV = "SXejaSUx5yud8UHm"; // peRoTcb2C7zqKeII 83UZFFRRZDYNF5CR huawei: RJJecvNTJ48SGMG7 SXejaSUx5yud8UHm
String signSecret = "sRjCDeokckFGpYpA"; // sRjCDeokckFGpYpA
String dataString = "E+V2sg+xpOjwWcqI9IQVgrN0gIs6tfyeKltpvB2G4mbQLtZREPk7bo7Q22k00/ufrcz+xZa9x/MyAzA3Eo2ZEo9UFKKKG3VLB+nfYX/kWWk=";
String dataString = "Ackhbd9jOvBrjklmluZ3Ox22hiaOqUCe0kNSQdV0o3zekzQbNi8I99RBXLig2YlMVryMo7R4U5BkEomVpSRT6KJxol7N5cD8Tzj94/6zsCVRweMX2DOiwQcsC1NEAmQrFdjsGWVUR\n" +
"VtIOxa4MPISVQ==";
// 解密data
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes());