From a2033bf2808bcbc614acc1451188bb354cd137d5 Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 14 Mar 2024 11:32:55 +0800 Subject: [PATCH] =?UTF-8?q?update=20=20=E5=8D=8E=E4=B8=BA=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=8E=A5=E5=8F=A3=E7=8A=B6=E6=80=81=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=20=E6=8E=A5=E5=8F=A3=E4=B8=AD=E6=9E=AA=E5=8F=A3=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=8F=8A=E6=97=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/huawei/HWStationStatusInfo.java | 41 ++++++++++++++++++ .../thirdparty/huawei/HuaweiServiceV2.java | 42 +++++++++++++------ .../service/impl/LianLianServiceImpl.java | 7 ++-- 3 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationStatusInfo.java diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationStatusInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationStatusInfo.java new file mode 100644 index 000000000..60ad23b5f --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationStatusInfo.java @@ -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 connectorStatusInfos; + + + @Data + public static class ConnectorStatusInfo{ + + @JSONField(name = "ConnectorID") + private String connectorId; + + @JSONField(name = "Status") + private String status; + } +} diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java index 2e4497c13..976a25b5e 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java @@ -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 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 hwStationStatusInfos = stationStatusInfos.toList(HWStationStatusInfo.class); + for (HWStationStatusInfo hwStationStatusInfo : hwStationStatusInfos) { + String stationId = hwStationStatusInfo.getStationId(); + List 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; } /** diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java index a549d5e68..4406eab4e 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java @@ -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());