This commit is contained in:
YAS\29473
2025-08-13 12:18:49 +08:00
parent 373d9839a5
commit 9fb3afc5d2
4 changed files with 744 additions and 20 deletions

View File

@@ -0,0 +1,512 @@
package com.jsowell.thirdparty.platform.common;
import com.alibaba.fastjson2.annotation.JSONField;
import com.jsowell.pile.thirdparty.EquipmentInfo;
import com.jsowell.pile.thirdparty.publicinfo.BaseStationInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
import java.util.List;
/**
* 充电站信息
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class StationInfo1 extends BaseStationInfo {
/**
* 充电站ID Y
* 对接平台自定义的唯一编码
* <=20字符
*/
@JSONField(name = "StationID")
private String stationID;
/**
* 运营商ID Y
* 运营商ID
* 9字符
*/
@JSONField(name = "OperatorID")
private String operatorID;
/**
* 设备所属运营商ID Y
* 设备所属运营商组织机构代码
* 9字符
*/
@JSONField(name = "EquipmentOwnerID")
private String equipmentOwnerID;
/**
* 充电站名称 Y
* 充电站名称的描述
* <=50字符
*/
@JSONField(name = "StationName")
private String stationName;
/**
* 充电站国家代码 Y
* 比如CN
* 2字符
*/
@JSONField(name = "CountryCode")
private String countryCode;
/**
* 充电站省市辖区编码 Y
* 填写内容为参照GB/T 2260-2007
* 20字符
*/
@JSONField(name = "AreaCode")
private String areaCode;
/**
* 街道编码
*/
@JSONField(name = "StreetCode")
private String streetCode;
/**
* 详细地址 Y
* <=50字符
*/
@JSONField(name = "Address")
private String address;
/**
* 站点电话 Y
* 能够联系场站工作人员进行协助的联系电话
* <=30字符
*/
@JSONField(name = "StationTel")
private String stationTel;
/**
* 服务电话 Y
* 平台服务电话,例如400的电话
* <=30字符
*/
@JSONField(name = "ServiceTel")
private String serviceTel;
/**
* 站点类型 Y
* 1-公共
* 50-个人
* 100-公交(专用)
* 101-环卫(专用)
* 102-物流(专用)
* 103-出租车(专用)
* 104-分时租赁(专用)
* 105-小区共享(专用)
* 106-单位(专用)
* 255-其他
*/
@JSONField(name = "StationType")
private Integer stationType;
/**
* 站点状态 Y
* 0未知
* 1建设中
* 5关闭下线
* 6维护中
* 50正常使用
*/
@JSONField(name = "StationStatus")
private Integer stationStatus;
/**
* 经度 Y
* GCJ-02坐标系
* 保留小数点后6位
*/
@JSONField(name = "StationLng")
private BigDecimal stationLng;
/**
* 纬度 Y
* GCJ-02坐标系
* 保留小数点后6位
*/
@JSONField(name = "StationLat")
private BigDecimal stationLat;
/**
* 站点引导 N
* 描述性文字,用于引导车主找到充电车位
* <=100字符
*/
@JSONField(name = "SiteGuide")
private String siteGuide;
/**
* 站点额定总功率
* 单位 kW,保留 1 位小数
*/
@JSONField(name = "RatedPower")
private BigDecimal ratedPower;
/**
* 建设场所 Y
* 1居民区
* 2公共机构
* 3企事业单位
* 4写字楼
* 5工业园区
* 6交通枢纽
* 7大型文体设施
* 8城市绿地
* 9大型建筑配建停车场
* 10路边停车位
* 11城际高速服务区
* 12风景区
* 13公交场站
* 14加油加气站
* 15出租车
* 255其他
*/
@JSONField(name = "Construction")
private Integer construction;
/**
* 站点照片 N
* 充电设备照片、充电车位照片、停车场入口照片
*/
@JSONField(name = "Pictures")
private List<String> pictures;
/**
* 使用车型描述 N
* 描述该站点接受的车大小以及类型,如大巴、物流车、私家乘用车、出租车等
* <=100字符
*/
@JSONField(name = "MatchCars")
private List<String> matchCars;
/**
* 车位楼层及数量描述 N
* 车位楼层以及数量信息
* <=100字符
*/
@JSONField(name = "ParkInfo")
private String parkInfo;
/**
* 营业时间 N
* 营业时间描述,推荐格式周一至周日00:00-24:00
* <=100字符
*/
@JSONField(name = "BusineHours")
private String busineHours;
/**
* 充电电费率 N
* 充电费描述,推荐格式XX 元/度
* <=256字符
*/
@JSONField(name = "ElectricityFee")
private String electricityFee;
/**
* 服务费率 N
* 服务费率描述,推荐格式XX 元/度
* <=100字符
*/
@JSONField(name = "ServiceFee")
private String serviceFee;
/**
* 是否停车免费 0否 1
*/
@JSONField(name = "ParkFree")
private Integer parkFree;
/**
* 停车费 N
* 停车费率描述
*/
@JSONField(name = "ParkFee")
private String parkFee;
/**
* 支付方式 N
* 支付方式:刷卡、线上、现金 其中电子钱包类卡为刷卡,身份鉴权卡、微信/ 支付宝、APP为线上
* <=20字符
*/
@JSONField(name = "Payment")
private String payment;
/**
* 备注 N
* 其他备注信息
* <=100字符
*/
@JSONField(name = "Remark")
private String remark;
/**
* 充电设备信息列表 Y
* 该充电站所有充电设备信息对象集合
*/
@JSONField(name = "EquipmentInfos")
private List<EquipmentInfo> equipmentInfos;
/**
* 投建日期
*
*/
@JSONField(name = "RunDate")
private String runDate;
/**
* 投建日期
*
*/
@JSONField(name = "BuildDate")
private String buildDate;
/**
* 是否独立报桩 (0-否;1-是) Y
* 如果是独立报桩需要填写户号以及容量
*/
@JSONField(name = "IsAloneApply")
private Integer isAloneApply;
/**
* 户号 N
* 国网电费账单户号
*/
@JSONField(name = "AccountNumber")
private String accountNumber;
/**
* 容量(单位KW) N
* 独立电表申请的功率
*/
@JSONField(name = "Capacity")
private BigDecimal capacity;
/**
* 峰谷分时
* 0否 1
*/
@JSONField(name = "PeriodFee")
private Integer periodFee;
/**
* 视频监控配套情况
* 0无 1
*/
@JSONField(name = "VideoMonitor")
private Integer videoMonitor;
/**
* 是否是公共停车场库 (0-否;1-是) Y
* 如果是公共停车场库需要填写场库编号
*/
@JSONField(name = "IsPublicParkingLot")
private Integer isPublicParkingLot;
/**
* 停车场库编号 N
* 公共停车场库编号
*/
@JSONField(name = "ParkingLotNumber")
private String parkingLotNumber;
/**
* 停车场产权方 N
* 停车场产权人
*/
// private String ParkOwner;
/**
* 停车场管理方 N
* 停车场管理人XX 物业)
*/
// private String ParkManager;
/**
* 全天开放 Y
* 是否全天开放(0-否1-是),如果为0则营业时间必填
*/
@JSONField(name = "OpenAllDay")
private Integer openAllDay;
/**
* 最低单价 Y
* 最低充电电费率
*/
@JSONField(name = "MinElectricityPrice")
private BigDecimal minElectricityPrice;
/**
* 停车收费类型 Y
* 0:停车收费;
* 1:停车免费;
* 2:限时免费;
* 3:充电限免
*/
@JSONField(name = "ParkFeeType")
private Integer parkFeeType;
/**
* 是否靠近卫生间(0-否1-是) Y
*/
@JSONField(name = "ToiletFlag")
private Integer toiletFlag;
/**
* 是否靠近便利店(0-否1-是) Y
*/
@JSONField(name = "StoreFlag")
private Integer storeFlag;
/**
* 是否靠近餐厅(0-否1-是) Y
*/
@JSONField(name = "RestaurantFlag")
private Integer restaurantFlag;
/**
* 是否靠近休息室(0-否1-是) Y
*/
@JSONField(name = "LoungeFlag")
private Integer loungeFlag;
/**
* 是否有雨棚(0-否1-是) Y
*/
@JSONField(name = "CanopyFlag")
private Integer canopyFlag;
/**
* 是否有小票机(0-否1-是) Y
*/
@JSONField(name = "PrinterFlag")
private Integer printerFlag;
/**
* 是否有道闸(0-否1-是) Y
*/
@JSONField(name = "BarrierFlag")
private Integer barrierFlag;
/**
* 是否有地锁(0-否1-是) Y
*/
@JSONField(name = "ParkingLockFlag")
private Integer parkingLockFlag;
/**
* 投入运营日期
*/
@JSONField(name = "OfficialRunTime")
private String officialRunTime;
/**
* 站点类别
* 1充电站
* 2换电站
* 3充换电一体站
*/
@JSONField(name = "StationClassification")
private Integer stationClassification;
/**
* 站点类别子分类
* 1集中式专营充电业务的场站
* 2分散式充电和停车功能复合的场站
*/
@JSONField(name = "SubStationClassification")
private Integer subStationClassification;
/**
* 充电接口标准支持
* 0:国标
* 1:欧标
*/
@JSONField(name = "SupportStandard")
private String supportStandard;
/**
* 土地所有权
* 1: 国有临时用地
* 2: 国有建设用地
* 3: 集体土地
*/
@JSONField(name = "OwnershipOfLand")
private Integer ownershipOfLand;
/**
* 城市用地分类
* 1: 居住用地
* 2: 商业服务用地
* 3: 公共管理与服务设施用地
* 4: 工业用地
* 5: 物流仓储用地
* 6: 交通设施用地
* 7: 绿地与广场用地
* 8:公用设施用地
* 255: 其它用地
*/
@JSONField(name = "LandProperty")
private Integer landProperty;
/**
* 服务车辆类型
* 1公交车
* 2出租车
* 3物流车
* 4通勤车
* 5大巴车
* 6私家车
* 7环卫车
* 8泥头、重卡车
* 9公务车
* 10网约车
* 11港口码头作业车
* 255其它
*/
@JSONField(name = "ServiceCarTypes")
private String serviceCarTypes;
/**
* 充电计费信息
*/
@JSONField(name = "PolicyInfos")
private List<PolicyInfo> policyInfos1;
@Data
public static class PolicyInfo{
@JSONField(name = "StartTime")
private String startTime;
@JSONField(name = "ElecPrice")
private BigDecimal elecPrice;
@JSONField(name = "ServicePrice")
private BigDecimal servicePrice;
/**
* 单位:元/度,小数点后 4 位。 基础设施运营商和客户运营商协议电 价。无协议电价,则填写基础电费价 格
*/
@JSONField(name = "DiscountElecPrice")
private BigDecimal discountElecPrice;
@JSONField(name = "DiscountServicePrice")
private BigDecimal discountServicePrice;
}
}

