diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLConnectorInfo.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLConnectorInfo.java index 963b7da25..7f6dd4b53 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLConnectorInfo.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLConnectorInfo.java @@ -3,6 +3,8 @@ package com.jsowell.thirdparty.zhongdianlian.domain; import com.alibaba.fastjson2.annotation.JSONField; import lombok.Data; +import java.math.BigDecimal; + /** * TODO * @@ -15,21 +17,24 @@ public class ZDLConnectorInfo { private String connectorId; @JSONField(name = "ConnectorType") - private String connectorType; + private Integer connectorType; @JSONField(name = "VoltageUpperLimits") - private String voltageUpperLimits; + private Integer voltageUpperLimits; @JSONField(name = "VoltageLowerLimits") - private String voltageLowerLimits; + private Integer voltageLowerLimits; @JSONField(name = "Current") - private String current; + private Integer current; + + @JSONField(name = "ParkNo") + private String parkNo; @JSONField(name = "Power") - private String power; + private BigDecimal power; @JSONField(name = "NationalStandard") - private String nationalStandard; + private Integer nationalStandard; } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLEquipmentInfo.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLEquipmentInfo.java index c964e09d5..faccdca74 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLEquipmentInfo.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/domain/ZDLEquipmentInfo.java @@ -18,7 +18,7 @@ public class ZDLEquipmentInfo { private String equipmentId; @JSONField(name = "EquipmentType") - private String equipmentType; + private Integer equipmentType; @JSONField(name = "Power") private BigDecimal power; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java index ea0f119ec..549554a88 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java @@ -26,4 +26,12 @@ public interface ZDLService { * @return */ public Map queryStationsInfo(QueryStationInfoDTO dto); + + + /** + * 查询统计信息 + * @param dto + * @return + */ + Map queryStationStats(QueryStationInfoDTO dto); } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java index c68940cce..fcd8af959 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java @@ -1,12 +1,42 @@ package com.jsowell.thirdparty.zhongdianlian.service.impl; +import com.alibaba.fastjson2.JSONObject; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.jsowell.common.constant.Constants; +import com.jsowell.common.enums.lianlian.LianLianPileStatusEnum; +import com.jsowell.common.enums.ykc.PileStatusEnum; +import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.PageUtils; +import com.jsowell.common.util.StringUtils; +import com.jsowell.pile.domain.PileBasicInfo; +import com.jsowell.pile.domain.PileConnectorInfo; +import com.jsowell.pile.domain.PileStationInfo; +import com.jsowell.pile.domain.ThirdPartyPlatformConfig; import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.service.*; +import com.jsowell.pile.vo.web.PileModelInfoVO; +import com.jsowell.thirdparty.lianlian.domain.ConnectorInfo; +import com.jsowell.thirdparty.lianlian.domain.EquipmentInfo; +import com.jsowell.thirdparty.lianlian.domain.StationInfo; import com.jsowell.thirdparty.lianlian.service.LianLianService; +import com.jsowell.thirdparty.lianlian.util.Cryptos; +import com.jsowell.thirdparty.lianlian.util.Encodes; +import com.jsowell.thirdparty.lianlian.util.GBSignUtils; +import com.jsowell.thirdparty.zhongdianlian.domain.ZDLConnectorInfo; +import com.jsowell.thirdparty.zhongdianlian.domain.ZDLEquipmentInfo; +import com.jsowell.thirdparty.zhongdianlian.domain.ZDLStationInfo; import com.jsowell.thirdparty.zhongdianlian.dto.ZDLGetTokenDTO; import com.jsowell.thirdparty.zhongdianlian.service.ZDLService; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -21,6 +51,21 @@ public class ZDLServiceImpl implements ZDLService { @Autowired private LianLianService lianLianService; + @Autowired + private IPileStationInfoService pileStationInfoService; + + @Autowired + private IThirdPartyPlatformConfigService thirdPartyPlatformConfigService; + + @Autowired + private IPileBasicInfoService pileBasicInfoService; + + @Autowired + private IPileModelInfoService pileModelInfoService; + + @Autowired + private IPileConnectorInfoService pileConnectorInfoService; + /** * 获取令牌 * @param dto @@ -41,8 +86,144 @@ public class ZDLServiceImpl implements ZDLService { */ @Override public Map queryStationsInfo(QueryStationInfoDTO dto) { - return null; + List resultList = new ArrayList<>(); + int pageNo = dto.getPageNo() == null ? 1 : dto.getPageNo(); + int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize(); + + PageUtils.startPage(pageNo, pageSize); + List stationInfos = pileStationInfoService.getStationInfosByThirdParty(); + if (CollectionUtils.isEmpty(stationInfos)) { + // 未查到数据 + return null; + } + ThirdPartyPlatformConfig configInfo = thirdPartyPlatformConfigService.getInfoByOperatorId(dto.getOperatorId()); + if (configInfo == null) { + return null; + } + PageInfo pageInfo = new PageInfo<>(stationInfos); + for (PileStationInfo pileStationInfo : pageInfo.getList()) { + ZDLStationInfo stationInfo = new ZDLStationInfo(); + stationInfo.setStationId(String.valueOf(pileStationInfo.getId())); + stationInfo.setOperatorId(Constants.OPERATORID_LIANLIAN); // 组织机构代码 + stationInfo.setEquipmentOwnerId(String.valueOf(pileStationInfo.getMerchantId())); + stationInfo.setStationName(pileStationInfo.getStationName()); + stationInfo.setCountryCode(pileStationInfo.getCountryCode()); + stationInfo.setAreaCode(pileStationInfo.getAreaCode()); + stationInfo.setAddress(pileStationInfo.getAddress()); + stationInfo.setServiceTel(pileStationInfo.getStationTel()); + stationInfo.setStationType(Integer.parseInt(pileStationInfo.getStationType())); + stationInfo.setStationStatus(Integer.parseInt(pileStationInfo.getStationStatus())); + stationInfo.setParkNums(Integer.parseInt(pileStationInfo.getParkNums())); + stationInfo.setStationLng(new BigDecimal(pileStationInfo.getStationLng())); + stationInfo.setStationLat(new BigDecimal(pileStationInfo.getStationLat())); + stationInfo.setConstruction(Integer.parseInt(pileStationInfo.getConstruction())); + + List pileList = getPileList(pileStationInfo); + if (CollectionUtils.isNotEmpty(pileList)) { + stationInfo.setEquipmentInfos(pileList); // 充电设备信息列表 + } + + resultList.add(stationInfo); + } + Map map = new LinkedHashMap<>(); + map.put("PageNo", pageInfo.getPageNum()); + map.put("PageCount", pageInfo.getPages()); + map.put("ItemSize", resultList.size()); + map.put("StationInfos", resultList); + + // 加密 + Map resultMap = Maps.newLinkedHashMap(); + // 加密数据 + byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(map).getBytes(), + configInfo.getOperatorSecret().getBytes(), configInfo.getDataSecretIv().getBytes()); + String encryptData = Encodes.encodeBase64(encryptText); + + resultMap.put("Data", encryptData); + // 生成sig + String resultSign = GBSignUtils.sign(resultMap, configInfo.getOperatorSecret()); + resultMap.put("Sig", resultSign); + + return resultMap; } + /** + * 查询统计信息 + * + * @param dto + * @return + */ + @Override + public Map queryStationStats(QueryStationInfoDTO dto) { + return lianLianService.query_station_stats(dto); + } + /** + * 获取桩列表信息 + * + * @param pileStationInfo + * @return + */ + private List getPileList(PileStationInfo pileStationInfo) { + List resultList = new ArrayList<>(); + // 通过站点id查询桩基本信息 + List list = pileBasicInfoService.getPileListByStationId(String.valueOf(pileStationInfo.getId())); + // 封装成中电联平台对象 + for (PileBasicInfo pileBasicInfo : list) { + ZDLEquipmentInfo equipmentInfo = new ZDLEquipmentInfo(); + String pileSn = pileBasicInfo.getSn(); + + equipmentInfo.setEquipmentId(pileSn); + + PileModelInfoVO modelInfo = pileModelInfoService.getPileModelInfoByPileSn(pileSn); + equipmentInfo.setEquipmentType(Integer.parseInt(modelInfo.getSpeedType())); + equipmentInfo.setPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP)); + + List connectorList = getConnectorList(pileBasicInfo); + equipmentInfo.setConnectorInfos(connectorList); + + resultList.add(equipmentInfo); + } + return resultList; + } + + /** + * 获取枪口列表 + * + * @param pileBasicInfo + * @return + */ + private List getConnectorList(PileBasicInfo pileBasicInfo) { + List resultList = new ArrayList<>(); + + List list = pileConnectorInfoService.selectPileConnectorInfoList(pileBasicInfo.getSn()); + for (PileConnectorInfo pileConnectorInfo : list) { + ZDLConnectorInfo connectorInfo = new ZDLConnectorInfo(); + + connectorInfo.setConnectorId(pileConnectorInfo.getPileConnectorCode()); + String pileSn = pileConnectorInfo.getPileSn(); + PileModelInfoVO modelInfo = pileModelInfoService.getPileModelInfoByPileSn(pileSn); + int connectorType = StringUtils.equals("1", modelInfo.getSpeedType()) ? 4 : 3; + + connectorInfo.setConnectorType(connectorType); + // 车位号 + if (StringUtils.isNotBlank(pileConnectorInfo.getParkNo())) { + connectorInfo.setParkNo(pileConnectorInfo.getParkNo()); + } + connectorInfo.setVoltageUpperLimits(Integer.valueOf(modelInfo.getRatedVoltage())); + connectorInfo.setVoltageLowerLimits(Integer.valueOf(modelInfo.getRatedVoltage())); + connectorInfo.setCurrent(Integer.valueOf(modelInfo.getRatedCurrent())); + if (!StringUtils.equals(modelInfo.getConnectorNum(), "1")) { + // 如果不是单枪,则枪口功率需要除以枪口数量 + String ratedPowerStr = modelInfo.getRatedPower(); + BigDecimal ratedPower = new BigDecimal(ratedPowerStr); + connectorInfo.setPower(ratedPower.divide(new BigDecimal(modelInfo.getConnectorNum()), 1, BigDecimal.ROUND_HALF_UP)); + }else { + connectorInfo.setPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP)); + } + + resultList.add(connectorInfo); + } + + return resultList; + } }