From c8cee43365a79b026502908b4aa361f08d59b42a Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 22 一月 2025 09:56:49 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatusInfo.java | 47 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/TCECController.java | 259 ++++++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatus.java | 21 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 13 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/OperatorInfo.java | 45 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationTypeEnum.java | 41 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatsInfo.java | 25 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicy.java | 25 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatsInfo.java | 43 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationStatusEnum.java | 38 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseResult.java | 41 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStats.java | 31 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatsResult.java | 19 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 11 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 14 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConstructionEnum.java | 45 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentStatsInfo.java | 31 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/PolicyInfo.java | 31 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java | 154 ++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseRequest.java | 41 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java | 63 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java | 82 ++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatusResult.java | 22 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfoResult.java | 30 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStationStatusResult.java | 21 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java | 40 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfo.java | 82 ++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfoResult.java | 31 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfo.java | 31 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/InterfaceUrlEnum.java | 39 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java | 73 ++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatusInfo.java | 24 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 27 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ChargeDetail.java | 53 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationEquipChargeStatusResult.java | 26 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatus.java | 19 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicyResult.java | 51 + ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java | 11 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConnectorTypeEnum.java | 39 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatusResult.java | 124 +++ 40 files changed, 1,857 insertions(+), 6 deletions(-) diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java index 11c4cb6..4da7d9e 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java @@ -54,7 +54,16 @@ public R<String> updateChargingGunById(TChargingGun chargingGun) { return R.fail("编辑充电枪失败:" + throwable.getMessage()); } - + + @Override + public R<List<TChargingGun>> getChargingGunByChargingPileId(Integer chargingPileId) { + return R.fail("根据充电桩id获取枪失败:" + throwable.getMessage()); + } + + @Override + public R pushChargingGunStatus(Integer id, Integer status) { + return R.fail("接口状态变化后推送给第三方失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java index 77548f2..6370e8b 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java @@ -8,10 +8,9 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * @author zhibing.pu @@ -58,5 +57,23 @@ */ @PostMapping("/t-charging-gun/updateChargingGunById") R<String> updateChargingGunById(@RequestBody TChargingGun chargingGun); - + + + /** + * 根据充电桩id获取枪 + * @param chargingPileId + * @return + */ + @PostMapping("/t-charging-gun/getChargingGunByChargingPileId") + R<List<TChargingGun>> getChargingGunByChargingPileId(@RequestParam("chargingPileId") Integer chargingPileId); + + + /** + * 接口状态变化后推送给第三方 + * @param id + * @param status + * @return + */ + @PostMapping("/t-charging-gun/pushChargingGunStatus") + R pushChargingGunStatus(@RequestParam("id") Integer id, @RequestParam("status") Integer status); } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java index 9b3752f..e8b235c 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java @@ -7,6 +7,7 @@ import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.page.PageInfo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -40,4 +41,14 @@ R<List<GetSiteListDTO>> getSiteListByUserId(@RequestParam("userId") Long userId); @GetMapping("/partner/getPartnerR/{id}") R<Partner> getPartnerR(@PathVariable("id") Integer id); + + + /** + * 分页查询站电数据 + * @param PageNo + * @param PageSize + * @return + */ + @PostMapping("/site/getSiteListPaging") + PageInfo<Site> getSiteListPaging(@RequestParam("PageNo") Integer PageNo, @RequestParam("PageSize") Integer PageSize); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index a1c138f..ae4c353 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -611,4 +611,18 @@ List<Site> list = siteService.list(new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0)); return R.ok(list); } + + + /** + * 分页查询站电数据 + * @param PageNo + * @param PageSize + * @return + */ + @PostMapping("/getSiteListPaging") + public PageInfo<Site> getSiteListPaging(@RequestParam("PageNo") Integer PageNo, @RequestParam("PageSize") Integer PageSize){ + PageInfo<Site> pageInfo = new PageInfo<>(PageNo, PageSize); + PageInfo<Site> page = siteService.lambdaQuery().page(pageInfo); + return page; + } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java index f618ef1..db5974b 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java @@ -294,5 +294,18 @@ chargingGunService.updateById(chargingGun); return R.ok(); } + + + + /** + * 根据充电桩id获取枪 + * @param chargingPileId + * @return + */ + @PostMapping("/getChargingGunByChargingPileId") + public R<List<TChargingGun>> getChargingGunByChargingPileId(@RequestParam("chargingPileId") Integer chargingPileId){ + List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPileId).eq(TChargingGun::getDelFlag, 0)); + return R.ok(list); + } } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/TCECController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/TCECController.java new file mode 100644 index 0000000..2f8cfaa --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/TCECController.java @@ -0,0 +1,259 @@ +package com.ruoyi.integration.controller; + +import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; +import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; +import com.ruoyi.chargingPile.api.feignClient.SiteClient; +import com.ruoyi.chargingPile.api.model.Site; +import com.ruoyi.chargingPile.api.model.TChargingGun; +import com.ruoyi.chargingPile.api.model.TChargingPile; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.integration.drainage.TCECUtil; +import com.ruoyi.integration.drainage.model.*; +import com.ruoyi.integration.drainage.model.enu.*; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/1/21 17:52 + */ +@RestController +@RequestMapping("") +public class TCECController { + + @Resource + private SiteClient siteClient; + + @Resource + private ChargingPileClient chargingPileClient; + + @Resource + private ChargingGunClient chargingGunClient; + + + /** + * 查询充电站信息 + * @param query + * @return + */ + @PostMapping("/query_stations_info") + public QueryStationsInfoResult queryStationsInfo(@RequestBody QueryStationsInfo query){ + Integer pageNo = query.getPageNo(); + Integer pageSize = query.getPageSize(); + if(null == pageNo){ + pageNo = 1; + } + if(null == pageSize){ + pageSize = 10; + } + PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize); + QueryStationsInfoResult queryStationsInfoResult = new QueryStationsInfoResult(); + queryStationsInfoResult.setPageNo(pageNo); + queryStationsInfoResult.setPageCount((0 == (siteListPaging.getTotal() % pageSize) ? 0 : 1) + Double.valueOf(siteListPaging.getTotal() / pageSize).intValue()); + queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue()); + + List<StationInfo> StationInfos = new ArrayList<>(); + for (Site datum : siteListPaging.getRecords()) { + StationInfo stationInfo = new StationInfo(); + stationInfo.setStationID(datum.getId().toString()); + stationInfo.setOperatorID(); + stationInfo.setEquipmentOwnerID(); + stationInfo.setStationName(datum.getName()); + stationInfo.setCountryCode(datum.getCountryCode()); + stationInfo.setAreaCode(datum.getDistrictsCode()); + stationInfo.setAddress(datum.getAddress()); + stationInfo.setStationTel(datum.getPhone()); + stationInfo.setServiceTel(datum.getServicePhone()); + switch (datum.getSiteType()){ + case 0: + stationInfo.setStationType(StationTypeEnum.OTHER.getType()); + break; + case 1: + stationInfo.setStationType(StationTypeEnum.PUBLIC.getType()); + break; + case 2: + stationInfo.setStationType(StationTypeEnum.PERSONAGE.getType()); + break; + case 3: + stationInfo.setStationType(StationTypeEnum.BUS_SPECIFIC.getType()); + break; + case 4: + stationInfo.setStationType(StationTypeEnum.SANITATION_SPECIFIC.getType()); + break; + case 5: + stationInfo.setStationType(StationTypeEnum.LOGISTICS_SPECIFIC.getType()); + break; + case 6: + stationInfo.setStationType(StationTypeEnum.TEXT_SPECIFIC.getType()); + break; + } + if(datum.getStatus() == 1){ + stationInfo.setStationStatus(StationStatusEnum.NORMAL_USE.getStatus()); + } + if(datum.getStatus() == 2){ + stationInfo.setStationStatus(StationStatusEnum.MAINTAIN.getStatus()); + } + if(datum.getStatus() == 3){ + stationInfo.setStationStatus(StationStatusEnum.OFF_LINE.getStatus()); + } + stationInfo.setParkNums(datum.getParkingSpace()); + stationInfo.setStationLat(new BigDecimal(datum.getLat()).setScale(6, RoundingMode.DOWN)); + stationInfo.setStationLng(new BigDecimal(datum.getLon()).setScale(6, RoundingMode.DOWN)); + stationInfo.setConstruction(datum.getConstructionSite() == 0 ? ConstructionEnum.OTHER.getType() : datum.getConstructionSite()); + stationInfo.setPictures(Arrays.asList(datum.getImgUrl().split(","))); + stationInfo.setSiteGuide(datum.getGuide()); + stationInfo.setMatchCars(datum.getVehicleDescription()); + stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime()); + stationInfo.setElectricityFee(datum.getRateDescription()); + //构建充电设备信息数据 + List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteId(datum.getId()).getData(); + stationInfo.setEquipmentInfos(buildEquipmentInfo(tChargingPiles)); + StationInfos.add(stationInfo); + } + queryStationsInfoResult.setStationInfos(StationInfos); + return queryStationsInfoResult; + } + + + /** + * 构建桩数据 + * @param tChargingPiles + * @return + */ + public List<EquipmentInfo> buildEquipmentInfo(List<TChargingPile> tChargingPiles){ + List<EquipmentInfo> equipmentInfos = new ArrayList<>(); + for (TChargingPile tChargingPile : tChargingPiles) { + EquipmentInfo equipmentInfo = new EquipmentInfo(); + equipmentInfo.setEquipmentID(tChargingPile.getId().toString()); + equipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode()); + equipmentInfo.setManufacturerName(tChargingPile.getManufacturer()); + equipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType()); + if(null != tChargingPile.getProductionDate()){ + equipmentInfo.setProductionDate(tChargingPile.getProductionDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + } + switch (tChargingPile.getType()){ + case 0: + equipmentInfo.setEquipmentType(EquipmentTypeEnum.OTHER.getType()); + break; + case 1: + equipmentInfo.setEquipmentType(EquipmentTypeEnum.DIRECT_CURRENT.getType()); + break; + case 2: + equipmentInfo.setEquipmentType(EquipmentTypeEnum.ALTERNATING_CURRENT.getType()); + break; + case 3: + equipmentInfo.setEquipmentType(EquipmentTypeEnum.ALTERNATING_DIRECT.getType()); + break; + case 4: + equipmentInfo.setEquipmentType(EquipmentTypeEnum.WIRELESS_DEVICE.getType()); + break; + } + + //构建设备接口信息 + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileId(tChargingPile.getId()).getData(); + equipmentInfo.setConnectorInfos(buildConnectorInfos(chargingGunList)); + equipmentInfos.add(equipmentInfo); + } + return equipmentInfos; + } + + + /** + * 构建接口数据 + * @param chargingGunList + * @return + */ + public List<ConnectorInfo> buildConnectorInfos(List<TChargingGun> chargingGunList){ + List<ConnectorInfo> connectorInfos = new ArrayList<>(); + for (TChargingGun chargingGun : chargingGunList) { + ConnectorInfo connectorInfo = new ConnectorInfo(); + connectorInfo.setConnectorID(chargingGun.getId().toString()); + connectorInfo.setConnectorName(chargingGun.getName()); + switch (chargingGun.getType()){ + case 0: + connectorInfo.setConnectorType(ConnectorTypeEnum.OTHER.getType()); + break; + case 1: + connectorInfo.setConnectorType(ConnectorTypeEnum.HOUSEHOLD_SOCKET.getType()); + break; + case 2: + connectorInfo.setConnectorType(ConnectorTypeEnum.AC_SOCKET.getType()); + break; + case 3: + connectorInfo.setConnectorType(ConnectorTypeEnum.AC_INTERFACE_PLUG.getType()); + break; + case 4: + connectorInfo.setConnectorType(ConnectorTypeEnum.DC_INTERFACE_GUN_HEAD.getType()); + break; + case 5: + connectorInfo.setConnectorType(ConnectorTypeEnum.WIRELESS_CHARGING_STAND.getType()); + break; + } + connectorInfo.setVoltageUpperLimits(chargingGun.getUpperRatedVoltage().intValue()); + connectorInfo.setVoltageLowerLimits(chargingGun.getLowerLimitOfRatedVoltage().intValue()); + connectorInfo.setCurrent(chargingGun.getRatedCurrent().intValue()); + connectorInfo.setPower(chargingGun.getRatedPower()); + connectorInfo.setParkNo(chargingGun.getParkingNumber()); + connectorInfo.setNationalStandard(Integer.valueOf(chargingGun.getNationalStandard())); + connectorInfos.add(connectorInfo); + } + return connectorInfos; + } + + + /** + * 接口状态变化后推送给第三方 + * @return + */ + @PostMapping("/pushChargingGunStatus") + public R pushChargingGunStatus(@RequestParam("id") Integer id, @RequestParam("status") Integer status){ + ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); + connectorStatusInfo.setConnectorID(id.toString()); + switch (status){ + case 1: + connectorStatusInfo.setStatus(0); + break; + case 2: + connectorStatusInfo.setStatus(1); + break; + case 3: + connectorStatusInfo.setStatus(2); + break; + case 4: + connectorStatusInfo.setStatus(3); + break; + case 5: + connectorStatusInfo.setStatus(3); + break; + case 6: + connectorStatusInfo.setStatus(4); + break; + case 7: + connectorStatusInfo.setStatus(255); + break; + } + NotificationStationStatusResult result = TCECUtil.notificationStationStatus(connectorStatusInfo); + return R.ok(); + } + + + + /** + * 设备接口状态查询 + * @param query + * @return + */ + @PostMapping("/query_station_status") + public QueryStationStatusResult queryStationStatus(@RequestBody QueryStationStatus query){ + + } +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java new file mode 100644 index 0000000..428a49e --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java @@ -0,0 +1,82 @@ +package com.ruoyi.integration.drainage; + +import cn.hutool.http.*; +import com.alibaba.fastjson.JSON; +import com.ruoyi.integration.drainage.model.*; +import lombok.extern.slf4j.Slf4j; + +/** + * 中电联TCEC标准 + * @author zhibing.pu + * @Date 2025/1/21 11:48 + */ +@Slf4j +public class TCECUtil { + + + + /** + * 设备状态变化推送 + * @param info + */ + public static NotificationStationStatusResult notificationStationStatus(ConnectorStatusInfo info) { + HttpRequest post = HttpUtil.createPost(""); + post.contentType(ContentType.JSON.toString()); + post.body(JSON.toJSONString(info)); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("设备状态变化推送失败:" + execute.body()); + return null; + } + return JSON.parseObject(execute.body(), NotificationStationStatusResult.class); + } + + + + + /** + * 查询统计信息 + * @param query + * @return + */ + public QueryStationStatsResult queryStationStats(QueryStationStats query){ + } + + /** + * 查询业务策略信息 + * @param query + * @return + */ + public BaseResult<QueryEquipBusinessPolicyResult> queryEquipBusinessPolicy(QueryEquipBusinessPolicy query){ + } + + + /** + * 查询充电状态 + * @param query + * @return + */ + public BaseResult<QueryEquipChargeStatusResult> queryEquipChargeStatus(QueryEquipChargeStatus query){ + } + + + /** + * 推动充电状态 + * @param info + * @return + */ + public BaseResult<NotificationEquipChargeStatusResult> notificationEquipChargeStatus(QueryEquipChargeStatusResult info){ + } + + + /** + * 推送充电订单信息 + * @param indo + * @return + */ + public BaseResult<NotificationChargeOrderInfoResult> notificationChargeOrderInfo(NotificationChargeOrderInfo indo){ + } + + + +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseRequest.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseRequest.java new file mode 100644 index 0000000..d2a11da --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseRequest.java @@ -0,0 +1,41 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 公共请求 + * @author zhibing.pu + * @Date 2025/1/21 17:08 + */ +@Data +public class BaseRequest<T> { + /** + * 运营商标识 + */ + @NotNull + private String OperatorID; + /** + * 参数内容 + */ + @NotNull + private T Data; + /** + * 时间戳 + * yyyyMMddHHmmss + */ + @NotNull + private Long TimeStamp; + /** + * 自增序列 + * 4位自增序列取自时间戳,同一秒内按序列自增长,新秒重计。如 0001 + */ + @NotNull + private String Seq; + /** + * 数字签名 + */ + @NotNull + private String Sig; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseResult.java new file mode 100644 index 0000000..0a94794 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseResult.java @@ -0,0 +1,41 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 公共返回结果 + * @author zhibing.pu + * @Date 2025/1/21 15:54 + */ +@Data +public class BaseResult<T> { + /** + * 参数编码 + * -1:系统繁忙,此时请求方稍后重试 + * 0:请求成功 + * 4001:签名错误 + * 4002:Token错误 + * 4003:POST参数不合法,缺少必需的 + * 4004:请求的业务参数不合法 + * 500:系统错误 + */ + @NotNull + private Integer Ret; + /** + * 错误信息描述 + */ + @NotNull + private String Msg; + /** + * 参数实体 + */ + @NotNull + private T Data; + /** + * 签名 + */ + @NotNull + private String Sig; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ChargeDetail.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ChargeDetail.java new file mode 100644 index 0000000..8eabde6 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ChargeDetail.java @@ -0,0 +1,53 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import java.math.BigDecimal; + +/** + * 充电明细信息 + * @author zhibing.pu + * @Date 2025/1/21 16:40 + */ +@Data +public class ChargeDetail { + /** + * 开始时间 + * yyyy-MM-dd HH:mm:ss + */ + @NotNull + private String DetailStartTime; + /** + * 结束时间 + * yyyy-MM-dd HH:mm:ss + */ + @NotNull + private String DetailEndTime; + /** + * 时段电价 + */ + @Null + private BigDecimal ElecPrice; + /** + * 时段服务费价格 + */ + @Null + private BigDecimal SevicePrice; + /** + * 时段充电量 + */ + @Null + private BigDecimal DetailPower; + /** + * 时段电费 + */ + @Null + private BigDecimal DetailElecMoney; + /** + * 时段服务费 + */ + @Null + private BigDecimal DetailSeviceMoney; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java new file mode 100644 index 0000000..80af044 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java @@ -0,0 +1,63 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import java.math.BigDecimal; + +/** + * 充电设备接口 + * @author zhibing.pu + * @Date 2025/1/21 14:03 + */ +@Data +public class ConnectorInfo { + /** + * 充电设备接口编码 + */ + @NotNull + private String ConnectorID; + /** + * 充电设备接口名称 + */ + @Null + private String ConnectorName; + /** + * 充电设备接口类型 + */ + @NotNull + private Integer ConnectorType; + /** + * 额定电压上限 + */ + @NotNull + private Integer VoltageUpperLimits; + /** + * 额定电压下限 + */ + @NotNull + private Integer VoltageLowerLimits; + /** + * 额定电流 + */ + @NotNull + private Integer Current; + /** + * 额定功率 + */ + @NotNull + private BigDecimal Power; + /** + * 车位号 + */ + @Null + private String ParkNo; + /** + * 国家标准 + * 1:2011 + * 2:2015 + */ + @NotNull + private Integer NationalStandard; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatsInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatsInfo.java new file mode 100644 index 0000000..c6671ac --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatsInfo.java @@ -0,0 +1,25 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 充电设备接口统计信息 + * @author zhibing.pu + * @Date 2025/1/21 15:24 + */ +@Data +public class ConnectorStatsInfo { + /** + * 充电设备接口编码 + */ + @NotNull + private String ConnectorID; + /** + * 充电设备接口累计电量 + */ + @NotNull + private BigDecimal ConnectorElectricity; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatusInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatusInfo.java new file mode 100644 index 0000000..695d666 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatusInfo.java @@ -0,0 +1,47 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; + +/** + * 充电设备接口状态 + * @author zhibing.pu + * @Date 2025/1/21 14:53 + */ +@Data +public class ConnectorStatusInfo { + /** + * 充电设备接口编码 + */ + @NotNull + private String ConnectorID; + /** + * 充电设备接口状态 + * 0:离网 + * 1:空闲 + * 2:占用(未充电) + * 3:占用(充电中) + * 4:占用(预约锁定) + * 255:故障 + */ + @NotNull + private Integer Status; + /** + * 车位状态 + * 0:未知 + * 10:空闲 + * 50:占用 + */ + @Null + private Integer ParkStatus; + /** + * 地锁状态 + * 0:未知 + * 10:已解锁 + * 50:已上锁 + */ + @Null + private Integer LookStatus; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java new file mode 100644 index 0000000..5c64c3b --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java @@ -0,0 +1,73 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import java.math.BigDecimal; +import java.util.List; + +/** + * 充电设备信息 + * @author zhibing.pu + * @Date 2025/1/21 13:51 + */ +@Data +public class EquipmentInfo { + /** + * 设备编号 + */ + @NotNull + private String EquipmentID; + /** + * 设备生产商组织机构代码 + */ + @Null + private String ManufacturerID; + /** + * 设备生产商名称 + */ + @Null + private String ManufacturerName; + /** + * 设备型号 + */ + @Null + private String EquipmentModel; + /** + * 设备生产日期 + * YYYY-MM-DD + */ + @Null + private String ProductionDate; + /** + * 设备类型 + */ + @NotNull + private Integer EquipmentType; + /** + * 充电设备接口信息列表 + */ + @NotNull + private List<ConnectorInfo> ConnectorInfos; + /** + * 充电设备经度 + */ + @Null + private BigDecimal EquipmentLng; + /** + * 充电设备纬度 + */ + @Null + private BigDecimal EquipmentLat; + /** + * 充电设备总功率 + */ + @NotNull + private BigDecimal Power; + /** + * 充电设备名称 + */ + @Null + private String EquipmentName; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentStatsInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentStatsInfo.java new file mode 100644 index 0000000..ad44200 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentStatsInfo.java @@ -0,0 +1,31 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +/** + * 充电设备统计信息 + * @author zhibing.pu + * @Date 2025/1/21 15:22 + */ +@Data +public class EquipmentStatsInfo { + /** + * 设备编码 + */ + @NotNull + private String EquipmentID; + /** + * 充电设备接口累计电量 + */ + @NotNull + private BigDecimal EquipmentElectricity; + /** + * 充电设备接口统计信息列表 + */ + @NotNull + private List<ConnectorStatsInfo> ConnectorStatsInfos; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfo.java new file mode 100644 index 0000000..63f2d13 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfo.java @@ -0,0 +1,82 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import java.math.BigDecimal; +import java.util.List; + +/** + * 推送充电订单信息 + * @author zhibing.pu + * @Date 2025/1/21 15:39 + */ +@Data +public class NotificationChargeOrderInfo { + /** + * 充电订单号 + */ + @NotNull + private String StartChargeSeq; + /** + * 充电设备接口编码 + */ + @NotNull + private String ConnectorID; + /** + * 开始充电时间 + * yyyy-MM-dd HH:mm:ss + */ + @NotNull + private String StartTime; + /** + * 结束充电时间 + * yyyy-MM-dd HH:mm:ss + */ + @NotNull + private String EndTime; + /** + * 累计充电量 + */ + @NotNull + private BigDecimal TotalPower; + /** + * 总电费 + */ + @NotNull + private BigDecimal TotalElecMoney; + /** + * 总服务费 + */ + @NotNull + private BigDecimal TotalSeviceMoney; + /** + * 累计总金额 + */ + @NotNull + private BigDecimal TotalMoney; + /** + * 充电结束原因 + * 0:用户手动停止充电 + * 1:客户归属地运营商平台停止充电 + * 2:BMS停止充电 + * 3:充电机设备故障 + * 4:连接器断开 + * 5·99:自定义 + */ + @NotNull + private Integer StopReason; + /** + * 时段数 N + * 0·32 + */ + @Null + private Integer SumPeriod; + /** + * 充电明细信息 + */ + @Null + private List<ChargeDetail> ChargeDetails; + +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfoResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfoResult.java new file mode 100644 index 0000000..15ac60c --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfoResult.java @@ -0,0 +1,31 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 推送充电订单信息返回记过 + * @author zhibing.pu + * @Date 2025/1/21 15:49 + */ +@Data +public class NotificationChargeOrderInfoResult { + /** + * 充电订单号 + */ + @NotNull + private String StartChargeSeq; + /** + * 充电设备接口编码 + */ + @NotNull + private String ConnectorID; + /** + * 确认结果 + * 0;成功 + * 1:争议交易 + * 2·99:自定义 + */ + private Integer ConfirmResult; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationEquipChargeStatusResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationEquipChargeStatusResult.java new file mode 100644 index 0000000..8c4f54a --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationEquipChargeStatusResult.java @@ -0,0 +1,26 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 推送充电状态结果 + * @author zhibing.pu + * @Date 2025/1/21 16:48 + */ +@Data +public class NotificationEquipChargeStatusResult { + /** + * 充电订单号 + */ + @NotNull + private String StartChargeSeq; + /** + * 操作结果 + * 0:成功 + * 1:失败 + */ + @NotNull + private Integer SuccStat; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStationStatusResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStationStatusResult.java new file mode 100644 index 0000000..527d2d1 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStationStatusResult.java @@ -0,0 +1,21 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 设备状态变化推动返回结果 + * @author zhibing.pu + * @Date 2025/1/21 14:58 + */ +@Data +public class NotificationStationStatusResult { + /** + * 状态 + * 0:接收 + * 1:丢弃/忽略,不需要重试 + */ + @NotNull + private Integer Status; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/OperatorInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/OperatorInfo.java new file mode 100644 index 0000000..3def9e6 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/OperatorInfo.java @@ -0,0 +1,45 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; + +/** + * 基础设施运营商信息 + * @author zhibing.pu + * @Date 2025/1/21 11:49 + */ +@Data +public class OperatorInfo { + /** + * 运营商ID + */ + @NotNull + private String OperatorID; + /** + * 运营商名称 + */ + @NotNull + private String OperatorName; + /** + * 运营商电话1 + */ + @NotNull + private String OperatorTel1; + /** + * 运营商电话2 + */ + @Null + private String OperatorTel2; + /** + * 运营商注册地址 + */ + @Null + private String OperatorRegAddress; + /** + * 备注 + */ + @Null + private String OperatorNote; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/PolicyInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/PolicyInfo.java new file mode 100644 index 0000000..8d0daa3 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/PolicyInfo.java @@ -0,0 +1,31 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 计费信息 + * @author zhibing.pu + * @Date 2025/1/21 16:10 + */ +@Data +public class PolicyInfo { + /** + * 时段起始时间点 + * HHmmss + */ + @NotNull + private String StartTime; + /** + * 时段电费 + */ + @NotNull + private BigDecimal ElecPrice; + /** + * 时段服务费 + */ + @NotNull + private BigDecimal SevicePrice; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicy.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicy.java new file mode 100644 index 0000000..0322cc8 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicy.java @@ -0,0 +1,25 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 查询业务策略信息 + * @author zhibing.pu + * @Date 2025/1/21 16:03 + */ +@Data +public class QueryEquipBusinessPolicy { + /** + * 业务策略查询流水号 + * 格式”运营商ID+唯一编号“。27字符 + */ + @NotNull + private String EquipBizSeq; + /** + * 充电设备接口编码 + */ + @NotNull + private String ConnectorID; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicyResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicyResult.java new file mode 100644 index 0000000..544247d --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicyResult.java @@ -0,0 +1,51 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 查询业务策略信息结果 + * @author zhibing.pu + * @Date 2025/1/21 16:05 + */ +@Data +public class QueryEquipBusinessPolicyResult { + /** + * 业务策略查询流水号 + */ + @NotNull + private String EquipBizSeq; + /** + * 充电设备接口编码 + */ + @NotNull + private String ConnectorID; + /** + * 操作结果 + * 0:成功 + * 1:失败 + */ + @NotNull + private Integer SuccStat; + /** + * 失败原因 + * 0:无 + * 1:此充电桩业务策略不存在 + */ + @NotNull + private Integer FailReason; + /** + * 时段数N + * 0`32 + */ + @NotNull + private Integer SumPeriod; + /** + * 计策信息 + */ + @NotNull + private List<PolicyInfo> PolicyInfos; + +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatus.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatus.java new file mode 100644 index 0000000..a23736b --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatus.java @@ -0,0 +1,19 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 查询充电状态 + * @author zhibing.pu + * @Date 2025/1/21 16:17 + */ +@Data +public class QueryEquipChargeStatus { + /** + * 充电订单号 + */ + @NotNull + private String StartChargeSeq; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatusResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatusResult.java new file mode 100644 index 0000000..ae19f5e --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatusResult.java @@ -0,0 +1,124 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import java.math.BigDecimal; +import java.util.List; + +/** + * 查询充电状态结果 + * @author zhibing.pu + * @Date 2025/1/21 15:58 + */ +@Data +public class QueryEquipChargeStatusResult { + /** + * 充电订单号 + */ + @NotNull + private String StartChargeSeq; + /** + * 充电订单状态 + * 1:启动中 + * 2:充电中 + * 3:停止中 + * 4:已结束 + * 5:未知 + */ + @NotNull + private Integer StartChargeSeqStat; + /** + * 充电设备接口编号 + */ + @NotNull + private String ConnectorID; + /** + * 充电设备接口状态 + * 1:空闲 + * 2:占用(未充电) + * 3:占用(充电中) + * 4:占用(预约锁定) + * 255:故障 + */ + @NotNull + private Integer ConnectorStatus; + /** + * A相电流 + */ + @NotNull + private BigDecimal CurrentA; + /** + * B相电流 + */ + @Null + private BigDecimal CurrentB; + /** + * C相电流 + */ + @Null + private BigDecimal CurrentC; + /** + * A相电压 + */ + @NotNull + private BigDecimal VoltageA; + /** + * B相电压 + */ + @Null + private BigDecimal VoltageB; + /** + * C相电压 + */ + @Null + private BigDecimal VoltageC; + /** + * 电池剩余电量 + */ + @NotNull + private BigDecimal Soc; + /** + * 开始充电时间 + */ + @NotNull + private String StartTime; + /** + * 本次采样时间 + */ + @NotNull + private String EndTime; + /** + * 累计充电量 + */ + @NotNull + private BigDecimal TotalPower; + /** + * 累计电费 + */ + @Null + private BigDecimal ElecMoney; + /** + * 累计服务费 + */ + @Null + private BigDecimal SeviceMoney; + /** + * 累计总金额 + */ + @Null + private BigDecimal TotalMoney; + /** + * 时段数N + * 0`32 + */ + @Null + private Integer SumPeriod; + /** + * 充电明细信息 + */ + @Null + private List<ChargeDetail> ChargeDetails; + +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStats.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStats.java new file mode 100644 index 0000000..fd22d00 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStats.java @@ -0,0 +1,31 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 查询统计信息 + * @author zhibing.pu + * @Date 2025/1/21 15:11 + */ +@Data +public class QueryStationStats { + /** + * 充电站ID + */ + @NotNull + private String StationID; + /** + * 统计开始时间 + * yyyy-MM-dd + */ + @NotNull + private String StartTime; + /** + * 统计结束时间 + * yyyy-MM-dd + */ + @NotNull + private String EndTime; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatsResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatsResult.java new file mode 100644 index 0000000..81c15f5 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatsResult.java @@ -0,0 +1,19 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 查询统计信息结果 + * @author zhibing.pu + * @Date 2025/1/21 15:16 + */ +@Data +public class QueryStationStatsResult { + /** + * 充电站统计信息 + */ + @NotNull + private StationStatsInfo StationStats; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatus.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatus.java new file mode 100644 index 0000000..aca7ac0 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatus.java @@ -0,0 +1,21 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 设备接口状态查询 + * @author zhibing.pu + * @Date 2025/1/21 15:01 + */ +@Data +public class QueryStationStatus { + /** + * 充电站ID列表 + * 数组长度不超过50 + */ + @NotNull + private List<String> StationIDs; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatusResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatusResult.java new file mode 100644 index 0000000..1ba9870 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatusResult.java @@ -0,0 +1,22 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import java.util.List; + +/** + * 设备接口状态查询返回结果 + * @author zhibing.pu + * @Date 2025/1/21 15:04 + */ +@Data +public class QueryStationStatusResult { + /** + * 结果总数 + */ + private Integer Total; + /** + * 设备接口状态列表 + */ + private List<StationStatusInfo> StationStatusInfos; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfo.java new file mode 100644 index 0000000..048cd1b --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfo.java @@ -0,0 +1,31 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.Null; + +/** + * @author zhibing.pu + * @Date 2025/1/21 14:41 + */ +@Data +public class QueryStationsInfo { + /** + * 上次查询时间 + * yyyy-MM-dd HH:mm:ss + */ + @Null + private String LastQueryTime; + /** + * 查询页码 + * 默认1 + */ + @Null + private Integer PageNo; + /** + * 每页数量 + * 默认10 + */ + @Null + private Integer PageSize; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfoResult.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfoResult.java new file mode 100644 index 0000000..dced6d5 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfoResult.java @@ -0,0 +1,30 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import java.util.List; + +/** + * 公共返回结果 + * @author zhibing.pu + * @Date 2025/1/21 14:44 + */ +@Data +public class QueryStationsInfoResult { + /** + * 当前页数 + */ + private Integer PageNo; + /** + * 页码总数 + */ + private Integer PageCount; + /** + * 总记录条数 + */ + private Integer ItemSize; + /** + * 充电站信息列表 + */ + private List<StationInfo> StationInfos; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java new file mode 100644 index 0000000..9acbf16 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java @@ -0,0 +1,154 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import java.math.BigDecimal; +import java.util.List; + +/** + * 充电站信息 + * @author zhibing.pu + * @Date 2025/1/21 11:54 + */ +@Data +public class StationInfo { + /** + * 充电站ID + */ + @NotNull + private String StationID; + /** + * 运营商ID + */ + @NotNull + private String OperatorID; + /** + * 设备所属方ID + * 设备所属运营平台组织机构代码 + */ + @NotNull + private String EquipmentOwnerID; + /** + * 充电站名称 + */ + @NotNull + private String StationName; + /** + * 充电站国家代码 + */ + @NotNull + private String CountryCode; + /** + * 充电站省市辖区编码 + */ + @NotNull + private String AreaCode; + /** + * 详细地址 + */ + @NotNull + private String Address; + /** + * 站点电话 + */ + @Null + private String StationTel; + /** + * 站点电话 + */ + @NotNull + private String ServiceTel; + /** + * 站点类型 + */ + @NotNull + private Integer StationType; + /** + * 站点状态 + */ + @NotNull + private Integer StationStatus; + /** + * 车位数量,0:未知 + */ + @NotNull + private Integer ParkNums; + /** + * 经度(保留6位小数) + */ + @NotNull + private BigDecimal StationLng; + /** + * 纬度(保留6位小数) + */ + @NotNull + private BigDecimal StationLat; + /** + * 站点引导 + */ + @Null + private String SiteGuide; + /** + * 建设场所 + */ + @NotNull + private Integer Construction; + /** + * 站点照片 + * 字符串数组 + */ + @Null + private List<String> Pictures; + /** + * 使用车型描述 + */ + @Null + private String MatchCars; + /** + * 车位楼层及数量描述 + */ + @Null + private String ParkInfo; + /** + * 营业时间 + */ + @Null + private String BusineHours; + /** + * 充电电费率描述 + */ + @Null + private String ElectricityFee; + /** + * 服务费率描述 + */ + @Null + private String ServiceFee; + /** + * 停车费率描述 + */ + @Null + private String ParkFee; + /** + * 支付方式:刷卡、线上、现金 + */ + @Null + private String Payment; + /** + * 是否支持预约 + */ + @Null + private Integer SupportOrder; + /** + * 备注 + */ + @Null + private String Remark; + /** + * 充电设备信息列表 + */ + @NotNull + private List<EquipmentInfo> EquipmentInfos; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatsInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatsInfo.java new file mode 100644 index 0000000..b84488e --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatsInfo.java @@ -0,0 +1,43 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +/** + * 充电站统计信息 + * @author zhibing.pu + * @Date 2025/1/21 15:17 + */ +@Data +public class StationStatsInfo { + /** + * 充电站ID + */ + @NotNull + private String StationID; + /** + * 统计的开始时间 + * yyyy-MM-dd + */ + @NotNull + private String StartTime; + /** + * 统计的结束时间 + * yyyy-MM-dd + */ + @NotNull + private String EndTime; + /** + * 充电站累计电量 kw/h + */ + @NotNull + private BigDecimal StationElectricity; + /** + * 充电设备统计信息列表 + */ + @NotNull + private List<EquipmentStatsInfo> EquipmentStatsInfos; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatusInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatusInfo.java new file mode 100644 index 0000000..8093976 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatusInfo.java @@ -0,0 +1,24 @@ +package com.ruoyi.integration.drainage.model; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 充电站状态信息 + * @author zhibing.pu + * @Date 2025/1/21 15:07 + */ +@Data +public class StationStatusInfo { + /** + * 充电站ID + */ + @NotNull + private String StationID; + /** + * 充电设备接口状态列表 + */ + private List<ConnectorStatusInfo> ConnectorStatusInfos; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConnectorTypeEnum.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConnectorTypeEnum.java new file mode 100644 index 0000000..7e74736 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConnectorTypeEnum.java @@ -0,0 +1,39 @@ +package com.ruoyi.integration.drainage.model.enu; + +/** + * 充电设备接口类型 + * @author zhibing.pu + * @Date 2025/1/21 14:14 + */ +public enum ConnectorTypeEnum { + HOUSEHOLD_SOCKET(1, "家用插座"), + AC_SOCKET(2, "交流接口插座"), + AC_INTERFACE_PLUG(3, "交流接口插头"), + DC_INTERFACE_GUN_HEAD(4, "直流接口枪头"), + WIRELESS_CHARGING_STAND(5, "无线充电座"), + OTHER(6, "其他") + ; + private Integer type; + private String note; + + ConnectorTypeEnum(Integer type, String note) { + this.type = type; + this.note = note; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConstructionEnum.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConstructionEnum.java new file mode 100644 index 0000000..f7925c6 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/ConstructionEnum.java @@ -0,0 +1,45 @@ +package com.ruoyi.integration.drainage.model.enu; + +/** + * 建设场所 + * @author zhibing.pu + * @Date 2025/1/21 13:25 + */ +public enum ConstructionEnum { + RESIDENTIAL_AREA(1, "居民区"), + PUBLIC_INSTITUTION(2, "公共机构"), + ENTERPRISE(3, "企事业单位"), + OFFICE_BUILDING(4, "写字楼"), + INDUSTRIAL_PARK(5, "工业园区"), + TRANSPORTATION_JUNCTION(6, "交通枢纽"), + CULTURE_AND_SPORTS(7, "大型文体设施"), + URBAN_GREEN_SPACE(8, "城市绿地"), + ANCILLARY_PARKING_LOT(9, "大型建筑配建停车场"), + OFF_STREET_PARKING_SPACE(10, "路边停车位"), + HIGH_SPEED_SERVICE_AREA(11, "城际高速服务区"), + OTHER(255, "其他"); + + private Integer type; + private String note; + + ConstructionEnum(Integer type, String note) { + this.type = type; + this.note = note; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java new file mode 100644 index 0000000..c5630c6 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java @@ -0,0 +1,40 @@ +package com.ruoyi.integration.drainage.model.enu; + +/** + * 设备类型 + * @author zhibing.pu + * @Date 2025/1/21 13:59 + */ +public enum EquipmentTypeEnum { + DIRECT_CURRENT(1, "直流设备"), + ALTERNATING_CURRENT(2, "交流设备"), + ALTERNATING_DIRECT(3, "交直流一体设备"), + WIRELESS_DEVICE(4, "无线设备"), + OTHER(5, "其他") + ; + + + private Integer type; + private String note; + + EquipmentTypeEnum(Integer type, String note) { + this.type = type; + this.note = note; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/InterfaceUrlEnum.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/InterfaceUrlEnum.java new file mode 100644 index 0000000..eebc932 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/InterfaceUrlEnum.java @@ -0,0 +1,39 @@ +package com.ruoyi.integration.drainage.model.enu; + +/** + * 接口地址枚举 + * @author zhibing.pu + * @Date 2025/1/21 14:38 + */ +public enum InterfaceUrlEnum { + QUERY_STATIONS_INFO("query_stations_info", "查询充电站信息"), + NOTIFICATION_STATION_STATUS("notification_stationStatus", "设备状态变化推送"), + QUERY_STATION_STATUS("query_station_status", "设备接口状态查询"), + + ; + + private String url; + private String note; + + InterfaceUrlEnum(String url, String note) { + this.url = url; + this.note = note; + } + + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationStatusEnum.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationStatusEnum.java new file mode 100644 index 0000000..17e0cc7 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationStatusEnum.java @@ -0,0 +1,38 @@ +package com.ruoyi.integration.drainage.model.enu; + +/** + * 站点状态 + * @author zhibing.pu + * @Date 2025/1/21 12:10 + */ +public enum StationStatusEnum { + UNKNOWN(0, "未知"), + UNDER_CONSTRUCTION(1, "建设中"), + OFF_LINE(5, "关闭下线"), + MAINTAIN(6, "维护中"), + NORMAL_USE(50, "正常使用") + ; + private Integer status; + private String note; + + StationStatusEnum(Integer status, String note) { + this.status = status; + this.note = note; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationTypeEnum.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationTypeEnum.java new file mode 100644 index 0000000..05fd085 --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/StationTypeEnum.java @@ -0,0 +1,41 @@ +package com.ruoyi.integration.drainage.model.enu; + +/** + * 站点类型 + * @author zhibing.pu + * @Date 2025/1/21 12:00 + */ +public enum StationTypeEnum { + PUBLIC(1, "公共"), + PERSONAGE(50, "个人"), + BUS_SPECIFIC(100, "公交(专用)"), + SANITATION_SPECIFIC(101, "环卫(专用)"), + LOGISTICS_SPECIFIC(102, "物流(专用)"), + TEXT_SPECIFIC(103, "出租车(专用)"), + OTHER(255, "其他") + ; + + private Integer type; + private String note; + + StationTypeEnum(Integer type, String note) { + this.type = type; + this.note = note; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } +} -- Gitblit v1.7.1