View File

@@ -0,0 +1,174 @@
package com.jsowell.thirdparty.platform.domain;
import com.alibaba.fastjson2.annotation.JSONField;
import com.jsowell.thirdparty.platform.common.StationInfo;
import com.jsowell.thirdparty.platform.common.StationInfo1;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* 吉林省平台-充电站信息1
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class SupStationInfo1 extends StationInfo1 {
/**
* 充换电站唯一编码
* 行政区划代码区县地区码6位+运营商ID9位+充换电站ID
*/
@JSONField(name = "StationUniqueNumber")
private String stationUniqueNumber;
/**
* 充换电站所在县以下行政区划代码
* 填写内容为12位行政区划代码1-6位为县及以上行政区划代码7-12位为县以下区划代码
* 参考地址http://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2022/
*/
@JSONField(name = "AreaCodeCountryside")
private String areaCodeCountryside;
@JSONField(name = "TownCode")
private String townCode;
/**
* 站点分类
* 1充电站
* 2换电站
* 3充换电一体站
*/
@JSONField(name = "StationClassification")
private Integer stationClassification;
/**
* 7*24小时营业
* 0
* 1
*/
@JSONField(name = "RoundTheClock")
private Integer roundTheClock;
/**
* 停车费类型
* 0免费
* 1不免费
* 2限时免费停车
* 3充电限时减免
* 255参考场地实际收费标准
*/
@JSONField(name = "ParkType")
private Integer parkType;
/**
* 电费类型
* 1商业用电
* 2普通工业用电
* 3大工业用电
* 4其它用电
*/
@JSONField(name = "ElectricityType")
private Integer electricityType;
/**
* 报装类型
* 是否独立报装:
* 0
* 1
*/
@JSONField(name = "BusinessExpandType")
private Integer businessExpandType;
/**
* 正式投运时间
*/
@JSONField(name = "OfficialRunTime")
private String officialRunTime;
/**
* 建站时间
*/
@JSONField(name = "BuildTime")
private String buildTime;
/**
* 充换电站方位
* 1地面-停车场
* 2地面-路侧
* 3地下停车场
* 4立体式停车楼
*/
@JSONField(name = "StationOrientation")
private String stationOrientation;
/**
* 充换电站建筑面积
* 该充电场站建设用 地面积
*/
@JSONField(name = "StationArea")
private String stationArea;
/**
* 充换电站人工值守
* 0
* 1
*/
@JSONField(name = "HavePerson")
private String havePerson;
/**
* 周边配套设施
* 1卫生间
* 2便利店
* 3餐厅
* 4休息室
* 5雨棚
*/
@JSONField(name = "SupportingFacilities")
private String supportingFacilities;
/**
* 设备所属方名称
*/
@JSONField(name = "EquipmentOwnerName")
private String equipmentOwnerName;
/**
* 供电类型
* 1直供电 2转供电
*/
@JSONField(name = "SupplyType")
private Integer supplyType;
/**
* 供电局用户编号
*/
@JSONField(name = "ResidentNo")
private String residentNo;
/**
* 表号
*/
@JSONField(name = "WattHourMeterNo")
private String wattHourMeterNo;
/**
* 外电功率
*/
@JSONField(name = "ForwardPower")
private String forwardPower;
/**
* 充电站全省 唯一备案号
*/
@JSONField(name = "RecordUniqueNo")
private String recordUniqueNo;
private List<PolicyInfo> PolicyInfos;
}

