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 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 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 tChargingPiles = chargingPileClient.getChargingPileBySiteId(datum.getId()).getData(); stationInfo.setEquipmentInfos(buildEquipmentInfo(tChargingPiles)); StationInfos.add(stationInfo); } queryStationsInfoResult.setStationInfos(StationInfos); return queryStationsInfoResult; } /** * 构建桩数据 * @param tChargingPiles * @return */ public List buildEquipmentInfo(List tChargingPiles){ List 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 chargingGunList = chargingGunClient.getChargingGunByChargingPileId(tChargingPile.getId()).getData(); equipmentInfo.setConnectorInfos(buildConnectorInfos(chargingGunList)); equipmentInfos.add(equipmentInfo); } return equipmentInfos; } /** * 构建接口数据 * @param chargingGunList * @return */ public List buildConnectorInfos(List chargingGunList){ List 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){ } }