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){
|
|
}
|
}
|