mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +08:00
update 联联平台接口
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.jsowell.thirdparty.domain;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@@ -24,7 +25,7 @@ public class ConnectorInfo {
|
||||
/**
|
||||
* 充电设备接口名称 N
|
||||
*/
|
||||
private String ConnectorName;
|
||||
// private String ConnectorName;
|
||||
|
||||
/**
|
||||
* 充电设备接口类型 Y
|
||||
@@ -59,6 +60,6 @@ public class ConnectorInfo {
|
||||
* 车位号 N
|
||||
* 停车场车位编号
|
||||
*/
|
||||
private String ParkNo;
|
||||
// private String ParkNo;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.jsowell.thirdparty.domain;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@@ -31,18 +32,18 @@ public class EquipmentInfo {
|
||||
* 设备型号 N
|
||||
* 由设备生厂商定义的设备型号
|
||||
*/
|
||||
private String EquipmentModel;
|
||||
// private String EquipmentModel;
|
||||
|
||||
/**
|
||||
* 设备名称 N
|
||||
*/
|
||||
private String EquipmentName;
|
||||
// private String EquipmentName;
|
||||
|
||||
/**
|
||||
* 设备生产日期 N
|
||||
* YYYY-MM-DD
|
||||
*/
|
||||
private String ProductionDate;
|
||||
// private String ProductionDate;
|
||||
|
||||
/**
|
||||
* 建设时间 Y
|
||||
@@ -86,13 +87,13 @@ public class EquipmentInfo {
|
||||
* 充电设备经度 N
|
||||
* GCJ-02坐标系
|
||||
*/
|
||||
private BigDecimal EquipmentLng;
|
||||
// private BigDecimal EquipmentLng;
|
||||
|
||||
/**
|
||||
* 充电设备纬度 N
|
||||
* GCJ-02坐标系
|
||||
*/
|
||||
private BigDecimal EquipmentLat;
|
||||
// private BigDecimal EquipmentLat;
|
||||
|
||||
/**
|
||||
* 是否支持VIN码识别(0-否;1-是) Y
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.jsowell.thirdparty.domain;
|
||||
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
@@ -51,13 +53,13 @@ public class StationInfo {
|
||||
* 户号 N
|
||||
* 国网电费账单户号
|
||||
*/
|
||||
private String AccountNumber;
|
||||
// private String AccountNumber;
|
||||
|
||||
/**
|
||||
* 容量(单位KW) N
|
||||
* 独立电表申请的功率
|
||||
*/
|
||||
private BigDecimal Capacity;
|
||||
// private BigDecimal Capacity;
|
||||
|
||||
/**
|
||||
* 是否是公共停车场库 (0-否;1-是) Y
|
||||
@@ -69,7 +71,7 @@ public class StationInfo {
|
||||
* 停车场库编号 N
|
||||
* 公共停车场库编号
|
||||
*/
|
||||
private String ParkingLotNumber;
|
||||
// private String ParkingLotNumber;
|
||||
|
||||
/**
|
||||
* 充电站国家代码 Y
|
||||
@@ -92,7 +94,7 @@ public class StationInfo {
|
||||
* 站点电话 N
|
||||
* 能够联系场站工作人员进行协助的联系电话
|
||||
*/
|
||||
private String StationTel;
|
||||
// private String StationTel;
|
||||
|
||||
/**
|
||||
* 服务电话 Y
|
||||
@@ -147,7 +149,7 @@ public class StationInfo {
|
||||
* 站点引导 N
|
||||
* 描述性文字,用于引导车主找到充电车位
|
||||
*/
|
||||
private String SiteGuide;
|
||||
// private String SiteGuide;
|
||||
|
||||
/**
|
||||
* 建设场所 Y
|
||||
@@ -174,31 +176,31 @@ public class StationInfo {
|
||||
* 站点照片 N
|
||||
* 充电设备照片、充电车位照片、停车场入口照片
|
||||
*/
|
||||
private List<String> Pictures;
|
||||
// private List<String> Pictures;
|
||||
|
||||
/**
|
||||
* 使用车型描述 N
|
||||
* 描述该站点接受的车大小以及类型,如大巴、物流车、私家乘用车、出租车等
|
||||
*/
|
||||
private String MatchCars;
|
||||
// private String MatchCars;
|
||||
|
||||
/**
|
||||
* 车位楼层及数量描述 N
|
||||
* 车位楼层以及数量信息
|
||||
*/
|
||||
private String ParkInfo;
|
||||
// private String ParkInfo;
|
||||
|
||||
/**
|
||||
* 停车场产权方 N
|
||||
* 停车场产权人
|
||||
*/
|
||||
private String ParkOwner;
|
||||
// private String ParkOwner;
|
||||
|
||||
/**
|
||||
* 停车场管理方 N
|
||||
* 停车场管理人(如:XX 物业)
|
||||
*/
|
||||
private String ParkManager;
|
||||
// private String ParkManager;
|
||||
|
||||
/**
|
||||
* 全天开放 Y
|
||||
@@ -210,7 +212,7 @@ public class StationInfo {
|
||||
* 营业时间 N
|
||||
* 营业时间描述,推荐格式:周一至周日00:00-24:00
|
||||
*/
|
||||
private String BusinessHours;
|
||||
// private String BusinessHours;
|
||||
|
||||
/**
|
||||
* 最低单价 Y
|
||||
@@ -240,7 +242,7 @@ public class StationInfo {
|
||||
* 停车费 N
|
||||
* 停车费率描述
|
||||
*/
|
||||
private String ParkFee;
|
||||
// private String ParkFee;
|
||||
|
||||
/**
|
||||
* 支付方式 Y
|
||||
@@ -258,13 +260,13 @@ public class StationInfo {
|
||||
* 备注 N
|
||||
* 其他备注信息
|
||||
*/
|
||||
private String Remark;
|
||||
// private String Remark;
|
||||
|
||||
/**
|
||||
* 充电设备信息列表 Y
|
||||
* 该充电站所有充电设备信息对象集合
|
||||
*/
|
||||
private List<EquipmentInfo> equipmentInfos;
|
||||
private List<EquipmentInfo> EquipmentInfos;
|
||||
|
||||
/**
|
||||
* 停车收费类型 Y
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package com.jsowell.thirdparty.service;
|
||||
|
||||
import com.jsowell.pile.dto.LianLianGetTokenDTO;
|
||||
import com.jsowell.pile.dto.QueryEquipmentDTO;
|
||||
import com.jsowell.pile.dto.QueryStartChargeDTO;
|
||||
import com.jsowell.pile.dto.*;
|
||||
import com.jsowell.thirdparty.domain.StationStatsInfo;
|
||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||
import com.jsowell.thirdparty.vo.*;
|
||||
|
||||
import java.util.List;
|
||||
@@ -21,7 +18,7 @@ public interface LianLianService {
|
||||
* 根据充电站id,推送充电站信息
|
||||
* @param stationId
|
||||
*/
|
||||
void pushStationInfo(Long stationId) throws Exception;
|
||||
void pushStationInfo(LianLianPushStationInfoDTO dto);
|
||||
|
||||
/**
|
||||
* 联联平台获取充电站信息
|
||||
@@ -75,5 +72,10 @@ public interface LianLianService {
|
||||
*/
|
||||
QueryStopChargeVO query_stop_charge(QueryStartChargeDTO dto);
|
||||
|
||||
/**
|
||||
* 联联平台获取令牌
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
String getToken(LianLianGetTokenDTO dto);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
package com.jsowell.thirdparty.service.impl;
|
||||
|
||||
import cn.hutool.core.util.PageUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.gson.Gson;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
||||
import com.jsowell.common.enums.ykc.OrderStatusEnum;
|
||||
@@ -22,10 +25,7 @@ import com.jsowell.netty.command.ykc.StartChargingCommand;
|
||||
import com.jsowell.netty.command.ykc.StopChargingCommand;
|
||||
import com.jsowell.netty.service.yunkuaichong.YKCPushCommandService;
|
||||
import com.jsowell.pile.domain.*;
|
||||
import com.jsowell.pile.dto.LianLianGetTokenDTO;
|
||||
import com.jsowell.pile.dto.QueryEquipmentDTO;
|
||||
import com.jsowell.pile.dto.QueryStartChargeDTO;
|
||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||
import com.jsowell.pile.dto.*;
|
||||
import com.jsowell.pile.service.IOrderBasicInfoService;
|
||||
import com.jsowell.pile.service.IPileBasicInfoService;
|
||||
import com.jsowell.pile.service.IPileConnectorInfoService;
|
||||
@@ -98,24 +98,30 @@ public class LianLianServiceImpl implements LianLianService {
|
||||
|
||||
/**
|
||||
* 根据站点id推送站点信息
|
||||
* @param stationId
|
||||
* @param dto
|
||||
*/
|
||||
@Override
|
||||
public void pushStationInfo(Long stationId) throws Exception {
|
||||
public void pushStationInfo(LianLianPushStationInfoDTO dto){
|
||||
// String OperatorID = "987654321";
|
||||
// String SigSecret = "1234567890abcdef"; // 签名秘钥
|
||||
// String DataSecret = "1234567890abcdef"; // 消息密钥
|
||||
// String DataSecretIV = "1234567890abcdef"; // 消息密钥初始化向量
|
||||
// String token = "c548f9276c1c4ea8b88b1f7b1eb7cf07"; //QueryToken类查询接口获取到的token
|
||||
|
||||
// 通过id查询站点相关信息
|
||||
PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(stationId);
|
||||
PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(dto.getStationId());
|
||||
// 组装联联平台所需要的数据格式
|
||||
StationInfo info = StationInfo.builder()
|
||||
.StationID(String.valueOf(stationId))
|
||||
.OperatorID(Constants.OPERATORID_LIANLIAN)
|
||||
.EquipmentOwnerID(Constants.OPERATORID_LIANLIAN)
|
||||
.StationID(String.valueOf(dto.getStationId()))
|
||||
.OperatorID(dto.getOperatorID())
|
||||
.EquipmentOwnerID(dto.getOperatorID())
|
||||
.StationName(pileStationInfo.getStationName())
|
||||
.IsAloneApply(Integer.valueOf(pileStationInfo.getAloneApply()))
|
||||
.IsPublicParkingLot(Integer.valueOf(pileStationInfo.getPublicParking()))
|
||||
.CountryCode(pileStationInfo.getCountryCode())
|
||||
.AreaCode(pileStationInfo.getAreaCode())
|
||||
.AreaCode("310118")
|
||||
.Address(pileStationInfo.getAddress())
|
||||
.ServiceTel(pileStationInfo.getServiceTel())
|
||||
.ServiceTel(pileStationInfo.getStationTel())
|
||||
.StationType(Integer.valueOf(pileStationInfo.getStationType()))
|
||||
.StationStatus(Integer.valueOf(pileStationInfo.getStationStatus()))
|
||||
.ParkNums(Integer.valueOf(pileStationInfo.getParkNums()))
|
||||
@@ -123,15 +129,15 @@ public class LianLianServiceImpl implements LianLianService {
|
||||
.StationLat(new BigDecimal(pileStationInfo.getStationLat()))
|
||||
.Construction(Integer.valueOf(pileStationInfo.getConstruction()))
|
||||
.OpenAllDay(Integer.valueOf(pileStationInfo.getOpenAllDay()))
|
||||
// .MinElectricityPrice()
|
||||
// .ElectricityFee()
|
||||
// .ServiceFee()
|
||||
.MinElectricityPrice(new BigDecimal("2"))
|
||||
.ElectricityFee("2")
|
||||
.ServiceFee("2")
|
||||
.ParkFree(Integer.valueOf(pileStationInfo.getParkFree()))
|
||||
// .ParkFee()
|
||||
.Payment(pileStationInfo.getPayment())
|
||||
// .ParkFee("2")
|
||||
.Payment("线上")
|
||||
.SupportOrder(Integer.valueOf(pileStationInfo.getSupportOrder()))
|
||||
// .equipmentInfos()
|
||||
// .ParkFeeType()
|
||||
.ParkFeeType(0)
|
||||
.ToiletFlag(Integer.valueOf(pileStationInfo.getToiletFlag()))
|
||||
.StoreFlag(Integer.valueOf(pileStationInfo.getStoreFlag()))
|
||||
.RestaurantFlag(Integer.valueOf(pileStationInfo.getRestaurantFlag()))
|
||||
@@ -149,14 +155,60 @@ public class LianLianServiceImpl implements LianLianService {
|
||||
}
|
||||
|
||||
// 调用联联平台接口
|
||||
String url = "http://dataexchange.evchargeonline.com:81/shevcs/v1/" + "notification_stationInfo";
|
||||
String url = "http://testdataexchange.evchargeonline.com:82/shevcs/v1/" + "notification_stationInfo";
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
jsonObject.put("StationInfo", info);
|
||||
String s = HttpUtils.sendPost(url, jsonObject.toJSONString());
|
||||
// String jsonString = JSON.toJSONString(info);
|
||||
|
||||
System.out.println(s);
|
||||
// Gson gson = new Gson();
|
||||
// String gsonString = gson.toJson(info);
|
||||
|
||||
String jsonStr = JSONUtil.toJsonStr(info);
|
||||
|
||||
// System.out.println("jsonString : " + jsonString);
|
||||
// System.out.println("gsonString : " + gsonString);
|
||||
System.out.println("jsonStr : " + jsonStr);
|
||||
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("StationInfo", jsonStr);
|
||||
|
||||
String jsonString = JSONObject.toJSONString(data);
|
||||
System.out.println("jsonString : " + jsonString);
|
||||
|
||||
//加密
|
||||
byte[] encryptText = Cryptos.aesEncrypt(jsonString.getBytes(),
|
||||
dto.getDataSecret().getBytes(), dto.getDataSecretIV().getBytes());
|
||||
String encryptData = Encodes.encodeBase64(encryptText);
|
||||
System.out.println("加密数据:" + encryptData);
|
||||
|
||||
Map<String, String> params = Maps.newLinkedHashMap();
|
||||
params.put("OperatorID", dto.getOperatorID());
|
||||
params.put("Data", encryptData);
|
||||
params.put("TimeStamp", "20230510145200");
|
||||
params.put("Seq", "001");
|
||||
String sign = GBSignUtils.sign(params, dto.getSigSecret());
|
||||
params.put("Sig", sign);
|
||||
|
||||
String postData = JSON.toJSONString(params);
|
||||
System.out.println("最终提交数据:" + postData);
|
||||
|
||||
String hutoolRequest = HttpRequest.post(url).header("Authorization", "Bearer " + dto.getToken()).body(postData).execute().body();
|
||||
|
||||
System.out.println("接收到返回数据:" + hutoolRequest);
|
||||
|
||||
Map<String, String> map = (Map<String, String>) JSON.parse(hutoolRequest);
|
||||
|
||||
String rData = map.get("Data");
|
||||
|
||||
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(rData),
|
||||
dto.getDataSecret().getBytes(), dto.getDataSecretIV().getBytes());
|
||||
String plainData = "";
|
||||
try {
|
||||
plainData = new String(plainText, "UTF-8");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
System.out.println("解密数据:" + plainData);
|
||||
|
||||
}
|
||||
|
||||
@@ -194,7 +246,7 @@ public class LianLianServiceImpl implements LianLianService {
|
||||
stationInfo.setCountryCode(pileStationInfo.getCountryCode());
|
||||
stationInfo.setAreaCode(pileStationInfo.getAreaCode());
|
||||
stationInfo.setAddress(pileStationInfo.getAddress());
|
||||
stationInfo.setServiceTel(pileStationInfo.getServiceTel());
|
||||
stationInfo.setServiceTel(pileStationInfo.getStationTel());
|
||||
stationInfo.setStationType(Integer.valueOf(pileStationInfo.getStationType()));
|
||||
stationInfo.setParkNums(Integer.valueOf(pileStationInfo.getParkNums()));
|
||||
stationInfo.setStationLng(new BigDecimal(pileStationInfo.getStationLng()));
|
||||
@@ -645,14 +697,14 @@ public class LianLianServiceImpl implements LianLianService {
|
||||
|
||||
equipmentInfo.setEquipmentID(pileSn);
|
||||
equipmentInfo.setManufacturerID(merchantInfo.getOrganizationCode());
|
||||
equipmentInfo.setConstructionTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, pileBasicInfo.getCreateTime()));
|
||||
equipmentInfo.setConstructionTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, pileBasicInfo.getCreateTime()));
|
||||
|
||||
PileModelInfoVO modelInfo = pileModelInfoService.getPileModelInfoByPileSn(pileSn);
|
||||
equipmentInfo.setEquipmentType(Integer.valueOf(modelInfo.getSpeedType()));
|
||||
|
||||
// Map<String, String> pileStatus = pileConnectorInfoService.getPileStatus(Lists.newArrayList(pileBasicInfo.getSn()));
|
||||
equipmentInfo.setEquipmentStatus(50);
|
||||
equipmentInfo.setEquipmentPower(new BigDecimal(modelInfo.getRatedPower()));
|
||||
equipmentInfo.setEquipmentPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP));
|
||||
equipmentInfo.setNewNationalStandard(1);
|
||||
equipmentInfo.setVinFlag(1);
|
||||
|
||||
@@ -686,7 +738,7 @@ public class LianLianServiceImpl implements LianLianService {
|
||||
connectorInfo.setVoltageUpperLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
|
||||
connectorInfo.setVoltageLowerLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
|
||||
connectorInfo.setCurrent(Integer.valueOf(modelInfo.getRatedCurrent()));
|
||||
connectorInfo.setPower(new BigDecimal(modelInfo.getRatedPower()));
|
||||
connectorInfo.setPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
resultList.add(connectorInfo);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user