快电新电途ing

This commit is contained in:
ZZ 2021-10-26 15:46:10 +08:00
parent d57c69feaa
commit b945104590
7 changed files with 99 additions and 45 deletions

View File

@ -83,6 +83,19 @@ public class XhpcChargingStation extends BaseEntity {
@Column(name = "operator_id_evcs", length = 20)
private String operatorIdEvcs;
@Column(name = "service_tel")
private String serviceTel;
public String getServiceTel() {
return serviceTel;
}
public void setServiceTel(String serviceTel) {
this.serviceTel = serviceTel;
}
public String getOperatorIdEvcs() {
return operatorIdEvcs;

View File

@ -1,18 +1,20 @@
package com.xhpc.evcs.dto;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE,
setterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
@Getter
@Setter
public class PageRequest {
@JsonProperty("LastQueryTime")
String lastQueryTime;
String lastQueryTime = "";
@JsonProperty(value = "PageNo", defaultValue = "1") //CAUTION: PageNo must not wrote as PageNon or anything else
Integer pageNo = 1;
@JsonProperty(value = "PageSize", defaultValue = "10")

View File

@ -50,13 +50,13 @@ public class StationInfo extends CommonStationInfo {
public String serviceTel;
@Transient
@JsonProperty("StationType")
public Long stationType;
public Integer stationType;
@Transient
@JsonProperty("StationStatus")
public Long stationStatus;
public Integer stationStatus;
@Transient
@JsonProperty("ParkNums")
public Long parkNums;
public Integer parkNums;
@Transient
@JsonProperty("StationLng")
public Double stationLng;

View File

@ -3,6 +3,8 @@ package com.xhpc.evcs.encryption;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
@ -62,28 +64,18 @@ public class Aes128Cbc {
InvalidKeyException {
System.out.println(encrypt("{\"PageNo\": \"1\", \"PageSize\": 49}", "8LpncubmWiPCzY3V", "av6A8QdnRaVRMXu6"));
System.out.println(decryptString("ywyEEd5aKPJOTraAY/gXB/bA+UNprpYnSaOhfF5lKc/Zcv" +
"/BRasig4KSPJD7UmrH2vjLVIWXPw42EbLgV9bXr5SzUSVAT28ief2nk6hpWnT8Dcvhn3W4bj7UdEY" +
"/AdONVXWuq2MZQocGYEVNvWcSD0OVCJ04fNTwPR4hs1xI/QDg9/hqYdQbvWt3go/y" +
"+M9wxd4vq8m44RPQ5zjW3vxFxc4oMg2t0oTdk6W5AzJzAGWhU/4xIv+8gLeh6/blpW/VBUK82+4tcdG2JSJv/DcaDM0" +
"/7C1LsCYY17o6gGd1mFVDSZhYcaOmOska+h+eyTKL4i8oHpT6uf+hFDRVBUC1OTjDeiL9NyIxcwd" +
"/MMfAaF04wHOHrYMavL5wcBUZWwtU1QSLWXkUy7muJNYvVg4dmw92nNKaJtxgFycXVGkSP3Nc6y" +
"/sAzYkTz9Wfn4RLVOkpyYJMOo1Tz93/OFEKQFPnjzSRQAVYiuPzuySKjXdcDY8AfqmDqYuVZ2FhH0iVU6FiSsK4" +
"+al0hnLOcnftqYtYSd7ir2coP6XtNejOByqFPrShMp4rPQLvDpFibV87clFMwWOGBiB0eFRvRbOSntDYN7PBpFHHJXRkNi3VCMiJ" +
"+Y=",
"8LpncubmWiPCzY3V"
, "av6A8QdnRaVRMXu6"));
System.out.println(decryptString("ywyEEd5aKPJOTraAY" +
"/gXB5Sz0CiZyWlVKyOoQDHvSZBdtC1aYGzpgAmLAQ7P2f0ArSSVx6xoF8sz2JyXKD00XiHuA4oc1hJnT1mRRetryz8bxmj6m" +
"/ClMebuBmtotiKxJqIZr5tayh/hizhcX2L8UUUDmKfp4Q1de1P/swB2VPC8suvrw2Y04r2I2MtF+7mHj1DdDn" +
"/DIStLJMLV9tx7xTu2K5fWS1E2ZUv33dVKRcA9qQGFmrI1IFLZyhIFcomv78nzXDg9U6/HRK3/JvtWxm9b6eDO" +
"/a5rUwpe1gKPFsVK/MvAXAxU8dmyIzxzC3fLQB1KFcG8XUWrejpakVwh5tKxKhmofWFXlja7FSC" +
"/vVdHjL5pOiBAOoxtmBDVPVrua2+/Nz5q9neXdA3olEamKYVCtFSWgSptFjhQb8pGAzSTxwuA+e4fJ5RqeAc+Ka0aHycpvtG" +
"/oZZN8+9xhWcnGWj0R8/xsXzFdXOnJ6/DI9SgKOUAzb/AGfHPeJJMibEru+nKrjuo3cNfyue6n6V2hu0Juxr" +
"/iLg2zRLVB54wL4Lvy3pi+9ULHzI7SBgKyF6bxxoeuS4YfmaVK+fhseqWNtxk" +
"/d8XJu93CqDUoxH5c1IEw16gQ1h9DMhVug2Cg8JbSkIGeFHhCvicOxIuUS2Uc2YgoUTbY0podXkJToBKByGJq7BjNdk49uhFlnHNMO4UZ5LzinsJZxxxdWtUIpqUvTf8a1x210u/IT3BYHQj+K+NeDfbzb2ga6Qdj3+CLL21",
"8LpncubmWiPCzY3V"
, "av6A8QdnRaVRMXu6"));
// System.out.println(decryptString("ywyEEd5aKPJOTraAY/gXB/bA+UNprpYnSaOhfF5lKc/Zcv" +
// "/BRasig4KSPJD7UmrH2vjLVIWXPw42EbLgV9bXr5SzUSVAT28ief2nk6hpWnT8Dcvhn3W4bj7UdEY" +
// "/AdONVXWuq2MZQocGYEVNvWcSD0OVCJ04fNTwPR4hs1xI/QDg9/hqYdQbvWt3go/y" +
// "+M9wxd4vq8m44RPQ5zjW3vxFxc4oMg2t0oTdk6W5AzJzAGWhU/4xIv+8gLeh6/blpW/VBUK82+4tcdG2JSJv/DcaDM0" +
// "/7C1LsCYY17o6gGd1mFVDSZhYcaOmOska+h+eyTKL4i8oHpT6uf+hFDRVBUC1OTjDeiL9NyIxcwd" +
// "/MMfAaF04wHOHrYMavL5wcBUZWwtU1QSLWXkUy7muJNYvVg4dmw92nNKaJtxgFycXVGkSP3Nc6y" +
// "/sAzYkTz9Wfn4RLVOkpyYJMOo1Tz93/OFEKQFPnjzSRQAVYiuPzuySKjXdcDY8AfqmDqYuVZ2FhH0iVU6FiSsK4" +
// "+al0hnLOcnftqYtYSd7ir2coP6XtNejOByqFPrShMp4rPQLvDpFibV87clFMwWOGBiB0eFRvRbOSntDYN7PBpFHHJXRkNi3VCMiJ" +
// "+Y=",
// "8LpncubmWiPCzY3V"
// , "av6A8QdnRaVRMXu6"));
System.out.println(new BigDecimal("244.0111117").setScale(6, RoundingMode.HALF_UP).doubleValue());
}
}

View File

@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -33,9 +35,10 @@ public class StationsInfoController extends CoreDispatcher {
private XhpcChargingStationRepository xhpcChargingStationRepository;
@Autowired
private XhpcStationInternetBlacklistRepository xhpcStationInternetBlacklistRepo;
private String[] GUNNAMES = {"", "A", "B", "C", "D"};
@PostMapping("/v1/query_stations_info")
public CommonResponse queryStationsInfo(@RequestBody CommonRequest<PageRequest> commonRequest) throws Exception {
public CommonResponse queryStationsInfo(@RequestBody(required = false) CommonRequest<PageRequest> commonRequest) throws Exception {
assert false;
String operatorId = commonRequest.getOperatorId();
@ -74,7 +77,7 @@ public class StationsInfoController extends CoreDispatcher {
ChargingStationDto chargingStationDto = REDIS.getCacheObject(stationKey);
if (chargingStationDto.getPiles() != null) { //todo rm dup or-else?
StationInfo station = new StationInfo();
station.setStationStatus(50L);
station.setStationStatus(50);
final String stationId = stationKey.replace("station:", "");
station.setStationId(stationId);
Double lat = chargingStationDto.getLat();
@ -85,20 +88,28 @@ public class StationsInfoController extends CoreDispatcher {
XhpcChargingStation xhpcChargingStation =
xhpcChargingStationRepository.findOne(example).orElse(null);
if (null != xhpcChargingStation) {
chargingStationDto.setLat(Double.valueOf(xhpcChargingStation.getLatitude()));
chargingStationDto.setLng(Double.valueOf(xhpcChargingStation.getLongitude()));
chargingStationDto.setType(Long.valueOf(xhpcChargingStation.getType()));
chargingStationDto.setLat(new BigDecimal(xhpcChargingStation.getLatitude()).setScale(6,
RoundingMode.HALF_UP).doubleValue());
chargingStationDto.setLng(new BigDecimal(xhpcChargingStation.getLongitude()).setScale(6,
RoundingMode.HALF_UP).doubleValue());
chargingStationDto.setType(xhpcChargingStation.getType());
chargingStationDto.setOperatorId(xhpcChargingStation.getOperatorIdEvcs() == null ? "MA6DFCTD5"
: xhpcChargingStation.getOperatorIdEvcs());
chargingStationDto.setAreaCode(xhpcChargingStation.getAreaCode().toString());
chargingStationDto.setName(xhpcChargingStation.getName());
chargingStationDto.setServiceTel(xhpcChargingStation.getServiceTel());
REDIS.setCacheObject(stationKey, chargingStationDto);
}
}
station.setStationLat(chargingStationDto.getLat());
station.setStationLng(chargingStationDto.getLng());
station.setStationType(chargingStationDto.getType());
station.setStationStatus(50);
station.setParkNums(chargingStationDto.getParkNums());
station.setOperatorId(chargingStationDto.getOperatorId());
station.setEquipmentOwnerId(chargingStationDto.getOperatorId());
station.setStationName(chargingStationDto.getName());
station.setCountryCode("CN");
station.setAreaCode(chargingStationDto.getAreaCode());
station.setConstruction(chargingStationDto.getConstruction());
List<EquipmentInfo> piles = getEquipmentInfos(chargingStationDto.getPiles());
@ -132,14 +143,12 @@ public class StationsInfoController extends CoreDispatcher {
Example<XhpcChargingPile> example = Example.of(pileExample);
XhpcChargingPile xhpcChargingPile = xhpcChargingPileRepository.findOne(example).orElse(null);
if (xhpcChargingPile != null) {
cachePile.put("connectorType", xhpcChargingPile.getType() == null ? Integer.valueOf(4) :
Integer.valueOf(xhpcChargingPile.getType()));
cachePile.put("connectorType", xhpcChargingPile.getType() == null ? 4 : xhpcChargingPile.getType());
cachePile.put("voltageUpperLimits", xhpcChargingPile.getMaxVoltage().intValue());
cachePile.put("voltageLowerLimits", xhpcChargingPile.getMinVoltage().intValue());
cachePile.put("current", xhpcChargingPile.getCurrent());
cachePile.put("power", xhpcChargingPile.getPower());
cachePile.put("nationalStandard", xhpcChargingPile.getNationalStandard().equals("2011") ?
Integer.valueOf(1) : Integer.valueOf(2));
cachePile.put("nationalStandard", xhpcChargingPile.getNationalStandard().equals("2011") ? 1 : 2);
cachePile.put("equipmentType", xhpcChargingPile.getType());
REDIS.setCacheMap("pile:".concat(pileNo), cachePile);
}
@ -163,6 +172,10 @@ public class StationsInfoController extends CoreDispatcher {
String gunId = pileNo.concat(String.format("%02d", i));
ConnectorInfo connectorInfo = new ConnectorInfo();
connectorInfo.setConnectorID(gunId);
String connectorName = (String) REDIS.getCacheMapValue("gun:".concat(gunId), "terminalName"); //todo setem in redis!
connectorInfo.setConnectorName(connectorName == null ?
Integer.parseInt(pileNo.substring(5, 10)) + "号桩 " + GUNNAMES[i] +
"" : connectorName);
Integer connectorType = (Integer) cachePile.get("connectorType");
connectorInfo.setConnectorType(connectorType == null ? 4 : connectorType);
Integer voltageUpperLimits = (Integer) cachePile.get("voltageUpperLimits");

View File

@ -174,11 +174,12 @@ public class EvcsFilter extends OncePerRequestFilter {
byte[] buf = responseWrapper.getContentAsByteArray();
log.debug("out.plain: {}", new String(buf, StandardCharsets.UTF_8));
String encryptedData;
AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndSecretTokenType(operatorId,
AuthSecretToken.SECRET_TOKEN_TYPE_OUT).orElse(null);
if (encout == null && authSecretTokenOut != null) {
encryptedData = encryptRespOut(authSecretTokenOut.getDataSecret(), authSecretTokenOut.getDataSecretIV(),
authSecretTokenOut.getSigSecret(), buf).toString();
// AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndSecretTokenType
// (operatorId,
// AuthSecretToken.SECRET_TOKEN_TYPE_OUT).orElse(null);
if (encout == null && authSecretTokenIn != null) {
encryptedData = encryptRespOut(authSecretTokenIn.getDataSecret(), authSecretTokenIn.getDataSecretIV(),
authSecretTokenIn.getSigSecret(), buf).toString();
log.debug("out.enc: {}", encryptedData);
response.getOutputStream().write(encryptedData == null ? internalError() :
encryptedData.getBytes(StandardCharsets.UTF_8));

View File

@ -10,9 +10,32 @@ public class ChargingStationDto {
private String operatorId;
private Double lat;
private Double lng;
private Long type;
private Integer type;
private Long construction;
private String areaCode;
private String name;
private String serviceTel;
private Integer parkNums;
public Integer getParkNums() {
return parkNums;
}
public void setParkNums(Integer parkNums) {
this.parkNums = parkNums;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getLat() {
@ -34,12 +57,12 @@ public class ChargingStationDto {
this.lng = lng;
}
public Long getType() {
public Integer getType() {
return type;
}
public void setType(Long type) {
public void setType(Integer type) {
this.type = type;
}
@ -104,4 +127,14 @@ public class ChargingStationDto {
this.areaCode = areaCode;
}
public void setServiceTel(String serviceTel) {
this.serviceTel = serviceTel;
}
public String getServiceTel() {
return serviceTel;
}
}