From d7657a55127967dfb26ecdc6d9953ac8816e6d3d Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 17 Jan 2024 11:08:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=20=E5=8D=8E=E4=B8=BA?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=85=85=E7=94=B5=E8=AE=BE=E5=A4=87=E7=BC=96?= =?UTF-8?q?=E7=A0=81=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/huawei/HuaWeiController.java | 17 +++ .../test/java/SpringBootTestController.java | 8 ++ .../pile/domain/huawei/HWStationInfo.java | 107 ++++++++++++++ .../thirdparty/huawei/HuaWeiService.java | 18 ++- .../huawei/impl/HuaWeiServiceImpl.java | 130 +++++++++++++++++- 5 files changed, 272 insertions(+), 8 deletions(-) create mode 100644 jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/huawei/HuaWeiController.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationInfo.java diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/huawei/HuaWeiController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/huawei/HuaWeiController.java new file mode 100644 index 000000000..a4e374129 --- /dev/null +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/huawei/HuaWeiController.java @@ -0,0 +1,17 @@ +package com.jsowell.web.controller.thirdparty.huawei; + +import com.jsowell.common.annotation.Anonymous; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 华为 Controller + * + * @author Lemon + * @Date 2024/1/15 13:52:05 + */ +@Anonymous +@RestController +@RequestMapping("/xindiantu") +public class HuaWeiController { +} diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index f2319cebe..e98b278d0 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -48,6 +48,7 @@ import com.jsowell.netty.handler.TransactionRecordsRequestHandler; import com.jsowell.netty.service.camera.impl.CameraBusinessServiceImpl; import com.jsowell.netty.service.yunkuaichong.YKCBusinessService; import com.jsowell.pile.domain.*; +import com.jsowell.pile.domain.huawei.HWStationInfo; import com.jsowell.pile.domain.ykcCommond.IssueQRCodeCommand; import com.jsowell.pile.domain.ykcCommond.ProofreadTimeCommand; import com.jsowell.pile.dto.*; @@ -258,6 +259,13 @@ public class SpringBootTestController { } } + @Test + public void testnotificationOperationSystemInfo() { + // HWStationInfo hwStationInfo = huaWeiService.notificationOperationSystemInfo("19"); + // String s = JSONObject.toJSONString(hwStationInfo); + // System.out.println(s); + } + @Test public void selectByMemberWalletListTest() { String memberId = "12345678"; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationInfo.java new file mode 100644 index 000000000..3fc3812c9 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/huawei/HWStationInfo.java @@ -0,0 +1,107 @@ +package com.jsowell.pile.domain.huawei; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * TODO + * + * @author Lemon + * @Date 2024/1/15 14:03:40 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class HWStationInfo { + /** + * 充电站ID + */ + @JsonProperty(value = "StationId") + private String stationId; + + /** + * 充电站名称 + */ + @JsonProperty(value = "StationName") + private String stationName; + + /** + * 充电设备数量 + */ + @JsonProperty(value = "EquipmentInfoNum") + private Integer equipmentInfoNum; + + /** + * 充电设备信息列表 + */ + @JsonProperty(value = "EquipmentLogicInfos") + private List equipmentLogicInfos; + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class EquipmentLogicInfo { + + /** + * 充电设备编码 + */ + @JsonProperty(value = "EquipmentID") + private String equipmentId; + + /** + * 充电设备类型 N + */ + @JsonProperty(value = "EquipmentType") + private Integer equipmentType; + + /** + * 充电设备ESN + */ + @JsonProperty(value = "ChargeHostESN") + private String chargeHostESN; + + /** + * 充电设备接口数量 + */ + @JsonProperty(value = "ConnectorInfoNum") + private Integer connectorInfoNum; + + /** + * 充电设备接口信息列表 + */ + @JsonProperty(value = "ConnectorInfos") + private List connectorInfos; + + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class ConnectorInfo { + /** + * 充电设备接口编码 + */ + @JsonProperty(value = "ConnectorID") + private String connectorID; + + /** + * 充电设备接口编号 + */ + @JsonProperty(value = "ConnectorNumber") + private Integer connectorNumber; + + /** + * 充电设备接口名称 N + */ + @JsonProperty(value = "ConnectorName") + private String connectorName; + } + } +} diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaWeiService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaWeiService.java index 8d20f2444..de00a4733 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaWeiService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaWeiService.java @@ -1,10 +1,8 @@ package com.jsowell.thirdparty.huawei; -import com.jsowell.pile.dto.QueryEquipChargeStatusDTO; -import com.jsowell.pile.dto.QueryEquipmentDTO; -import com.jsowell.pile.dto.QueryStartChargeDTO; -import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.domain.huawei.HWStationInfo; +import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.huawei.DeliverEquipBusinessDTO; import com.jsowell.pile.dto.huawei.ReceiveDeliverDTO; import com.jsowell.pile.dto.huawei.VinStartChargeDTO; @@ -199,4 +197,16 @@ public interface HuaWeiService { * @throws Exception */ Map vinStartCharge(VinStartChargeDTO dto) throws Exception; + + + /** + * 平台充电设备编码同步 + * 平台 --> 华为 + * + * notification_operation_system_info + * + * @param dto + * @return + */ + String notificationOperationSystemInfo(PushStationInfoDTO dto); } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java index 0c4990b3c..d9b28e024 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java @@ -9,17 +9,17 @@ import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.YKCUtils; -import com.jsowell.pile.domain.MemberPlateNumberRelation; -import com.jsowell.pile.domain.PileBasicInfo; -import com.jsowell.pile.domain.ThirdPartyPlatformConfig; -import com.jsowell.pile.domain.ThirdPartyStationRelation; +import com.jsowell.pile.domain.*; +import com.jsowell.pile.domain.huawei.HWStationInfo; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.huawei.DeliverEquipBusinessDTO; import com.jsowell.pile.dto.huawei.ReceiveDeliverDTO; import com.jsowell.pile.dto.huawei.VinStartChargeDTO; import com.jsowell.pile.service.*; +import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.thirdparty.huawei.HuaWeiService; import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; import com.jsowell.thirdparty.lianlian.util.Cryptos; @@ -76,6 +76,12 @@ public class HuaWeiServiceImpl implements HuaWeiService { @Autowired private OrderBasicInfoService orderBasicInfoService; + @Autowired + private PileStationInfoService pileStationInfoService; + + @Autowired + private PileConnectorInfoService pileConnectorInfoService; + /** * 获取令牌 * @param dto @@ -531,4 +537,120 @@ public class HuaWeiServiceImpl implements HuaWeiService { return resultMap; } + + /** + * 平台充电设备编码同步 + * @param dto + * @return + */ + @Override + public String notificationOperationSystemInfo(PushStationInfoDTO dto) { + // 通过站点id查询配置密钥等 + ThirdPartyStationRelation relation = new ThirdPartyStationRelation(); + relation.setStationId(dto.getStationId()); + ThirdPartyStationRelationVO relationInfo = thirdPartyStationRelationService.selectRelationInfo(relation); + if (relationInfo == null) { + // 新增 + relation.setThirdPartyType(dto.getThirdPartyType()); + thirdPartyStationRelationService.insertThirdPartyStationRelation(relation); + + relationInfo = thirdPartyStationRelationService.selectRelationInfo(relation); + } + String operatorId = relationInfo.getOperatorId(); + String operatorSecret = relationInfo.getOperatorSecret(); + String signSecret = relationInfo.getSignSecret(); + String dataSecret = relationInfo.getDataSecret(); + String dataSecretIv = relationInfo.getDataSecretIv(); + String urlAddress = relationInfo.getUrlAddress(); + String thirdPartyType = relation.getThirdPartyType(); + + List equipmentLogicInfos = new ArrayList<>(); + + // 通过站点id查询站点信息 + PileStationVO stationInfo = pileStationInfoService.getStationInfo(String.valueOf(dto.getStationId())); + if (stationInfo == null) { + return null; + } + HWStationInfo hwStationInfo = HWStationInfo.builder() + .stationId(stationInfo.getId()) + .stationName(stationInfo.getStationName()) + + .build(); + // 查询桩列表 + equipmentLogicInfos = getPileList(String.valueOf(dto.getStationId())); + + hwStationInfo.setEquipmentInfoNum(equipmentLogicInfos.size()); + hwStationInfo.setEquipmentLogicInfos(equipmentLogicInfos); + + String jsonString = JSONObject.toJSONString(hwStationInfo); + + String url = urlAddress + "notification_operation_system_info"; + // 获取令牌 + ZDLGetTokenDTO getTokenDTO = new ZDLGetTokenDTO(); + getTokenDTO.setOperatorId(operatorId); + getTokenDTO.setDataSecret(dataSecret); + getTokenDTO.setSignSecret(signSecret); + getTokenDTO.setUrlAddress(urlAddress); + getTokenDTO.setDataSecretIv(dataSecretIv); + getTokenDTO.setOperatorSecret(operatorSecret); + String token = HWGetToken(getTokenDTO); + // 发送请求 + String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); + return result; + + } + + private List getPileList(String stationId) { + List equipmentLogicInfos = new ArrayList<>(); + HWStationInfo + .EquipmentLogicInfo equipmentLogicInfo = null; + + List pileBasicInfos = pileBasicInfoService.getPileListByStationId(stationId); + if (CollectionUtils.isEmpty(pileBasicInfos)) { + return new ArrayList<>(); + } + for (PileBasicInfo pileBasicInfo : pileBasicInfos) { + String pileSn = pileBasicInfo.getSn(); + equipmentLogicInfo = HWStationInfo.EquipmentLogicInfo.builder() + .equipmentId(pileSn) + // .equipmentType() + .chargeHostESN(pileSn) + .build(); + // 获取枪口信息 + List connectorInfoList = getConnectorInfoList(pileSn); + if (CollectionUtils.isEmpty(connectorInfoList)) { + continue; + } + equipmentLogicInfo.setConnectorInfoNum(connectorInfoList.size()); + equipmentLogicInfo.setConnectorInfos(connectorInfoList); + + equipmentLogicInfos.add(equipmentLogicInfo); + } + return equipmentLogicInfos; + } + + private List getConnectorInfoList(String pileSn) { + List connectorInfoList = new ArrayList<>(); + HWStationInfo.EquipmentLogicInfo + .ConnectorInfo connectorInfo = null; + + List pileConnectorInfos = pileConnectorInfoService.selectPileConnectorInfoList(pileSn); + if (CollectionUtils.isEmpty(pileConnectorInfos)) { + return new ArrayList<>(); + } + for (PileConnectorInfo pileConnectorInfo : pileConnectorInfos) { + connectorInfo = HWStationInfo.EquipmentLogicInfo.ConnectorInfo.builder() + .connectorID(pileConnectorInfo.getPileConnectorCode()) + .connectorNumber(pileConnectorInfo.getId()) + + .build(); + connectorInfoList.add(connectorInfo); + } + return connectorInfoList; + } + }