View File

@@ -0,0 +1,27 @@
package com.jsowell.thirdparty.platform.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import com.jsowell.pile.thirdparty.EquipmentInfoDTO;
import com.jsowell.thirdparty.platform.domain.SupStationInfo;
import com.jsowell.thirdparty.platform.domain.SupStationInfo1;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* 内蒙古平台站点信息
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class SupStationInfoDTO1 extends SupStationInfo1 {
@JSONField(name = "EquipmentInfos")
private List<EquipmentInfoDTO> equipmentInfosDTO;
}

View File

@@ -40,6 +40,7 @@ import com.jsowell.thirdparty.platform.domain.*;
import com.jsowell.thirdparty.platform.dto.ChargeOrderInfoDTO;
import com.jsowell.thirdparty.platform.dto.QueryParkingLockDTO;
import com.jsowell.thirdparty.platform.dto.SupStationInfoDTO;
import com.jsowell.thirdparty.platform.dto.SupStationInfoDTO1;
import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory;
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
import com.jsowell.thirdparty.platform.util.Cryptos;
@@ -219,7 +220,7 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
public Map<String, String> queryStationsInfo(QueryStationInfoDTO dto) {
int pageNo = dto.getPageNo() == null ? 1 : dto.getPageNo();
int pageSize = dto.getPageSize() == null ? 50 : dto.getPageSize();
dto.setThirdPlatformType("25");
dto.setThirdPlatformType(thirdPlatformType);
PageUtils.startPage(pageNo, pageSize);
List<ThirdPartyStationInfoVO> stationInfos = pileStationInfoService.selectStationInfosByThirdParty(dto);
if (CollectionUtils.isEmpty(stationInfos)) {
@@ -229,9 +230,9 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
ThirdPartySecretInfoVO thirdPartySecretInfoVO = getJiLinSecretInfo();
PageInfo<ThirdPartyStationInfoVO> pageInfo = new PageInfo<>(stationInfos);
List<SupStationInfoDTO> resultList = new ArrayList<>();
List<SupStationInfoDTO1> resultList = new ArrayList<>();
for (ThirdPartyStationInfoVO pileStationInfo : pageInfo.getList()) {
SupStationInfoDTO stationInfo = new SupStationInfoDTO();
SupStationInfoDTO1 stationInfo = new SupStationInfoDTO1();
stationInfo.setStationID(String.valueOf(pileStationInfo.getId()));
stationInfo.setOperatorID(Constants.OPERATORID_JIANG_SU); // 组织机构代码
String organizationCode = pileStationInfo.getOrganizationCode();
@@ -268,6 +269,9 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
// 站点图片
if (StringUtils.isNotBlank(pileStationInfo.getPictures())) {
stationInfo.setPictures(Lists.newArrayList(pileStationInfo.getPictures().split(",")));
}else{
// 无照片传空数组
stationInfo.setPictures(Lists.newArrayList());
}
stationInfo.setRoundTheClock(Constants.one);
//计费信息
@@ -277,24 +281,28 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
if (CollectionUtils.isEmpty(billingPriceVOList)) {
return null;
}
SupStationInfo.PolicyInfo policyInfo = null;
SupStationInfo1.PolicyInfo policyInfo = null;
// 获取计费模板
List<SupStationInfo.PolicyInfo> policyInfoList = new ArrayList<>();
List<SupStationInfo1.PolicyInfo> policyInfoList = new ArrayList<>();
for (BillingPriceVO billingPriceVO : billingPriceVOList) {
// 将时段开始时间、电费、服务费信息进行封装
policyInfo = new SupStationInfo.PolicyInfo();
policyInfo = new SupStationInfo1.PolicyInfo();
String startTime = billingPriceVO.getStartTime() + ":00"; // 00:00:00 格式
// 需要将中间的冒号去掉,改为 000000 格式
String replace = StringUtils.replace(startTime, ":", "");
policyInfo.setStartTime(replace);
policyInfo.setElecFee(new BigDecimal(billingPriceVO.getElectricityPrice()).setScale(4, BigDecimal.ROUND_HALF_UP));
policyInfo.setServiceFee(new BigDecimal(billingPriceVO.getServicePrice()).setScale(4, BigDecimal.ROUND_HALF_UP));
BigDecimal elecPrice = new BigDecimal(billingPriceVO.getElectricityPrice()).setScale(4 , BigDecimal.ROUND_HALF_UP);
BigDecimal servicePrice = new BigDecimal(billingPriceVO.getServicePrice()).setScale(4 , BigDecimal.ROUND_HALF_UP);
policyInfo.setStartTime(replace);
policyInfo.setElecPrice(elecPrice);
policyInfo.setServicePrice(servicePrice);
policyInfo.setDiscountElecPrice(elecPrice);
policyInfo.setDiscountServicePrice(servicePrice);
policyInfoList.add(policyInfo);
}
stationInfo.setPolicyInfos(policyInfoList);
stationInfo.setParkType("255");
stationInfo.setParkType(255);
stationInfo.setElectricityType(Constants.one);
stationInfo.setBusinessExpandType(Integer.valueOf(pileStationInfo.getAloneApply())); //是否独立报装 //0,否 1,是
// 报装电源容量
@@ -340,7 +348,7 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
*/
@Override
public String notificationStationInfo(String stationId) {
List<SupStationInfoDTO> stationInfos = new ArrayList<>();
List<SupStationInfoDTO1> stationInfos = new ArrayList<>();
// 通过id查询站点相关信息
PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(Long.parseLong(stationId));
// 查询相关配置信息
@@ -355,7 +363,7 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
// 组装中电联平台所需要的数据格式
SupStationInfoDTO info = SupStationInfoDTO.builder()
SupStationInfoDTO1 info = SupStationInfoDTO1.builder()
.stationID(stationId)
.operatorID(Constants.OPERATORID_JIANG_SU)
.stationName(pileStationInfo.getStationName())
@@ -363,7 +371,6 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
.areaCode(pileStationInfo.getAreaCode())
.address(pileStationInfo.getAddress())
.serviceTel(pileStationInfo.getStationTel())
.stationClassification(Constants.one)
.stationType(Integer.valueOf(pileStationInfo.getStationType()))
.stationStatus(Integer.valueOf(pileStationInfo.getStationStatus()))
@@ -372,7 +379,7 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
.stationLat(new BigDecimal(pileStationInfo.getStationLat()).setScale(6, RoundingMode.HALF_UP))
.construction(Integer.valueOf(pileStationInfo.getConstruction()))
.roundTheClock(Constants.one)//7*24小时营业 0否 1
.parkType("255")//0免费 1不免费 2限时免费停车 3充电限时减免 255参考场地实际收费标准
.parkType(255)//0免费 1不免费 2限时免费停车 3充电限时减免 255参考场地实际收费标准
.electricityType(Constants.one) //1商业用电 2普通工业用电 3大工业用电 4其他用电
.businessExpandType(Constants.one)
.videoMonitor(Constants.zero)
@@ -402,19 +409,23 @@ public class JiLinPlatformServiceImpl implements ThirdPartyPlatformService {
if (CollectionUtils.isEmpty(billingPriceVOList)) {
return null;
}
SupStationInfo.PolicyInfo policyInfo = null;
SupStationInfo1.PolicyInfo policyInfo = null;
// 获取计费模板
List<SupStationInfo.PolicyInfo> policyInfoList = new ArrayList<>();
List<SupStationInfo1.PolicyInfo> policyInfoList = new ArrayList<>();
for (BillingPriceVO billingPriceVO : billingPriceVOList) {
// 将时段开始时间、电费、服务费信息进行封装
policyInfo = new SupStationInfo.PolicyInfo();
policyInfo = new SupStationInfo1.PolicyInfo();
String startTime = billingPriceVO.getStartTime() + ":00"; // 00:00:00 格式
// 需要将中间的冒号去掉,改为 000000 格式
String replace = StringUtils.replace(startTime, ":", "");
policyInfo.setStartTime(replace);
policyInfo.setElecFee(new BigDecimal(billingPriceVO.getElectricityPrice()).setScale(4, BigDecimal.ROUND_HALF_UP));
policyInfo.setServiceFee(new BigDecimal(billingPriceVO.getServicePrice()).setScale(4, BigDecimal.ROUND_HALF_UP));
BigDecimal elecPrice = new BigDecimal(billingPriceVO.getElectricityPrice()).setScale(4 , BigDecimal.ROUND_HALF_UP);
BigDecimal servicePrice = new BigDecimal(billingPriceVO.getServicePrice()).setScale(4 , BigDecimal.ROUND_HALF_UP);
policyInfo.setStartTime(replace);
policyInfo.setElecPrice(elecPrice);
policyInfo.setServicePrice(servicePrice);
policyInfo.setDiscountElecPrice(elecPrice);
policyInfo.setDiscountServicePrice(servicePrice);
policyInfoList.add(policyInfo);
}
info.setPolicyInfos(policyInfoList);